单片机课程设计--基于51单片机的万年历

单片机课程设计--基于51单片机的万年历

ID:23466634

大小:353.50 KB

页数:24页

时间:2018-11-08

单片机课程设计--基于51单片机的万年历_第1页
单片机课程设计--基于51单片机的万年历_第2页
单片机课程设计--基于51单片机的万年历_第3页
单片机课程设计--基于51单片机的万年历_第4页
单片机课程设计--基于51单片机的万年历_第5页
资源描述:

《单片机课程设计--基于51单片机的万年历》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、单片机课程设计报告万年历的设计姓名:施韧学号:0915321028班级:09自动化指导教师:晏来成基于51单片机的万年历摘要:电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。它可以对年、月、日、周日、时、分、秒进行计时,使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。本设计是基于51系列的单片机进行的电子万年历设计,可以显示年月日时分秒及周信息,具有可调

2、整日期和时间功能。在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备。万年历的设计过程在硬件与软件方面进行同步设计。硬件部分主要由AT89C52单片机,LCD显示电路,以及调时按键电路等组成。在单片机的选择上本人使用了AT89C52单片机,该单片机适合于许多较为复杂控制应用场合。显示器使用了1602液晶显示,并且使用蜂鸣器实现了整点报警的功能,温度测试的功能实现使用了DS18B20,并实现了温度过高或过低时的温度报警。软件方面主要包括日历程序、时间调整程序,显示程序等。程序采用C语言编写。所有程序编写完成后,在KeilC51软件中进

3、行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真,并最终实现基本要求。综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。一、设计要求基本要求:1,8个数码管上显示,显示时间的格式为(假如当前时间是19:32:20)“19-32-20”;2,具有日历功能;③时间可以通过按键调整。发挥部分:④具有闹钟功能(可以设定多个)。二:总体设计电路设计框图LCD液晶显示模块键盘模块AT89S52主控制模块时钟模块温度采集模块铃声报点模块系统硬件概述本电路是由AT8

4、9S52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由单片机定时功能提供;温度的采集由DS18B20构成,它具有独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯,使用时不需要额外的外围电路。并且,其测温范围-55℃~+125℃,固有测温分辨率0.5℃;显示部份使用1602液晶显示,可完美地显示年、月、日、周日、时、分、秒,且在整点时刻通过蜂鸣器实现响铃。还可以实现温度显示,且当判断得温度过高或过低时,通过液晶显示及LED发光二极管完成报警。单片机主控制模块的

5、设计AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3,MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出.第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端.液晶显示模块的设计LCD1602有16个引脚,其中VCC、

6、VSS分别为电源正负极;VO为液晶偏压信号输入端,图中W1可调节液晶明亮度;DB0—DB78位数据段;BLA、BLK背光源正负极;RS数据/命令选择端;R/W读写选择端;E使能端温度采集模块设计采用数字式温度传感器DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用P0.7与DS18B20的I/O口连接加一个上拉电阻,Vcc接电源,Vss接地。PCB图三电子时钟的软件设计系统软件按键检测流程图Y+是否按下M是否按下Y开始检测NN相应项加一—是否按下相应项减一YN系统软件定时器程序流

7、程图开始一秒到时秒加1时60秒到时分加1秒清零时固定日到时月加1日清零零时12月到时年加1月清零时24时到时日加1时清零,蜂鸣器响,星期加一时60分到时加1分清零时液晶显示子程序的设计DS18B20温度子程序voidwrite_temp(ucharadd,uchardat)//向LCD写温度数据,并指定显示位置{uchargw,sw,bw;if(dat>=0&&dat<=128){gw=dat%10;//取得个位数字sw=dat%100/10;//取得十位数字bw=dat/100;//取得百位数字}else{dat=256-dat;gw=dat

8、%10;//取得个位数字sw=dat%100/10;//取得十位数字bw=-3;//0x30-3表示为负号}write_1602com(er+add)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。