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:优快云免积分
有偿,非诚勿扰🙏