|
本帖最后由 cy009 于 2020-9-20 23:20 編輯
學(xué)習(xí)單片機(jī)動(dòng)態(tài)數(shù)碼管顯示,數(shù)字時(shí)鐘是最好的案例,本仿真案例有以下特點(diǎn)。
1.使用定時(shí)器0,方式2,可以減小定時(shí)器的誤差;
2.調(diào)時(shí)、調(diào)分按鍵具有連加功能,與常見(jiàn)的按鍵松手檢測(cè)有區(qū)別;
3.具有秒點(diǎn)顯示功能,若制作實(shí)物案例,可購(gòu)買(mǎi)帶秒點(diǎn)的數(shù)碼管。
本仿真案例推薦使用Proteus 8.6以上版本。
51hei圖片20200920173659.png (65.61 KB, 下載次數(shù): 57)
下載附件
2020-9-20 17:40 上傳
參考程序:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit w1=P2^2;
sbit w2=P2^3;
sbit w3=P2^4;
sbit w4=P2^5;
sbit s1=P1^3;
sbit s2=P1^4;
sbit s3=P1^5;
uint shi,fen,sec;
uint num,s1num,keynum;
uchar m;
void delay(uint);
void keyscan();
void time_adj();
uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}; //共陰代碼
void display() //數(shù)碼管顯示
{
w1=1;w2=1;w3=1;w4=1;
P0=~tab[shi/10%10];
if((s1num==2)|(shi/10%10==0)){w1=1;}
else{w1=0;}
delay(5);
w1=1;
if(num<2000)
{P0=~(tab[shi%10]|0x80); } //秒點(diǎn)顯示
else
{P0=~tab[shi%10];}
if(s1num==2){w2=1;}
else{w2=0;}
delay(5);
w2=1;
P0=~tab[fen/10%10];
if(s1num==1){w3=1;}
else{w3=0;}
delay(5);
w3=1;
P0=~tab[fen%10];
if(s1num==1){w4=1;}
else{w4=0;}
delay(5);
w4=1;
}
void keyscan() //功能鍵函數(shù)
{
if(s1==0)
{
delay(5); //消抖
if(s1==0)
{
while(!s1)display();
s1num++;
if(s1num==3)
{
s1num=0;
}
}
}
}
void time_adj() //加、減鍵時(shí)間調(diào)整函數(shù)
{
if(s1num!=0)
{
if(s2==0)
{
keynum++;
if(keynum>18) //連加延時(shí)
{
switch(s1num)
{
case 1:
shi++;
if(shi>23)
{shi=0;}
keynum=0;
break;
case 2:
fen++;
if(fen>59)
{fen=0;}
keynum=0;
break;
}
}
}
if(s3==0)
{
keynum++;
if(keynum>18)
{
switch(s1num)
{
case 1:
shi--;
if(shi<0)
{shi=23;}
keynum=0;
break;
case 2:
fen--;
if(fen<0)
{fen=59;}
keynum=0;
break;
}
}
}
}
}
void main()
{
shi=12;fen=0;sec=0;num=0;
TMOD=0x02;
TH0=0x06;
TL0=0x06;
EA=1;
ET0=1;
TR0=1;
while(1)
{
keyscan();
time_adj();
display();
if(sec>59)
{
sec=0;
fen++;
if(fen>59)
{
fen=0;
shi++;
if(shi>23)
{
shi=0;
}
}
}
}
}
void delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void Timer0() interrupt 1 //定時(shí)器服務(wù)
{
num++;
if(num==4000){num=0;sec++;}
}
51hei.png (12.87 KB, 下載次數(shù): 68)
下載附件
2020-9-20 17:45 上傳
全部資料51hei下載地址:
4位數(shù)字時(shí)鐘(定時(shí)器方式2, 按鍵連加).rar
(63.03 KB, 下載次數(shù): 71)
2020-9-20 17:41 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|