华南农业大学电子工程学院应用物理系课程设计(报告)任务书设计题目:电子万年历的设计与制作任务与要求(请按所选题目自行总结)任务:设计一个电子万年历,利用实时时钟芯片ds1302和51单片机制作实时时钟。
要求:1.使用LCD1602显示屏显示日期和时间;2.能够显示新历和农历;3. 包括时钟模块,能够显示实时时钟;4. 要有时间设置按键部分;5. 完成硬件电路的设计后,编写程序,实现时间和日期的显示等功能;6. 调试程序,完成功能验证,写出完整的课程设计。
实验器材:1.单片机最小系统:单片机(插座),晶振,电阻,电容,按键;2.电源模块:自锁开关,LED灯,USB插座;3.按键模块:按键;4.1602显示模块:1602(排母),电位器,电容;5.RTC模块:DS1302芯片(插座),晶振,CR2032电池(插座);6.DIY小部件:漆包线,杜邦线,排针,排母,IC插座,电阻包,电容包,烙铁套装;开始日期20XX 年 3 月 4 日完成日期20XX 年3 月 23 日电子万年历设计摘要:本系统是由单片机最小系统、电源模块、按键模块、LCD1602显示模块及RTC模块组成的电子万年历系统。
通过时钟模块实时进行时间和日期的计数,进而传递给单片机处理,单片机再将其传递给LCD1602模块显示当前时间,另设有按键模块可以完成时间设置以及日期查询等功能操作。
其设计简单,性能优良,时间设置可调,同时同步显示农历和星期,具有较强的实用性。
本文先简要介绍每个模块的工作原理,再作整个系统电路的综合分析,说明该电子万年历的实现过程。
Summary:This system,electronic calendar system,is posed of SCM minimum system, power supply module, keys module, LCD1602 display module and RTC module .Through RTC module for counting the time and date, and then transmit to SCM for processing,and then send it to the LCD1602 module to show the current time, also operates key modules can be pleted time setting and operating date query function.Its simple design, excellent performance, adjustable time setting, synchronous display lunar calendar and week at the same time, has strong practicability.This paper first briefly introduces the working principle of each module, and then a prehensive analysis of the circuit.The last,illustrate the whole system implementation process of the electronic calendar.关键词:万年历,计时,显示,农历Keywords: calendar、timing、display、1.引言在社会发展快速的今天,便利和谐的生活方式无疑成为人们追求的目标,而在现实生活中,很多地方还是依靠传统的日历和时钟来查看日期和时间,这样既不能快速地同时查看日期和时间,而且一般的时钟精度不高,经常需要人工校准时间。
单片机作为自动控制领域中的一个重要部件,发挥着其重要作用。
用单片机实现电子万年历,功能完善,电路的设计简单,集成芯片的可靠度高,还可以利用软件来进行定期时间校准。
在群众环保意识日益增强的今天,电子万年历可以代替传统的纸质日历,同时还可以显示实时时间,具有很强的实用性。
2.系统的设计与理论分析2.1 系统的模块图如下所示:图 1 系统模块图系统框图简单说明:单片机最小系统作为核心处理模块,读取RTC模块的实时时间并输送到LCD1602模块进行显示,通过按键模块可以更改当前时间以及查询日期信息,电源模块为整个电路系统供电。
2.2 系统的理论分析2.2.1 系统的硬件系统和软件系统概括电子万年历系统主要由单片机最小系统、按键模块、时钟模块和显示模块构成。
单片机最小系统起到数据处理的作用,初始化RTC模块和LCD模块,时钟模块接收单片机发出的指令或进行时间设置或进行实时时间计数,单片机读取时钟信息送到显示模块显示,并且可以根据不同的按键按下而实现不同的功能。
硬件部分主要由以上4部分组成,而RTC模块可以完成新历的计数功能,直接读取其时间就能得到新历时间信息,其余的功能可以通过相应的算法即用程序完成,比如农历的同步显示、星期的同步显示、按键设置时间以及自动日期纠错和自动时间校准。
在本设计程序中,时钟模块及显示模块的初始化分别通过Ds1302Init()和Lcd1602Init()来实现。
单片机从时钟模块读取数据是通过 Ds1302Read(uchar addr)来实现,而时钟模块从单片机那里读取数据是通过Ds1302ReadTime()来实现。
单片机传送命令到显示屏是通过void LcdWrite(uchar )完成,写入数据到显示屏显示是通过 LcdWriteData(uchar dat)来完成。
调用conversion_week()可以实现星期的同步显示,以及nongli1()可以实现农历的同步显示。
整体的代码架构包括六部分:头文件:LCD1602.h,DS1302.h,nongli.h;C文件:LCD1602.c,DS1302.c,main.c。
2.2.2 系统完成步骤与可行性分析首先完成原理图的绘制,根据原理图分模块完成硬件部分焊接,每焊接一个模块就测试一个模块,知道整个硬件电路都测试完,最后把整个系统程序烧录到单片机进行功能验证和程序调试。
基于硬件电路比较简洁,只要有耐心以及细心就能够完成焊接;程序部分通过小组三人的合作,细推慢敲也一定能够实现基本功能要求,故在有限的时间内,只要分工明确,刻苦坚持,也能够做出完善的系统设计。
3.硬件系统设计3.1 单片机最小系统单片机最小系统主要由电源、复位、振荡电路以及扩展部分等部分组成。
最小系统原理图如图3所示。
图3最小系统电路图3.1.1 电源供电模块图4 电源模块电路图对于一个完整的电子设计来讲,首要问题就是为整个系统提供电源供电模块,电源模块的稳定可靠是系统平稳运行的前提和基础。
51单片机虽然使用时间最早、应用范围最广,但是在实际使用过程中,一个和典型的问题就是相比其他系列的单片机,51单片机更容易受到干扰而出现程序跑飞的现象,克服这种现象出现的一个重要手段就是为单片机系统配置一个稳定可靠的电源供电模块。
本最小系统中的电源供电模块的电源通过计算机的USB口供给。
电源电路中接入了电源指示LED,图中R11为LED的限流电阻,S1 为电源开关。
3.1.2 复位电路图5 复位电路图单片机的置位和复位,都是为了把电路初始化到一个确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值。
复位电路由按键复位和上电复位两部分组成。
(1)上电复位:STC89系列单片及为高电平复位,通常在复位引脚RST上连接一个电容到VCC,再连接一个电阻到GND,由此形成一个RC充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为10K和10uF。
(2)按键复位:按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。
3.1.3 振荡电路图6 振荡电路图单片机系统里都有晶振,在单片机系统里晶振作用非常大,它结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片机的一切指令的执行都是建立在单片机晶振提供的时钟频率。
3.2 RTC时钟模块RTC模块采用DS1302芯片,晶振工作频率为32.786M。
3.2.1 DS1302芯片概括DS1302是一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。
实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。
工作电压宽达2.5~5.5V。
采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。
(1)DS1302引脚示意图如下所示:图 3 DS1302芯片图VCC2:电源输入端RST:复位端/使能端X1:晶振连接端I/O:数据传输端X2:晶振连接端SCLK:时钟信号输入端GND:接地端VCC1:备用电源输入端(2)RTC模块电路接线原理图如下所示:图 4 时钟模块连接原理图3.2.2 DS1302工作时序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码存储的。
3.3显示模块显示模块使用的是LCD1602液晶,也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号的点阵型液晶模块。