找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6077|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)6位數(shù)碼管電子鐘的設(shè)計原理圖及源代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:888938 發(fā)表于 2021-3-6 15:22 | 只看該作者 |只看大圖 回帖獎勵 |正序瀏覽 |閱讀模式
設(shè)計方案:
(1)時鐘由6位LED數(shù)碼管顯示,左邊兩位顯示小時,中間兩位顯示分鐘,右邊兩位顯示秒;
(2)時間能夠有按鍵調(diào)整,三個按鍵分別連接在單片機(jī)I/O口上,這三個按鍵的功能分別為切換、加、減;
(3)時間運行到鬧鐘設(shè)定時間時,鬧鐘響(持續(xù)響3秒)。
具體控制原理:SET鍵為切換鍵,按一下SET鍵,進(jìn)入時間顯示的小時設(shè)定狀態(tài);按兩下SET,進(jìn)入時間顯示的分鐘設(shè)定狀態(tài);按三下SET,進(jìn)入定時的小時設(shè)定狀態(tài);按四下SET,進(jìn)入定時的分鐘設(shè)定狀態(tài);按五下SET退出設(shè)定,進(jìn)入當(dāng)前時間顯示狀態(tài),UP和DOWN鍵分別為當(dāng)前狀態(tài)設(shè)定值加一鍵和減一鍵。
源程序:
#include<reg52.h>
unsigned char led[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};  //用一維數(shù)組定義0-9、橫杠、全滅
unsigned char a[8];     
unsigned char second=0,minute=0,hour=0;
unsigned char minute1=0,hour1=0;
unsigned char b[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //掃描
unsigned char k=0; unsigned int temp;   // 記錄毫秒為秒的變量
unsigned char M,S_flag; //M是模式,更新時間的種模式加上正常模式 S_flag閃爍標(biāo)志
sbit K1=P1^0;
sbit K2=P1^1;
sbit K3=P1^2;
sbit BEEP=P3^3;
void delay(unsigned n)       //0.2毫秒
{  
int x,y;   
for(x=0;x<n;x++)   
for(y=0;y<24;y++);
}  
void time1()
interrupt 3   //定時器中斷函數(shù)
{   
TH1=0xfc;     //定時ms   
TL1=0x18;   
temp++;   
if(temp==1000)   //配合定時器定時s   
{  
temp=0;  
second++;   
}  
if(second==59)  
{  
second=0;   
if(minute<59)  
minute++;  
else      
{
minute=0;   
hour++;   
hour%=24;      
}
}   
if(hour1==hour&&minute1==minute&&second<10)    //鬧鐘時間到   
{
if(M==0)   
BEEP=!BEEP;   
}      
if(temp%250==0)            //每ms        
S_flag=!S_flag;       //閃爍標(biāo)志位取反     
if(k==8)  
k=0;   
P0=a[k];     
P2=b[k++];      
delay(1);     
P2=0xff;   
}        
void display()
{  
switch(M)  
{  
case 0:   
{   
a[0]=led[hour/10];   
a[1]=led[hour%10];   
a[2]=led[10];   
a[3]=led[minute/10];   
a[4]=led[minute%10];   
a[5]=led[10];   
a[6]=led[second/10];   
a[7]=led[second%10];   
}
break;  
case 1:   
{   
if(S_flag==1)   
{     
a[0]=led[hour/10];     
a[1]=led[hour%10];   
}   
else   
{
a[0]=led[11];   
a[1]=led[11];   
}   
a[2]=led[10];   
a[3]=led[minute/10];   
a[4]=led[minute%10];   
a[5]=led[10];   
a[6]=led[second/10];   
a[7]=led[second%10];   
}
break;  
case 2:
{   
a[0]=led[hour/10];   
a[1]=led[hour%10];   
a[2]=led[10];   
if(S_flag==1)   
{     
a[3]=led[minute/10];     
a[4]=led[minute%10];   
}   
else   
{     
a[3]=led[11];     
a[4]=led[11];   
}   
a[5]=led[10];   
a[6]=led[second/10];   
a[7]=led[second%10];   
}
break;  
case 3:   
{   
if(S_flag==1)   
{     
a[0]=led[hour1/10];     
a[1]=led[hour1%10];   
}   
else   
{     
a[0]=led[11];     
a[1]=led[11];   
}   
a[2]=led[10];   
a[3]=led[minute1/10];   
a[4]=led[minute1%10];
a[5]=led[11];   
a[6]=led[11];   
a[7]=led[11];   
}break;  
case 4:   
{   
a[0]=led[hour1/10];   
a[1]=led[hour1%10];   
a[2]=led[10];   
if(S_flag==1)   
{     
a[3]=led[minute1/10];     
a[4]=led[minute1%10];   
}   
else   
{     
a[3]=led[11];     
a[4]=led[11];   
}   
a[5]=led[11];   
a[6]=led[11];   
a[7]=led[11];   
}  
}

}   
剩余源代碼見附件

W_70`F{F$[%[V_Q9_5@V2CW.png (75.01 KB, 下載次數(shù): 119)

原理圖

原理圖

6位數(shù)碼管電子鐘原理圖及源代碼.zip

22.75 KB, 下載次數(shù): 67, 下載積分: 黑幣 -5

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

板凳
ID:896436 發(fā)表于 2021-3-26 09:38 | 只看該作者
時鐘頻率很nice,設(shè)計很合理
回復(fù)

使用道具 舉報

沙發(fā)
ID:28992 發(fā)表于 2021-3-6 20:51 | 只看該作者
excellent, thank you my friend.
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表