資源簡介
51單片機-數碼管時鐘秒表,c語言,可實現數碼管顯示時鐘功能

代碼片段和文件信息
/*******************************************************************
? ?????數碼管時鐘秒表篇
??功能簡介:該程序有兩個功能:時鐘,秒表。key1,key2和key3鍵用來調節
時鐘,根據LED的亮閃狀態調節時鐘(當八個LED全亮時為時鐘顯示狀態,第一
個LED亮時為調節小時狀態,第二個LED亮時為調節分鐘狀態,第三個LED亮時為
調節秒鐘狀態),key4鍵為秒表功能鍵。
??實施步驟:第一步:開啟定時器,完成數碼管時鐘走動功能;第二步:完成
數碼管時鐘調節功能;第三步:完成數碼管秒表顯示功能。
??
??操作提示:功能鍵有四個,第二行第以列按鍵為調節鍵,第二行第二列按鍵
為增加數據鍵,第二行第三列按鍵為減少鍵,第二行第四列按鍵為秒表功能鍵。
********************************************************************
********************************************************************/
#include?
#include
#define?uchar?unsigned?char
#define?uint?unsigned?int
sbit?beep=P2^3;
sbit?dula=P2^6;
sbit?wela=P2^7;
uchar?code?table1[]={0xff0xfe0xfd0xfb0xf70xef0xdf}; //數碼管位選編碼
uchar?code?table2[]={0x3f0x060x5b0x4f0x660x6d0x7d
????????? ?0x070x7f0x6f0x770x7c0x390x5e
?0x790x710x00};
uchar?temp; //temp為按鍵變量
int?lightflag; //flag用來控制數碼管顯示的狀態(顯示時鐘或者顯示秒表),light用來控制時鐘和秒表的led顯示
uchar?shi2ge2shi1ge1; //這四個變量用來分離出實參的十位和個位
uchar?numnum1num2num3; //num,num1用來計數,num2用來控制調節的時分秒,num3用來改變秒表狀態下的顯示狀態
int?miaofenshi; //時鐘變量
uchar?mfenmmiaommmiao; //秒表變量
void?delay(uint?z)
{
uint?ij;
for(i=0;i for(j=0;j<110;j++);
}
void?timeinit()
{
TMOD=0x11;
TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
TH1=(65536-4608)/256;
TL1=(65536-4608)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=0;
}
void?timedisplay0()?interrupt?1
{
TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
num++;
if(num==20)
{
num=0;
miao++; //開啟時鐘功能
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
shi=0;
}
}
}
}
void?timedisplay1()?interrupt?3
{
TH1=(65536-4608)/256;
TL1=(65536-4608)%256;
num1++;
if(num1==2)
{
num1=0;
mmmiao++;
if(mmmiao==100) //開啟秒表功能
{
mmmiao=0;
mmiao++;
if(mmiao==60)
{
mmiao=0;
mfen++;
if(mfen==60)
mfen=0;
}
}
}
}
void?display(uchar?adduchar?date) //數碼管顯示信息函數(帶有小數點)
{
shi2=date/10;
ge2=date%10;
P0=0xff;
wela=1;
P0=table1[add];
wela=0;
P0=0;
dula=1;
P0=table2[shi2];
dula=0;
delay(1);
P0=0xff;
wela=1;
P0=table1[add+1];
wela=0;
P0=0;
dula=1;
P0=table2[ge2]|0x80;
dula=0;
delay(1);
}
void?display1(uchar?adduchar?date) //數碼管顯示數據(不帶有小數點)
{
shi1=date/10;
ge1=date%10;
P0=0xff;
wela=1;
P0=table1[add];
wela=0;
P0=0;
dula=1;
P0=table2[shi1];
dula=0;
delay(1);
P0=0xff;
wela=1;
P0=table1[add+1];
wela=0;
P0=0;
dula=1;
P0=table2[ge1];
dula=0;
delay(1);
}
void?keyscan()
{
P3=0xfd;
temp=P3; //第二行功能鍵
if(temp!=0xfd)
{
delay(5);
if(temp!=0xfd)
{
beep=0;
switch(temp)
{
case?0xed: num2++; //第一個按鍵用來控制調節時,分,秒
TR0=0;
light=1;
if(num2==4)
{
num2=0;
light=0;
TR0=1;
}
break;
case
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????5209??2012-08-30?18:59??綜合應用3-數碼管時鐘秒表\數碼管時鐘.c
?????文件??????10862??2012-08-20?22:45??綜合應用3-數碼管時鐘秒表\數碼管時鐘秒表
?????文件???????2918??2012-08-20?22:45??綜合應用3-數碼管時鐘秒表\數碼管時鐘秒表.hex
?????文件?????????58??2012-08-20?22:45??綜合應用3-數碼管時鐘秒表\數碼管時鐘秒表.lnp
?????文件????????846??2012-08-20?17:35??綜合應用3-數碼管時鐘秒表\數碼管時鐘秒表.LST
?????文件??????17482??2012-08-20?22:45??綜合應用3-數碼管時鐘秒表\數碼管時鐘秒表.M51
?????文件??????12973??2012-08-20?17:35??綜合應用3-數碼管時鐘秒表\數碼管時鐘秒表.OBJ
?????文件???????1004??2012-09-07?18:43??綜合應用3-數碼管時鐘秒表\數碼管時鐘秒表.Opt
?????文件??????????0??2012-09-07?18:43??綜合應用3-數碼管時鐘秒表\數碼管時鐘秒表.plg
?????文件???????1673??2012-09-06?19:37??綜合應用3-數碼管時鐘秒表\數碼管時鐘秒表.Uv2
????.......??????1004??2012-09-06?19:37??綜合應用3-數碼管時鐘秒表\數碼管時鐘秒表_Opt.Bak
????.......??????1695??2012-08-20?22:44??綜合應用3-數碼管時鐘秒表\數碼管時鐘秒表_Uv2.Bak
?????文件???????8804??2012-08-20?22:45??綜合應用3-數碼管時鐘秒表\液晶屏秒表.lst
?????文件??????12973??2012-08-20?22:45??綜合應用3-數碼管時鐘秒表\液晶屏秒表.obj
?????目錄??????????0??2012-09-07?18:43??綜合應用3-數碼管時鐘秒表
-----------?---------??----------?-----??----
????????????????77501????????????????????15
- 上一篇:數據結構課程設計故宮導游咨詢系統
- 下一篇:c++版的連連看解釋很詳細
評論
共有 條評論