基于51单片机的电子时钟系统设计(二)

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

2、主要功能
a.通过三极管驱动数码管显示时分秒、闹钟,初始状态:00-00-00。

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

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

3、环境搭建
资料清单:C程序+仿真+设计报告+使用说明+元件清单+操作视频
仿真版本:Proteus8.6及以上版本
编译平台:Keil C51
编程语言:C语言

4、源程序
使用keil C51软件(内附安装包)实现程序编写与编译。

#include  "Key.h"
#include  "led.h"

uchar timeSetBuff[8]={'0','0',LED_MODE_COUNT,'0','0',LED_MODE_COUNT,'0','0'};//时钟数据缓冲区 
uchar alarmSetBuff[8]={'0','0',LED_MODE_ALARM,'0','0',LED_MODE_ALARM,'0','0'};//闹钟时间数据缓冲区 
uchar timeDisMod=0x24;                //00100100
uchar secondTemp,minuteTemp,hourTemp;
uchar secondAlarm,minuteAlarm,hourAlarm;
uchar timer0Temp;
uint clock_value;     //用作闹钟用的
uchar alarmKeyCount;                   //闹钟起停键计数 
bit alarm_is_ok;                       //闹钟起停状态 
bit time_is_ok;                        //时间是否到 
bit interface_mod;                     // 显示界面模式,0为主时间界面,1为设置界面 

/********************************************************************************************
* 函数名称:定时器0
* 功    能:定时器0初始化
* 入口参数:无
* 出口参数:无
*********************************************************************************************/	   
void initTimer0(void)	              //定时10ms 
{
   TMOD |= 0x01;                        //GATE=0,TR=1运行;C/T=1,counter,0,timer;01十六进制  
   TH0 = 0xdc;
   TL0 = 0x00;
   TR0 = 1;	                          //timer0 控制位,为1时启动timer0
   ET0 = 1;                             //timer0 中断使能 
}

/********************************************************************************************
* 函数名称:时钟比较
* 功    能:比较时钟和闹钟的时间缓冲区,只比较时和分
* 入口参数:无
* 出口参数:无
*********************************************************************************************/
void timeCompare(void)	    
{
  if((minuteTemp == minuteAlarm) && (hourTemp == hourAlarm) && (secondTemp == secondAlarm))
  {
     time_is_ok = 1;
	 alarm_is_ok = 0;
	 interface_mod = 1;
  }   
}	

/********************************************************************************************
* 函数名称:主函数
* 功    能:调用并执行各个子函数
* 入口参数:无
* 出口参数:无
*********************************************************************************************/
void main()
{
 uchar keyRead;
 init_led();
 init_key();
 initTimer0();
 timer0Temp = 0x00;
 secondTemp = 0x00;
 minuteTemp = 0x00;
 hourTemp = 0x0c;
 secondAlarm = 0x00;
 minuteAlarm = 0x00;
 hourAlarm = 0x00;
 alarmKeyCount = 0x02;
 alarm_is_ok = 0;     //默认状态停止 
 time_is_ok = 0;      //默认时间未到 
 interface_mod = 0;
 sei();

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

时钟界面:
在这里插入图片描述
闹钟设置:
在这里插入图片描述

6、设计资料清单
设计资料主要包括C程序+仿真+设计报告+使用说明+元件清单+操作视频等,设计报告主要包括硬件电路、软件设计、仿真调试等等,仅供参考。由于不定期更新,最新的资料包不一定与下面图片完全一致,但主要资料都有。
在这里插入图片描述

在这里插入图片描述

7、资料获取方式
II02下载链接1:百度网盘(推荐)
II02下载链接2:优快云免积分
有偿,非诚勿扰🙏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值