• 方案介紹
    • 1.? 簡介
    • 2.? 主要功能
    • 3.? 源程序(Keil5)
    • 4.? 仿真proteus8.6
    • 5.? 設(shè)計報告
    • 6.? 資料清單
  • 附件下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

基于51單片機的數(shù)字電子鐘設(shè)計(三)

04/14 09:02
721
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

單片機仿真設(shè)計合集資料獲取.pdf

共1個文件

資料清單:C程序+仿真+設(shè)計報告+使用說明+元件清單+操作視頻

仿真版本:Proteus8.6及以上版本

程序編譯:Keil5 C51

編程語言:C語言

設(shè)計編號:【I06】

1.? 簡介

? 本文提出了一種基于51單片機的電子時鐘系統(tǒng)。該系統(tǒng)由單片機系統(tǒng)、數(shù)碼管顯示系統(tǒng)、鍵盤、蜂鳴器等組成,通過單片機自身的定時計數(shù)器溢出標(biāo)志產(chǎn)生最小計時單元,經(jīng)過變量的累加和判斷后,將數(shù)據(jù)送入數(shù)碼顯示屏顯示。通過按鍵來控制單片機實現(xiàn)數(shù)字時鐘的時分秒、鬧鐘等功能,并通過P0口的輸出在數(shù)碼管上顯示。

2.? 主要功能

a.通過數(shù)碼管顯示時分秒、鬧鐘,初始狀態(tài):11-59-50。

b.通過獨立按鍵設(shè)置時和分、鬧鐘。

c.通過蜂鳴器顯示鬧鐘狀態(tài)。

3.? 源程序(Keil5)

本設(shè)計采用keil5 C51軟件(內(nèi)附安裝包)實現(xiàn)程序設(shè)計。如需用keil4打開程序,可自行通過.c和.h文件新建工程即可。

#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=50,minute=59,hour=11; 
unsigned char minute1=0,hour1=12; 
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<5)    //鬧鐘時間到    
{ 
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];   
}

4.? 仿真proteus8.6

? 本設(shè)計采用proteus8.6軟件(內(nèi)附安裝包)實現(xiàn)仿真設(shè)計,如下圖所示。proteus軟件一般存在高低版本兼容問題,該仿真是通過proteus8.6導(dǎo)出的,所以請盡量使用proteus8.6打開文件,低于proteus8.6的版本不能夠正常使用,高于proteus8.6的版本除了proteus8.8/8.9理論上可以正常使用。

初始界面:

鬧鐘設(shè)置:

5.? 設(shè)計報告

設(shè)計報告主要包括硬件電路、軟件設(shè)計、仿真調(diào)試等等,僅供參考。

6.? 資料清單

設(shè)計資料主要包括C程序+仿真+設(shè)計報告+使用說明+元件清單+操作視頻等。

百度網(wǎng)盤下載鏈接:【I06】百度網(wǎng)盤下載鏈接

更多單片機仿真設(shè)計合集:單片機仿真設(shè)計合集

  • 單片機仿真設(shè)計合集資料獲取.pdf
    下載

相關(guān)推薦