基于单片机的万年历设计

上传人:无*** 文档编号:78748191 上传时间:2022-04-22 格式:DOC 页数:63 大小:907.50KB
收藏 版权申诉 举报 下载
基于单片机的万年历设计_第1页
第1页 / 共63页
基于单片机的万年历设计_第2页
第2页 / 共63页
基于单片机的万年历设计_第3页
第3页 / 共63页
资源描述:

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

1、内蒙古科技大学毕业设计说明书(毕业论文)题 目:基于单片机的电子万年历设计32基于单片机的万年历设计摘 要随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。目前,单片机技术的应用产品已经走进了千家万户。电子万年历的出现给人们的生活带来了诸多方便。 本设计是一个基于AT89S52单片机的日历显示系统,本设计能显示公历年、月、日,以及时、分、秒、温度、星期等信息,而且还提供了农历信息,具有调整时间,温度采集,闹钟及个性化的闹铃等功能。系统所用的时钟日历芯片DS1302具有高性能、低功耗、接口简单的特点,使本系统电路简化,编程方便,同时功能也很强。采用AT89S

2、52单片机的万年历系统可以很好的改善传统采用模拟电路引起的计时不准确,不可靠,一致性差等问题。此系统计时精确,价格低廉,可以广泛应用在生活,学习和工作等任何领域,并且起到重要作用。 关键词:万年历;单片机;时钟芯片;温度芯片;公历转农历内蒙古科技大学毕业设计说明书(毕业论文)The Design of Electronic Calendar clock Based on Single-chip MicrocomputerAbstractAlong with the technical fast development, time passing, to from the view sun, t

3、he pendulum clock to the present electron clock, the humanity studies unceasingly, innovates unceasingly the record. At present, the monolithic integrated circuit technologys application product already entered everyone. The electronic ten thousand calendars appearances have brought conveniently man

4、y for peoples life.This design is one based on AT89S52 single-chip microcomputer calendar display system, it can demonstrate years, the month, the date of the Gregorian calendar, and hour, minute, second, temperature, week and so on. Moreover it has also provided the lunar calendar information, adju

5、stable time pattern, temperature sample, alarm system, individual quarter-bell and so on. The system clock calendar DS1302 with high performance, low power consumption and simple interface features Circuit enable the system to streamline programming convenience, but also highly functional. The probl

6、ems of inaccurate, unreliable, and the uniform inferior can be come up when you use the analogous circuit. However, it can be improved when you use the clock system based on AT89S52 single-chip microcomputer. The system time accurate, low cost and can be widely applied to the life, study and work in

7、 any field, and has played an important role. Key words:The Electronic Calendar Clock;Single-chip Microcomputer;The Time Calendar Clock;Temperature Chip;The Lunar Calendar Convert To The Gregorian Calendar内蒙古科技大学毕业设计说明书(毕业论文)目 录摘 要IAbstractII第一章 引 言11.1 概述11.2 单片机的简介1第二章 方案设计与论证42.1 单片机芯片设计与论证42.2 电

8、源模块设计与论证52.3 按键控制模块设计与论证52.4 时钟模块设计与论证52.5 温度采集模块设计与论证52.6 显示模块模块设计与论证6第三章 系统的硬件设计73.1 主控芯片AT89S52与最小外围系统73.1.1 AT89S52的概述73.1.2 AT89S52最小系统的设计103.2 时钟芯片DS1302接口设计与性能分析113.2.1 DS1302性能简介113.2.2 DS1302接口电路设计123.3 温度芯片DS18B20接口设计与性能分析143.3.1 DS18B20性能简介143.3.2 DS18B20接口电路设计153.3.3 DS18B20的工作时序163.4 闹钟

9、模块接口设计与性能分析173.4.1 AT24C02器件使用173.4.2 接口电路设计193.5 LCD显示模块193.5.1 LCM1602的特性及使用说明193.5.2 LCM1602与MCU的接口电路213.6 按键模块设计21第四章 软件设计234.1 软件总体部分的设计234.2 LCD驱动及液晶显示244.3 按键识别及处理254.4 温度数据采集264.5 时间数据采集274.6 闹钟程序284.7 公历转农历的实现28第五章 系统的调试30总结31参考文献32附录A 设计原理图33附录B 源程序34附录C 公历对应的农历数据表55致谢58 内蒙古科技大学毕业设计说明书(毕业论

10、文)第一章 引 言1.1 概述随着电子技术的发展,人类不断研究,不断创新纪录。万年历目前已经不再局限于以书本形式出现。以电脑软件或者电子产品形式出现的万年历被称为电子万年历。与传统书本形式的万年历相比,电子万年历得到了越来越广泛的应用,采用电子时钟作为时间显示已经成为一种时尚。目前市场上各式各样的电子时钟数不胜数,但多数是只针对时间显示,功能单一不能满足人们日常生活需求。本文提出了一种基于AT89S52单片机的万年历设计方案,利采用一个LCD显示。本方案以AT89S52单片机作为主控核心,与时钟芯片DS1302、温度芯片DS18B20、闹钟模块、按键、LCD显示等模块组成硬件系统。在硬件系统中

11、设有5个独立按键和一个LCD显示器,能显示丰富的信息,根据使用者的需要可以随时对时间进行校准、选择时间、温度显示、是否为闰年等,综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。1.2 单片机的简介单片机是一种集成电路芯片。它采用超大规模技术将具有数据处理能力的微处理器(CPU)、存储器(含程序存储器ROM和数据存储器RAM)、输入、输出接口电路(I/O接口)集成在同一块芯片上,构成一个即小巧又很完善的计算机硬件系统,在单片机程序的控制下能准确、迅速、高效地完成程序设计者事先规定的任务。所以说,一片单片机芯片就具有了

12、组成计算机的全部功能。然而单片机又不同于单板机(一种将微处理器芯片、存储器芯片、输入输出接口芯片安装在同一块印制电路板上的微型计算机),单片机芯片在没有开发前,它只是具备功能极强的超大规模集成电路,如果对它进行应用开发,它便是一个小型的微型计算机控制系统,但它与单板机或个人电脑(PC机)有着本质的区别。不同的单片机有着不同的硬件特征和软件特征,即它们的技术特征均不尽相同,硬件特征取决于单片机芯片的内部结构,用户要使用某种单片机,必须了解该型产品是否满足需要的功能和应用系统所要求的特性指标。这里的技术特征包括功能特性、控制特性和电气特性等等,这些信息需要从生产厂商的技术手册中得到。软件特征是指指

13、令系统特性和开发支持环境,指令特性即我们熟悉的单片机的寻址方式,数据处理和逻辑处理方式,输入输出特性及对电源的要求等等。开发支持的环境包括指令的兼容及可移植性,支持软件(包含可支持开发应用程序的软件资源)及硬件资源。要利用某型号单片机开发自己的应用系统,掌握其结构特征和技术特征是必须的。单片机控制系统能够取代以前利用复杂电子线路或数字电路构成的控制系统,可以以软件控制来实现,并能够实现智能化,现在单片机控制范畴无所不在,例如通信产品、家用电器、智能仪器仪表、过程控制和专用控制装置等等,单片机的应用领域越来越广泛。诚然,单片机的应用意义远不限于它的应用范畴或由此带来的经济效益,更重要的是它已从根

14、本上改变了传统的控制方法和设计思想。是控制技术的一次革命,是一座重要的里程碑。1946年第一台电子计算机诞生至今,依靠微电子技术和半导体技术的进步,从电子管晶体管集成电路大规模集成电路,使得计算机体积更小,功能更强。特别是近20年时间里,计算机技术获得飞速的发展,计算机在工农业,科研,教育,国防和航空航天领域获得了广泛的应用,计算机技术已经是一个国家现代科技水平的重要标志。单片机诞生于20世纪70年代,象Fairchild公司研制的F8单片微型计算机。所谓单片机是利用大规模集成电路技术把中央处理单元(Center Processing Unit,也即常称的CPU)和数据存储器(RAM)、程序存

15、储器(ROM)及其他I/O通信口集成在一块芯片上,构成一个最小的计算机系统,而现代的单片机则加上了中断单元,定时单元及A/D转换等更复杂、更完善的电路,使得单片机的功能越来越强大,应用更广泛。20世纪70年代,微电子技术正处于发展阶段,集成电路属于中规模发展时期,各种新材料新工艺尚未成熟,单片机仍处在初级的发展阶段,元件集成规模还比较小,功能比较简单,一般均把CPU、RAM有的还包括了一些简单的I/O口集成到芯片上,象Fairchild公司就属于这一类型,它还需配上外围的其他处理电路方才构成完整的计算系统。类似的单片机还有Zilog公司的Z80微处理器。1976年INTEL公司推出了MCS-4

16、8单片机,这个时期的单片机才是真正的8位单片微型计算机,并推向市场。它以体积小,功能全,价格低赢得了广泛的应用,为单片机的发展奠定了基础,成为单片机发展史上重要的里程碑。在MCS-48的带领下,其后,各大半导体公司相继研制和发展了自己的单片机,象Zilog公司的Z8系列。到了80年代初,单片机已发展到了高性能阶段,象INTEL公司的MCS-51系列,Motorola公司的6801和6802系列,Rokwell公司的6501及6502系列等等,此外,日本的著名电气公司NEC和HITACHI都相继开发了具有自己特色的专用单片机。80年代,世界各大公司均竞相研制出品种多功能强的单片机,约有几十个系列

17、,300多个品种,此时的单片机均属于真正的单片化,大多集成了CPU、RAM、ROM、数目繁多的I/O接口、多种中断系统,甚至还有一些带A/D转换器的单片机,功能越来越强大,RAM和ROM的容量也越来越大,寻址空间甚至可达64kB,可以说,单片机发展到了一个新的平台。第二章 方案设计与论证按照系统设计的要求,初步确定系统由电源模块、时钟模块、显示模块、键盘接口模块、温度测量模块和闹钟模块共六个模块组成,电路系统构成框图如图2.1所示。图2.1 硬件电路框图2.1 单片机芯片设计与论证方案一: 采用AT89C51芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的

18、超低电压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术, 当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。方案二:采用AT89S52芯片作为硬件核心,采用Flash ROM,能以3V的超低电压工作,而且与MCS-51系列单片机完全兼容,该芯片内部存储器为8KB ROM 存储空间。同样具有AT89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。综合考虑,采用AT89S52作

19、为主控芯片。2.2 电源模块设计与论证方案一:采用市电经变压器降压成5V电源,为MCU及外部电路提供电源,能提供较为稳定的电压及足够的功率,制作简单,成本较高、笨重,不利于便携设备携带。方案二:采用9V干电池经LDO稳压成5V电源为系统提供电源,携带方便,价格便宜。考虑系统为一个便携式用品,方案一不便于携带,故采用方案二。2.3 按键控制模块设计与论证方案一:采用矩阵键盘,由于按键多可实现数值的直接键入,但在系统中需要CPU不间断的对其端口扫描。方案二:采用独立按键,查询简单,程序处理简单,可节省CPU资源。因系统中所需按键不多,为了释放更多的CPU占有时间,故采用方案二。2.4 时钟模块设计

20、与论证方案一:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。方案二:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM作为数据暂存区,工作电压2.5V5.5V范围内,2.5V时耗电小于300nA.综合考虑制作难度及精度,故采用方案二。2.5 温度采集模块设计与论证方案一:采用温度传感器(如热敏电阻或AD590),再经AD转换得到数字信号,精度较准,但价格昂贵,电路较复杂。方案二:采用数字

21、式温度传感器DS18B20,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式,但准确度不高,误差最大达2度。综合考虑,采用方案二,用DS18B20温度芯片,采用单总线访问,降低成本、降低制作难度且可节省单片机宝贵的GPIO资源。2.6 显示模块模块设计与论证方案一:采用静态显示方法,静态显示模块的硬件制作较复杂及功耗大,要用到多个移位寄存器,但不占用端口,只需两根串口线输出。方案二:采用动态显示方法,动态显示模块的硬件制作简单,段扫描和位扫描各占用一个端口,总需占用单片机14个端口,采用间断扫描法功耗小、硬件成本低及整个硬件系统体积相对减小。方案三:采用LC

22、D的方法,具有硬件制作简单可直接与单片机接口,显示内容多,功耗小,成本低等优点,LCM1602可显示32个字符,采用LCD的缺点是亮度不够。比较以上三种方案:方案一硬件复杂体积大、功耗大;方案二硬件简单、功耗小;方案三硬件简单,显示内容多,功耗小,成本低等。本系统设计要求达到功耗小、体积小、成本低,显示信息多等要求,权衡三种方案,选择方案三。第三章 系统的硬件设计3.1 主控芯片AT89S52与最小外围系统3.1.1 AT89S52的概述 1、AT89S52的主要性能AT89S52是美国Atmel公司生产的低电压、高性能CMOS 8位单片机,片内含8KB的可反复檫写的程序存储器和256字节数据

23、存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内配置通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89S52单片机可灵活应用于各种控制领域。AT89S52单片机属于AT89C51单片机的增强型,与Intel公司的80C52在引脚排列、硬件组成、工作特点和指令系统等方面兼容。单片机正常工作时,都需要有一个时钟电路和一个复位电路。本设计中选择了内部时钟方式和按键电平复位电路,来构成单片机的最小电路。复位是单片机的初始化操作,单片机在启动运行时,都需要先复位,其作用是使CPU和系统中其他部件都处于一个确定的初始状态,并从这个

24、状态开始工作。因而,复位是一个很重要的操作方式。但单片机本身是不能自动进行复位的,必须配合相应的外部电路来实现。其主要工作特性是:内蒙古科技大学毕业设计说明书(毕业论文)l 8k字节可编程Flash存储器l 八个中断源l 与MCS-51单片机产品兼容l 全静态操作:0Hz33Hzl 三级加密程序存储器l 32个可编程I/O 口线l 三个16 位定时器/计数器l 全双工UART串行通道l 低功耗空闲和掉电模式l 掉电后中断可唤醒l 看门狗定时器l 双数据指针l 1000次擦写周期l 掉电标识符2、AT89S52的引脚说明AT89S52有40个引脚,如图3.1所示: 3.1 AT89S52芯片P0

25、 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。 P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个 TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 此

26、外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2 的触发输入(P1.1/T2EX),具体如下表所示。 在flash编程和校验时,P1口接收低8位地址字节。P1口的第二功能如下:P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出 P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制) P1.5 MOSI(在系统编程用) P1.6 MISO(在系统编程用) P1.7 SCK(在系统编程用) P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上

27、拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR),P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用

28、。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。flash编程和校验时,P3口也接收一些控制信号。P3口的二功能如下:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INTO(外中断0)P3.3 INT1(外中断1)P3.4 TO(定时/计数器0)P3.5 T1(定时/计数器1)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通)此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高

29、电平将是单片机复位。ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。PSEN程序储存允许(PSEN

30、)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。3.1.2 AT89S52最小系统的设计 根据系统设计要求,结合性能分析,通过查阅相关资料及自己的努力思考,把单片机最小系统设计为图: 图3.2单片机最小系统此

31、设计中P0口做为输出口用来驱动LCD显示,而P0口内部又没有上拉电阻,所以加上10K上拉电阻。(1) 复位电路考虑到设计要求,本设计中的复位电路集手动复位及上电自动复位于一体。 1)上电自动复位通过外部复位电路的电容C3的充电来实现,只要电源VCC的上升时间不超过1ms,就可以实现自动上电复位。 2)按键手动复位是通过使复位端经电阻与VCC接通而实现的。(2) 时钟振荡电路考虑系统运行速度,采用12MHZ的石英晶振,并使用两个小电容作为微调电容,具体设计见图3.2。3.2 时钟芯片DS1302接口设计与性能分析3.2.1 DS1302性能简介DS1302是Dallas公司生产的一种实时时钟芯片

32、。它通过串行方式与单片机进行数据传送,能够向单片机提供包括秒、分、时、日、月、年等在内的实时时间信息,并可对月末日期、闰年天数自动进行调整;它还拥有用于主电源和备份电源的双电源引脚,在主电源关闭的情况下,也能保持时钟的连续运行。另外,它还能提供31字节的用于高速数据暂存的RAM。DS1302时钟芯片内主要包括移位寄存器、控制逻辑电路、振荡器。DS1302与单片机系统的数据传送依靠RST,I/O,SCLK三根端线即可完成。其工作过程可概括为:首先系统RST引脚驱动至高电平,然后在SCLK时钟脉冲的作用下,通过I/O引脚向DS1302输入地址/命令字节,随后再在SCLK时钟脉冲的配合下,从I/O引

33、脚写入或读出相应的数据字节。因此,其与单片机之间的数据传送是十分容易实现的,DS1302的引脚排列及内部结构图如图3.3:DS1302引脚说明: X1,X2 32.768kHz晶振引脚GND 地线RST 复位端I/O 数据输入/输出端口SCLK 串行时钟端口VCC1 慢速充电引脚VCC2 电源引脚 图3.3 DS1302管脚 3.2.2 DS1302接口电路设计1、 时钟芯片DS1302的接口电路及工作原理:图3.4 DS1302与MCU接口电路图3.4为DS1302的接口电路,其中Vcc1为后备电源,Vcc2为主电源。VCC1在单电源与电池供电的系统中提供低电源并提供低功率的电池备份。VCC

34、2在双电源系统中提供主电源,在这种运用方式中VCC1连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。DS1302由VCC1或VCC2 两者中较大者供电。当VCC2大于VCC1+0.2V时,VCC2给DS1302供电。当VCC2小于VCC1时,DS1302由VCC1供电。DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置 “0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图5所示。表-1为DS1302的控制字,此控制字的位7必须置1,若为0则不能对DS1302进行读写数据。对于位6,若对时间进行读/写时,CK=0,对程序进行读/写时RAM=1。位

35、1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;进行写操作时,该位为0。控制字节总是从最低位开始输入/输出的。表-2为DS1302的日历、时间寄存器内容:“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,“WP”必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。2、DS1302的控制字DS1302的控制字如表-1所示。控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示

36、存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为1表示进行读操作,为0表示进行写操作。控制字节总是从最低位开始输出。表1 DS1302的控制字格式 3、数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。如下图-4所示。 图3.5 DS1302读/写时序图4、DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字

37、见表2。 表2 DS1302的日历、时间寄存器此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。3.3 温度芯片DS18B20接口设计与性能分析3.3.1 DS18B20性能简介 1.DS18B20的主

38、要特性DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式。现场温度直接以一线总线的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V5.5V的电压范围,使系统设计更灵活、方便。其性能特点可归纳如下:1) 独特的单线接口仅需要一个端口引脚进行通信;2) 测温范围在-55到125,分辨率最大可达0.0625;3) 采用了3线制与单片机相连,减少了

39、外部硬件电路;4) 零待机功耗;5) 可通过数据线供电,电压范围在3.0V-5.5V;6) 用户可定义的非易失性温度报警设置;7) 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; 8) 负电压特性,电源极性接反时,温度计不会因发热烧毁,只是不能正常工作。2.DS18B20工作原理 DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。 DS18B20测温原理如图3.6所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改

40、变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图3.6中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。图3.6 DS18B20测温原理3.3.2 DS18B20接口电路设计如3.7图所示,该系统中采用数字式温度传感器DS18B20,具有测量精度

41、高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,用P2.3与DS18B20的DQ口连接,Vcc接电源,GND接地。 图3.7温度传感器DS18B20接口电路3.3.3 DS18B20的工作时序1、复位时序图图3.8复位时序图2、 读时序图图3.9读时序图3、写时序图图3.10 写时序图3.4 闹钟模块接口设计与性能分析此部分硬件上利用AT24C02存储闹钟时间,普通蜂鸣器作为闹铃播放器件。3.4.1 AT24C02器件使用1、AT24C02的特性:1) 与400KHz I2C 总线兼容2) 到6.0 伏工作电压范围3) 低功耗CMOS 技术4) 写保护功能当 WP 为高电平时进入

42、写保护状态5) 自定时擦写周期6) 1,000,000 编程/擦除周期7) 8 脚DIP SOIC 或TSSOP 封装8) 温度范围商业级工业级和汽车级2、AT24C02功能说明AT24C02支持I2C 总线数据传送协议,I2C 总线协议规定任何将数据传送到总线的器件作为发送器,任何从总线接收数据的器件为接收器。数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据,发送或接收的模式通过器件地址输入端A0、A1 和A2 可以实现将最多8个24WC01和24WC02 器件连接到总线上。管脚描述如下:A0 A1 A2 器件地址选择S

43、DA 串行数据/地址SCL 串行时钟WP 写保护 VCC/VSS +1.8V6.0/地 图3.11 AT24C02管图 3、工作时序 1)总线时序图3.12 总线时序2)写周期时序图3.12写周期时序 3)起始/停止时序图3.13 起始/停止时序4)应答时序图3.14 应答时序5)立即地址读时序图3.15 立即地址读时序3.4.2 接口电路设计 AT24C02与AT89S52的接口电路如图3.165所示:3.16 AT24C02与MCU的接口电路3.5 LCD显示模块3.5.1 LCM1602的特性及使用说明1、 LCM1602的接口信号说明如表3:表3 LCM1602的接口信号编号引脚符号功

44、能说明编号引脚符号功能说明1VSS电源地9D2DATA I/O2VDD电源正极10D3DATA I/O3VL液晶显示偏压信号11D4DATA I/O4RS数据/命令选择端(H/L)12D5DATA I/O5R/W读/写选择端(H/L)13D6DATA I/O6E使能信号14D7DATA I/O7D0DATA I/O15BLA背光正极8D1DATA I/O16BLK背光负极2、基本操作时序如下:1)读状态:RS=L,RW=H,E=H2)写指令:RS=L,RW=L,D0D7=指令码,E=高脉冲3)读数据:RS=H,RW=H,E=H4)写数据:RS=H,RW=L,D0D7=数据,E=高脉冲3、初始化

45、设置1)显示模式设置如表4:表4显示模式设置2)显示开/关及光标设置如表5:表5 显示开/关及光标设置 3.5.2 LCM1602与MCU的接口电路接口电路如图3.16所示: 图3.16 LCM1602与单片机接口电路LCD的D0D7分别接单片机的的P0口,作为数据线,因为P0口内部没有上拉电阻,所以外部另外加上10K的上拉电阻;P2.0P2.2分别接LCD的RS、RW、E三个控制管脚;RV1用来调节LCD的显示灰度;BLK、BLA为背光的阴极和阳极,接上相应电平即点亮背光灯(图中未画出)。3.6 按键模块设计本系统用到了5个按键,其中一个用作系统手动复位,另外4个采用独立按键,该种接法查询简

46、单,程序处理简单,可节省CPU资源,按键电路如图3.17所示,4个独立按键分别与AT89S52的P2.4、P2.5、P2.6、P2.7接口相连。图3.17 按键电路 对以上4个按键作简要说明:S2SET 键,S3UP键,S4DOWN键,S5OUT/STOP键。SET 键:按下SET键进入时间校准状态,按一下进入秒调整,两下分调整,依此类推可进行各年月日,时分秒以及星期的校准;UP键:当SET键按下时,UP进行SET选定项(如:小时)的加操作;DOWN键:当SET键按下时,DOWN进行SET选定项(如:小时)的减操作;OUT/STOP键:1) 当SET键按下时,此键功能为退出校准功能;2) 当S

47、ET键未按下时,UP关闭闹钟。第四章 软件设计整个软件系统采用C51编程,主要实现以下功能:1) LCD的驱动2) 时间数据的采集3) 公历转农历的实现4) 闹铃的设置5) 温度的采集6) 按键的识别处理4.1 软件总体部分的设计程序从main()函数开始运行,随后对LCD、DS18B20、DS1302、闹钟模块等器件进行初始化操作并对标志位赋初值,随后进入while(1)循环中运行按键扫描程序及液晶显示程序,详细程序见附录C。(1)主程序流程图如图4.1所示:图4.1 主函数流程图(2)系统中的数据结构考虑到系统中的时间信息是一个整体,为了便于管理,故采用C语言中的结构体变量,定义如下:ty

48、pedef struct _SYSTEMTIME_unsigned char Second;unsigned char Minute;unsigned char Hour;unsigned char Week;unsigned char Day;unsigned char Month;unsigned char Year;unsigned char DateString11;unsigned char TimeString9;SYSTEMTIME;/定义的时间类型SYSTEMTIME CurrentTime;/定义当前时间结构变量4.2 LCD驱动及液晶显示 1、LCD驱动LCD的驱动包括初始

49、化操作、写指令、写数据、显示模块的设定等操作。LCM1602有以下几个基本时序:1)读状态:RS=L,RW=H,E=H2)写指令:RS=L,RW=L,D0D7=指令码,E=高脉冲3)读数据:RS=H,RW=H,E=H4)写数据:RS=H,RW=L,D0D7=数据,E=高脉冲驱动函数是根据这几个基本时序来完成的,下面是LCD的几个主要驱动函数(详细见附录):1)LCD_Write() *功能:LCD写指令/数据2)LCD_Initial() *功能:LCD初始化3)GotoXY(unsigned char x, unsigned char y)*功能:字符显示的位置 4)Print(unsign

50、ed char *str) *功能:输出字符串到LCD2、液晶显示模块流程图,如图4.2所示:图4.2液晶显示模块流程图4.3 按键识别及处理本设计中按键采用查询法识别按键,程序简单。本系统中含有四个调整按键,分别命名为SET、UP、DOWN、OUT/STOP。在主函数里面查询SET、OUT/STOP两个按键是否按下,UP、DOWN键的功能由SET键激活。这样设计可以减少CPU的工作量,OUT/STOP为多功能键,当SET键未被按下时,OUT/STOP为响铃停止功能, SET按下时OUT/STOP为退出调整模式的功能被激活。下面简单介绍本设计中键盘扫描程序(以伪代码的形式),详细见附录B中程序

51、清单:/*键盘程序C语言伪代码*用伪代码的形式,比程序框图更加直观,可以更加清晰地明确编程思路*详细程序请参见附录C中的程序清单*/Main() /其它程序while(1) while(done=1) /模式标志位为1,即为调整模式 keydone(); /进入调整模式,在此激活UP、DOWN、OUT键的功能 /在这个函数中如果OUT被按下时,修改done=0while(done=0) /模式标志位为0,即为非调整模式 /其它程序 Setkey(); /扫描SET、OUT/STOP /在这个函数中如果SET被按下时,修改done=1 4.4 温度数据采集由于DS18B20单线通信功能为分时完成

52、,有严格的时隙概念,因此读写时序很重要12。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储操作命令处理数据。根据单总线操作协议,首先要对DS18B20进行初始化,而初始化有严格的时序控制,如图3.6所示,即总线控制器(TX)发出一个复位脉冲(至少480us的低电平),然后释放总线进入接收状态,总线由5.1K上拉电阻上拉为高电平,探测到I/O引脚上的上升沿后,DS18B20等待15us60us后,然后发出一个存在脉冲(60us240us的低电平信号)。下面是几个驱动函数:1)Init_DS18B20(void) *功能:DS18

53、B20初始化2)ReadTemp(void) *功能:读取温度值温度采集模块流程图如图4.3所示:图4.3温度采集模块流程图4.5 时间数据采集串行时钟芯片DS1302的主要组成部分:移位寄存器、控制逻辑、振荡器、实时时钟以及RAM。为了初始化任何的数据传送,把RST置为高电平且把提供地址和命令信息的8位装入到移位寄存器。数据在SCLK的上升沿串行输入。无论是发生读周期还是写周期,也无论传送方式是单字节传送还是多字节传送,开始8位指定40个字节中的那个将被访问。在开始8个时钟周期把命令字装入移位寄存器之后,另外的时钟在读操作时输出数据,在写操作时输入数据。时钟脉冲的个数在单字节方式下为8加8,

54、在多字节方式下为8加最大可达248的数。DS1302时钟部分子程序主要涉及以下几个主要函数:1)void DS1302InputByte(unsigned char d) *功能:实时时钟写入一字节(内部函数)2)unsigned char DS1302OutputByte(void) *功能:实时时钟读取一字节(内部函数3)Write1302() *功能:DS1302写入数据函数4)Read1302() *功能:读取DS1302某地址的数5)void DS1302_GetTime(SYSTEMTIME *Time) *功能:获取时钟芯片的时钟数据到自定义的结构型数组4.6 闹钟程序这一部分的

55、实现是采用E2PROM存储器来储存闹钟信息,因为它具有掉电仍能保存数据的特性。所以本设计中把闹钟信息写先写入AT24C02存储器中,然后在程序中读出数据与当前时间进行比较,如果相等则发出闹钟警告。如果要对闹钟值进行修改,可通过几个按键进行,系统能根据用户的设定自动更新闹钟信息,图4.4是闹钟程序的流程图:图4.4闹钟程序的流程图4.7 公历转农历的实现本设计实现通过公历日期计算得到农历日。实现公历转农历一般采用查表法,日查表法是速度最快的一种方法,但51单片机的寻址能力有限,除日查表法外,我们还可以用月查表法和年查表法。最大限度的减小表格所占的程序空间。对于农历来说,大月为30天,小月为29天

56、,这是固定不变的,这样我们就用1个BIT来表示大小月信息。农历一年,如有闰月为13个月,否则是12个月,所以一年需要13个BIT。闰月在农历中所在的月份并不固定,大部分闰月分布在农历2-8月,但也有少量年份在9月以后,所以要表示闰月的信息,至少要4BIT,在这里我们用4BIT的值来表示闰月的月份,值为0表示本年没有闰月。有了以上信息,还不足以判断公历日对应的农历日,因为还需要一个参照日,我们选用农历正月初一所对的公历日期作参照日,公历日最大为31日,需要5BIT来表示。春节所在的月份不是1月就是2月,用1BIT就够了,考虑到表达方便,我们用2BIT来表示春节月,2BIT的值直接表示月份。这样一

57、年农历信息只用3个字节就全部包括了。计算公历日对应的农历日期的方法:先计算出公历日离当年元旦的天数,然后查表取得当年春节日期,计算出春节离元旦的天数,二者相减即可算出公历日离春节的天数,以后只要根据大小月及闰月信息,减一月天数,调整农历月份,即可推算出公历日所对应的农历日期。如公历日不到春节日期,农历年比公历年小一年,农历大小月取前一年的信息,农历月从12月向前推算。根据以上原理及算法,得到如图4.5所示的农历算法程序流程图: 图4.7 公历转农历算法流程图第五章 系统的调试调试分为硬件调试和软件调试。硬件调试主要是检查线路板的焊接是否正确、连接是否正确,各模块之间的数据线是否导通。软件调试主

58、要有以下两种方法:1) 将整个联合起来调试,对整个软件的功能进行验证;2)分开调试,也就是将系统分成独立的小模块,然后分别对这些小模块写入程序调试。这样可以提高调试效率,也容易解决调试中出现的问题。本系统采用分开调试方法调试了DS18B20和DS1302两个模块,并用LCD显示出了温度以及公历日期、时间,同时也实现了按键的简单调整;但整体调试的时候没有达到预期效果。总结论文首先对本设计作了简要描述,随后提出了不同的设计方案,经过论证最后确定该设计采用电源模块、时钟模块、显示模块、键盘接口模块、温度测量模块和闹钟模块共六个模块组成,接着分别从硬件系统和软件系统两方面对基于单片机的电子万年历设计作

59、了详细论述,另外还简要介绍了一下系统的调试。在整个设计过程中,硬件方面主要设计了AT89S52单片机的最小系统、DS1302接口电路、DS18B20接口电路、闹钟及LCD显示;软件方面借助各个渠道的资料,主要设计了阳历数据读取程序、阳历转阴历程序、温度采集程序、闹铃程序以及LCD显示程序;系统的调试主要是通过一块AT89S52开发板,再借助于Keil、STC以及少许自己搭建的外围电路实现的;再此过程中,分步调试时显示出了阳历的日期及时间,还有实时温度,集中调试时没有达到预期效果。但在此过程中培养了自己的动手能力。此万年历具有读显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的

60、发展趋势,具有广阔的市场前景。参考文献1.张萌.单片机应用系统开发综合实例M. 北京:清华大学出版社,2007.72.楼然苗.单片机课程设计指导M. 北京:北京航空航天大学出版社,2007.73.沈德金.MCS51系列单片机接口电路与应用程序实例M. 北京:北京航空航天大学出版社,1991.4 4朱思荣51单片机实现公历与农历、星期的转换Z.当当电子网5AT24WC01/02/04/08/16 1K/2K/4K/8K/16K 位串行E2PROMD.广州周立功单片机有限公司6DS1302 Trickle Charge Timekeeping Chip datasheetD7马忠梅,籍顺心等单片机的C语言应用程序设计M北京航空航天大学出版社, 2001年8陈明荧 8051单片机课程设计实训教程M北京:清华大学出版社9何立民单片机

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