基于单片机的电子万年历的设计—毕业设计论文

上传人:痛*** 文档编号:78541823 上传时间:2022-04-21 格式:DOC 页数:45 大小:415.52KB
收藏 版权申诉 举报 下载
基于单片机的电子万年历的设计—毕业设计论文_第1页
第1页 / 共45页
基于单片机的电子万年历的设计—毕业设计论文_第2页
第2页 / 共45页
基于单片机的电子万年历的设计—毕业设计论文_第3页
第3页 / 共45页
资源描述:

《基于单片机的电子万年历的设计—毕业设计论文》由会员分享,可在线阅读,更多相关《基于单片机的电子万年历的设计—毕业设计论文(45页珍藏版)》请在装配图网上搜索。

1、毕业设计说明书(论文)设计(论文)题目: _ 基于单片机的万年历系统设计 专 业: 班 级: 学 号: 姓 名: 指导教师: 信息职业技术学院毕业设计(论文)任务书学 生姓 名学号01班级应电08-2专业应用电子技术设计(或论文)题目电子万年历的设计指导教师姓名职 称工作单位及所从事专业联系方式备 注讲师学院21设计(论文)内容:利用单片机控制和高性能时钟芯片设计一电子万年历。要求该系统具有如下特点和功能:1.可显示公历及农历年、月、日和时、分、秒;2.走时准确,可调整公历年、月、日和时、分、秒;3.采用市电通过电源适配器供电,当市电停电时,不但万年历所有数据不丢失,且万年历照常运行(有后备电

2、池供电,可供数年);4.万年历设置运行到2099年。进度安排:要有较为详细的时间安排(时间具体到周);第24周:查找资料,选择参考方案; 第56周:确定方案;第78周:查找资料,进行单元电路的设计;第910周:整机电路整机与分析;第1112周:整理报告,定稿; 第1314周:制作PPT,准备答辩;第15周:答辩。主要参考文献、资料(写清楚参考文献名称、作者、出版单位):1 王新颖.单片机原理及应用.北京:北京大学出版社,20082 陈忠平.单片机基础与最小系统实践.北京:北京航空航天大学出版社,20066 沈庆阳.8051单片机实践与应用.北京:清华大学出版社,20034 侯玉宝.基于Prot

3、eus的51系列单片机设计与仿真.北京:电子工业出版社,20085 何立民.单片机应用技术选编.北京:北京航空航天出版社,20066 杨振江.流行单片机实用子程序及应用实例.西安:西安电子科技大学出版社,20077 王明顺.可涓流充电的串行实时时钟芯片DS1302.北京:电子工业出版社,20098 刘和平.单片机原理及接口程序设计.北京:北京航天航空大学出版社,2008审批意见教研室负责人:年 月 日备注:任务书由指导教师填写,一式二份。其中学生一份,指导教师一份。目 录摘要1第1章绪论2第2章设计方案32.1 系统基本方案选择和论证32.1.1 单片机的选择32.1.2 显示模块的选择32.

4、1.3 键盘模块的选择32.1.4 时钟芯片的选择42.1.5 温度传感器的选择42.2 电路设计最终方案决定5第3章硬件设计63.1 AT89C52单片机63.1.1 AT89C52的信号引脚83.2 DS1302时钟模块103.2.1 内部结构及引脚113.2.2 工作原理123.2.3 寄存器和控制命令123.3 DS18B20温度采集模块143.3.1 内部结构及引脚153.3.2 测温原理153.3.3 工作过程及时序163.4 键盘模块203.5 LCD显示模块21第4章软件设计234.1 温度采集软件234.2 阳历软件设计244.3 阴历软件设计264.4 LCD显示系统294

5、.5 按键系统304.6 系统主流程图31第5章系统调试325.1 调试过程325.2 仿真结果33总结34参考文献35附录1整机电路图36附录2元件明细表37附录3 系统主程序38II摘要电子万年历能显示:年、月、日、时、分、秒及星期信息,并具有可调整日期和时间功能。选用的是单片机AT89C52来实现电子万年历的功能。该电子万年历主要由单片机、LCD显示电路、DS18B20温度采集模块、DS1302时钟电路模块组成。系统以硬件软件化为指导思想,充分发挥单片机功能,大部分功能通过软件编程来实现,电路简单明了,系统稳定性高,同时该系统还具有功耗小、成本低的特点,具有很强的实用性。由于该系统所用元

6、器件较少,单片机所被占用的I/O口不多,因此系统具有较强的可扩展性。软件程序均采用C语言编写,便于移植与升级。报告详细介绍了整个系统的硬件组成结构、工作原理和系统的软件程序设计。关键词万年历;AT89C52;DS1302;DS18B20第1章绪论随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计时的消费需求也是越来越多。二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。第二次革命是石英晶体振荡器的应用,发明

7、了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!因此,电子万年历的出现带来了钟表计时业界跨跃性的进步。本文介绍了基于AT89C52单片机设计的电子万年历。首先介绍单片机的发展与其在中低端领域中的优势以及课题的开发意义,接着介绍了AT89C52单片机的硬件结构,并在此基础上实现了万年历基本电路的设计,然后使用单片机C语

8、言进行万年历程序的设计,程序采用模块化结构,使得逻辑关系简单明了,维护方便。第2章设计方案2.1 系统基本方案选择和论证2.1.1 单片机的选择方案一:采用传统的AT89C52作为电机的控制核心。单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制,并且由于其功耗低、体积小、技术成熟和成本低等优点,使其在各个领域应用广泛。方案二:采用FTC10F04单片机,还带有非易失性Flash程序存储器。它是一种高性能、低功耗的8位CMOS微处理芯片,市场应用最多。其主要特点如下:8KB Flash ROM,可以擦除1000次以上,数据保存10年。方案比较:由于本系统对CPU运

9、算速度要求很高,需要执行很复杂的运算,方案一成本比较低,适合做设计,方案二运算速度高,性能好,所以两种方案都有可取之处。选用方案一作为主方案,方案二作为备用方案。2.1.2 显示模块的选择 方案一:使用传统的LED数码管显示。 数码管具有:低能耗、低损耗、低压、寿命长、耐老化、防晒、防潮、防火、防高(低)温,对外界环境要求低,易于维护,同时其精度比较高,称重轻,精确可靠,操作简单。数码管采用BCD编码显示数字,程序编译容易,资源占用较少。但显示不够直观,太过单调,电源设计复杂。方案二:使用液晶显示屏显示时间数字。 液晶显示屏(LCD)具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影象稳定

10、不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强等特点。方案比较:LED数码管虽然操作简单,实用性高,但显示太过单调。而本设计显示内容量大,采用LCD液晶显示画面效果好,直观明了,故选用方案二。2.1.3 键盘模块的选择在对日期和时间进行控制,对日期和时间进行调节校准过程中,系统需要产生激励电流,因此需要用按键。方案一:使用独立式键盘。独立式键盘是指直接用I/O口线构成的单个按键电路。独立式按键电路配置灵活,软件结构简单。方案二:使用矩阵式键盘。矩阵式键盘是由行线和列线组成,按键位于行、列的交叉点上,行线、列线分别连接到按键开关的两端。其特点是简单且不增加成本,这种键盘适合按键数量

11、较多的场合。方案比较:因为本设计键盘部分简单需要的按键少,故采用独立式按键选择方案二。2.1.4 时钟芯片的选择方案一:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。方案二:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V5.5V范围内,2.5V时耗电小于300nA.方案比较:虽然采用单片机定时计数器提供秒信号可实现功能且减少芯片的使用,但误差较大,而D

12、S1302时钟芯片是一种高性能芯片,精度高还具有闰年补偿功能,所以采用方案二。2.1.5 温度传感器的选择方案一:使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。方案二:采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。方

13、案比较:选用DS18B20数字式温度传感器,与单片机连接简单,成本低,还具有测量精度高、测量范围广等优点。而热敏电阻作为传感器,成本高,误差大。所以选用方案二。2.2 电路设计最终方案决定综上各方案所述,对此次作品的方案选定: AT89C52单片机,内部自带有6KB的Flash存储器及256KB RAM单元,不需另外扩展EEPROM及静态RAM,可以在线下载程序,易于日后的升级。DS1302时钟日历芯片,稳定性高误差小。数字式温度传感器DS18B20,测量准确,误差小范围广。LCD液晶显示,显示清晰直观明了。第3章硬件设计该系统硬件设计总体思想是以单片机为控制系统,接受感应信息并进行处理后,将

14、控制指令传出,对各个系统进行对应操作。硬件设计总体框图如图3-1所示。AT89C52 主控模块键盘模块DS18B20温度采集模块LCD 显示模块DS1302时钟模块图 3-1 硬件设计框图主控模块:根据输入信息进行处理,并将控制数据传出。显示模块:显示相关的内容。时钟模块:提供时钟数据。温度采集模块:感应和提供温度。键盘模块:对系统进行操作。3.1 AT89C52单片机单片机实质上是一个芯片。它具有结构简单、控制功能强、可靠性高、体积小、价格低等优点,单片机技术作为计算机技术的一个重要分支,广泛的应用于工业控制、智能化仪器仪表、家用电器、电子玩具等各个领域。ATMEL公司生产的AT89C52单

15、片机采用高性能的静态80C51设计,并采用先进工艺制造,还带有非易失性Flash程序存储器。它是一种高性能、低功耗的8位CMOS微处理芯片,市场应用最多。其主要特点如下:8KB Flash ROM,可以擦除1000次以上,数据保存10年。技术特点有:256字节内部RAM;电源控制模式;时钟可停止和恢复;空闲/掉电模式;6个中断源;4个中断优先级;4个8位I/O口;全双工增强型TUAR;3个16位定时/计数器:T0、T1(标准80C51)和增加的T2(捕获和比较);全静态工作方式:024MHZ;AT89C52单片机的基本结构请参见图3-2,各部分情况介绍如下:中央处理器(CPU):中央处理器是单

16、片机的核心,完成运算和控制功能。AT89C52的CPU能处理8位二进制数或代码。内部数据存储器(内部RAM):AT89C52芯片中共有256个RAM单元,但其中后128单元被专用寄存器占用,能作为寄存器供用户使用的只是前128单元,用于存放可读写的数据。因此通常所说的内部数据存储器就是指前128单元,简称内部RAM。内部程序存储器(内部ROM):AT89C52共有8KB掩膜ROM,用于存放程序、原始数据或表格,因此称之为程序存储器,简称内部ROM。定时器/计数器:AT89C52共有2个16位的定时器/计数器,以实现定时或计数功能,并以其定时或计数结果对计算机进行控制。T0CPU时钟电路ROM定

17、时/计数器RAM中断系统并行接口串行接口P3TxDx PRxDINT0INT1P2P1P0T1图3-2 AT89C52单片机结构框图并行I/O口:AT89C52共有四个8位的I/O口(P0、P1、P2、P3),以实现数据的并行输入输出。串行口:AT89C52单片机有一个全双工的串行口,以实现单片机和其它设备之间的串行数据传送。该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为同步移位器使用。中断控制系统:AT89C52单片机的中断功能较强,以满足控制应用的需要。AT89C52共有5个中断源,即外中断2个,定时/计数中断2个,串行中断1个。全部中断分为高级和低级共二个优先级别。时钟电路

18、:AT89C52芯片的内部有时钟电路,但石英晶体和微调电容需外接。时钟电路为单片机产生时钟脉冲序列。系统允许的晶振频率一般为6MHZ和12MHZ。从上述内容可以看出,AT89C52虽然是一个单片机芯片,但作为计算机应该具有的基本部件它都包括,因此实际上它已是一个简单的微型计算机系统了。3.1.1 AT89C52的信号引脚AT89C52是标准的40引脚双列直插式集成电路芯片,引脚排列请参见图3-2。信号引脚介绍P0.0P0.7:低八位地址/数据总线分时复用。P1.0P1.7:只能做一般I/O口。P2.0P2.7:高八位地址总线。P3.0P3.7:8位双向口线。ALE:地址锁存控制信号。在系统扩展

19、时,ALE用于控制把P0口输出的低8位地址锁存器锁存起来,以实现低位地址和数据的隔离。此外由于ALE是以晶振六分之一的固定频率输出的正脉冲,因此可作为外部时钟或外部定时脉冲使用。:外部程序存储器读选通信号。在读外部ROM时有效(低电平),以实现外部ROM单元的读操作。:访问程序存储控制信号。当信号为低电平时,对ROM的读操作限定在外部程序存储器;而当信号为高电平时,则对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。RST:复位信号。当输入的复位信号延续2个机器周期以上高电平即为有效,用以完成单片机的复位初始化操作。XTAL1和XTAL2:外接晶体引线端。当使用芯片内部时钟时,此

20、二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。VSS:地线。VCC:+5V电源。以上是AT89C52单片机芯片40条引脚的定义及简单功能说明。P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78RST/VPD9RXD P3.010TXD P3.111INT0 P3.212INT1 P3.313T0 P3.414T1 P3.515WR P3.616RD P3.717XTAL218XTAL119VSS2021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29ALE/PROG30EA/VPP31

21、P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC40图3-3 AT89C52引脚图信号引脚的第二功能由于工艺及标准化等原因,芯片的引脚数目是有限制的。例如AT89C52系列把芯片引脚数目限定为40条,但单片机为实现其功能所需要的信号数目却远远超过此数,因此就出现了需要与可能的矛盾。如何解决这个矛盾,兼职是唯一可行的办法,即给一些信号引脚赋以双重功能。如果把前述的信号定义为引脚第一功能的话,则根据需要再定义的信号就是它的第二功能。下面介绍一些信号引脚的第二功能。P3口线的第二功能:P3的8条口线都定义有第二功能,详见表3-1。EPROM存储器

22、程序固化所需要的信号:有内部EPROM的单片机芯片,为写入程序需提供专门的编程脉冲和编程电源,这些信号也是由信号引脚以第二功能的形式提供的,即:编程脉冲:30脚(ALE/PROG)编程电压(25V):31脚(/VPP)备用电源引入:由于万年历在运行过程中需要电源,而在运行过程中有可能出现突发情况,所以引入备用电源。AT89C52单片机的备用电源也是以第二功能的方式由9脚(RST/VPD)引入的。当电源发生故障电压降低到下限值时,备用电源经此端向内部RAM提供电压,以保护内部RAM中的信息不丢失。表3-1 P3口各引脚与第二功能表引脚第二功能第二功能信号名称P3.0RXD串行数据接收P3.1TX

23、D串行数据发送P3.2外部中断0申请P3.3外部中断1申请P3.4T0定时器/计数器0的外部输入P3.5T1定时器/计数器1的外部输入P3.6外部RAM写选通P3.7外部RAM读选通以上把AT89C52单片机的全部信号,分别以第一功能和第二功能的形式列出。各种型号的芯片,其引脚的第一功能信号是相同的,所不同的只在引脚的第二功能信号。对于9、30和31三个引脚,由于第一功能信号与第二功能信号是单片机在不同工作方式下的信号,因此不会发生使用上的矛盾。但是P3口的情况却有所不同,它的第二功能信号都是单片机的重要控制信号。因此在实际使用时,都是先按需要选用第二功能信号,剩下的才以第一功能的身份作数据位

24、的输入输出使用。3.2 DS1302时钟模块DS1302是DALLAS半导体公司推出的时钟芯片,内含一个实时时钟/日历和31字节静态RAM,可以通过串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、星期、月、年的信息,每个月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM标志位决定采用24或12小时时间格式。DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需三根I/O线:复位(RST)、I/O数据线、串行时钟(SCLK)。时钟/RAM的读/写数据以一字节或多达31字节的字符组方式通信。DS1302工作时功耗很低,保持数据和时钟信息时,功耗小于1mW。此外,DS

25、1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。3.2.1 内部结构及引脚电 源 控 制输入移位寄存器振荡器与分频器实时时钟命令与控制逻辑31*8RAMVcc1Vcc2GNDI/OSCLK RSTX1X2图3-4 DS1302内部结构图图3-5 ds1302引脚排列DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc10.2V时,Vcc2给DS1302供电。当V

26、cc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向)。SCL

27、K为时钟输入端。3.2.2 工作原理DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST)置为高电平且将8位地址和命令信息装入移位寄存器。数据在时钟(SCLK)的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输出数据。时钟脉冲的个数在单字节方式下为8+8(8位地址+8位数据),在多字节方式下为8加最多可达248的数据。3.2.3 寄存器和控制命令对DS1302的操作就是对其内部寄存器的操作,DS1302内部共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。此外,DS1302还有年份寄存器、控

28、制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器以外的寄存器。日历、时间寄存器及控制字如表3-2所示: 表3-2 日历、时钟寄存器与控制字对照表寄存器名称765432101RAM/CKA4A3A2A1A0RD/W秒寄存器1000000分寄存器1000001小时寄存器1000010日寄存器1000011月寄存器1000100星期寄存器1000101年寄存器1000110写保护寄存器1000111慢充电寄存器1001000时钟突发寄存器1011111最后一位RD/W,为“0”时表示进行写操作,为“1”时表示读操作。DS1302内部寄存器列表如

29、表3-3所示:表3-3:DS1302内部主要寄存器分布表寄存器名称命令字取值范围各位内容写读76543210秒寄存器80H81H00-59CH10SECSEC分寄存器82H83H00-59010MINMIN小时寄存器84H85H01-12或00-2312/240AHRHR日期寄存器86H87H01-28,29,30,310010DATEDATE月份寄存器88H89H01-1200010MMONTH周寄存器8AH8BH01-0700000DAY年份寄存器8CH8DH00-9910YEARYEARDS1302内部的RAM分为两类,一类是单个RAM单元,共31个,每个单元为一个8位的字节,其命令控制

30、字为COHFDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。我们现在已经知道了控制寄存器和RAM的逻辑地址,接着就需要知道如何通过外部接口来访问这些资源。单片机是通过简单的同步串行通讯与DS1302通讯的,每次通讯都必须由单片机发起,无论是读还是写操作,单片机都必须先向DS1302写入一个命令帧,这个帧的格式如表3-2所示,最高位BIT7固定为1,BIT6决定操作是针对RAM还是时钟寄存器,接着的5个BIT是RAM或时钟寄存器在DS1302的内部地址,最后一个BIT表示这次操作是读操作抑或是

31、写操作。物理上,DS1302的通讯接口由3个口线组成,即*RST,SCLK,I/O。其中*RST从低电平变成高电平启动一次数据传输过程,SCLK是时钟线,I/O是数据线。具体的读写时序参考图3-5,但是请注意,无论是哪种同步通讯类型的串行接口,都是对时钟信号敏感的,而且一般数据写入有效是在上升沿,读出有效是在下降沿(DS1302正是如此的,但是在芯片手册里没有明确说明),如果不是特别确定,则把程序设计成这样:平时SCLK保持低电平,在时钟变动前设置数据,在时钟变动后读取数据,即数据操作总是在SCLK保持为低电平的时候,相邻的操作之间间隔有一个上升沿和一个下降沿。SCLK*RSTI/O图3-6

32、DS1302的命令字结构SCLK为0写入的数据SCLK为1SCLK为0读出的数据图3-7 DS1302时钟模块3.3 DS18B20温度采集模块DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现912位的数字值读数方式。可以分别在93.75 ms和750 ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。因而使用DS18B20

33、可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。3.3.1 内部结构及引脚高速缓存储存器8位CRC生成器储存器和控制器温度灵敏器件低温触发器TL高温触发器TH64位ROM和单线接口电源检测配置寄存器图3-8 DS18B20内部结构图VCCDQGND图3-9 DS18B20引脚排列3.3.2 测温原理DS18B20的测温原理如图3-9所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法

34、计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度

35、。图3-9中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。预置低温度系数振荡器高温度系数振荡器减法计数器2斜率累加器减法计数器1=0 =0比较器预置温度寄存器LSB置1/清零+1停止图3-10 DS18B20的测温原理框图3.3.3 工作过程及时序DS18B20内部的低温度系数振荡器是一个振荡频率随温度变化很小的振荡器,为计数器1提供一频率稳定的计数脉冲。高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器2提供一个频率随温度变化的计数脉冲。初始时,温度寄

36、存器被预置成-55,每当计数器1从预置数开始减计数到0时,温度寄存器中寄存的温度值就增加1,这个过程重复进行,直到计数器2计数到0时便停止。初始时,计数器1预置的是与-55相对应的一个预置值。以后计数器1每一个循环的预置数都由斜率累加器提供。为了补偿振荡器温度特性的非线性性,斜率累加器提供的预置数也随温度相应变化。计数器1的预置数也就是在给定温度处使温度寄存器寄存值增加1计数器所需要的计数个数。DS18B20内部的比较器以四舍五入的量化方式确定温度寄存器的最低有效位。在计数器2停止计数后,比较器将计数器1中的计数剩余值转换为温度值后与0.25进行比较,若低于0.25,温度寄存器的最低位就置0;

37、若高于0.25,最低位就置1;若高于0.75时,温度寄存器的最低位就进位然后置0。这样,经过比较后所得的温度寄存器的值就是最终读取的温度值了,其最后位代表0.5,四舍五入最大量化误差为1/2LSB,即0.25。温度寄存器中的温度值以9位数据格式表示,最高位为符号位,其余8位以二进制补码形式表示温度值。测温结束时,这9位数据转存到暂存存储器的前两个字节中,符号位占用第一字节,8位温度数据占据第二字节。DS18B20测量温度时使用特有的温度测量技术。DS18B20内部的低温度系数振荡器能产生稳定的频率信号;同样的,高温度系数振荡器则将被测温度转换成频率信号。当计数门打开时,DS18B20进行计数,

38、计数门开通时间由高温度系数振荡器决定。芯片内部还有斜率累加器,可对频率的非线性度加以补偿。测量结果存入温度寄存器中。一般情况下的温度值应该为9位,但因符号位扩展成高8位,所以最后以16位补码形式读出。DS18B20工作过程一般遵循以下协议:初始化ROM操作命令存储器操作命令处理数据。1.初始化单总线上的所有处理均从初始化序列开始。初始化序列包括总线主机发出一复位脉冲,接着由从属器件送出存在脉冲。存在脉冲让总线控制器知道DS18B20 在总线上且已准备好操作。2.ROM操作命令一旦总线主机检测到从属器件的存在,它便可以发出器件ROM操作命令之一。所有ROM操作命令均为8位长。这些命令列表如下:R

39、ead ROM(读ROM)33h此命令允许总线主机读DS18B20的8位产品系列编码,唯一的48位序列号,以及8位的CRC。此命令只能在总线上仅有一个DS18B20的情况下可以使用。如果总线上存在多于一个的从属器件,那么当所有从片企图同时发送时将发生数据冲突的现象(漏极开路会产生线与的结果)。Match ROM( 符合ROM)55h此命令后继以64位的ROM数据序列,允许总线主机对多点总线上特定的DS18B20寻址。只有与64位ROM序列严格相符的DS18B20才能对后继的存贮器操作命令作出响应。所有与64位ROM序列不符的从片将等待复位脉冲。此命令在总线上有单个或多个器件的情况下均可使用。S

40、kip ROM( 跳过ROM )CCh在单点总线系统中,此命令通过允许总线主机不提供64位ROM编码而访问存储器操作来节省时间。如果在总线上存在多于一个的从属器件而且在Skip ROM命令之后发出读命令,那么由于多个从片同时发送数据,会在总线上发生数据冲突(漏极开路下拉会产生线与的效果)。Search ROM( 搜索ROM)F0h当系统开始工作时,总线主机可能不知道单线总线上的器件个数或者不知道其64位ROM编码。搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。Alarm Search(告警搜索)ECh此命令的流程与搜索ROM命令相同。但是,仅在最近一次温度测量出现告警的

41、情况下,DS18B20才对此命令作出响应。告警的条件定义为温度高于TH 或低于TL。只要DS18B20一上电,告警条件就保持在设置状态,直到另一次温度测量显示出非告警值或者改变TH或TL的设置,使得测量值再一次位于允许的范围之内。贮存在EEPROM内的触发器值用于告警。3.存储器操作命令Write Scratchpad(写暂存存储器)4Eh这个命令向DS18B20的暂存器中写入数据,开始位置在地址2。接下来写入的两个字节将被存到暂存器中的地址位置2和3。可以在任何时刻发出复位命令来中止写入。Read Scratchpad(读暂存存储器)BEh这个命令读取暂存器的内容。读取将从字节0开始,一直进

42、行下去,直到第9(字节8,CRC)字节读完。如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。Copy Scratchpad(复制暂存存储器)48h这条命令把暂存器的内容拷贝到DS18B20的E2存储器里,即把温度报警触发字节存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又正在忙于把暂存器拷贝到E2存储器,DS18B20就会输出一个“0”,如果拷贝结束的话,DS18B20 则输出“1”。如果使用寄生电源,总线控制器必须在这条命令发出后立即起动强上拉并最少保持10ms。Convert T(温度变换)44h这条命令启动一次温度转换而无需其他数据

43、。温度转换命令被执行,而后DS18B20保持等待状态。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于做时间转换的话,DS18B20将在总线上输出“0”,若温度转换完成,则输出“1”。如果使用寄生电源,总线控制器必须在发出这条命令后立即起动强上拉,并保持500ms。Recall E2(重新调整E2)B8h这条命令把贮存在E2中温度触发器的值重新调至暂存存储器。这种重新调出的操作在对DS18B20上电时也自动发生,因此只要器件一上电,暂存存储器内就有了有效的数据。在这条命令发出之后,对于所发出的第一个读数据时间片,器件会输出温度转换忙的标识:“0”=忙,“1”=准备就绪。Re

44、ad Power Supply(读电源)B4h对于在此命令发送至DS18B20之后所发出的第一读数据的时间片,器件都会给出其电源方式的信号:“0”=寄生电源供电,“1”=外部电源供电。4.处理数据DS18B20的高速暂存存储器由9个字节组成。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后。表3-4 DS18B20温度数据表温度 二进制十六进制+1250000 0111 1101 0000 07D0h+850000 0101 0101 0000 0550h+25.06250000 0001

45、1001 0001 0191h+10.1250000 0000 1010 0010 00A2h+0.50000 0000 0000 1000 0008h0.00000 0000 0000 0000 0000h-0.51111 1111 1111 1000 FFF8h-10.1251111 1111 0101 1110 FF5Eh-25.06251111 1110 0110 1111 FE6Fh-551111 1100 1001 0000 FC90h上表是DS18B20温度采集转化后得到的12位数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于或等于

46、0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。温度转换计算方法举例:例如当DS18B20采集到+125的实际温度后,输出为07D0H,则:实际温度=07D0H0.0625=20000.0625=1250C。例如当DS18B20采集到-55的实际温度后,输出为FC90H,则应先将11位数据位取反加1得370H(符号位不变,也不作为计算),则:实际温度=370H0.0625=8800.0625=550C。图3-11 DS18B20温度采集模块3.4 键盘模块按照键盘与CPU的连接方式可以分为查

47、询按键和矩阵式键盘。由于程序操作简单,只需4个按键,所以选有查询式按键。查询式按键是各按键相互独立,每个按键占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他I/O口线上按键的工作状态。查询式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,在按键数量较多时,I/O口线浪费较大,且电路结构显得繁杂。故这种形式适用于按键数量较少的场合。此设计因为需要的按键少。决定选用4个按钮的小键盘,四个按钮的功能分别为:up键,具有向上和加1的功能。Down键,具有向下和减1的功能。Clear键,具有清除返回的功能。Function键具有运行进入的功能。它们与单片机的P0口相连,依

48、次接P0.0,P0.1,P0.2,P0.3。图3-12 键盘模块3.5 LCD显示模块就时钟而言,通常可采用液晶显示或数码管显示。由于一般的段式液晶屏,需要专门的驱动电路,而且可视性相对较差,对于具有驱动电路和微处理器接口的液晶显示模块(字符或点阵),一般多采用并行接口,对微处理器的接口要求较高,占用资源多。因此,本设计采用LGM12641BS1R显示。LGM12641BS1R的指令可带一个、两个参数,或无参数。若指令中含有参数,则每条指令执行时均须先送入参数,再送入指令代码。由于状态位作用不一样,因此执行不同指令必须检测不同状态位。其引脚功能如下:VCC:电源。GND:接地。DB0DB7:数

49、据线。:复位信号。E:数据读写操作控制位,E线向LCD模块发送一个脉冲,LCD模块与单片机之间将进行一次数据交换。R/W:读写控制线,R/W=0:写操作,R/W=1:读操作。DI:显示指令控制端。Vo:液晶显示器驱动电源。Vout:LCD驱动负电压。CS1:右半屏选屏信号。CS2:左半屏选屏信号。图3-13 LCD显示模块第4章软件设计本系统的软件采用C语言编写,主要由时钟系统,温度采集系统,控制系统和显示系统组成。单片机向时钟芯片和测温元件发出命令使其完成读或写操作,将读出的信息转为BCD码,最后送入显示系统实现功能。软件系统框图如下:控制系统显示系统时钟系统温度采集系统图4-1 软件系统框

50、图4.1 温度采集软件初始化模块DS18B20取得温度值存入储存器处理温度值,换成BCD码显示温度因为DS18B20温度传感器在测温时是通过累加来记录温度的,为了温度传感器正常稳定的运行,需要加延时子程序。程序如下:void Sensor_Delay(uchar count) while(count-); / count表示延时参数,值越大,延时时间越长单总线上的所有处理都要从初始化开始。初始化序图4-2 温度采集流程图 列包括总线主机发出一复位脉冲,接着由从属器件送出存在脉冲。存在脉冲让总线控制器知道DS18B20 在总线上且已准备好操作。初始化程序如下:uchar Sensor_Initi

51、al(void) uchar i = 0; dq = 1; / DQ复位 Sensor_Delay(8); / 稍做延时 dq = 0; / 单片机将DQ拉低 Sensor_Delay(80); / 精确延时,大于480us dq = 1; / 拉高总线 Sensor_Delay(14); / 稍做延时后 i = dq; / 若x=0则初始化成功,若x=1则初始化失败 Sensor_Delay(20); return (i);一旦总线主机检测到从属器件的存在,它便可以发出器件ROM操作命令之一,所有ROM操作命令均为8位长。ROM操作命令:Read T(读区温度寄存器)BEh,Skip ROM

52、( 跳过ROM )CCh,Convert T(温度变换)44h。Sensor_Write_Byte( 0xCC ); / 跳过读序号列号的操作Sensor_Write_Byte( 0x44 ); / 启动温度转换Sensor_Write_Byte( 0xCC ); / 跳过读序号列号的操作Sensor_Write_Byte( 0xBE ); / 读取温度寄存器子程序入口初始化1302时钟芯片从1302时钟芯片中读出时间和日期读出数据为BCD码,送入显示缓冲单元4.2 阳历软件设计因为使用了时钟芯片DS1302,阳历程序只需从DS1302各寄存器中读出年、周、月、日、时、分、秒等数据,再处理即可

53、。单片机是通过简单的同步串行通讯与DS1302通讯的,每次通讯都必须由单片机发起,无论是读还是写操作,单片机都必须先向DS1302写入一个命令帧。此命令帧是由八位二进制组成,最高位BIT7固定为1,BIT6决定操作是针对RAM还是时钟寄存器,接着的5个BIT是RAM或时钟寄存器在DS1302的内部地址,最后一个BIT表示这次操作是 图4-3 阳历流程图 读操作抑或是写操作,详细格式可见表3-2。由此可定义位变量:sbit ACC0 = ACC 0; /定义最低位sbit ACC7 = ACC 7; /定义最高位#define second_address0x80 /秒寄存器#define mi

54、nute_address0x82 /分寄存器#define hour_address 0x84 /小时寄存器#define day_address 0x86 /日期寄存器#define month_address 0x88 /月份寄存器#define year_address 0x8C /年寄存器首次对DS1302进行操作之前,必须对它进行初始化,然后从DS1302中读出数据,再经过处理后,送给显示缓冲单元。初始化相应程序如下:Clock_Write_Time(0x8e,0x00); /WP=0 写操作 /最高位为 0 时钟芯片工作Clock_Write_Time( second_addres

55、s, * clock_time ); /秒clock_time +; /指向分Clock_Write_Time( minute_address, * clock_time ); /分Clock_Write_Time( hour_address, * clock_time ); /时Clock_Write_Time( day_address, * clock_time ); /日Clock_Write_Time( month_address, * clock_time); /月Clock_Write_Time( year_address, * clock_time ); /年Clock_Writ

56、e_Time( 0x8e,0x80); /WP=1 读保护现在已经对程序进行了初始化并且定义了寄存器,可以从DS1302时钟芯片中读出时间与日期。例如:* clock_time = Clock_Read_Time( second_address ); /读秒clock_time +; /指向分* clock_time = Clock_Read_Time( minute_address ); /读分clock_time +; /指向时* clock_time = Clock_Read_Time( hour_address ); /读时4.3 阴历软件设计子程序入口根据公历年,定位数据表地址从数据

57、表取得春节公历的日期,并通过计算公历日和春节离元旦的天数,算出公历日离春节的天数记为A公历在春节以后?农历年=公历年取农历月信息农历年=公历年-,定位前一年,取农历月信息农历月=12,闰月C=0(非闰月)农历月=1,闰月C=0(非闰月)取农历天数B取农历天数B农月=闰月?C取反农历月加1C=1?农历月减1C取反农月=闰月?C=1?AB?A=A-BA=A-BA=B?农历日=B-A+1农历日=A+1农历年、月、日数据标准化子程序出口YNYYYYYYNNNNNN图4-4 阴历转换流程图阴历程序的实现是要靠阳历日期来推算。阳历一个月不是30天就是31天(2月除外,闰年2月为29天)。阴历一年有12个月或13个月(含闰月),一个月为30天或29天。根据阴历和阳历的关系可得出以下数据,公历年对应的农历数据,每年三字节。格式第一字节BIT7-4 位表示闰月月份,值为0 为无闰月,BIT3-0 对应农历第1-4 月的大小。第二字节BIT7-0 对应农历第5-12 月大小。第三字节BIT7 表示农历第13 个月大小。月份对应的位为1 表示本农历月大(30

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!