您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于51单片机的12864液晶显示的万年历
1单片机课程设计电子万年历电气工程学院2基于51单片机电子万年历课程设【摘要】电子万年历是一种非常广泛日常计时工具。它可以对年、月、日、周日、时、分、秒进行精确计时,同时可显示闰年农历温度信息,在日常生活中极为实用,DS1302是常用的时钟芯片,几个低廉,精度高且对于数字电子万年历采用直观的数字显示,还具有时间校准等功能。本设计是基于51系列的单片机进行的电子万年历设计,可以显示年月日时分秒及周信息,具有可调整日期和时间功能。而且还具有温度报警、常用的阴阳历节日提醒、以及掉电保护功能。关键词:单片机时钟电钟DS1302DS18B20温度报警节日提醒一、设计要求与方案论证1.1设计要求:基本要求A.具有年、月、日、星期、时、分、秒等功能;B.万年历具有闰月识别显示功能;C.具备年、月、日、星期、时、分、秒校准功能;D.具备温度报警、节日提醒、闹钟功能;电路设计综上各方案所述,对此次作品的方案选定:采用AT89S52作为主控制系统;DS1302提供时钟;数字式温度传感器;LED数码管动态扫描作为显示。二.系统的硬件设计与实现2.1电路设计框图STC89C52主控制模块LCD12864液晶显示模块键盘模块蜂鸣器报警模块32.2系统硬件概述本电路是由STC89C52单片机为控制核心,具有操作简单的优点;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31*8的用于临时性存放数据的RAM寄存器。可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;温度的采集由DS18B20构成;由于AT24C02采用I2C总线结构,操作简单而且具有长久的数据保存能力,所有动设定的温度报警温度以及闹钟的定时时间以及闹钟的开关用AT24C02来存储。2.3主要单元电路的设计2.3.1单片机主控制模块的设计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引脚为电源端.如图-1所示DS1302时钟模块AT24C02存储模块DS18B20模块4图-1主控制系统2.3.2时钟电路模块的设计DS1302是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。图-2示出DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768KHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RSTS置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。中有在SCLK为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。SCLK始终是输入端。5图-2DS1302的引脚图2.3.3显示模块的设计在本万年历当中12864液晶显示当前的实时时间重要的阴阳历节日等功能。12864液晶具有如下的特性:1提供8位,4位并行接口及串行接口可选2并行接口适配M6800时序3自动电源启动复位功能4内部自建振荡源64×16位字符显示RAM(DDRAM最多16字符×4行,LCD显示范围16×2行)(改为半角输入)2M位中文字型ROM(CGROM),总共提供8192个中文字型(16×16点阵)16K位半宽字型ROM(HCGROM),总共提供126个西文字型(16×8点阵)64×16位字符产生RAM(CGRAM)15×16位总共240点的ICONRAM(ICONRAM)其与单片机的连接电路如下6图-312864液晶显示接口电路图2.3.4温度传感器DS18B20的工作原理在本万年历当中温度的采集采用数字温度传感器DS18B20。它属于单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。具有如下的经济特点:(1)只要求一个端口即可实现通信。(2)在DS18B20中的每个器件上都有独一无二的序列号。(3)实际应用中不需要外部任何元器件即可实现测温。(4)测量温度范围在-55。C到+125。C之间。(5)数字温度计的分辨率用户可以从9位到12位选择。(6)内部有温度上、下限告警设置。DS18B20与单片机连接电路如下:72.3.5按键调整系统按键采用4个独立的按键,一个功能键、一个确认键、一个加按键、一个减按键通过这四个按键可以来合理的设置时钟的调整和闹铃的设定温度报警的上下限数值。与单片机的连接电路如下2.3.6AT24C02工作原理存储系统采用AT24C02,管脚封装如下:具有很好的可靠性参数如下:8工作温度工业级-55℃~+125℃商业级0℃~+75℃贮存温度-65℃~+150℃各管脚承受电压-2.0VCC+2.0VVCC管脚承受电压-2.0~+7.0V封装功率损耗(Ta=25℃)1.0W输出短路电流100mA通过器件地址输入端A0、A1和A2可以实现将最多8个AT24C02器件连接到总线上。可以设置温度报警的上下限温度、闹钟时间以及闹钟是否开启的存储,保证在掉电以后设置的参数不会丢失。AT24C02与单片机的连接电路如下:2.3.7蜂鸣器报警模块当实际的温度高于设置在AT24C02当中的温度时或者当前的时间等于AT24C02中设置闹钟时间时蜂鸣器便会发出声音进行提示。与单片机的连接电路如下:9三、系统的软件设计3.1程序流程框图图-A主程序流程图10图-B计算阳历程序流程图1112图-C时间调整程序流程图YNYNY图D设置温度报警闹钟的数据保存到AT24C02中是否进入温度报警上下限温度设置设置是否进入设置闹钟时间设置报警温度上下限开始设置闹钟的时间开始报警、闹钟的开关是否开起AT24C02保存设置的功能蜂鸣器开启,闹钟报警功能开启结束设置13五、作品功能实现通过硬件的焊接与程序的编写,本电子万年历终于完成了,实现的功能如下:14151617六、设计总结在整个设计过程中,发挥团队精神,分工合作,自主学习,通过对以前知识的补充和学习。较好的完成了作品,完成了本次课程设计的要求。在最初的设计中,,对于52单片机进行了充分的了解,并与51相比较,了解了两种单片机的不同,并相互学习、相互讨论、最终决定使用89C52单片机制作。电路的布局在protel软件中进行了期间排布,使得期间在板子上尽可能合理分配。电路焊接时大量使用了插针,防止了在在焊接中导线的错误链接,减小电路工程量。达到事半功倍的效果。程序编写中,由于思路不清晰,开始时遇到了很多的问题,通过和同组员的讨论,以及对大量书籍资料和论坛中成功的品进行借鉴,明白了编程中的的主要算法和实现,从而解决的大部分问题。对于液晶屏幕,开始并不是很了解,在运用时查看了大量的手册资料,并阅读了网友对于12864液晶的驱动编写代码,从而掌握了12864液晶的使用。对于单片机的扩展我们以前学习的键盘和1802对我们很有用,在本次单片机课程设计中对于单片机功能及应用有了充分了认识。充分了解了单片机的应用。并对只是进行了补充学习在大量阅读文献资料后,感觉对单片机的了解还很少。以后将及时补充相关知识,对单片机进行系统学习。参考文献【1】李建忠.单片机原理及应用.西安电子科技大学出版2006.02【2】张俊谟.单片机中级教程.北京航空航天大学出版2006.03【3】]余发山.单片机原理及及应用技术.中国矿业大学出版社2003.12【4】杨凌霄.微型计算机原理及应用.中国矿业大学出版社2004.08【5】何立民.单片机应用技术选编.北京航空航天大学出版社2000.08【6】万光毅.单片机实验与实践教程.北京航空航天大学出版社2005.0118【7】周航慈.单片机程序设计基础.北京航空航天大学出版社1991.11【8】黄遵熹.单片机原理接口与应用.西北工业大学出版社1997.05【9】杨振江,杜铁军,李群.流行单片机实用子程序及应用实例[M].西安:西安电子科技大学出版社,2002【10】杨子文编单片机原理及应用西安电子科技大学出版社2006【11】王法能编单片机原理及应用科学出版社2004附录程序/*****************说明***********************************基于51单片机的12864液晶显示的万年历版权所有,如需转载请通知本人,不得用于商业用途,仅限学习交流之用*****************************************************************/#includereg52.h#includeintrins.h#defineLCD_DataP0#defineucharunsignedcharunsignedcharsec,min,hour,day,month,year,cen,week,next,aa,bb,cc,dd,mm,temp0,LunarMonth,LunarDay,LunarYear;inttemp;uchartt=1;bitc_moon;bitcenbit=1;bitw;sbitLCD_RS=P2^0;sbitLCD_RW=P2^1;sbitLCD_E=P2^2;sbitPSB=P2^3;sbitDS1302_CLK=P3^7;sbitDS1302_IO=P3^6;sbitDS1302_RST=P3^5;sbitDS18B20=P2^5;sbitspeak=P2^7;sbitSetKey=P1^4;//按键功能:设置sbitSureKey=P1^5;//按键功能:确认sbitPlusKey=P1^6;//按键功能:加sbitReduceKey=P1^7;//按键功能:减sbitscl=P1^1;sbitsda=P1^0;voidDisplayShengXiao(void);voiddelay(unsignedinta)//延时1MS/次{unsignedchari;while(--a){for(i=0;i125;i++);}}voiddelayb(unsignedintcount){while(count--);}voiddelays(){;;}voidstart(){sda=1;scl=1;delays();sda=0;delays();}voidstop(){sda=0;scl=1;delays();19sda=1;delays
本文标题:基于51单片机的12864液晶显示的万年历
链接地址:https://www.777doc.com/doc-4226935 .html