基于单片机的万年历的设计.docx
《基于单片机的万年历的设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的万年历的设计.docx(33页珍藏版)》请在冰豆网上搜索。
![基于单片机的万年历的设计.docx](https://file1.bdocx.com/fileroot1/2022-11/23/0cf1f22c-a525-492e-9670-c40ea0af83a5/0cf1f22c-a525-492e-9670-c40ea0af83a51.gif)
基于单片机的万年历的设计
安徽建筑工业学院
毕业设计(论文)
姓名
专业
电子信息工程
班级
08电子1班
学号
课题
基于单片机的万年历的设计
指导老师
二○一二年六月八日
摘要
目前单片机渗透到我们生活的各个领域,单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
本文通过对一个基于单片机的能实现万年历功能电子时钟的设计,从而达到学习、了解单片机相关指令在各方面的应用。
系统由主控制器STC89C52、时钟电路DS1302、温度采集电路DS18B20、显示电路、按键电路、和复位电路等部分构成,能实现时钟日历显示的功能,能进行时、分、秒的显示。
关键词:
单片机STC89C52,万年历,DS1302,DS18B20
Abstract
Atpresent,single-chipmicrocomputerinfiltrateallareasofourlives,single-chipwidelyusedininstrumentsandmeters,householdappliances,medicalequipment,aerospace,specializedequipmentandtheintelligentmanagementinareassuchasprocesscontrol.Itisverydifficulttofindtheareaofalmostnotracesofsingle-chipmicrocomputer.Missilenavigationequipment,aircraftcontrolonavarietyofinstruments,computernetworkcommunicationsanddatatransmission,industrialautomation,real-timeprocesscontrolanddataprocessing,arewidelyusedinavarietyofsmartICcard,limousineciviliansecuritysystems,videorecorders,cameras,thecontrolofautomaticwashingmachines,aswellasprogram-controlledtoys,electronicpet,etc.,whichareinseparablefromthesingle-chipmicrocomputer.Nottomentionthefieldofrobotautomation,intelligentinstrumentation,medicalequipmenthasbeen.Therefore,thesingle-chiplearning,developmentandapplicationcreatalargenumberofcomputerapplicationsandintelligentcontrolofscientists,engineers.
Inthispaper,throughadesignofanelectronicclock,basedonamicrocontroller,whichcanachievethefunctionofcalendar,wecouldstudyandunderstandtheapplicationofrelevantdirectivesSCMinmanyaspects.ThesystemisconstitutedbyamaincontrolSTC89C52、clockcircuitDS1302、temperaturemeasurementcircuitDS18B20、displaycircuit、keycircuitcomponentandsoon,anditcanachievethefunctionofclockcalendarandhours、minutes、secondsdisplay.
Keywords:
single-chipmicrocomputerSTC89C52,calendardemand,DS1302,DS18B20
基于单片机的万年历的设计
电子与信息工程学院电子信息工程专业08级一班xxx
指导老师:
xxx
一引言
20世纪末以来,电子技术获得了飞速的发展,在其推动下,在当今社会中,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
单片机是指一个集成在一块芯片上的完整计算机系统。
尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:
CPU、内存、内部和外部总线系统,目前大部分还会具有外存。
同时集成诸如通讯接口、定时器,实时时钟等外围设备。
而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。
目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。
电子万年历作为电子类小设计不仅是市场上的宠儿,也是单片机实验中一个很常用的题目。
因为它的有很好的开放性和可发挥性,因此对作者的要求比较高,不仅考察了对单片机的掌握能力更加强调了对单片机扩展的应用。
而且在操作的设计上要力求简洁,功能上尽量齐全,显示界面也要出色。
数字显示的日历钟已经越来越流行,特别是适合在家庭居室、办公室、大厅、会议室、车站和广场等使用,成为人们日常生活中不可少的必需品。
目前国内外所设计的数字电子万年历能对年月日、时分秒进行显示并准确的计时,能广泛应用于个人家庭、车站、码头、办公室等公共场所。
由于数字集成电路的发展和石英晶体的广泛应用,使得数字电子钟的精度远远超过老式钟表,钟表数字化给人们的生活带来了极大地方便,而且大大提高了原来钟表的报时功能。
诸如自动报警、按时自动打铃、时间程序自动控制,定时广播、定时启闭路灯、定时开关烘箱、通断动力设备,甚至各种定时电气设备的自动启用等,但是所有这些都是以钟表数字化为基础的。
因此研究万年历及扩大其应用,有着非常现实的意义。
二系统方案的设计
2.1设计方案的要求
2.1.1设计基本要求
Ⅰ、使用文字型LCD显示器显示当前的年、月、日、星期、时、分、秒。
Ⅱ、可查询当前农历日期,及当前生肖。
Ⅲ、用4个功能键操作来设置当前时间日期。
功能键K1~K4功能如下。
(1)K1——选择需要设置的时间或日期。
(2)K2——在当前单位下数据加1。
(3)K3——在当前单位下数据减1。
(4)K4——确认完成设置。
Ⅳ、日期与农历日期自动相关联。
2.2.2附加要求
Ⅰ、显示当前环境的温度。
Ⅱ、采用备用电源,对当前时间日期等数据掉电保护。
Ⅲ、显示当前日期所对应的节日。
2.2系统基本方案的选择与论证
2.2.1单片机芯片的方案的选择与论证
方案一:
采用89C51芯片作为硬件核心。
89C51芯片采用FlashROM,内部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,没有内带EEPROM存储空间,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏,并且目前该芯片已停产。
方案二:
采用STC89C52芯片作为核心。
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
另外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
在掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35Mhz,6T/12T可选。
在此设计中选择方案二。
2.2.2显示模块方案的选择与论证
方案一:
采用LED数码管动态扫描。
LED数码管价格适中,对于显示数字合适,采用动态扫描法与单片机连接时,虽然占用的单片机口线少,但无法显示文字,而且当需要显示的内容多时,连线非常麻烦,所以也不用此种作为显示。
方案二:
采用点阵式数码管显示。
点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。
方案三:
采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样化,并且清晰可见。
所以在此设计中采用LCD液晶显示屏。
2.2.3时钟芯片方案的选择与论证
方案一:
采用PCF8563时钟芯片。
PCF8563时钟芯片i2c接口,有倒计时,分频输出,中断等功能。
功能比较齐全,价格也是偏高,但实际中并不会需要用到这么多的功能,所以不应此种方案。
方案二:
采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、星期、月、年进行计数,而且精度高,31*8位的RAM做为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA。
虽然功能比较单一,但是完全足够在此设计中用,而且此芯片价格较低,所以决定用此芯片。
2.2.4温度采集芯片方案的选择与论证
方案一:
使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。
此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。
方案二:
采用数字式温度传感器DS18B20。
DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。
此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。
另外,数字式温度传感器还具有测量精度高、测量范围广等优点。
2.2.5电路供电方案的选择与论证
方案一:
采用USB接口对整个电路系统供电。
USB是一种常见的PC供电接口,他只有四根线,两个电源线,两个信号线。
USB接口类型有三种,如图2-1。
图2-1
USB接口的输出电压和电流是:
+5V、500mA,实际上是有误差的,但误差不会超过0.2V,也就是4.8V-5.2V。
实际上,由于考虑到系统供电的稳定性,还有万年历的便携性,我们最终决定舍弃这种方案。
方案二:
采用LM317对7.2V直流电池稳压到5V对系统供电。
LM317的输出电压可以从1.25V连续调节到37V。
直流稳压电路如图2-2所示。
图2-2
这种直流稳压电路可以将外接7-9V电池准确的调节在3-12V的任意一个值上,而且这种电源体积小,可便于携带。
所以,选择此种电路供电方案。
2.3电路系统方案的最终确定
综上各方案所述,对此次作品的方案选定:
采用STC89C52作为主控制系统;DS1302提供时钟;DS18B20芯片实现温度采集;LCD12864液晶显示屏作为显示;LM317直流稳压电源作为电路供电方案。
三系统硬件的设计与实现
3.1电路设计框图及系统硬件概述
系统原理框图如图3-1所示
图3-1系统原理框图
本电路是由STC89C52单片机为控制核心,低功耗,能在3V超低压工作,在本次设计中,是芯片在5V电压;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.0V~5.5V。
采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31*8位的用于临时性存放数据的RAM寄存器。
可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;温度的采集由DS18B20构成,能够采集实时温度;显示部份用的是LCD12864液晶显示器,使用动态扫描显示方式对数字的显示。
3.2主要电路单元的设计
3.2.1单片机主控模块的设计
如图3-2所示。
STC89C52单片机采用40Pin封装的双列直接DIP结构,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。
有四个I/O口P0,P1,P2,P3,MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。
图3-2STC89C52芯片引脚图
单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1和XTAL2为振荡器输入输出端口,接外部晶振,在片内它是振荡器倒相放大器的输入,接内部晶振,在片内它是振荡器倒相放大器的输出。
第9引脚为复位输入端,接上电容,电阻及开关后构成上电复位电路,20引脚为接地端,40引脚为电源端。
系统主控系统如图3-3所示。
图3-3主控系统
3.2.2时钟电路模块的设计
(1)时钟芯片DS1302的概述
DS18B20是美国DALLLAS公司推出的一种高性能,低功耗的实时时钟芯片,附加31字节的静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。
实时时钟可提供秒、分、时、星期、月和年的信息数据。
一个月小于31天时可以自动调整,切具有闰年补偿功能。
工作电压在2.5到5.5伏。
采用双电源供电(主电源与备用电源),可设置备用电源充电方式,提供了对后备电源的涓细电流的充电方式。
DS1302用于数据记录,特别是对于有些具有特殊意义的数据点记录上,能实现数据与出现该数据的时间的同时记录,因此广泛用于测量系统中。
DS1302的外部引脚如图3-4,内部结构如图3-5。
图3-4DS1302的外部引脚分布图
图3-5DS1302的内部结构图
(2)时钟芯片DS1302的工作原理
主要工作原理图如图3-6所示:
移位寄存器,控制逻辑,晶振,时钟和RAM。
在进行任何数据传输时,/RST必须被置高电平(注意虽然将它置为高电平,内部时钟还是在晶振作用下走时的,此时,允许外部读写数据)在每个SCLK上升沿时数据被输入,下降沿时数据被输出,一次只能读写一位,但还是写需要通过串行输入控制指令来实现(也是一个字节),通过8个脉冲便可读取一个字节从而实现串行输入与输出。
最初通过8个时钟周期载入到移位寄存器。
如果控制指令选择的是单字节模式,连续的8个时钟脉冲可以进行8位数据的写和8位数据的读操作,SCLK时钟的上升沿时,数据被写入DS1302,SCLK脉冲的下降沿读出DS1302的数据。
8个脉冲便可读写一个字节。
在突发模式,通过连续的脉冲一次性读写完7个字节的时钟/日历寄存器(注意时钟/日历寄存器要读写完),也可以一次性读写8~328位RAM数据(可按实际情况读写一定数量的位,不必全部读写,两者得区别)。
DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置“0”,接着把RST端置“1”,最后才给予SCLK脉冲。
图3-6DS1302工作原理图
(3)DS1302的控制字节
DS1302的控制字如表3-1所示。
控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
表3-1DS1302的控制字格式
RAMRD
1A4A3A2A1A0
/CK/WR
(4)数据输入输出(I/O)
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。
同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
如下图3-7所示。
图3-7DS1302读/写时序图
(5)DS1302的寄存器
DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表3-2。
“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。
“WP”是写保护位,在任何对时钟和RAM的写操作之前,“WP”必须为0。
当“WP”为1时,写保护位防止对任一寄存器的写操作。
表3-2DS1302的日历、时间寄存器
此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。
时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。
DS1302与RAM相关的寄存器分为两类:
一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。
(6)DS1302时钟芯片的连接
图3-8示出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进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。
SCLK始终是输入端。
图3-8DS1302引脚图
3.2.3温度采集模块设计
如图3-9所示。
采用数字式温度传感器DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用P1.4与DS18B20的DQ口连接(焊接实物时可加一个上拉电阻),VCC接电源,GND接地。
图3-9DS18B20温度采集
DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。
DS18B20测温原理如图4-10所示。
图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。
高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
图3-10中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
图3-10DS18B20测温原理框图
3.2.4显示模块的设计
如图3-11为LCD12864显示模块。
。
图3-11LCD液晶显示屏显示模块
12864是128*64点阵液晶模块的点阵数简称,带中文字库的LCD12864是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8×4行16×16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
3.2.5原理图的整体设计
一个系统的功能可能需要多个控制电路来实现,而且相应的某张电路图需要几部分组成,而且电路图的设计组织也是非常重要的。
系统的电路图如下图3-12所示。
图3-12
四系统的软件设计
4.1程序流程框图
系统主要流程图如下所示,主程序流程图4-1,时间调整程序流程图4-2。
图4-1主程序流程图
图4-2时间调整程序流程图
4.2子程序的设计
4.2.1DS18B20温度采集有关子函数
程序流程图如图4-3所示
图4-3DS18B20程序流程图
voiddelayb(unsignedintcount)//delay
{
unsignedchari;
while(count)
{
i=200;
while(i>0)
i--;
count--;
}
}
voidDS18B20Init(void)//DS18B20初始化
{
unsignedinti;
DS18B20=0;
i=103;
while(i>0)i--;
DS18B20=1;
i=4;
while(i>0)i--;
}
bitTempReadBit(void)//读一位
{
unsignedinti;
bitdat;
DS18B20=0;i++;//小延时一下
DS18B20=1;i++;i++;
dat=