《基于单片机的多功能时钟设计--大学毕业论文.doc》由会员分享,可在线阅读,更多相关《基于单片机的多功能时钟设计--大学毕业论文.doc(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目录编号 淮安信息职业技术学院毕业论文题 目基于单片机的多功能时钟设计学生姓名学 号系 部电气工程系专 业机电一体化班 级指导教师顾问教师二一三年十月摘 要随着生活节奏的加快,人们时间观念的加强,时钟已经成为人们日常生活中不可或缺的一部分,而如何在时钟的基础上,根据人们生活的需要增加相应的功能以及方便于人们的生活,成为时钟设计方面的重点。单片机以其强大的功能,低廉的价格成为许多多功能电子产品的首选。本文探讨了一种带数字温度计的语音时钟的实现方案。介绍了以AT89C52单片机为核心,控制实时时钟芯片DS1302,数字温度芯片DS18B20,语音芯片ISD4003-4和液晶显示模块OCM12864
2、-1,实现时间和闹钟的显示与调整,温度显示和语音报时。关键词:实时时钟;语音报时;液晶显示;数字温度芯片AbstractAbstractWith the quickening pace of life, it enhanced sense of time, the clock has become an indispensable part of daily life. How the clock basis, according to peoples live need to increase accordingly, function to facilitate peoples lives
3、, become the focus of the clock design. Microcontroller with its powerful features, low price to become the first choice for many multi-functional electronic products. The paper discusses a kind of realization of speech chronopher with digital thermometer. It introduces realizing displaying and adju
4、sting time and alarm-time, displaying temperature and giving time by speech with AT89C52 MCU as the core, controlling RTC Chip DS1302, DTS Chip DS18B20, ChipCorder ISD4003-4, and LCD module. Keywords: RTC; speech chronopher; LCD; DTS目 录目 录摘 要IABSTRACTII第一章 绪论11.1 发展现状、目的及意义11.2 设计内容2第二章 系统硬件设计32.1 整
5、体框架概述32.2 主控器AT89C5232.2.1 概述32.2.2 主要性能42.2.3 功能性描述42.3 实时时钟芯片DS130262.4 温度传感器DS18B2072.5 液晶显示模块1286492.5.1 概述92.5.2 最大工作范围92.6 语音芯片及功放102.6.1 概述102.6.2 芯片内部框图以及电路图102.6.3 芯片管脚112.6.4 ISD4003-4指令表132.7独立式键盘设计13第三章 系统软件设计153.1 主程序设计153.2 DS1302163.3 温度芯片DS18B20163.4 OCM12864液晶显示173.5 语音芯片ISD4003183.
6、6 源程序19第四章 系统调试244.1 Proteus软件介绍244.2 本设计调试254.2.1 硬件调试254.2.2 软件调试25第五章 结论与展望265.1结论265.2 展望26致谢26参考文献28III第一章 绪论第一章 绪论1.1 发展现状、目的及意义单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机具有体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O
7、口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。单片机在出现时,Intel公司就给其单片机取名为嵌入式微控制器(embedded microcontroller)。单片机的最明显的优势,就是可以嵌入到各种仪器、设备中。这一点是巨型机和网络不可能做到的。单片机在内部已集成了越来越多的部件,这些部件包括一般常用的电路,例如:定时器,比较器,A/D转换器,D /A转换器,串行通信接口,Watchdog电路,LCD控制器等。 近年来单片机技术飞速发展,产品质量越来越好,而成本却越来越低,现阶段
8、许多复杂、多用的电子器件普遍采用单片机来实现。随着半导体工艺技术的发展及系统设计水平的提高,单片机还会不断产生新的变化和进步,最终人们可能发现:单片机与微机系统之间的距离越来越小,甚至难以辨认。同时,随着人们生活节奏的加快,时钟已经成为人们日常生活中的必需品,许多家用电器都带着时钟模块,而人们也不再满足于仅仅具有时间显示功能的时钟,对时钟功能的要求也越来越全面,单片机以其强大的功能成为多功能电子时钟的首选,为电子时钟的功能扩展提供了强大的支持,实现一物多用,提高电子时钟的使用价值。当然们不再满足于电子时钟的计时显示功能时语音时钟在社会生活中已经得到了广泛应用,本文探讨的系统即为其中一种,给出的
9、实现方案和系统设计过程中实现的单片机模拟单线总线通信方式,单片机模拟SPI通信方式,有一定参考价值。此外,文中探讨的系统也对传统的语音时钟做了扩充,增加了数字温度计模块。本设计详细介绍了该系统的组成和基本原理,中带你介绍了硬件设计的思想和软件设计的思路,保证在系统功能齐全,性能良好的前提下,最大限度的简化电路,降低系统的整体成本,提高系统的可靠性!1.2 设计内容基于单片机的多功能时钟设计,主要探讨了一种带数字温度计的语音时钟的实现方案。本方案采用单片机AT89C52作为控制单元,与数字温度芯片DS18B20接口获得温度数据,与实时时钟芯片DS1302接口获得时间/日历数据,通过与液晶模块OC
10、M12864-1接口显示温度,时间和日历。按键中断模块包含四个按键,分别与单片机INT0,INT1,T0,T1引脚连接,实现四个外部中断源,用以调整时间和闹钟,开关闹钟和控制语音报时。语音报时通过语音芯片ISD4003-4和扬声器实现。27第二章 系统硬件设计第二章 系统硬件设计2.1 整体框架概述系统结构如图2-1所示。本方案采用单片机AT89C52作为控制单元,与数字温度芯片DS18B20接口获取温度数据,与实时时钟芯片DS1302接口获取时间/日历数据,通过与液晶模块OCM12864-1接口显示温度、时间和日历。按键中断模块包含了四个按键,分别与单片机的INT0,INT1,T0,T1连接
11、,实现四个外部中断源,用以调整时间和闹钟,开关闹钟和控制语音报时。图2-1 系统结构图2.2 主控器AT89C522.2.1 概述AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编
12、程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。2.2.2 主要性能(1) 兼容MCS51指令系统,8k可反复擦写(1000次)Flash ROM;(2) 32个双向I/O口,256*8bit内部RAM;(3) 3个16位可编程定时/计数器中断,时钟频率0-24MHz;(4) 2个串行中断,可编程UART串行通道;(
13、5) 2个外部中断源,共8个中断源;(6) 2个读写中断口线,3级加密位;(7) 低功耗空闲和掉电模式,软件设置睡眠和唤醒功能。2.2.3 功能性描述AT89C52为40 脚双列直插封装的8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。AT89C52的主要管脚有:(1) XTAL1(19 脚)和XTAL2(18 脚):振荡器输入输出端口,外接12MHz 晶振。RST/
14、Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端;P0P3:为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(3239 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。(2) P0 口:P0 口是一组8 位漏极开路型双向I
15、/O 口, 也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8 个TTL逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1 口:P1 是一个带内部上拉电阻的8 位双向I/O 口, P1 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个
16、引脚被外部信号拉低时会输出一个电流(IIL)。与AT89C51 不同之处是,P1.0 和P1.1 还可分别作为定时/计数器2 的外部计数输入(P1.0/T2)和输入(P1.1/T2EX)。 P2 口:P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16 位地址的外部数据存储器(例如执行MOVX DPTR 指令)时,P2 口送出高8 位地址数据
17、。在访问8 位地址的外部数据存储器(如执行MOVX RI 指令)时,P2 口输出P2 锁存器的内容。Flash 编程或校验时,P2亦接收高位地址和一些控制信号。 P3 口:P3 口是一组带有内部上拉电阻的8 位双向I/O 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3 口将用上拉电阻输出电流(IIL)。P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能 ,P3 口还接收一些用于Flash 闪速存储器编程和程序校验的控制信号。 (3) RST:复位输入。当振荡器工作时,R
18、ST引脚出现两个机器周期以上高电平将使单片机复位。 (4) ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8 位字节。一般情况下,ALE 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE 脉冲。对Flash 存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0 位置位,可禁止ALE 操作。该位置位后,只有一条 MOVX 和MOVC指令才能将ALE 激活。此外,该引脚会被微弱拉高,单片机执行
19、外部程序时,应设置ALE 禁止位无效。 (5) PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52 由外部程序存储器取指令(或数 据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。(6) EA/VPP:外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000HFFFFH),EA 端必须保持低电平(接地)。需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU 则执行内部程序存储器中的指令。Flash 存储器编程时,该引脚加上+12V 的编程允许
20、电源Vpp,当然这必须是该器件是使用12V 编程电压Vpp。 (7) XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。 (8) XTAL2:振荡器反相放大器的输出2.3 实时时钟芯片DS1302DS1302是DALLAS公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信。图2-3所示为DS1302的引脚排列,其中VCC1为后备电源,VCC2为主电源。DS1302由VCC1或VCC2两者中的较大者供电。所以在主电源关闭的情况下,也能保持时钟的连续运行。X1和X2是振荡源,外接32.768KHz晶振用来为芯片提供计时脉冲。RST是复
21、位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电行动时,在VCC大于等于2.5V之前,RST必须保持低电平。在SCLK为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。SCLK始终是输入端。图2-3 DS1302的硬件接线图时钟芯片DS1302的工作原理:a) DS1302的控制字
22、节DS1302控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。b) 数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。c) DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时
23、钟相关,存放的数据位为BCD码形式。“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,“WP”必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;
24、另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。2.4 温度传感器DS18B20本设计的测温元件采用DS18B20数字温度传感器,该产品采用美国DALLAS公司生产的DS18B20可组网数字温度传感器芯片封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。使用DS18B20数字温度传感器,可以感测周围环境温度变化,并将数据传送给单片机进行处理,实现周围环境实时温度的监测。DS18B20具有独特的单线接口,只需1个接口引脚即可通信;多点能力使分布式温度检测应用得以简化;不需要外部
25、元件;可用数据线供电,不需备份电源;测量范围从-55至+125,增量值为0.5。等效的华氏温度范围是-67F至257F;以9位数字方式读出温度;在1秒(典型值)内把温度变换为数字;用户可定义的,非易失性的温度告警设置;告诫搜索命令识别和寻址温度在编定的极限之外的器件(温度告警情况);应用范围包括恒温控制,工业系统,消费类产品,温度计或任何热敏系统。下图(图2-4)为DS18B20硬件接线图:图2-4DS18B20引脚接线引脚说明:GND为接地引脚;DQ为数据输入输出脚。用于单线操作,漏极开路;VCC接电源正;a) DS18B20的主要特性 1)适应电压范围更宽,电压范围:3.05.5V,在寄生
26、电源方式下可由数据线供电。 2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。 4)DS18B20在使用中不需要任何外围元件,全部 传感元件及转换电路集成在形如一只三极管的集成电路内。 5)温范围55125,在-10+85时精度为0.5。 6)可编程 的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。 7)在9位分辨率时最多在 93.75ms内把温度转换为数字,12位分辨率时最多在
27、750ms内把温度值转换为数字,速度更快。 8)测量结果直接输出数字温度信号,以一 线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。 9)负压特性:电源极性接反时,芯片不会因发热而烧毁, 但不能正常工作。DS18B20只需要接到控制器(单片机)的一个I/O口上,由于单总线为开漏所以需要外接一个4.7K的上拉电阻。DS18B20数据线是开漏结构,这就意味着,在没有数据的时候,总线处于什么样的状态是不确定的.加一个上拉电阻就可以使总线在空闲的时候处于高电平状态.b) DS18B20的供电方式DS18B20的供电方式有两种:寄生电源供电方式和外部电源供电方式。本设计采用外部
28、电源供电方式,DS18B20工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度。外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统2.5 液晶显示模块128642.5.1 概述OCM12864液晶显示模块是128*64点阵型液晶显示模块,可显示各种字符及图形,可与CPU直接接口,具有8为标准数据接口、6条控制线及电源线。采用KSO108控制IC,其接线图如2-5外观尺寸:1136511mm(ocm12864-1), 937010mm(ocm12864-2) 787010
29、mm(ocm12864-3)视域尺寸:73.438.8mm(ocm12864-1) 70.738mm(ocm12864-2), 6444mm(ocm12864-3)2.5.2 最大工作范围(1) 逻辑工作电压(Vcc):4.55.5V;(2) 电源地(GND):0V;(3) LCD驱动电压(Vee):0-10V;(4) 输入电压:VeeVdd;(5) 工作温度(Ta):055(常温) / -2070(宽温);(6) 保存温度(Tstg):-1065 图2-5 液晶显示模块接线图2.6 语音芯片及功放2.6.1 概述ISD4003-4单片录放时间为4分钟,其通信方式为SPI方式(详见ISD公司关
30、于该芯片的数据手册),本系统中以单片机模拟SPI方式与其接口。单片机对其写入16位格式命令时序。2.6.2 芯片内部框图以及电路图图2-6 ISD4003-4内部框图图2-7 语音模块电路图2.6.3 芯片管脚语音芯片管脚排列图如2-8所示:图2-8 芯片管脚排列图引脚描述:l 电源(VCCA,VCCD): 为使噪声最小,芯片的模拟和数字电路使用不同的电源总线,并且分别引到外封装不同管脚上,模拟和数字电源端最好分别走线,尽可能在靠近供电端处相连,而去耦合电容应尽量靠近器件。l 地线(VSSA,VSSD):芯片内部的模拟和数字电路也使用不同的地线。几个VSSA尽量在引脚焊盘上相连,并用低阻通路连
31、到电源上,VSSD也用低阻通路连到电源上。l 同相模拟输入(ANA IN+): 录音信号的同相输入端,输入放大器可用单端或差分驱动。单端输入时,信号由耦合电容输入,最大幅度为峰峰值32mV,耦合电容和本端的3K电阻输入阻抗决定芯片频带的低端截止频率。差分驱动时,信号最大幅度为峰峰值16 mV。l 反相模拟输入(ANA IN-): 差分驱动时,这是录音信号的反相输入 端。信号通过耦合电容输入,最大幅度为峰峰值16 mV,本端的标称输入阻抗为56K,单段驱动时,本端通过电容接地,两种方式下,ANAIN+、ANAIN-端的耦合电容值应相同。l 音频输出(AUD OUT): 提供音频输出,可驱动5K的
32、负载。l 片选(SS): 此端为低,即向该ISD4000芯片发送指令,两条指令之l 间为高电平。l 串行输入(MOSI): 此端为串行输入端,主控制器应在串行时钟上升沿之前半个周期将数据放到本端,供ISD输入。l 串行输出(MISO): ISD的串行输出端。ISD未选中时,本端呈高阻态。l 串行时钟(SCLK): ISD的时钟输入端,由主控制器产生,用于同步MOSI和MISO的数据转输。数据在SCLK上升沿锁存到ISD,在下降沿移出ISD。l 中断(/INT): 漏极开路输出,ISD在任何操作(包括快进)中检测到EOM或OVF时,本端变低并保持。中断状态在下一个SPI周期开始时清除。中断状态也
33、可用RINT指令读取。l OVF标志指示ISD录、放操作已到达存储器的末尾。l EOM标志只在放音中检测到内部的EOM标志时,此状态位置1。l 行地址时钟(RAC): 漏极开路输出。每个RAC周期表示ISD存储器的操作进行了一行(ISD4000系列中的存储器共600至2400行)。该信号175ms保持高电平,低电平为25ms。快进模式下,RAC的218.75us是高电平31.25us为低电平。该端用于存储管理技术。 l 外部时钟(XCLK): 本端内部有下拉元件,芯片内部的采样时钟出厂前已调校,误差在1%内。商业级的芯片在整个温度和电压范围内,其频率变化在2.25%内。工业级芯片在整个温度和电
34、压范围内,频率变化在-6/+4%内,建议使用稳压电源。若要求更高精度,可从本端输入外部时钟(如前表所列)。由于内部的防混淆及平滑滤波器已设定,故上述推荐的时钟频率不应改变。输入时钟的占空比无关紧要,因内部首先进行了分频。在不外接时钟时,此端必须接地。l 自动静噪(AMACP): 当录音信号电平下降到内部设定的某一阈值以下时,自动静噪功能使信号衰减,这样有助于减小无信号(静音)时的噪声。通常,本端对地接1uF的电容,构成内部信号电平峰值检测电路的一部分。检出的峰值电平与内部设定的阈值作比较,决定自动静噪功能的翻转点。大信号时,自动静噪电路不衰减,静音时衰减6dB。1uF的电容也影响自动静噪电路对
35、信号幅度的响应速度。本端接VCCA则禁止自动静噪。2.6.4 ISD4003-4指令表语音芯片 ISD4003-4指令表如表2.1所示:表2.1 ISD4003-4指令表指令5位控制码,操作摘要POWERUP00100 上电:等待TPUD后器件可以工作SETPLAY11100 从指定地址开始放音必须后跟PLAY指令使放音继续PLAY11110 从当前地址开始放音(直至EOM或OVF)SETREC10100 从指定地址开始录音必须后跟REC指令使录音继续REC10110 从当前地址开始录音(直至OVF或停止)SETMC11101 从指定地址开始快进必须后跟MC指令使快进继续MC11111 执行快
36、进,直到EOM若再无信息,则进入OVF状态STOP0X110 停止当前操作STOPPWRDN0X01X 停止当前操作并掉电RINT0X110 读状态:OVF和EOM.2.7独立式键盘设计实现键盘控制的方法有多种,它可以用FPGA来进行控制,也可以用单片机来进行控制。在本系统中,我们采用了单片机来进行控制,因为单片机可以很好的解决键抖动。由若干个按键组成一个键盘,其电路结构可分为独立式键盘和矩阵式键盘两种。 独立式键盘每个键单独占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他I/O口线上的状态,矩阵式键盘按键排列为行列式矩阵结构,也称行列式键盘结构。4行4列共16个键,只占用8根I
37、/O口线,键数目较多,可节省口线。本设计采用的是独立式键盘。键盘的工作方式可分为编程控制方式和中断控制方式。CPU在一个工作周期内,利用完成其他任务的空余时间,调用键盘扫描子程序,经程序查询,若无键操作,则返回;若有键操作,则进而判断是哪个键,并执行相应的键处理程序。这种方式为编程扫描方式。由于单片机在正常应用过程中,可能会经常进行键操作,因而编程控制方式使CPU经常处于工作状态, 在进行本次设计中,只涉及到了设置、上调、下调、确定四个功能。因此采用独立式键盘。按键设计图如图2-9所示:图2-9 按键设计第三章 系统软件设计第三章 系统软件设计3.1 主程序设计包含主程序设计、语音芯片录放音程
38、序设计、实时时钟程序设计、温度芯片程序设计、液晶显示程序设计五部分。图3-1所示为主程序流程图。图3-1 主程序流程图在此,仅将流程图中的重点做以解释说明。由于系统中要用到四个外部中断,而AT89C52只有2个中断源引脚INT0和INT1,所以需要另外扩展2个中断源引脚。在本系统中,将计数引脚T0和T1扩展为2个中断源引脚。具体方法如下:1)将定时器/计数器T0和T1设定为计数功能。2)将定时器/计数器T0和T1设定为方式2,即自动加载8位计数定时模式。3)设定TL0和TL1计数初值为0xFF,设定TH0和TH1加载数据为0xFF。4)开启定时器/计数器中断。将计数中断0、1设定为下降沿触发方
39、式。每当T0或T1引脚出现负跳变就会产生一次中断,达到了扩展2个中断源的目的。3.2 DS1302DS1302的引脚中VCC1为后备电源,VCC2为主电源。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将R
40、ST置为高电平。I/O为串行数据输入输出端(双向), SCLK为时钟输入端。3.3 温度芯片DS18B20 温度数据由单片机从数字温度芯片DS18B20获取。DS18B20的通信方式为单线总线方式(详见美国DSLLAS公司关于该芯片的数据手册),本系统中以单片机模拟单线总线方式实现与其接口。单片机以字节为单位对其进行读写操作,读写一个字节分成8个连续的位读写时隙实现。单片机读写DS18B20的位时隙如图3-2、3-3所示。图3-2 主机读“0”时隙和读“1”时隙图3-3 主机写“0”时隙和写“1”时隙单片机对DS18B20的操作需遵循以下步骤:1)复位,即单片机发出复位脉冲(将总线从高电平拉到
41、低电平并保持480微秒到960微秒,然后释放),等待接收DS18B20的存在脉冲(DS18B20将总线从高电平拉低,保持60微秒到240微秒)。2)发送ROM操作指令,即读ROM(33H)、匹配ROM(55H)、忽略ROM(CCH)和搜素ROM(F0H)其中之一。3)发送存储器操作指令,即读便笺存储器(BEH)、写便笺存储器(4EH)、复制便笺存储器(18H)、温度转换(44H)、回写E2PROM的值到便笺存储器(B8H)和读电源供给(B4H)其中之一。4)处理或数据操作。要注意,DS18B20进行一次12位的温度转换需要750毫秒,如果温度转换没有结束就去读温度数据,将不能得到正确的温度值,
42、且会终止正在进行的温度转换。所以,必须等待足够的时间,让温度转换完成。本系统中,重复ShowTimes次读取时间数据,显示时间和温度等操作来实现这个等待时间。3.4 OCM12864液晶显示OCM12864液晶显示模块是128*64点阵型液晶显示模块,可显示各种字符及图形,可与CPU直接接口,具有8为标准数据接口、6条控制线及电源线。采用KSO108控制IC。AT89C52读/写0CM1286时序图如图3-4/3-5:图3-4 AT89C52读OCM12864-1的时序图3-5 AT89C52写OCM12864-1的时序3.5 语音芯片ISD4003语音报时和闹铃功能由语音芯片ISD4003-
43、4实现。ISD4003-4单片录放时间为4分钟,其通信方式为SPI方式(详见ISD公司关于该芯片的数据手册),本系统中以单片机模拟SPI方式与其接口。单片机对其写入16位格式命令时序如图3-6所示。图3-6 单片机写16位格式命令时序图单片机启动ISD4003-4放音需遵循以下步骤:1)发送上电指令;2)等待上电延时时间;3)发送设定放音起始地址指令和放音起始地址,16位二进制为11100,A表示地址位;4)发送放音指令,16位二进制为11110,X表示无作用。在本系统中,首先选取不同的起始地址分别录入语音“现在时间”、“温度”、“摄氏度”、“0”到“10”的语音、“点”和“分”,然后再录入闹
44、铃音。闹钟开启状态下,若时间到达闹钟设定时间,则按指定地址播放闹铃音。若发生计时中断T0,将中断发生时的时、分和温度值分离为十位和个位两部分,再分别计算出对应的语音存储地址,按照十位的语音,“10”的语音,个位的语音进行语音输出。每次语音报时以输出语音“现在时间”开始,接着按上述方式分别输出时和分的语音,再输出语音“温度”,然后输出温度值的语音和语音“摄氏度”。3.6 源程序TIMER0: CLR TR0 MOV TH0,#0B8H MOV TL0,#000H DJNZ R1,GOON PUSH ACC MOV A,P3 PUSH ACC MOV P3,#0FFH MOV A,R7 PUSH
45、ACC ACALL TIME MOV R1,#50 POP ACC MOV R7,A POP ACC MOV P3,A POP ACCGOON: SETB TR0 RETITIME: MOV A,53H ADD A,#01H DA A MOV E7,A CLR C SUBB A,#60H JNC MIN1 MOV 53H,R7 SJMP OKMIN1: MOV 53H,#00H JB B.6,OK;当B.6为1时;设置时间不进位TIME2: MOV A,52H SWAPA INC A MOV R7,A CLR C SUBB A,#0CAH JNC MIN2 MOV A,R7 SWAPA MOV 52H,A SJMP OKMIN2: MOV 52H,#0CH INC 51HVLR CMOV A,51HSUBB A,#0C6HJNC HOURSJMP OKHOUR: MOV 51H,#0C0HTIME3: MOV A