基于51单片机的多功能数字时钟.docx
- 文档编号:2772418
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:18
- 大小:444.87KB
基于51单片机的多功能数字时钟.docx
《基于51单片机的多功能数字时钟.docx》由会员分享,可在线阅读,更多相关《基于51单片机的多功能数字时钟.docx(18页珍藏版)》请在冰豆网上搜索。
基于51单片机的多功能数字时钟
基于51单片机多功能数字时钟
姓名:
刘波
学号:
01105120
1系统设计
1.1设计要求
设计制作一个24小时制多功能数字钟。
1.1.1主要性能指标
1、数字显示年、月、周、日、时、分、秒。
1.1.2创意部分
要求准确的进行年、月、周、日、时、分、秒的转换,切换两种显示模式。
1.2总体设计方案
1.2.1概述及设计思路
该设计方案是以MC51单片机为核心,采用LCD液晶屏幕显示系统,温度采集模块、日期提醒、键盘时间调整预设置等模块,所构建的数字时钟系统,能动态显示实时时钟的时、分、秒,数据显示(误差限制在30每天)。
1.2.2方案论证
(1)时钟模块
【方案一】采用单片机内置定时/计数器。
它的处理过程主要是先设定单片机内部定时/计数器的工作方式,对机器周期计数确定基准时间,然后用另外一个定时器软件计数的方法对基准时间形成秒,秒计60次形成分,分计60次形成小时。
依此类推,获取日期也是采用相同的方法。
该方案在具体实现过程中,计时存在较大的误差。
如果晶振受到其他外界信号干扰,或者基准时间计算不准确,都会导致时间显示错误。
【方案二】采用555多谐振荡器。
由555定时器组成一个多谐振荡器,产生周期为100HZ的脉冲,然后经过两个74LS160组成的分频器得到1HZ的秒脉冲。
多谐振荡器的稳定度及频率的准确度决定了数字钟计时的准确程度,通常选用成品晶振构成振荡器电路。
计时精度取决于振荡器的频率,振荡器频率越高计时精度越高。
【方案三】采用DS1302时钟芯片。
DS1302是一种高性能、超低功耗的实时时钟芯片,附加31字节静态RAM,可以通过串行接口与单片机进行通信。
实时时钟提供秒、分、时、日、星期、月、年的信息,每个月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM标志位决定采用24或12小时时间格式。
芯片内部集成备用电源,当外围电路电路有电源供应的时候,备用电源充电储能。
当外围电路掉电时,DS1302芯片工作在休眠状态,以备用电源供电。
当外围电路再次供电,即可唤醒休眠进入正常工作状态,显示时间无任何异常。
该系统设计中,采用方案三。
(2)数据显示
【方案一】采用LED数码管显示数据。
LED数码管是由若干个发光二极管组成的显示字段的显示器件,当数码管中的某个发光二极管导通的时候,相应的一个字段便发光,不导通则不发光。
一般来说,LED数码管的控制可分为段选控制和位选控制。
段选是LED所显示的字段,如:
a,b,c,d,e,f,g,dp,当a,b,c同时点亮时显示数字7;当a,b,d,e,g同时点亮时显示数字2。
位选则是显示该数字的位。
根据以上控制原理,可实现对时间和温度的显示。
【方案二】采用LCD1602液晶屏显示数据。
液晶屏的应用非常广泛,比如日常生活中的手表、时钟、计算器、仪器仪表、家电、医疗器械、车船仪表、声象设备文体用品、通讯设备视频图像显示和大画面显示等等。
LCD1602液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。
如清除显示指令01H,光标复位到地址00H位置;光标复位指令00H,光标返回到地址。
LCD1602液晶屏具有字符发生器,可以直观的显示汉字、图形、字符,并且显示容量大,进行数据的实时显示简单方便。
该系统设计中,需要显示的数据比较多。
如果使用LED数码管,那么就要用分屏切换来显示数据,那样既不直观又不方便,并且对单片机的I/O口开销比较大。
若使用LCD液晶屏显示数据,则不需要分屏切换,而且还节省了I/O资源。
因此,采用方案二。
2系统组成与工作原理
2.1系统框图及工作原理
AT89S51
图2-1系统框架图
工作原理:
本设计采用STC89C51单片机作为本次课程设计的控制模块。
单片机可把由DS18B20、DS1302中的数据利用软件来进行处理,从而把数据传输到显示模块,实现温度、日历的显示。
以LCD液晶显示器为显示模块,把单片机传来的的数据显示出来,并且显示多样化,在显示电路中,主要靠按键来实现各种显示要求的选择与切换。
2.2单元电路设计
2.2.1MC-51单片机
89S51各引脚功能介绍:
VCC:
89S51电源正端输入,接+5V。
VSS:
电源地端。
XTAL1:
单芯片系统时钟的反相放大器输入端。
XTAL2:
系统时钟的反相放大器输出端,一般在设计上只要在XTAL1和XTAL2上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一20PF的小电容,可以使系统更稳定,避免噪声干扰而死机。
EA/Vpp:
"EA"为英文"ExternalAccess"的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。
因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。
如果是使用8752内部程序空间时,此引脚要接成高电平。
此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。
ALE/PROG:
端口3的管脚设置:
P3.0:
RXD,串行通信输入。
P3.1:
TXD,串行通信输出。
P3.2:
INT0,外部中断0输入。
P3.3:
INT1,外部中断1输入。
P3.4:
T0,计时计数器0输入。
P3.5:
T1,计时计数器1输入。
P3.6:
WR:
外部数据存储器的写入信号。
P3.7:
RD,外部数据存储器的读取信号。
2.2.2复位电路
MCS-51单片机的复位是由外部的复位电路来实现的。
复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。
上电复位:
上电复位电路是—种简单的复位电路,只要在RST复位引脚接一个电容到VCC,接一个电阻到地就可以了。
上电复位是指在给系统上电时,复位电路通过电容加到RST复位引脚一个短暂的高电平信号,这个复位信号随着VCC对电容的充电过程而回落,所以RST引脚复位的高电平维持时间取决于电容的充电时间。
为了保证系统安全可靠的复位,RST引脚的高电平信号必须维持足够长的时间。
上电自动复位是通过外部复位电路的电容充电来实现的。
只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。
图2-2-2复位电路
2.2.3时钟电路
时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有
条不紊的一拍一拍地工作。
因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。
常用的时钟电路有两种方式:
一种是
内部时钟方式,另一种为外部时钟方式。
本文用的是内部时钟方式(如图3-3所示)。
MCS-51单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反向放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器。
图2-2-3时钟电路
2.2.4显示电路
采用LCD显示,LCD显示具有丰富多样性,灵活性,电路简单、易于控制而且功耗小,对于信息量多的系统,是比较适合的,LCD液晶显示模块采用LCD1602型号,具有很低的功耗,正常工作室电流仅2.0mA/5.0V。
通过编程实现总动关闭屏幕能够更有效地降低功耗。
LCD1602分两行显示,每行可现实多达16个字符,其内部的字符发生器已经存储了160个不同的点阵字符图形,通过内部指令可实现对其显示多样的控制。
LCD1602的特性:
•+5V电压,对比度可调
•内含复位电路
•提供各种控制命令,如:
清屏、字符闪烁、光标闪烁、显示移位等多种功能
•有80字节显示数据存储器DDRAM
•内建有160个5X7点阵的字型的字符发生器CGROM
•8个可由用户自定义的5X7的字符发生器CGRAM
图2-2-4显示电路图
2.2.5按键电路
按键的开关状态通过一定的电路转换为高、低电平状态。
按键闭合过程在相应的I/O端口形成一个负脉冲。
闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。
抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。
为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。
本文采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生互相影响。
P2.2口表示功能移位键,按键选择要调整的时十位、时个位、分十位或分个位。
P2.1口表示数字“+“键,按一下则对应的数字加1。
P2.0口表示数字“-”键,按一下则对应的数字减1。
图2-2-5按键控制模块
P2.3口表示时间表的切换,程序默认为日常时间表,当按下该开关,使输入为低电平时,表示当前执行的是温度显示。
再按键,使键抬起,输入维高电平时,表示当前执行的是日常作息时间表。
3软件设计
3.1程序流程图
3.2系统程序
#include
#include
#include
#defineLCM_RSP1_3//定义引脚
#defineLCM_RWP1_4
#defineLCM_EP1_5
#defineLCM_DataP0
#defineBusy0x80//用于检测LCM状态字中的Busy标识
#defineucharunsignedchar
ucharid,timecount,dipsmodid;
bitlmcinit_or_not;//是否需要清屏标志位“1”为需要“0”为不需要
bitflag,sflag;//flag是时钟冒号闪烁标志,sflag是温度负号显示标志
voidDisp_line1(void);//显示屏幕第一行
voidDisp_line2(void);//显示屏幕第二行
voidid_case1_key();
voidDisp_mod0(void);//显示模式0
voidDisp_mod1(void);//显示模式1
//***********DS1302时间显示定义部分
sbitT_CLK=P1^0;
sbitT_IO=P1^1;
sbitT_RST=P1^2;
sbitACC0=ACC^0;
sbitACC7=ACC^7;
voidSet(uchar,uchar);//根据选择调整相应项目
voidRTInputByte(uchar);/*输入1Byte*/
ucharRTOutputByte(void);/*输出1Byte*/
voidW1302(uchar,uchar);//向DS1302写入一个字节
ucharR1302(uchar);//从DS1302读出一个字节
voidSet1302(unsignedchar*);//设置时间
bitsec,min,hour,year,mon,day,weekk;//闪烁标志位
//初始化后设置为:
04年12月2日星期40点0分0秒
unsignedcharinittime[7]={0x00,0x00,0x00,0x02,0x12,0x04,0x04};
//秒分钟小时日月年星期
//*****18B20温度显示定义部分
sbitDQ=P1^6;//18B20接P16口
typedefu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 多功能 数字 时钟
![提示](https://static.bdocx.com/images/bang_tan.gif)