基于51单片机设计的多功能数字时钟----毕业设计.doc

基于51单片机设计的多功能数字时钟----毕业设计.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于51单片机多功能数字时钟 姓名:刘波 学号 系统设计 设计要求 设计制作一个24小时制多功能数字钟。 主要性能指标 1、数字显示年、月、周、日、时、分、秒。 创意部分 要求准确的进行年、月、周、日、时、分、秒的转换,切换两种显示模式。 总体设计方案 概述及设计思路 该设计方案是以MC51单片机为核心,采用LCD液晶屏幕显示系统,温度采集模块、日期提醒、键盘时间调整预设置等模块,所构建的数字时钟系统,能动态显示实时时钟的时、分、秒,数据显示(误差限制在30每天)。 方案论证 (1)时钟模块 【方案一】 采用单片机内置定时/计数器。它的处理过程主要是先设定单片机内部的工作方式,对机器周期计数基准时间,然后用另外一个定时器软件计数的方法对基准时间形成秒,秒计60次形成分,分计60次形成小时。在Vcc的上升时间不超过1ms,就可以实现自动上电复位。 图2-2-2 复位电路 时钟电路 时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有 条不紊的一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式:一种是 内部时钟方式,另一种为外部时钟方式。本文用的是内部时钟方式(如图3-3所示)。 MCS-51单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反向放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器。 图2-2-3 时钟电路 显示电路 采用LCD显示,LCD显示具有丰富多样性,灵活性,电路简单、易于控制而且功耗小,对于信息量多的系统,是比较适合的,LCD液晶显示模块采用LCD1602型号,具有很低的功耗,正常工作室电流仅2.0mA/5.0V。通过编程实现总动关闭屏幕能够更有效地降低功耗。LCD1602分两行显示,每行可现实多达16个字符,其内部的字符发生器已经存储了160个不同的点阵字符图形,通过内部指令可实现对其显示多样的控制。 LCD1602的特性: +5V电压,对比度可调 内含复位电路 提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能 有80字节显示数据存储器DDRAM 内建有160个5X7点阵的字型的字符发生器CGROM 8个可由用户自定义的5X7的字符发生器CGRAM 图2-2-4 显示电路图 按键电路 按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。本文采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生互相影响。 P2.2口表示功能移位键,按键选择要调整的时十位、时个位、分十位或分个位。 P2.1口表示数字“+“键,按一下则对应的数字加1。 P2.0口表示数字“-”键,按一下则对应的数字减1。 图 2-2-5 按键控制模块 P2.3口表示时间表的切换,程序默认为日常时间表,当按下该开关,使输入为低电平时,表示当前执行的是温度显示。再按键,使键抬起,输入维高电平时,表示当前执行的是日常作息时间表。 软件设计 程序流程图 系统程序 #include <AT89X51.h> #include <string.h> #include<intrins.h> #define LCM_RS P1_3 //定义引脚 #define LCM_RW P1_4 #define LCM_E P1_5 #define LCM_Data P0 #define Busy 0x80 //用于检测LCM状态字中的Busy标识 #define uchar unsigned char uchar id,timecount,dipsmodid; bit lmcinit_or_not; //是否需要清屏标志位“1”为需要“0”为不需要 bit flag,sflag; //flag是时钟冒号闪烁标志,sflag是温度负号显示标志 void Disp_line1(void); //显示屏幕第一行 void Disp_line2(void); //显示屏幕第二行 void id_case1_key(); void Disp_mod0(void);//显示模式0 void Disp_mod1(void);//显示模式1 //***

文档评论(0)

小丸子 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档