电子万年历的设计与制作课程设计_第1页
电子万年历的设计与制作课程设计_第2页
电子万年历的设计与制作课程设计_第3页
电子万年历的设计与制作课程设计_第4页
电子万年历的设计与制作课程设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

华南农业大学电子工程学院应用物理系课程设计(报告)任务书设计题目电子万年历的设计与制作任务与要求(请按所选题目自行总结)任务设计一个电子万年历,利用实时时钟芯片DS1302和51单片机制作实时时钟。要求1使用LCD1602显示屏显示日期和时间;2能够显示新历和农历;3包括时钟模块,能够显示实时时钟;4要有时间设置按键部分;5完成硬件电路的设计后,编写程序,实现时间和日期的显示等功能;6调试程序,完成功能验证,写出完整的课程设计论文。实验器材1单片机最小系统单片机(插座),晶振,电阻,电容,按键;2电源模块自锁开关,LED灯,USB插座;3按键模块按键;41602显示模块1602(排母),电位器,电容;5RTC模块DS1302芯片(插座),晶振,CR2032电池(插座);6DIY小部件漆包线,杜邦线,排针,排母,IC插座,电阻包,电容包,烙铁套装;开始日期2016年3月4日完成日期2016年3月23日电子万年历设计摘要本系统是由单片机最小系统、电源模块、按键模块、LCD1602显示模块及RTC模块组成的电子万年历系统。通过时钟模块实时进行时间和日期的计数,进而传递给单片机处理,单片机再将其传递给LCD1602模块显示当前时间,另设有按键模块可以完成时间设置以及日期查询等功能操作。其设计简单,性能优良,时间设置可调,同时同步显示农历和星期,具有较强的实用性。本文先简要介绍每个模块的工作原理,再作整个系统电路的综合分析,说明该电子万年历的实现过程。SUMMARYTHISSYSTEM,ELECTRONICCALENDARSYSTEM,ISCOMPOSEDOFSCMMINIMUMSYSTEM,POWERSUPPLYMODULE,KEYSMODULE,LCD1602DISPLAYMODULEANDRTCMODULETHROUGHRTCMODULEFORCOUNTINGTHETIMEANDDATE,ANDTHENTRANSMITTOSCMFORPROCESSING,ANDTHENSENDITTOTHELCD1602MODULETOSHOWTHECURRENTTIME,ALSOOPERATESKEYMODULESCANBECOMPLETEDTIMESETTINGANDOPERATINGDATEQUERYFUNCTIONITSSIMPLEDESIGN,EXCELLENTPERFORMANCE,ADJUSTABLETIMESETTING,SYNCHRONOUSDISPLAYLUNARCALENDARANDWEEKATTHESAMETIME,HASSTRONGPRACTICABILITYTHISPAPERFIRSTBRIEFLYINTRODUCESTHEWORKINGPRINCIPLEOFEACHMODULE,ANDTHENACOMPREHENSIVEANALYSISOFTHECIRCUITTHELAST,ILLUSTRATETHEWHOLESYSTEMIMPLEMENTATIONPROCESSOFTHEELECTRONICCALENDAR关键词万年历,计时,显示,农历KEYWORDSCALENDAR、TIMING、DISPLAY、LUNARCALENDAR1引言在社会发展快速的今天,便利和谐的生活方式无疑成为人们追求的目标,而在现实生活中,很多地方还是依靠传统的日历和时钟来查看日期和时间,这样既不能快速地同时查看日期和时间,而且一般的时钟精度不高,经常需要人工校准时间。单片机作为自动控制领域中的一个重要部件,发挥着其重要作用。用单片机实现电子万年历,功能完善,电路的设计简单,集成芯片的可靠度高,还可以利用软件来进行定期时间校准。在群众环保意识日益增强的今天,电子万年历可以代替传统的纸质日历,同时还可以显示实时时间,具有很强的实用性。2系统的设计与理论分析21系统的模块图如下所示图1系统模块图系统框图简单说明单片机最小系统作为核心处理模块,读取RTC模块的实时时间并输送到LCD1602模块进行显示,通过按键模块可以更改当前时间以及查询日期信息,电源模块为整个电路系统供电。22系统的理论分析221系统的硬件系统和软件系统概括电子万年历系统主要由单片机最小系统、按键模块、时钟模块和显示模块构成。单片机最小系统起到数据处理的作用,初始化RTC模块和LCD模块,时钟模块接收单片机发出的指令或进行时间设置或进行实时时间计数,单片机读取时钟信息送到显示模块显示,并且可以根据不同的按键按下而实现不同的功能。硬件部分主要由以上4部分组成,而RTC模块可以完成新历的计数功能,直接读取其时间就能得到新历时间信息,其余的功能可以通过相应的算法即用程序完成,比如农历的同步显示、星期的同步显示、按键设置时间以及自动日期纠错和自动时间校准。在本设计程序中,时钟模块及显示模块的初始化分别通过DS1302INIT和LCD1602INIT来实现。单片机从时钟模块读取数据是通过DS1302READUCHARADDR来实现,而时钟模块从单片机那里读取数据是通过DS1302READTIME来实现。单片机传送命令到显示屏是通过VOIDLCDWRITECOMUCHARCOM完成,写入数据到显示屏显示是通过LCDWRITEDATAUCHARDAT来完成。调用CONVERSION_WEEK可以实现星期的同步显示,以及NONGLI1可以实现农历的同步显示。整体的代码架构包括六部分头文件LCD1602H,DS1302H,NONGLIH;C文件LCD1602C,DS1302C,MAINC。222系统完成步骤与可行性分析首先完成原理图的绘制,根据原理图分模块完成硬件部分焊接,每焊接一个模块就测试一个模块,知道整个硬件电路都测试完,最后把整个系统程序烧录到单片机进行功能验证和程序调试。基于硬件电路比较简洁,只要有耐心以及细心就能够完成焊接;程序部分通过小组三人的合作,细推慢敲也一定能够实现基本功能要求,故在有限的时间内,只要分工明确,刻苦坚持,也能够做出完善的系统设计。3硬件系统设计31单片机最小系统单片机最小系统主要由电源、复位、振荡电路以及扩展部分等部分组成。最小系统原理图如图3所示。图3最小系统电路图311电源供电模块图4电源模块电路图对于一个完整的电子设计来讲,首要问题就是为整个系统提供电源供电模块,电源模块的稳定可靠是系统平稳运行的前提和基础。51单片机虽然使用时间最早、应用范围最广,但是在实际使用过程中,一个和典型的问题就是相比其他系列的单片机,51单片机更容易受到干扰而出现程序跑飞的现象,克服这种现象出现的一个重要手段就是为单片机系统配置一个稳定可靠的电源供电模块。本最小系统中的电源供电模块的电源通过计算机的USB口供给。电源电路中接入了电源指示LED,图中R11为LED的限流电阻,S1为电源开关。312复位电路图5复位电路图单片机的置位和复位,都是为了把电路初始化到一个确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值。复位电路由按键复位和上电复位两部分组成。(1)上电复位STC89系列单片及为高电平复位,通常在复位引脚RST上连接一个电容到VCC,再连接一个电阻到GND,由此形成一个RC充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为10K和10UF。(2)按键复位按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。313振荡电路图6振荡电路图单片机系统里都有晶振,在单片机系统里晶振作用非常大,它结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片机的一切指令的执行都是建立在单片机晶振提供的时钟频率。32RTC时钟模块RTC模块采用DS1302芯片,晶振工作频率为32786M。321DS1302芯片概括DS1302是一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2555V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。(1)DS1302引脚示意图如下所示图3DS1302芯片图VCC2电源输入端复位端/使能端RSTX1晶振连接端I/O数据传输端X2晶振连接端SCLK时钟信号输入端GND接地端VCC1备用电源输入端(2)RTC模块电路接线原理图如下所示图4时钟模块连接原理图322DS1302工作时序DS1302是通过SPI串行总线跟单片机通信的,当进行一次读写操作时最少得读写两个字节,第一个字节是控制字节,就是一个命令,告诉DS1302是读还是写操作,是对RAM还是对CLOK寄存器操作。第二个字节就是要读或写的数据了。(1)单字节读单字节读只有在SCLK为低电平时,才能将CE置为高电平。所以在进行操作之前先将SCLK置低电平,然后将CE置为高电平,接着开始在IO上面放入要传送的电平信号,然后跳变SCLK。数据在SCLK上升沿时,DS1302读取数据,在SCLK下降沿时,DS1302放置数据到IO上。(2)单字节写单字节写只有在SCLK为低电平时,才能将RST置为高电平。说以在进行操作之前先将SCLK置低电平,然后将RST置为高电平,开始在IO上面放入要传送的电平信号,然后跳变SCLK。数据在SCLK上升沿时,DS1302读取数据,在SCLK下降沿时,DS1302放置数据到IO上。(3)DS1302内部寄存器原理图时钟/日历包含在7个寄存器中,数据在时钟/日历寄存器中是二进制编码的十进制格式存储的,也就是常说的BCD码存储的。33显示模块显示模块使用的是LCD1602液晶,也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号的点阵型液晶模块。它是由若干个5X7或者5X11的点阵字符位组成,每个点阵字符位都可以用显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此,所以它不能很好的显示图片。LCD1602的引脚图LCD1602引脚说明1脚和2脚GND和VCC,为LCD1602工作的电源接入。3脚VL,液晶显示偏压信号,用于调整LCD1602的显示对比度,一般会外接电位器用以调整偏压信号,注意此脚电压为0时可以得到最强的对比度。4脚RS,数据/命令选择端,当此脚为高电平时,可以对1602进行数据字节的传输操作,而为电平时,则是进行命令字节的传输操作。命令字节,即是用来对LCD1602的一些工作方式作设置的字节;数据字节,即使用以在1602上显示的字节。值得一提的是,LCD1602的数据是8位的。5脚R/W,读写选择端。当此脚为高电平可对LCD1602进行读数据操作,反之进行写数据操作。笔者认为,此脚其实用处不大,直接接地永久置为低电平也不会影响其正常工作。但是尚未经过复杂系统验证,保留此意见。6脚E,使能信号,其实是LCD1602的数据控制时钟信号,利用该信号的上升沿实现对LCD1602的数据传输。714脚8位并行数据口,使得对LCD1602的数据读写大为方便。15、16脚BGVCC和BGGND,为LCD1602背光显示的电源接入。LCD1602显示模块接线原理图如下所示图5LCD1602连接原理图操作步骤1、初始化;2、写命令(RSL)设置显示坐标;3、写数据(RSH)。写操作时序图显示开/关及光标设置图RAM地址映射图图34系统总流程分析及系统原理图图6电子万年历总体原理图电源通过USB插口接入,接到自锁开关,开关控制整个电路的电源,再接到单片机STC89S52芯片的VCC脚,其中引脚40为接地端GND。单片机的P30P33引脚连接4个按键,其中一个连了外部中断0,用来实现时间暂停以便进入时间和日期设置,其余3个则为时间加减以及设置位的选择。单片机的P35P3脚分别连接DS1302芯片的(复位端)、SCLK(时钟信号输入端)RST以及I/O(数据传输端)端,用来与DS1302芯片进行数据传输,此外还增加了备用电源,在没有接电时用来保持时间;单片机的P07P00脚则接LCD1602的数据口,P24P26脚分别连接LCD1602的RW、RS及EN,控制LCD1602的数据传输功能,LCD1602外接一个电位器用来控制液晶屏显示对比度,电源和地接入一个发光二极管(串联一个电阻),作为电源指示灯。4软件系统设计41功能设计与特点(1)能够显示公历和当前时间;(2)农历和星期跟随公历同步显示,并且能够显示出农历中的闰月;(3)可对当前时间进行设置,有时间和时间操作;(4)自动日期更正,即按键设置过程中不会显示错误的日期;(5)农历查询范围达到200年。42程序子模块设计(1)时钟模块及显示模块的初始化;(2)RTC时钟模块操作函数;(3)LCD显示模块操作函数;(4)扫描按键进行时钟模块的时间设置;(5)显示子程序,合理排版公历、农历、时间和星期的显示;(6)农历和星期转换函数;43程序的流程图如下所示开始LCD初始化DS1302初始化44程序关键算法设计(1)星期转换算法公历日所对应的星期天可以通过计算直接得到,理论上公元0年1月1日为星期日,只要求得公历日离公元0年1月1日的日子数除7后的余数就是星期天。为了简化计算,采用月校正法,根据公历的年月日可直接计算出星期天。其算法是日期年份所过闰年数月校正数之和除以7的余数就是星期天,但如果是在闰年又不到3月份,上述之和要减一天再除7。其112月的校正数据为6、2、2、5、0、3、5、1、4、6、2、4。(2)农历转换算法实现公历与农历的转换,一般采用查表法,按日查表是速度最快的方法,但51单片机寻址能力有限,不可能采用按日查表的方法,除按日查外,我们可以通过按月查表和按年查表的方法,再通过适当的计算,来确定公历日所对应的农历日期。本文采用的是按年查表法,最大限度地减少表格所占的程序空间。对于农历月来说,大月为30天,小月为29天,这是固定不变的,这样我们就可用1个BIT来表示大小月信息。农历一年,如有闰月为13个月,否则是扫描按键按键功能选择子程序显示子程序结束12个月,所以一年需要用13个BIT,闰月在农历年中所在的月份并不固定,大部分闰月分布在农历28月,但也有少量年份在9月以后,所以要表示闰月的信息,至少要4BIT,在这里我们用4BIT的值来表示闰月的月份,值为0表示本年没有闰月。有了以上信息还不足以判断公历日对应的农历日,因为还需要一个参照日,我们选用农历正月初一所对应的公历日期作参照日,公历日最大为31日,需要5BIT来表示,而春节所在的月份不是1月就是2月,用1BIT就够了,考虑到表达方便,我们用2BIT来表示春节月,2BIT的值直接表示月份。这样一年的农历信息只用3个字节就全部包括了。计算公历日对应的农历日期的方法先计算出公历日离当年元旦的天数,然后查表取得当年的春节日期,计算出春节离元旦的天数,二者相减即可算出公历日离春节的天数,以后只要根据大小月和闰月信息,减一月天数,调整一月农历月份,即可推算出公历日所对应的农历日期。如公历日不到春节日期,农历年要比公历年小一年,农历大小月取前一年的信息,农历月从12月向前推算。5系统运行情况分析(1)上电开始工作USB插口外接5V直流电源,开启开关,电路正常工作,显示当前时间与日期。(2)时间和日期的设置按下按键K3,触发中断,进入时间设置模式,光标显示出当前设置位,按键K2可以移动光标并且转向其他设置位,而K1和K4分别为和功能,可以方便的设置时间。(3)LCD显示的内容LCD左上角显示的是年、月、日,右下角显示的是相应的农历。LCD右上角显示的是星期,左下角显示的是当前的时间,表现为24小时制的时、分、秒。(4)在设置时间的过程中,从不会出现显示错误的日期,达到了预期的目标。(5)农历的显示范围以及闰月的显示在查询时间时,农历可以正确显示从19002099年间200年范围,并且在闰月出现时能够显示一个R代表闰月,达到预期功能。(6)时间误差测试经过两天的测试,系统时间精度能到达到每天小于1S的时间误差。6总结与讨论61系统不足与改进在设计电路与调试的过程中,我们遇到了不少问题,经过仔细思考找到了问题原因,也对实际应用情况下应该注意及改善的问题进行了总结,这些经验对于我们以后自己设计电路的时候无疑有很大的帮助。主要有以下几点1电源指示灯不能直接接到单片机的VCC,LED灯的压降使得单片机无法正常工作。2单片机的0口作为输出端口的时候要接上拉电阻。3焊电路时,应该要一个模块一个模块来焊接,并且逐一测试完再焊下一个模块,避免整个系统焊接完成出现问题而找不到问题原因所在。4程序的时间查询功能不完善,查询过程会改变当前时间,有待改进。5按键灵敏度不高。6程序缺少时间自动校准函数,这样长时间积累会造成时间误差,有待改进。62总结语在此次的课程设计中,我们对之前学的理论知识有进一步理解,并能将其应用到实际中,做到理论与实际相结合。设计的过程中也遇到了不少困难,例如,一开始我们要自己设计原理图和选择元件,这和以前相比是不同的,原理图完全靠自己去想,老师不会给出。当我们想到大致原理图时,开始进行软件画图和仿真,发现电路连接完却不能仿真出正确的结果,试过几次后,从各个模块检查,小组同学再一起进行探讨,最后终于发现导致仿真失败的原因,并且解决了问题,实现了预期功

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论