




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
题目: 基于AT89S52智能语音温度计的设计 1 引言21世纪是人类全面进入信息电子化的时代,现代信息技术的三大基础是信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)。随着人类探知领域和空间的拓展,使得人们需要获得的电子信息种类日益增加,需要信息传递的速度加快,信息处理能力增强,因此要求与此相对应的信息采集技术传感技术必须跟上信息化发展的需要。传感器技术是人类探知自然界信息的触觉,为人们认识和控制相应的对象提供条件和依据。它属于信息技术的前沿尖端产品,尤其温度传感器被广泛用于工农业生产、科学研究和生活等领域,数量居各种传感器之首。近百年来,温度传感器的发展大致经历了以下三个阶段:(1)传统的分立式温度传感器 (含敏感元件);(2)模拟集成温度传感器控制器;(3)智能温度传感器。目前,国际上新型温度传感器正从模拟式向数字式、由集成化向智能化、网络化的方向发展。作为现代信息技术的三大核心技术之一的传感技术,将是二十一世纪世界各国在高新技术发展方面争夺的一个重要领域。2 设计要求1 显示当前日期、时间、温度。2 当测量温度超过设定温度时,启动报警模块报警。3 手动实时播报温度,时间。4 温度显示稳定,误差1。3 方案论证分析本题,根据设计要求先确定了本系统的整体设计原理框图如图所示微控制器模块 电源模块显示模块 温度采集 键盘控制 语音录放 报警模块 图3.1 原理框图 3.1 电源模块方案一:采用三只干电池作为电源。该方案的优点是设计简明扼要,成本低;缺点是输出功率不高,只能勉强驱动单片机,适合小电流负载。而且在整个系统工作中,电压会随着时间的推移不断降低,进而出现死机等情况。方案二:采用独立的稳压电源。电源的稳压的特性较好,能够保证整个系统稳定工作。综上分析,为使系统调试方便,能够稳定工作,必须有可靠电源,所以决定选择第二种方案。3.2 温度传感器模块方案一:AD590是单片集成的敏感电流源,激励电压在+4V+30V间选择,其测量范围为-55摄氏度-150摄氏度,所输出的电流数值(微安数)等于绝对温度K的数值。AD590具有标准化的输出和固有的线性关系,分不同的测温范围和精度供设计者选用,通过微调电路对AD590的输出进行修正,可达到很高的测试精度。AD590不需要低电平测量设备和电桥,可以使用长导线,而不会因为电压的降低和感应的噪声电压而产生误差;它又是一个高阻抗的电流源;对激励的电压变化不够敏感。但是AD590需要把被测温度转化为电流再通过放大器和A/D转换器才能输出数字量送给单片机进行温度控制。方案二:DS18B20是美国达拉斯半导体公司推出的第一片支持“一线总线”接口的温度传感器。它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可以将温度直接转化成串行数字量供微处理器处理。因此,在温度测量系统中,采用抗干扰能力强的新型数字温度传感器是解决这些问题的有效方案,新型数字温度传感器DS18B20具有体积更小、精度更高、适用电压更宽、采用一线总线、可组网优点,在实际测温的过程中取得了良好的测量效果。其供电方式简单,可用数据线供电,所需的外围器件较少,甚至不需要外围器件。通过比较,温度传感器DS18B20具有更高的性价比,DS18B20能够构建经济的测温网络。因而在本次设计中,选用的是数字温度传感器DS18B20,故采用的是方案二。3.3 显示模块方案一:采用八位数码管,将单片机的数据通过数码管显示出来。该方案简单易行,但所需的元器件较多,且不容易进行操作,可读性较差,一旦设定后,很难加入其它的功能,显示格式受控制,且耗电量大。方案二:采用LCD显示屏进行显示。LCD显示屏是一种低压、微功耗的显示器件,只要2-3伏就可以工作了,工作电流仅为几微安,是其它显示器无法比拟的,同时可以显示大量信息,除数字外,还可以显示字母,曲线,比传统的LED数码显示器的画面有了质的提高。虽然LCD显示器的价格比传统的LED数码管要贵些,但它的显示效果更好,是当今显示器的主流,所以采用LCD作为显示器。采用LCD,更容易实现题目的要求,对后续的功能兼容性高,只需将软件修改即可,可操作性强,易于度数,采用RT1602两行十六字符的显示,能同时显示时间,温度。综上分析,采用第二种方案。3.4 键盘控制模块方案一:44矩阵式键盘。此方案对于本系统来说无非是浪费I/O占用MCU的资源,不利于系统的扩展,这就使系统的实用性降低,况且本系统根本不需要16个按键。方案二:独立式按键。对于独立式按键来说,如果设置过多按键,虽然会占用较多I/O口,给布线带来不便,此方案适用于按键较少的情况。在本设计中所需要的控制点数的较少,只需要几个功能键,简便、易操作、成本低就成了首要考虑的因素。所以此时,可采用独立式按键结构。3.5 语音播报模块方案一:通过A/D转换器、单片机,存储器,DA转换器实现声音信号的采样、处理、存储和实现。首先将声音信号放大,通过AD转换器采样将语音模拟信号转换成数字信号,并由单片机和处理存放到存储器中,实现录音操作。在录、放音过程中由单片机控制D/A转换器,将存储器中的数据转化成声音信号。此方案安装调试复杂,集成度低,成本也不低。方案二:采用ISD1420语音录放。ISD1420是采用模拟存取技术集成的可反复录放的20秒语音芯片,掉电语音不丢失,最大可分160段,最小每段语音长度为125ms,每段语音都可由地址线控制输出,每125ms为一个地址,由A0-A7八根地址线控制。该芯片采用多电平直接模拟量存储专利技术,每个采样值可直接存储在片内单个EEPROM单元中,因此能够非常真实、自然地再现语音、音乐、音调和效果声。此外,ISD1420还省去了A/D和D/A转换器,方便扩展更多的功能。综上所述,选择方案二,即ISD1420。4 设计原理本系统选用的模块包括:单片机系统,电源模块,LCD显示模块,语音播报模块,温度传感器模块,键盘控制模块,具体的电路图参照附录二。4.1单片机模块此次的的核心部分是单片机的控制,给以相关的命令,按照人们的意愿执行相应的操作,这次选用的是ATMEL公司生产的常用芯片AT89S52,主要是他的价格便宜,而且是我们通用性较强,容易获得。4.1.1单片机介绍CPU即中央处理器的简称,是单片机的核心部件,它完成各种运算和控制操作,CPU由运算器和控制器两部分电路组成。 a. 运算器电路 运算器电路包括ALU(算术逻辑单元)、ACC(累加器)、B寄存器、状态寄存器、暂存器1和暂存器2等部件,运算器的功能是进行算术运算和逻辑运算。 b. 控制器电路控制器电路包括程序计数器PC、PC加1寄存器、指令寄存器、指令译码器、数据指针DPTR、堆栈指针SP、缓冲器以及定时与控制电路等。控制电路完成指挥控制工作,协调单片机各部分正常工作。 c. 定时器/计数器 MCS52单片机片内有两个16位的定时/计数器,即定时器0和定时器1。它们可以用于定时控制、延时以及对外部事件的计数和检测等。 d. 存储器 MCS52系列单片机的存储器包括数据存储器和程序存储器,其主要特点是程序存储器和数据存储器的寻址空间是相互独立的,物理结构也不相同。 e. 并行I/O口 MCS52单片机共有4个8位的I/O口(P0、P1、P2和P3),每一条I/O线都能独立地用作输入或输出。P0口为三态双向口,能带8个TTL门电路,P1、P2和P3口为准双向口,负载能力为4个TTL门电路。 f. 串行I/O口 MCS521单片机具有一个采用通用异步工作方式的全双工串行通信接口,可以同时发送和接收数据。 g. 中断控制系统 8051共有5个中断源,即外中断2个,定时/计数中断2个,串行中断1个。 h. 时钟电路 MCS52芯片内部有时钟电路,但晶体振荡器和微调电容必须外接。时钟电路为单片机产生时钟脉冲序列,振荡器的频率范围为1.2MHz12MHz,典型取值为6MHz。 i.总线 以上所有组成部分都是通过总线连接起来,从而构成一个完整的单片机。系统的地址信号、数据信号和控制信号都是通过总线传送的,总线结构减少了单片机的连线和引脚,提高了集成度和可靠性。 选用单片机的结构: 1 一个8 位算术逻辑单元 2 32 个I/O 口4 组8 位端口可单独寻址 3 两个16 位定时计数器 4 全双工串行通信 5 6 个中断源两个中断优先级 6 128 字节内置RAM 7 独立的64K 字节可寻址数据和代码区 每个8051 处理周期包括12 个振荡周期每12 个振荡周期用来完成一项操作如取指令和计算指令执行时间可把时钟频率除以12 取倒数然后指令执行所须的周期数因此如果你的系统时钟是11.059MHz 除以12 后就得到了每秒执行的指令个数为921583条指令取倒数将得到每条指令所须的时间1.085ms 。AT89S52的管脚图如图4.1所示: 图4.1 AT89S52管脚图4.1.2 单片机外围电路设计 本设计选用的AT89S52是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80S52引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S52具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,AT89S52设计和配置了振荡频率,并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式。AT89S52单片机综合了微型处理器的基本功能。当AT89S52芯片接到来自温度传感器的信号时,其内部程序将根据信号的类型进行处理,并且将处理的结果送到显示模块、报警模块、语音播报模块,发送控制信号控制各模块。该模块在硬件设计方面,其外围电路提供能使之工作的晶振脉冲、复位按键,四个I/O口分别用于外围设备连接。单片机AT89S52硬件连接图如图4.2所示,其中P0接口外接上拉电阻以保证高低电平的准确性。单片机AT89S52的 I/O端口具体分配与下表4.1:图4.2单片机与外围设备硬件连接图 表4.1 AT89S52的 I/O端口具体分配AT89S52的IO端口外接点P0.0-P0.7LCD显示地址端口P1.0-P1.7语音芯片播音地址端口P2.0DS18b20通道P2.1-P2.4连接键盘控制端口P2.6连接报警器端口P3.3开始播音口P3.6LCD读/写选择端P3.7LCD数据/命令端P2.7LCD使能端4.1.3 AT89S52复位电路系统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下即单片机的片内电路初始化,使单片机从一种确定的初态开始运行。AT89S52的复位是由外部的复位电路来实现的。复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,复位电路通常采用上电自动复位和按钮复位两种方式。手动复位:手动复位需要人为在复位输入端加高电平让系统复位。一般采用的方法是在RST端和正电源VCC之间接一个按键,当按下按键后,VCC和RST端接通,RST引脚处有高电平,而且按键动作一般是数十毫秒、大于两个机器周期的时间,能够安全的让系统复位。上电复位:上电复位电路是种简单的复位电路,只要在RST复位引脚接一个电容到VCC,接一个电阻到地就可以了。上电复位是指在给系统上电时,复位电路通过电容加到RST复位引脚一个短暂的高电平信号,这个复位信号随着VCC对电容的充电过程而回落,所以RST引脚复位的高电平维持时间取决于电容的充电时间。为了保证系统安全可靠的复位,RST引脚的高电平信号必须维持足够长的时间。在本设计中复位电路的设计是采用简单,用得比较广的复位电路接法,如图4.3所示,它具有上电复位和按键复位的双重复位功能。图4.3 复位电路4.1.4 AT89S52时钟电路时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式。本文用的是内部时钟方式。电路图4.4所示:图4.4 时钟电路图AT89S52单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反向放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器。4.2 电源模块鉴于系统使用的单片机AT89S52和各芯片工作电压在5V左右。我们选择了5V稳压电源给单片机和各芯片供电。电路由简单实用的三端稳压器构成,输入电压5V,满足大部分电路的要求,电源电路图如下图4.5所示,由于使用了全桥,电压输入既可以使用交流输入,又可以使用正负直流输入,能够防止由于极性接反造成的事故。滤波电容使用电解电容与小电容并联的方式,能够有效消除高频自激现象。发光二极管接到电源与地之间,如果电源输出不正常,发光二极管都会出现工作异常,提示电源部分故障。图4.5 电源电路图4.3温度传感器模块本模块主要作用是进行温度采集,然后经采集的数据送入AT89S52里进行分析处理。在本次设计中采用了DS18B20作为数据采集器,它的精度最少可以精确到0.0625,完全可以用来进行环境温度的测量。DS18B20是美国DALLAS 公司生产的单总线数字温度传感器,可把温度信号直接转换成串行数字信号供微处理器处理,而且可以在一条总线上挂接任意多个DS18B20芯片,构成多点温度检测系统无需任何外加硬件。DS18B20 数字温度传感器可提供912 位温度读数,读取或写入DS18B20 的信息仅需一根总线,总线本身可以向所有挂接的DS18B20 芯片提供电源,而不需额外的电源。由DS18B20 这一特点,非常适合于多点温度检测系统,硬件结构简单,方便联网,在仓储管理、工农业生产制造、气象观测、科学研究以及日常生活中被广泛应用。4.3.1 DS18B20的测温原理DS18B20 内有一个能直接转化为数字量的温度传感器,其分辨率9,10 ,11 ,12bit 并且可编程,通过设置内部配置寄存器来选择温度的转换精度,出厂时默认设置12bit。温度的转换精度有0.5、0.25、0.125、0.0625。温度转换后以16bit 格式存入便笺式RAM,可以用读便笺式RAM命令(BEH) 通过1 - Wire 接口读取温度信息,数据传输时低位在前,高位在后。内部温度数据格式如图4.6所示。温度/数字对应关系如表4.2所示(分辨率为12bit时)。由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。 表4.2 温度和数据对应表温度二进制数据十六进制数据+125C0000 0111 1101 000007D0h+85C*0000 0101 0101 00000550h+25.0625C0000 0001 1001 00010191h+10.125C0000 0000 1010 001000A2h+0.5C0000 0000 0000 10000008h0C0000 0000 0000 00000000h-0.5C1111 1111 1111 1000FFF8h-10.125C1111 1111 0101 1110FF5Eh-25.0625C1111 1110 0110 1111FE6Fh-55C1111 1100 1001 0000FC90h图4.6 DS1820B内部温度数据格式4.3.2 DS18B20与AT89S52的接口电路设计DS18B20可以从单总线上得到能量并储存在内部电容中,该能量是当信号线处于低电平期间消耗,在信号线为高电平时能量得到补充,这种供电方式称为寄生电源供电。DS18B20也可以由35.5V的外部电源供电。所以在硬件上,DS18B20与单片机的连接有两种方法,一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。无论是内部寄生电源还是外部供电,I/O口线要接5K左右的上拉电阻.我们采用的是第一种连接方法, 如图4.7所示:把DS18B20数据线与AT89S52的P2.0,再加上上拉电阻。图4.7 DS18B20与AT89S52的接口电路4.4键盘控制模块按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。本系统中用到四个功能控制按键,用P2的4个I/O口接4个独立式按键即可满足需要,软件消除抖动,当发现有键按下时,延时10-20ms再查询是否有键按下,若没有键按下,说明上次查询结果为干扰或抖动;若没有键按下,说明上次查询结果为干扰或抖动;若仍有键按下,则说明闭合键已稳定。准确判断去执行相应的程序。电路图如图4.8所示。图4.8 键盘控制电路4.5报警模块报警模块的工作原理是当温度传感器检测到的温度高于温度的上限或低于温度的下限设定值时单片机的P2.6发出高电平信号促使PNP三极管导通点亮发光二极管,蜂鸣器也发出响声,产生声光报警。电路图如图4.9所示。图4.9 报警电路4.6液晶显示模块该模块是由RT1602液晶显示器件组成, 第3脚: VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。由上可知1602基本操作时序如表4。其第1516脚:背光电源脚。RT1602与单片机的应用连接电路图如图4.10所示。表4.3 LCD1602基本操作时序基本时序操作输入输出读状态RS=L,R/W=H,E=HDOD7=状态读数据RS=H,R/W=H,E=H无写指令RS=L,R/W=L,E=高脉冲,DOD7=指令码DOD7=数据读指令RS=H,R/W=L,E=高脉冲,DOD7=数据无 图4.10 液晶显示模块接口电路4.7语音播报模块本模块采用的核心语音芯片ISD1402语音芯片是美国ISD(Information Storage Device)公司的产品。它包括时钟振荡器、128K可编程电擦除只读存储器(EEPROM)、低噪前置放大器、自动增益控制电路、抗干扰滤波器、差分功率放大器等电路。ISD1400系列语音芯片采用直接存储模拟信号,自动待机省电,可编程电擦除只读存储和总线技术。ISD1400是一种具有高保真、录音数据永久保存、省电、适用于同单片机接口特点的新一代语音芯片。ISD1420是ISD1400系列中录音时长为20s语音芯片。ISD1420是采用模拟存取技术集成的可反复录放的20秒语音芯片,掉电语音不丢失,最大可分160段,最小每段语音长度为125ms,每段语音都可由地址线控制输出,每125ms为一个地址,由A0-A7八根地址线控制。4.7.1 ISD1420语音芯片录放音电路设计分段录音时,ISD1420的A0-A7用作地址输入线,A6、A7不可同时为高电平,所以地址范围为00H-9FH,即为十进制码0-159 共160个数值。这表明ISD1420的EEPROM模拟存储器最多可被划分为160个存储单元,也就是说ISD1420最多可存储160个语音段,语音段的最小时间长度为0.125S。不同分段的选择是通过对A0-A7端接不同的高低电平来实现。ISD1420分段录音可以通过硬件(开关)来实现也可以通过软件编程来实现。图4.11为硬件实现录音和放音的电路图。图4.11 语音芯片录音和放音电路其中ISD1420各引脚说明如下:A0-A7地址输入端,当A6和A7不全为高电平时,A0-A7为分段录音信息地址线,不同的地址对应不同的录音片断。MIC话筒输入端,话筒输入信号通过电容交流耦合至此引脚并传给片上预放大器,耦合电容C7的值和该端内阻R7(10K)决定语音信号通频带下限频率。 MICREF话筒参考输人端,MICREF是预放大器的反相输入端,配合外电路可使片上预放大器具有较高的噪声抑制比和共模抑制比。ANA IN模拟信号输人端,对于话筒输入,ANA IN 引脚应通过外部电容C4与ANA OUT引脚连接,耦合电容C4决定片上控制预放大器通频带的下限频率。ANA OUT预放大器的输出端,预放大器的电压增益取决于AGC电平,对于小信号输入电平,其增益最大为24dB,对于强信号,增益较低。AGC自动增益控制端,AGC 动态地调整预放大器增益,使加至MIC输入端的非失真信号的范围扩展。内阻抗(5欧)和外部电容决定AGC的响应时间,外部电容和外部电阻的RC时间常数决定AGC的释放时间。SP+、SP- 喇叭输出端,该端可直接驱动16欧的喇叭。XCLK外接时钟输入端,ISD1420具有内部时钟,一旦接人外部时钟,内部时钟会自动失去作用。改电路不用外部时钟该引脚接地,一般不推荐使用外部时钟,除非要求时钟信号特别精确。RECLED工作状态指示端,在录音或放音时该端输出低电平,可驱动一个LED来指示状态。在录音过程中指示灯一直亮着,在放音结束时,指示灯闪烁一下。PLAYE边沿触发放音控制端,该端输人一低脉冲,芯片即进入放音状态,直至遇到信息结束标记(EOM)或到存储空间的末尾时回放过程结束,电路自动进入准备状态。回放过程中PLAYE变化不会影响回放过程。PLAYL电平触发放音控制端,该端电平变为低电平并保持,芯片进入放音状态,放音过程持续到该端电平由低变高或遇到信息结束标记(EOM),结束后电路进入准备状态。REC录音触发端,REC 一旦变为低电平,芯片就进入录音状态,REC的权限优先于PLAYE和PLAYL,在放音期间若遇REC 接低电平时,放音就会立即停止并转入录音状态开始录音。录音期间REC 应始终保持低电平,REC变高或存储空间变满时录音过程结束,这时在录音截止的地方会记录一个信息结束标记(EOM)。VCCD、VCCA数字电源正端和模拟电源正端。VSSD、VSSA数字地和模拟地。电路实现录音功能说明如下,S1、S2、S3分别是控制录音和放音按键,当按下S1时开始录音,S2、S3为两种方式的放音按键,当按一下S2时开始放音,是下降沿触发的,而S3为电平控制的,必须一直按着此键直至放音结束。LED和限流电阻组成录放音指示电路,当录音结束、录音超出时限(存储器溢出)或放音结束时,ISD1420的25脚呈高电平,LED熄灭。对ISD1420进行分段录音之前要先列出语音信息与分段地址的对照表,如表4.4所示。然后检查电路连接、接线和电源情况。并通过对照表来设置8个开关选择要录音的地址,最后按下录音键直至录音结束,松开录音键,重复此操作就可以将自己需要录入的内容全部录入到芯片中。另外,A0和A1都需要接地,因为我们要确保分段间隔不小于0.5S,所以至少要四段,否则录音的信息可能会重叠,导致放音时达不到自己的要求。用户录制的语音每一段结束后芯片自动设有段结束标志(EOM),芯片录满后设有溢出标志(OVF)。表4.4 分段语音信息与地址对照表语 音 信 息分段地址A7A6A5A4A3A2A1A0100H 0 0 0 0 0 0 0 0208H 0 0 0 0 1 0 0 0310H0 0 0 1 0 0 00418H0 0 0 1 10 00520H0 0 1 0 0 0 00628H0 0 1 0 1 0 00730H0 01 1 0 0 00838H0 01 1 1 0 00940H0 1 0 00 0 0 0十48H0 1 0 0 1 0 00摄氏度50H0 1 0 1 0 0 0 0现在温度是58H1 0 0 1 1 0 0 04.7.2 ISD1420与AT89S52接口电路设计ISD1420录音和放音电路可以通过硬件开关控制。本设计录音是用硬件控制,但是播报温度放音是通过AT89S52来控制的。单片机某一段的起始地址进行放音操作,遇到段结束标志(EOM)即自动停止放音,单片机收到段结束标志(EOM)就开始触发下一段语音的起始地址,如此控制,即可以将很多、不同段的语音组合在一起成一句话放音出来,实现语音的自动组合。ISD1420与AT89S52的接口连接入下:AT89S52的P1端口连接地址线ISD1420的A0-A7,ISD1420放音电路通过AT89S52的P3.3口控制PLAYER放音。具体连接图见图4.11。5 软件部分5.1 开发工具介绍 单片的使用除了硬件,同样也要软件的使用,我们写汇编程序编程CPU可执行的机器码有两种方法,一种是手工汇编,一种是机器汇编。机器汇编通过汇编软件变为机器码,用于MSC-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从使用普通汇编语言到高级语言的不断发展,Keil是目前最流行开发MCS-51系列单片机的软件。Keil c51汇编,PLM语言和C语言的程序设计,界面友好。Keil是美国keil software公司出品的52系列兼容单片机c语言开发系统。用过汇编语言后再使用C语言来开发,体会更加深刻。 Keil C51软件提供丰富的库,与汇编相比,C语言在功能上,结构上,可读性,可维护性上有明显的优势,因而易学易用函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生产的汇编代码,就能体会到KeilC51DE 生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解,在开发大型软件时更能体现高级语言的优势。5.2系统的主程序设计主程序是在程序运行的过程中必须先经过初始化,包括键盘程序,测量程序,以及各个控制端口的初始化工作。系统在初始化完成后就进入读取温度测量程序,实时的测量当前的温度,得到温度后判断温度是否超过温度设置的上下限。超出(低于)温度上下限,调用报警子程序。再显示电路在LCD上显示。系统软件设计的总体流程图5.1所示开机初始化判断温度在设定范围显示温度子程序报警子程序显示时间子程序测量温度子程序判断显示模式子程序显示温度上下限子程序键盘扫描子程序图5.1 主程序流程图5.2.1键盘扫描子程序对于系统来说,键输入程序是整个键盘控制应用系统的核心。当所设的功能键按下时,本系统应完成该键所设的功能。本系统具体实现功能如下表5.1。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。为了保证CPU对键一次闭合,仅作一次键输入处理,必须去抖动影响。本设计采用软件去抖的办法是在检测到有按键按下时,执行一个510ms的延迟程序后在确认该键电平是否仍保持闭合状态电平,如保持闭合状态电平则确认为真正键按下的状态,从而消除了抖动影响。键盘子程序流程图如下5.2所示(延时子程序未在流程图中画出)。表5.1 按键功能表按键实现功能SW5按下一次进入时间秒设置模式SW5按下二次进入时间分设置模式SW5按下三次进入时间时设置模式SW5按下四次进入温度上限设置模式SW5按第五次进入温度下限设置模式SW5按下第六次退出设置模式SW6按下一次在设置模式下对应数值加一SW7按下一次在设置模式下对应数值减一SW8按下一次播报当时温度值键盘开始扫描ct=0;P1=ct; SW5 按下SW6按下SW7按下SW8按下ct+;if(ct5)ct=0;if(ct=4|ct=5)显示温度上下限子程序;else显示时间子程序If(ct=0)无效;If(ct=1)秒加1;If(ct=2)分加1;If(ct=3) 时加1If(ct=4)上限加1If(ct=5)下限加1语音播报子程序If(ct=0)无效;If(ct=1)秒减1;If(ct=2)分减1;If(ct=3) 时减1If(ct=4)上限加减If(ct=5)下限减1图5.2 键盘子程序流程图5.2.2测量温度子程序设计由在整个语音温度计的设计中是以正确采集温度为前提的,因为如果温度采集就不正确,那么即使后续电路如显示和报温电路均正确,最后的结果仍然不能达到我们所要的目标,也就是不能正确的对环境温度进行显示和报温,所以关于DS18B20的温度采集是非常重要的。DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。其测温子程序流程图如5.3所示。部分控制DS18B20指令功能如表5.2所示:初始化写跳过ROM指令写启动温度转换指令延时初始化写跳过ROM指令写读温度转换指令读取温度图5.3 测温度子程序流程图表5.2 控制DS18B20指令表指 令 指令代码 操 作 说 明 跳过ROMCCH忽略64位ROM编码温度转换 44H启动DS18B20进行温度转换 读暂存器 BEH读暂存器9个字节内容 写暂存器 4EH将数据写入暂存器的TH、TL字节 复制暂存器 48H把暂存器的TH、TL字节写到E2RAM中 重新调E2RAMB8H把E2RAM中的TH、TL字节写到暂存器TH、TL中 读电源供电方式 B4H启动DS18B20发送电源供电方式的信号给主CPU5.2.3报警子程序初始默认上下限报警值,或键盘设定报警值,取量实时测温度值与温度上下限值比较,超过报警范围,导通三极管,触发蜂鸣器与指示灯报警,当实时温度恢复到报警范围内温度时,自动停止报警。流程图如图5.4所示 不报警小于0小于0大于0小于0大于0大于0读取温度值温度值减上限值温度值减下限值报警图5.4 报警子程序流程图5.2.4实现时钟功能的程序设计本系统的时钟直接用单片机的定时器编程以实现时钟,节省硬件。TMOD=0x01定时器T0初始化方式1。定时时间=(65536-T0初值)*时钟周期*12。本设计中定时时间50ms,时钟周期为12M,顾TH0=0x3c;TL0=0xb0时钟实现流程图如图15.5所示:定时器T0初始化(方式1)判断mstt=20 判断Seconde=60Seconde +Mstt+Hour+判断Hour =24Hour=0图5.5 时钟功能实现流程图5.2.5显示程序设计本设计使用的LCD1602基本操作时序如下表4.2。清楚基本操作时序就可以完成写指令和写数据到LCD中的子函数设计。在子函数中为了使液晶显示更加稳定,可以最简短的延时。显示模式包括当前温度显示,时间显示模式,温度上下限,他们实现都是先初始化调用显示字符串子程序后再调用显示指定位置字符子程序,具体看显示当前温度子程序流程图如图5.6所示:当前检测温度数据移入显示寄存器LCD初始化显示字符temp: . oC-显示当前温度图5.6 显示当前温度子程序流程图 5.2.6语音播放子程序单片机语根据语音信息与分段地址的对照表和当前温度组合出播报当前的温度语音数据地址,再通过P3.3控制语音芯片放音,把处理的数据地址通过P1端口写给语音芯片,程序流程如图5.7所示:播报“现在温度是”,播报温度值的个位温度值10播报“度”个位为零播报温度值的十位播报“十”播报温度值个位播报“度”个位不为零播报温度值的十位播报“十”播报“度”图5.7 语音播放子程序6 仿真结果数据分析6.1功能仿真和结果各项功能仿真方法及仿真结果如下表6.1表6.1 各项功能仿真方法及结果类别仿真项目仿真方法仿真结果基本部分(1)正常开机有嘟声开机实现 仿真实现(2)测量范围开机显示,调整DS18B20的温度是否都可以显示仿真实现(3)显示时间和温度开机显示仿真实现(4)调整时间、日期,设定最低、最高温度按SW5进入时间、最低、最高温度调整功能,SW6加1,SW7减1,最后按SW5确认温度设定结束 仿真实现(5)报警功能调整DS18B20温度分别超过上限与下限,启动蜂鸣器与指示灯仿真实现(6)语音播放功能观察连接语音芯片P1和高低电平的变化仿真实现7 结束语本文设计的语音温度计,即可用于人民生活中的日常用品,还可以单独作为系统为了保证某特定环境温度维持在设定的范围内,以保证工作系统在稳定的状态下工作。本文设计的语音温度计成本很低,如果采用大批量生产的话,生产成本会更低,可以带来一定的经济效益。经过这段时间的方案论证、系统的硬件和软件的设计、系统的仿真和调试。查阅了大量的关于传感器、单片机及其接口电路、以及控制方面的理论。经过了一番特殊的体验后,靠用所学的专业知识来解决问题。检查了自己的知识水平,使我对自己有一个全新的认识。通过这次,不仅锻炼自己分析问题、处理问题的能力,还提高了自己的动手能力。这些培养和锻炼对于我们这些即将走向工作岗位的大学生来说,是很重要的。这次基本的完成了任务书的要求,实现了温度的控制和语音播报。通过仿真表明系统的设计是正确的,可行的。但是由于设计者的设计经验和知识水平有限,本文设计的语音温度计还存在许多不足和缺陷。附录一:电路图附录二:源程序/*语音温度计*/*以下源代码是主程序部分main.c*/#include #include LCD1602.h#include clock.h#include key.h#include DS18B20.h#include temp.h#include BEEP.h#include ISD1420.h#include speakTEMP.hvoid delayMs(unsigned int ms) /延时K*1ms,12.000mhz unsigned char j;while(ms-)for(j=0; j top_temp | temp (char)bottom_temp) beep();displayTemp(); /显示温度子函数if(DisplayTimeFlag) /判断显示模式displayClock(); /显示时间子函数elsedisplayTempLim(); /显示温度上下限子函数delayMs(10);/*以下源代码是显示子程序 LCD1602.h 部分*/#ifndef_LCD1602_H_#define _LCD1602_H_#include #include #define BUSY 0x80 /lcd忙检测标志#define DATAPORT P0sbit LCM_RS=P37;/数据/命令端sbit LCM_RW=P36;/读/写选择端sbit LCM_EN=P27; /LCD使能信号void delay_LCM(unsigned int); /LCD延时子程序延时msvoid initLCM(void); /LCD初始化子程序void lcd_wait(void); /LCD检测忙子程序void WritemandLCM(unsigned char WCLCM,unsigned char BusyC); /写指令到ICM子函数void WriteDataLCM(unsigned char WDLCM); /写数据到LCM子函数void DisplayOneChar(unsigned char X,unsigned char Y,unsi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年河北省邯郸市扬帆初中学校八年级中考二模生物试题(无答案)
- 《劳动合同》模板
- 《办公室工位租赁合同》模板
- 计算机组成原理 课件 4 指令系统
- 巡视巡察培训课件
- 巡察工作培训课件
- 岩石课件科学
- 岩土检测员岗位培训课件
- 输液错误不良事件课件
- 输液泵注射泵课件
- 法律职业资格考试客观题(试卷一)试题与参考答案(2025年)
- 狂犬疫苗使用培训课件
- 2025新疆伊犁州伊宁市中小学招聘各学科编外教师备考考试题库附答案解析
- 2023-2025年高考化学试题分类汇编:有机化合物(原卷版)
- 【2025年】郴州社区专职工作人员招聘考试笔试试卷【附答案】
- 2025发展对象考试题库附含答案
- 2025-2026学年第一学期学校教导处工作计划:扎根常规提质效稳中求进促提升
- 主体结构劳务分包工程(八标段)施工组织设计
- 营养与慢性伤口愈合的关系
- (正式版)JBT 9229-2024 剪叉式升降工作平台
- 车辆赠与协议模板
评论
0/150
提交评论