• 方案介绍
    • 1.  简介
    • 2.  主要功能
    • 3.  源程序(Keil5)
    • 4.  仿真proteus8.6
    • 5.  设计报告
    • 6.  资料清单
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于51单片机的数字电子钟设计(二)

04/14 08:38
499
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

单片机仿真设计合集资料获取.pdf

共1个文件

[相关器件] S25FL256LAGNFB013

非易失性存储器,S25FL256L - (32-MB), 3.0 V FL-L Flash Memory

资料清单:C程序+仿真+设计报告+使用说明+元件清单+操作视频

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

程序编译:Keil5 C51

编程语言:C语言

设计编号:【I05】

1.  简介

  本文提出了一种基于51单片机的电子时钟系统。该系统由单片机系统、数码管显示系统、键盘、蜂鸣器等组成,通过单片机自身的定时计数器溢出标志产生最小计时单元,经过变量的累加和判断后,将数据送入数码显示屏显示。通过按键来控制单片机实现数字时钟的时分秒、闹钟等功能,并通过P0口的输出在数码管上显示。

2.  主要功能

a.通过数码管显示时分秒、闹钟,初始状态:11:59:50。

b.通过独立按键设置时和分、闹钟。

c.通过蜂鸣器显示闹钟状态。

3.  源程序(Keil5)

本设计采用keil5 C51软件(内附安装包)实现程序设计。如需用keil4打开程序,可自行通过.c和.h文件新建工程即可。

#include<reg52.h> 
unsigned char led[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};  //用一维数组定义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闪烁标志 
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   //定时器中断函数
{    
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;       //闪烁标志位取反     
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];   
}  
}
}    

4.  仿真proteus8.6

  本设计采用proteus8.6软件(内附安装包)实现仿真设计,如下图所示。proteus软件一般存在高低版本兼容问题,该仿真是通过proteus8.6导出的,所以请尽量使用proteus8.6打开文件,低于proteus8.6的版本不能够正常使用,高于proteus8.6的版本除了proteus8.8/8.9理论上可以正常使用。

初始界面:

闹钟设置:

5.  设计报告

设计报告主要包括硬件电路、软件设计、仿真调试等等,仅供参考。

6.  资料清单

设计资料主要包括C程序+仿真+设计报告+使用说明+元件清单+操作视频等。

百度网盘下载链接:【I05】百度网盘下载链接

更多单片机仿真设计合集:单片机仿真设计合集

  • 单片机仿真设计合集资料获取.pdf
    下载
[相关器件] S25FL256LAGNFB013

非易失性存储器,S25FL256L - (32-MB), 3.0 V FL-L Flash Memory

点赞
收藏
评论
分享
加入交流群
举报

相关推荐