基于单片机的电子万历的设计毕业设计.doc

上传人:仙人指路1688 文档编号:4148718 上传时间:2023-04-07 格式:DOC 页数:41 大小:1,017.50KB
返回 下载 相关 举报
基于单片机的电子万历的设计毕业设计.doc_第1页
第1页 / 共41页
基于单片机的电子万历的设计毕业设计.doc_第2页
第2页 / 共41页
基于单片机的电子万历的设计毕业设计.doc_第3页
第3页 / 共41页
基于单片机的电子万历的设计毕业设计.doc_第4页
第4页 / 共41页
基于单片机的电子万历的设计毕业设计.doc_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《基于单片机的电子万历的设计毕业设计.doc》由会员分享,可在线阅读,更多相关《基于单片机的电子万历的设计毕业设计.doc(41页珍藏版)》请在三一办公上搜索。

1、学号: 毕业设计题 目 :基于单片机的电子万年历的设计作 者届 别 2013院 别物理与电子学院专 业电子科学与技术指导老师职 称讲 师完成时间2013年5月摘 要 智能电子万年历系统是由硬件与软件相结合而设计,而它是以AT89C55单片机作为主控核心与时钟电路、显示电路、复位电路、振荡电路、报警闹铃电路、温度检测电路、独立键盘电路等模块组成硬件系统,其中时钟电路采用了时钟芯片DS12887,显示电路采用了LCD1602液晶显示,温度检测电路采用了DS18B20温度传感器;而软件使用了Keil软件进行C语言编程、Proteus软件进行仿真测试,Altium Designer软件进行原理设计。系

2、统采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,且具有整点报时、时间校准及设置闹钟等功能。关键词:单片机AT89C55 ;时钟电路;电子万年历;液晶显示 AbstractThe design of Intelligent electronic calendar system is composed of hardware and software, and it is based on AT89C55 microcontroller as the master core .It is Composed of clock circuit, display circui

3、t, reset circuit, oscillation circuit, alarm alarm circuit, temperature detection circuit, keyboard circuit module hardware. the clock circuit using the clock chip DS12887, the display circuit displays useing LCD1602 liquid crystal, temperature detection circuit using DS18B20 temperature sensor; It

4、is simulated by C programming language and Proteus software useing Keil software, Use Altium Designer software design principles. The system adopts visual digital display, can display year, month, day, Circle day, hours, minutes, seconds and temperature information, and with the whole point timekeep

5、ing, time and set the alarm function.keyword : MCU AT89C55; clock circuit; electronic calendar; liquid crystal display.目录第一章 引言11.1 发展状况11.2 选题意义与目的11.3 功能要求2第二章 设计方案分析与选择32.1 主控核心(单片机)32.2 温度芯片42.3 时钟芯片52.4 显示器件5第三章 系统硬件设计63.1 单片机最小系统设计63.2 温度电路的设计83.3 时钟电路的设计103.4 显示电路的设计113.5 键盘电路的设计123.6 报警电路的设计

6、13第四章 系统软件设计144.1 系统总程序144.2 温度模块程序144.3 时钟模块程序164.4 显示模块程序204.5 键盘及其它模块程序21第五章 调试与仿真245.1 Proteus软件简介245.2 仿真与调试步骤24第六章 总结28 参考文献29 致谢30 附录I:系统原理图 附录II:系统源程序第一章 引言1.1 发展状况随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计时的消费需求也是越来越多。二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分

7、级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!因此,电子万年历的出现带来了钟表计时业界跨跃性的进步。近些年,随着科技的发展和社会的进步,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的需求。多功能数字钟不管在性

8、能还是在样式上都发生了质的变化,有电子闹钟、数字闹钟等等。单片机在多功能数字钟中的应用已是非常普遍的,人们对数字钟的功能及工作顺序都非常熟悉。但是却很少知道它的内部结构以及工作原理。由单片机作为数字钟的核心控制器,可以通过它的时钟信号进行计时实现计时功能,将其时间数据经单片机输出,利用显示器显示出来,通过按键可以进行定时、校时功能。输出设备显示器可以用液晶显示技术和数码管显示技术。当然随着技术的不断提高,用嵌入式系统来设计电子万年历会越来越多,用嵌入式系统设计的万年历的功能将是更加强大,而目前常用的是使用单片机来设计日常生活中常见的小型电子产品,其形式多种多样,小到带有日期的电子腕表,大到公共

9、场所悬挂的大型电子日历,此外,眼下我们还常能在宾馆、饭店等场所见到一种带有年、月、日、时、分、秒、星期甚至节气等信息的电子日历牌。1.2 选题意义与目的 现在是一个知识爆炸的新时代,新产品、新技术层出不穷,电子技术的发展更是日新月异。可以毫不夸张的说,电子技术的应用无处不在,电子技术正在不断地改变我们的生活,改变着我们的世界,改变着我们的观念,传统的时钟已不能满足人们的需求。而数字化的钟表给人们带来了极大的方便。由于单片机具有灵活性强、成本低、功耗低、保密性好等特点,所以电子日历时钟一般都以单片机为核心,外加一些外围设备来实现。而随着科学技术的高速发展,微电子技术的突飞猛进,人们设计出更加便捷

10、和更加精确的电子万年历。它不仅能对年、月、日、时、分、秒、星期进行计时,更能进行闰年补偿、温度显示、整点报时、时间校准以及闹钟设置等多种功能,而且产生的误差极小,使用寿命极长。因此采用电子时钟(万年历)是一种趋势,更是一种时尚。 本系统采用了以广泛使用的单片机技术为核心,软硬件结合,并采用独立键盘电路、LCD显示电路、时钟电路、温度检测电路,使硬件部分大为简化,提高了系统稳定性,能显示丰富的信息,此万年历具有功能多样、电路简洁、读取方便、显示直观、电路简洁、操作容易、功耗低、成本低廉等多项优点,适合批量生产,符合电子仪器仪表的未来发展趋势,具有广阔的市场前景。1.3功能要求 1.系统采用直观的

11、数字显示,可以同时显示年、月、日、周日、时、分、秒温度等信息,且具有时间校准等功能(设计要求)。 2. 利用PROTEL软件进行电路设计及用Proteus进行电路仿真(设计要求)。 3.具有响铃及整点通知功能(创新要求)。 4.具有上电各模块自检及高温二级报警功能(创新要求)。第二章 设计方案分析与选择 万年历的设计有多种方法,可供选择的元器件丰富多样,可运用的技术也有很多种。所以,系统总体设计方案应在满足功能要求的前提下,充分的考虑系统的使用环境,所选的结构要操作方便、易于实现,元器件的选用着重于合适的参数、稳定的性能、较低的功耗以及低廉的成本等多种因素,同时紧跟时代脚步。因此,本文提出了基

12、于AT89系列单片机的智能电子万年历设计的方案,此次设计以单片机作为主控核心,与温度芯片、时钟芯片、显示等模块组成硬件系统。针对这四大主要模块,对一下芯片进行分析与选择。2.1主控核心(单片机) 本方案在主控核心方面采用的是AT89系列,AT89 系列是美国Atmel公司生产的cmos 单片机,片内含有可多次擦写的只可读取程序存储器(PEROM)和随机的可存取数据的存储器(RAM),器件采用的生产技术是Atmel公司高密度的、非易失的存储技术,兼容了标准的mcs-51指令系统;其内部含有通用的8位(中央)处理器CPU和存储器(Flash存储单元)功能强大AT89系列单片机可以生产高性价比的产品

13、用于各种场合,因其灵活性强常常应用于多种控制领域。在AT89系列单片机中首先考虑用AT89C51,它是一款优秀的、功能强大单片机,但是只读程序数据存储器(ROM)只有4K,而本次设计的程序比较大超过了10K,若要用它就要接 扩展储存器,这必定会增加产品的费用,也会使设计的电路变得复杂,因此,不符合我的设计要求,从设计的程序看可以选择AT89C53 和AT89C54,然考虑的Proteus仿真元器件库中没有这两款单片机,综合考虑可以采用AT89C55,从表21来看,这款单片机完全符合设计要求。 这个AT89C55是一种低功耗,高性能的8位CMOS单片机,提供以下标准功能:20k字节Flash闪速

14、存储器,256字节内部RAM,4个(P0、P1、P2、P3)8字节端口,三个16位定时计数器, 6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C55可降至零频率的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。它有多种封装方式,本设计采用DIP40直插式封装的AT89C55。表21两种单片机的比较单片机特点AT89C51单片机AT89C55单片机相同的主要性能参数1. MCS-51产品指令系统完全

15、兼容2. 1000次擦写周期3. 32个可编程IO口线 4. 低功耗空闲和掉电模式5. 三级加密程序存储器6. 可编程串行UART通道不通的主要性能参数1.全静态操作:0Hz24MHz2. 6个中断源3.1288字节内部RAM4. 4k字节可重擦写Flash闪速存储器5.两个16位定时计数器1.全静态操作:0Hz33MHz2. 8个中断源3.2568字节内部RAM4. 20k字节可重擦写Flash闪速存储器5.三个16位定时计数器 2.2温度芯片 温度是常见的测量与控制量之一,其实时测控遍布各行各业。它通常是通过温度传感器来测量,在众多的温度传感器中,可分两类即模拟温度传感器与数字温度传感器,

16、本次设计的电子万年历为了简洁硬件电路简洁、系统稳定性、易于实现。可采用数字温度传感器,DS18B20是美国Dallas公司推出的数字温度传感器之一, 采用3脚(或8脚)TO92封装形式,DQ(2脚)为数字信号输入/输出端,GND(1脚)为电源地,VDD(3脚)为外接供电电源输入端。与传统的热敏电阻等测温元件相比,它能直接读出被温度。不需用A/D转换电路,减少了硬件成本,感温特性曲线是严格线性的,不会产生较大的测量误差。提供9 位(二进制)温度读数指示器件的温度信息经过单线接口送入DS18B20或从 DS18B20送出,因此,从主机CPU 到DS18B20仅需一条线。主要特点:不需要备份电源,可

17、通过DQ供电;单线接口,只有一根信号线与CPU连接,电路简单;传送串行数据;用户可设定报警上下限值;零功耗待机;多个DS18B20可以很方便地以串行方式与PC或单片机连接,实现多点检测;抗干扰性强,适合于恶劣环境的现场温度测量。因此,DS18B20完全满读取方便、电路简洁、功耗低、成本低廉的设计要求。2.3时钟芯片 万年历的设计可以直接采用单片机定时计数器的定时它能提供比较精确秒信号,使用程序实现年、月、日、时、分、秒、星期计数以及时间的校准,闹钟的设置。采用此种方案虽然减少芯片的使用,达到电路简洁、节约成本,但是,实现的时间误差较大,不符合实际情况。所以不采用此方案。本设计将采用DS2887

18、时钟芯片来实现时钟,DS12887 为DALLAS公司最新推出的的实时时钟芯片,除具有实时钟功能外,它还具有128字节的通用RAM其中14个作为字节时钟和控制寄存器,114字节为通用RAM,所有ARAM单元数据都具有掉电保护功能。采用CMOS技术制成,把时钟芯片所需的晶振和外部锂电池相关电路集于芯片内部,计秒、分、时、天、星期、日、月、年,并有闰年补偿功能,二进制数码或BCD码表示时间、日历和定闹。12小时或24小时制,12小时时钟模式带有PM和AM指导,有夏令时功能。中断信号输出(IRQ)和总线兼容,定闹中断、周期性中断、时钟更新周期结束中断可分别由软件屏蔽,也可分别进行测试。采用DS128

19、87芯片设计的时钟电路勿需其它外围电路并具有良好的微机接口。DS12887芯片具有微功耗、外围接口简单、精度高、工作稳定可靠等优点,这些就是采用它的主要原因。2.4显示器件 数据的显示有多种方式可使用(点阵式的或LED的动态扫描)数码管或(LCD)液晶来显示,点阵式的数码管由64个发光的二极管(八行八列)构成,用于显示一些文字会很适合,而用来显示数字实在浪费,并且价格是较高,故不使用它来显示。而(LED数码管)动态扫描的显示,使用简单,操作方便,显示直观,并且(LED)数码管的价格也比较适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少,但是,由于显示的位数比较多,

20、若采用它将要使用4块74HC573芯片,这无疑会增加成本,重点是会使电路复杂化,操作繁琐,不满足设计要求。所以也不采用了LED数码管作为显示。采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,易于控制,电路简洁,缺点是价格比较贵,但总的来说,是最符合设计要求,所以在此设计中采用LCD液晶显示屏。第三章 系统硬件设计 本系统的硬件设计采用的是自顶向下设计模式,顶层开始,连续地逐层向下分解,起到系统的所有模块都小到便于掌握为止。因此,本系统设计了9大模块,分别是主控核心(AT89C55)模块、DS12887模块、DS18B20模块、LCD显示模块、复位电路模

21、块、报警响铃模块、电源模块、独立键盘模块、振荡电路模块。通过AT89C55读取时钟芯片的时间和温度芯片的温度,用LCD1602来显示,并可以通过初始化时钟芯片和键盘设置闹铃时间系统总框图如:图31。原理图见附录一。主控核心AT89C55复位电路模块振荡电路模块独立键盘模块DS12887模块DS18B20模块报警响铃模块电源模块LCD显示模块图3-1系统总框图3.1单片机最小系统设计3.1.1单片机最小系统原理图 单片机的最小系统是指由最基本的电路元器件组成,外接部分简单的电路就能独立完成一定的工作任务的单片机系统。55单片机的最小系统包括单片机芯片、电源、时钟电路和复位电路组成,如图32。3.

22、1.2主控核心的功能 主控核心AT89C55单片机总共有40个引脚,其中包含4组8位的I/O口;RST、ALE/PROG、XTAL1、 XTAL2、VSS、GND、EA/VPP、PSEN各一个。各引脚的功能说明如下:XTAL1/XTAL2:放大器的输入端/输出端;PSEN:程序存储允许(PSEN)输出是外部程序存储器的读选通信号,此设计中没有用到片外存储器,因此不用管;RST引脚出现两个机器周期以上的高电平将使单片机复位;EA:双功能控制端口,下设计中没用片外存储器,所以直接接电源;ALE/PROG:在访问外部程序存储器时,不读取片外时以时钟图32单片机最小系统的原理图振荡频率的1/6输出固定

23、的正脉冲信号,故它可以对外输出时序或用于定时。P0口即可用地址数据总线复用口,有可作通用的I/O口使用。它是一组8位漏极开路型双向IO口作为输出口用时。P2是一个带内部上拉电阻的8位双向IO端口,它即可作通用的I/O口使用,也可与P0口相配合,作为片外存储器的高8位地址总线。它可以根据系统要求,可全部当做于I/O口使用,也可以全部当做地址总线使用,或者部分作地表3-1单片机第二功能图端口引脚第二功能P3.0RXD(串行输入)P3.1TXD(串行输出)P3.2INT0(外中断0)P3.3INT1(外中断1)P3.4T0(定时/计数器0外部输入)P3.5T1(定时/计数器1外部输入)P3.6WR(

24、外部数据存储器写选通信号出口)P3.7RD(外部数据存储器读选通信号出口)P1.0T2(定时/计数器2外部计数输入)P1.1T2 EX(定时/计数器2外部触发输入)址总线使用部分作I/O口使用,用户自己灵活使用。P1主要用于单片机的用户的控制量的输入或数据的输出,它是一个通用准双向I/O口,但它与AT89C51略有区别,它的P1.0与P1.1有第二功能。P3口即可作通用的I/O口使用,但常使用的是其第二功能。其第二功能如表3-1所示。3.1.3最小系统的晶振电路 此电路用来产生时钟信号,以提供单片机内部各种数字逻辑电路的工作的时间基准。55单片机可内部振荡方式和外部振荡方式两种电路形式,本设计

25、采用的是内部振荡方式。单片机的内部XTAL1(19脚)与XTAL2(18脚)之间有一个高增益的放大器,在19脚和18脚外接谐振电路,就构成内部振荡方式的自激振荡器,并产生时钟脉冲,本次设计的单片机工作频率为12MHz,振荡频率由晶振的谐振频率来确定,电容器C1、C2起稳定频率、快速起振的作用,其电容值为30pF,设计电路时应将C1、C2尽量靠近单片机芯片,由于内部振荡方式电路简单,信号稳定,是独立的单片机系统首选。3.1.4最小系统的复位电路和电源 单片机的复位电路的设计,其第9引脚为复位输入端, 20引脚为接地端,40引脚为电源端.此系统的的复位电复位路设计两种情况,一为上电复位电路,一为手

26、动复位。这种设计比单一的上电复位更符合实际,也是操作方便。电源的连接,把单片机20引脚接地,单片机40引脚接+5V电压,完成电源的连接。3.2温度电路的设计3.2.1DS18B20测温原理 测温原理如图3-3所示,由于DS18B20的晶振的振荡频率是低温度系数的,因此在受到温度的影响时变化较小,故它可用于当作稳定频率,而减法计数器1的脉冲信号可以由它可提供,由于它的的晶振的振荡频率在高温系数时随温度变化很明显,故产生的脉冲信号可作为减法计数器2的脉冲信号输入,从原理图看,还含有计数门,当计数门打开时,DS18B20温度传感器就对低温度系数振荡器生成的时钟脉冲进行计数,从而实现环境温度的检测。计

27、数门开启的时间是由(高温系数)振荡器来确定,在每次检测之前,先将基准温度-55 存入温度的寄存器和减法计数器1中,使温度寄存器与减法计数器1被初始化,低温系数的晶振产生的脉冲信号由减法计数器1进行减法计数,当其值减至0时,温度寄存器中的数值将进行加1操作,而减法计数器1将重新赋值,它又重新开始对低温系数振荡器产生的信号脉冲进行计数,一直重复下去直到(减法)计数器2中的值减到0时,终止温度寄存器中的数值的增加,此时它内部的数值就是所检测的温度值。测温过程产生的非线性变化就靠其内部的斜率累加器进行修正和补偿,对减法计数器的预置温度实行修改。只要没有关闭计数门就一直重复上述处理,直到(温度)寄存器中

28、的温度值达到被检测的温度值,此来DS18B20温度检测原理。斜率累加器预置计数比较器减法计数器1温度寄存器高温系数振荡器减法计数器2减到0预置减到0低温系数振荡器增加停止图3-3 DS18B20测温原理图3.2.2DS18B20与单片机的接口电路 DS18B20与单片机的连接有两种接法,一种是寄生电源供电,另一种是外部电源供电。寄生电源供电时,VDD、GND接地,DQ接单片机的I/O口,为了确保在有效的DS18B20时钟周期内提供足够的电流,一般要用一个MOSFET来完成对总线的上拉;外部电源供电时,VDD接电源,在它和电源之间接一个4.7K的电阻,GND接地,DQ接单片机的I/O口。此设计采

29、用的是后者即外部电源供电方式,DQ(2脚)接AT89C55单片机的P1.1脚进行通信。如图34所示:图34 DS18B20测温模块的原理图3.3时钟电路的设计3.3.1DS12887芯片的引脚功能 管脚功能:GND接地,VCC接+5V的电源,当+5V电压在正常范围内,数据能读写;当VCC低于4.25V,读写操作被禁止,计时功能正常进行;当VCC下降至3V以下时,随机存储器RAM和计时器的供电被切换到内部锂电池;MOT(模式选择)接VCC时,选择Motorola时序,当接GND时,选择Intel时序;SQW(方波信号同)能从RTC内部15级分频器的13个分频中选择一个输出,其输出频率通过对寄存器

30、A编程来控制;AD0AD7(双向地址/数据复用线)总线接口,可与Motorola各种类型的微机和Intel各种类型的微机接口AS即地址信号选通的输入端口用来实现信号的分离,可在AD/ALE下降沿把地址写入DS12887芯片;DS脚表示数据的选择端或读信号的输入,它有两种类型的操作模式,它由MOT的电平决定的,当MOT接高电平时,DS为正脉冲,出现于总线周期之后,称作数据选通,在读周期时,DS指示芯片双向驱动总的时刻,在写周期时,DS的下降沿使芯片写入数据,当MOT接低电平时,DS(RD)当作与储存器的信号允许(OE)有相同的定义;R/W(读/写输入)的操作模式有两种。当MOT管脚接高电平时,R

31、/W是电平信号,表明当前周期为读信号周期或者为写信号周期,当DS为1时, R/W高电平1表明是读信号周期, R/W为低电平0表明写信号周期;当MOT管脚接低电平时,R/W信号是低电平信号,与通用RAM的写允许信号(WE)有相同的含义;CS表示片选信号输入端,它访问DS12887时钟芯片总线的周期内,片选信号只能保持为低;IRQ表示的是中断输入端,它在低电平有效,通常作为单片机的外部中断的输入。在无中断产生时, IRQ一直保持为高阻态,由于IRQ端口内部的结构是漏极开路,故它工作时要求接上拉电阻;RESET表示复位端它复位时低电平的持续时间应大于200ms,才能使DS12887实时时钟芯片复位成

32、功。3.3.2DS12887芯片与单片机的接口电路 本设计采用的是Intel总线时序,故MOT脚直接接地地。其它引脚的连接如下:GND接地;RESET和VCC接电源,选择DS12887时钟芯片的地址总线AS端口和AT89C55单片机的P3.6直接相联;而IRQ、 R/W、DS、CS读写控制线分别与单片机的P3.2、P3.3、P3.4、 P3.5口相连; DS12887芯片的SQW端口可编程产生方波输出信号,在本设计中没有使用,NC不接;AD0AD7(双向地址/数据复用线)总线接口与AT89C55单片机的P2口相接。所以DS12887时钟芯片和AT89C55单片机的接口电路如图35所示。图35

33、时钟模块的原理图3.4显示电路的设计3.4.1LCD1602芯片的引脚功能 LCD1602采用标准16脚接口,分别为:VSS(1脚)为电源地 ;VDD(2脚)接+5V电源;V0(3脚)为对比度调整端,使LCD1602液晶显示器显示达到最佳效果,在接电源正极时对比度是最弱的,在接电源负极时对比度是最高的,对比度不宜过高也不宜过低,过高会 产生“鬼影”,过低会很模糊,使用时可接一个10K的可变电阻调整对比度;RS(4脚)为寄存器功能选择,在高电平时表示选择了操作存放数据的寄存器,在低电平时表示选择了指令代码寄存器; RW(5脚)表示读/写信号选择端,高电平时表示读操作,而低电平表示写操作;EN或E

34、端(6脚)为使能端;第DB0DB7(714脚)为8位I/O口(一字节的双向数据端);1516脚为背景灯光电源接口,当为背景灯光电源时,15脚为背景灯光电源正极,16为脚为背景灯光电源负极。3.4.2LCD1602与单片机的接口电路 本设计没有对LCD1602的寄存器进行过读操作,因此,可以简化电路,把RW直接接地,低电平时是对寄存器进行写操作,显示器的背灯电源与电源按要求接好即可,对比度V0通过可变电阻与地连接,RS、E分别与AT89C55单片机的P1.2、P1.3相接,DB0DB7与AT89C55单片机的P0口按顺序连接。如图36所示图36 显示模块的原理图3.5键盘电路的设计 键盘根据它是

35、硬件编码,还是软件编程实现可分两类,一为编码键盘,一为非编码键盘,编码键盘是指键的闭合识别是由专用的硬件电路实现,并产生键值或编码,例如电脑键盘;非编码键盘是指键的闭合由软件编程的方式来识别;在单片机应用系统中,非编码键盘用的非常广泛,编码键盘用的很少。非编码键盘根据其接入方式与扫描方式又可分为矩阵键盘即行列式键盘和独立键盘。由于独立键盘在按键少时实现容易,电路简单,编程方便。故本设计采用的是独立键盘。时间设置键(SET)接单片机的P1.0,确定/闹钟(OK)接单片机的P1.5,加键(+)接单片机的P1.6,减键()接单片机的P1.7。如图37所示:图37 键盘模块的原理图3.6报警电路的设计

36、 本系统的闹钟与温度的二级报警的设计采用了简单的电路,它是由NPN型三极管集电极驱动蜂鸣器,发射极接+5V电源,基极接100欧姆的电阻作限流电阻,再与单片机的P1.4连接,温度的一级报警采用的是发红光的LED接上限流电阻与单片机的P3.1连接,原理图如图38所示:图38报警模块的原理图第四章 系统软件设计 智能数字电子万年历是多功能的系统,各功能是在程序的控制下实现的。本系统的软件设计方法与硬件设计一一对应,按照整体功能分割成多个程序模块,它们是分别进行设计、编程和调试出来的,最后通过主程序将各子程序模块结合。这样将方便程序的修改与调试,最终完成系统的整体设计,达到设计要求。此外本章的软件设计

37、说的是一种设计的思路,或者方法,因此并没有把所设计好的程序写入下列各节,全部放在附录二中。4.1系统总程序 主程序的主要功能是LCD1602、温度测试系统、实时时钟系统的初始化,键盘的扫描(包括时间校准键盘和闹钟设置键盘),闹钟判断,温度报警的查询,星期转换与月末天数调整,以及温度与时间的实时显示,此外还有开中断。主程序流程图如图4-1所示,程序见附录二。4.2温度模块程序 模块包含五个函数分别是初始化DS18B20函数,读/写一字节数据函数,读温度函数,实时显示温度函数。各函数的名字为:初始化函数init_1820();,写一字节数据函数void write_bit(uchar dat);,

38、读一字节数据函数uint read_bit();,读温度函数uint read_wdu();,实时显示温度函数void display_wdu(uint ii);具体内容见附录三源程序。流程图如图4-2所示。对初始化DS18B20函数的编程时,要严格的遵守初始化时序,主机总线在t0 时刻发送复位脉冲(最短保持480us 的低电平信号) 紧接着在t1时刻释放总线转而进入接收状态,DS18B20 在检测到总线的上升沿后等待15 -60us ,然后DS18B20在t2 时刻发出存在脉冲(低电平保持60-240 us之间) ,初始化时序如图4-3 所示。在初始化中要对只读程序存储器操作,其常用的指令代

39、码有:跳过读序号列号的操作码CCH 、启动温度转换指令代码44H和读取温度寄存器指令代码BEH等。其它的在本设计中未曾使用。读/写一字节数据函数就是从芯片中取数据与存数据,从而给芯片写指令或数据, 开始开中断初始化LCD初始化DS12887初始化DS18B20调用键盘扫描函数调用年调整函数调用设置闹钟函数闹钟?开闹钟调用星期转换函数调用显示时间函数调用显示温度函数显示?YYNN图4-1 主程序流程图是芯片能正常工作,它是通过串行输出的,一次只能读或写一位连续进行8此此操作。读温度函数用来把芯片转换的温度送到单片机进行后期处理,处理时根据表-C DS18B20温度与表示值对应表来把二进制数据转换

40、成实际的十进制温度,由表可以算出温度值为二进制值乘以0.0625,这既是被测温度。显示温度函数用来把读温度函数得到的温度值显示出来。流程图见4.4显示模块子程序即图4-8所示。开始发DS18B20复位命令发跳过ROM命令发温度转换开始命令读取当前温度并显示结束图4-2温度模块子程序流程图 图4-3 初始化时序图表4-1 DS18B20温度与表示值对应表温度/C二进制表示十六进制表示温度/C二进制表示十六进制表示+125C 000001111101000007D0h0C00000000000000000000h+85C 00000101010100000550h-0.5C111111111111

41、1000FFF8h+25.0625C00000001100100010191h-10.125C1111111101011110FF5Eh+10.125C000000001010001000A2h-25.0625C1111111001101111FF6Fh+0.5C00000000000010000008h-55C1111110010010000FC90h4.3时钟模块程序 此模块包含三个函数,分别为初始化DS18B20函数init_12887(),写数据到DS18B20内存中指定的地址函数write_12887(uchar add,uchar dat),从DS18B20内存中指定的地址读函数r

42、ead_12887(uchar add),具体内容见附录三,其流程图见图4-4。由于编程时用到了DS12887的内部功能,以及Intel时序,而前文未曾提及,所以在此略作说明。开始初始化写指令读数据结束图4-4时钟模块子程序流程图4.3.1 DS12887的内部功能 DS12887包含114字节的用户随机存储器(RAM),10字节的存放RTC时间。日历和闹钟RAM以及及用于控制和状态的4字节特殊寄存器构成,几乎128个字节都可以直接读写,其地址分配图见图4-5。时间和日历信息通过读与之对应的内存字节来获得,日历、时间和闹钟通过写与之对应应的内存字节来设置和初始化,字节中的内容可为十进制或BCD

43、形式。时间可选12小时制或24小时制。日历、时间和闹钟字节是双缓冲的,总是可以操作的。RTC时钟RAM向处理器提供了三个独立、自动的中断源。定闹中断的发生率可通过编程来控制,从1次/每秒到1次/每天不等,周期性中断的发生率是可以选择的。更新结束中断用于向程序指示此更新周期已经完成。中断控制和状态位在寄存器B与C中。周期中断可以在IRQ脚产生1次/500ms到1次/每122s的中断,中断频率同样由寄存A决定,它的控制位为寄存器B中的PIE位。DS12887每秒执行一次更新周期还比较每一定闹字节与相应的时间字节,如果匹配枵三个字节都是不关心码,则产生一次定闹中断。由于DS12887芯片在出厂时,其

44、自带的晶振是关掉的,这样就可以避免锂电池在DS12887芯片在构成系统之前被耗尽。寄存器A的第4位到第6位为010时才开启其自带晶振,使芯片工作,所以,编程时要初始化寄存器A,使晶振开启让芯片能正常工作。 图4-5 DS12887的地址分配图SET为0表示时间更新正常进行,当SET为1表示时间更新被禁止,程序可初始化时间和日历字节。PIE表示周期中断使能位,PIE为1,表示能够以选择的频率来拉低端口电平IRQ管脚, 寄存器B的第六位为PIE,其为0时,表示不允许中断信号的产生。AIE表示闹钟中断信号允许端。寄存器B的第三位为SQW,它是方波信号允许位,本文未用。DM表示数据模式选择位,DM为1

45、为十进制的数据,其时钟、日历和闹钟对应地址与数据模式如表4-2,而DM为0,则表明地址中存放的数据是以BCD码形式储存的。一天的时间表示有两种格式,即24小时制和12小时制,在寄存器B中的第一位为24/12与之对应,当它为1时,则用24时制表示,而它为0时,则用12时制来表示。为寄存器B的第0位为DSE位,它是夏令时开启位,当它为1时,则允许,为0时,则禁止。UIP为更新周期正在进行位。当UIP为1,表明更新将很快发生,当UIP为0,更新在244s内不会发生。DV0,DV1,DV2用于开启或关闭振荡器,并恢复计时链。010唯一组合是打开晶振并允许RTC计时。RS3,RS2,RS1,RS0:频率

46、选择位,本系统未用。IRQF表示中断申请标志位。当满足IRQF=PFPIE+AFAIE+UFUIE时,置1。只要IRQF为1,IRQ管脚输出低,当程序读寄存器C后或RESET管脚接低电平后,标志位都清零。AF表示定闹中断标志位,AF为1时表明现在时间与定闹时间匹配。闹钟启动。VF表示更新周期结束标志位。VF为1时表示更新周期结束。BIAT0BIT3表示未用状态位,读出总为0。VRT表示内部锂电池状态位,通常应总读出1,若读出的为0,则表明表明内部锂电池已耗尽。BIT0BIT6表示未用状态位,读出总为0,此寄存器为只读存储器。各寄存器的内部结构如表4-3所示。根据上述分析,此系统要用Intel时序,24小时制,输出数据为二进制,开启内部振荡器,所以在编程时要给寄存器A、B、分别初始化为20H、26H,因闹钟中断要读寄存器C,才能响应。所以要在AT89C55外部中断函数中读寄存器C。表4-2时钟、日历和闹钟对应地址与数据模式-二进制模式(DM=1)表4-3.DS12887状态控制寄存器寄存器的位BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0寄存

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号