资源描述
武汉理工大学毕业设计(论文)武汉理工大学毕业设计(论文)基于AT89S52单片机的公交车语音报站系统设计 学院(系): 专业班级: 学生姓名: 指导教师: 本科生毕业设计(论文)任务书学生姓名: 专业班级: 指导教师: 工作单位: 设计(论文)题目: 基于单片机的公交语音报站系统设计 设计(论文)主要内容: 设计应用单片机作为主控制单元,利用语音芯片预设达到公交车到站电子语音报站功能。要求设计达到准确报站,并有误报人工纠错功能,同时具有简单的可操作性及人工预设兼容扩展性要求完成的主要任务:1、查阅不少于15篇的相关资料,其中英文文献不少于2篇,完成开题报告。2、完成语音报站器主控控制模块、语音模块、显示模块等软硬件部分设计,使 单片机与PC机能进行通信,完成人机交互界面设计。3、完成不少于5000字的英文文献翻译。4、撰写完成不少于12000字的毕业设计论文(设计说明书、1张图纸)。必读参考资料:1单片机基础(第三版) 编著:李广弟、朱月秀2单片机典型外围器件及应用实例 编著:求是科技3Digital system design : use of microcontroller 编著:Dawoud, Shenouda Dawoud 指导教师签名: 系主任签名: 院长签名(章):目 录摘 要IAbstractII1 绪论11.1 课题研究的背景及意义11.2 公交报站器的动态发展趋势11.3 设计的主要目标任务22.1 基本原理32.2 基本系统框图32.3 系统主要电路简介33 硬件电路的设计53.1 主控电路的设计53.1.1 关于AT89C51单片机53.1.2 振荡器电路的设计83.1.3 复位电路的设计103.1.4 单片机最小系统123.2 语音模块电路设计133.2.1 ISD4004芯片内部结构133.2.2 芯片引脚描述143.2.3 ISD4004芯片使用说明163.2.4 ISD4004与外围设备的连接193.3 显示电路模块设计193.3.1 液晶模组内部结构组成213.3.2 引脚功能213.3.3 液晶模组与单片机的连接223.4 键盘接口电路设计223.4.1 按键的确认233.4.2 重键与连击的处理233.4.3 按键防抖动技术233.5 供电电路设计264 软件设计274.1 主程序流程图274.2 语音提示应用实现284.1.1 放音程序284.1.2 录音程序294.2 文字显示应用实现304.3 键盘接口应用实现315 总结32参考文献33附录一 总电路图34附录二 语音提示参考程序35附录三 文字显示参考程序39致谢44摘 要 公共汽车行驶在现代文明程度高的市区,它是一道流动的风景线,因而对整车外形乃至色彩都有更高的要求。作为公交汽车还要有醒目和减少乘务人员强度的电子报站器,电子显示路牌,无人售票装置,前后电视监视系统等新技术的采用也将越来越普及。本文提出了一种用单片机控制语音芯片进行公交车语音自动报站的方法。整个系统硬件设计包括键盘电路、复位电路、显示驱动电路、显示电路、内存扩展电路模块。利用AT89C51作为控制器,通过ISD4004语音芯片建立语音信息库,形成变化多样的语音信息,利用其功放播放语音信息以及提示语音,同时运用LCD数码管进行站数显示。当公交车到达某站点,用键盘控制本系统工作,通过语音电路输出语音信息和提示,同时站数信息在数码管上显示。 本系统很大程度上提高公交车报站的准确性,可靠性。提高了公交系统的服务质量。促进城市经济发展和交通变化的和谐发展。关键词:AT89S51单片机,ISD4004语音芯片,LCD数码管,语音报站1Abstract Bus driving in urban areas with a high degree of modern civilization, it is a mobile landscape, shape and even the color of the vehicle and thus have higher requirements. As public transport vehicles but also eye-catching and reducing the intensity of the newsletter crew stations, electronic display signs, unmanned devices, such as video surveillance system before and after the adoption of new technologies will also be increasingly popular. This paper presents a single-chip voice control voice chip bus automatic station approach. The entire system hardware design, including keyboard circuit, reset circuit, display driver circuit, display circuit, memory expansion circuit modules. Use AT89C51 as the controller, through establishing a voice ISD4004 voice chip repository, forming diverse voice messages, playing voice messages using its power amplifier and voice prompts, while the use of LCD digital tube station number display. When the bus arrived a site, use the keyboard to control the system work through the voice circuit output voice information and tips, and information on the number of stations on the digital display. This system greatly improved bus stations accuracy, reliability. Improve the quality of service the public transportation system. Promoting urban economic development and the harmonious development of traffic changes.Key Words:AT89S51 microcontroller; ISD4004 voice chip; LCD digital control;voice stations11 绪论随着科学技术的日益发展和进步, 无人售票公交车在街头多起来了,语音报站器也被广泛使用,这在相当大的程度上免除了乘务人员沿途报站的麻烦,给许多不熟悉公交线路的乘客带来了方便。1.1 课题研究的背景及意义公共汽车为外出的人们提供了方便快捷的服务,而公共汽车的报站直接影响服务的质量。传统由乘务人员人工报站,该方式因其果太差和工作强度太大,在很多大城市已经被淘汰。近年来,随着科学技术的日益发展和进步,微型计算机技术已经在许多领域得到了广泛的应用。在声学领域,微机技术与各种语音芯片相结合,即可完成语音的合成技术,使得汽车报站器的实现成为可能,从而为市民提供了更加人性化的服务。鉴于传统公交车人工报站的不足之处,结合公交车辆的使用特点及实际营运环境,设计了一种由单片机控制的公交车语音报站系统1。1.2 公交报站器的动态发展趋势 目前,公交车自动报站主要有以下几种方式:一种是通过全球定位系统(GPS)的用户终端接收工作卫星的导航信息,从而解算出车辆的经纬度信息,进而计算出实时坐标,将其与站点坐标相比较,当车辆驶入站点一定距离范围内时,不用人工干预,系统自动报站;另一种是利用无线射频识别(Radio Frequency Identification)技术,在每一个公交站台设置一个具有唯一ID的射频发射器,采用间歇工作方式发射信号,当公交车即将到达车站时,车载系统接收到站信号并解码出站台的ID号,由单片机控制自动播放对应站台编号的报站语音;还有一种是对车轮轴的转角脉冲进行计数,将计数值和预置值对比,即可确定报站时刻,达到准确报站的目的2。 然而,这三种方式都不太适合乡镇的发展现状。第一种设备造价过高,定位精度也难以达到要求;第二种站台建设投入较大,站点一旦变更,射频发射装置即须移动,较为麻烦;第三种需要公交线路严格固定,稍有改变,报站就难以准确。为此,本文试图设计一种既方便易行又经济实惠的公交车自动报站系统。 本设计采用人工按键的操作方式,实现公交车对站名的语音提示和文字显示功能。当公交车到达某一站时,司机或乘务人员只需按动按键,就可以使单片机控制语音模块对站名进行语音提示,并控制显示模组在液晶屏上显示站数和站名。系统由一片八位单片机,一个语音模块,一个液晶模组,一块稳压芯片,若干电阻电容和与非门等组成。经过本课题的研究,我们得到了一种公交车自动报站的低成本解决方案。1.3 设计的主要目标任务 本课题要求设计一公交车语音报站系统,以实现公交车的语音报站,即在进站、出站时候司机按下按键自动播报语音提示信息及服务用语,同时利用LCD显示电路进行汉字显示。同时系统需具有可操作性和兼容系,即在使用过程中,对不同的公交线路能够很方便的进行设定。在使用过程中,若出现错报漏报或者是超前报站情况,司机能够通过按键进行更改,从而达到正确报站。 本设计要求利用AT89C51作为主控芯片完成主控电路的设计,辅助电路要求包括语音电路、显示电路、电源电路、按键模块电路等。2 方案设计2.1 基本原理本系统使用八位单片机作为控制器件。当系统进行语音再生时,单片机控制语音合成电路中的语音芯片来读取其外接的存储器内部的语音信息,并合成语音信号,再通过语音输出电路,进行语音报站和提示。同时,单片机通过程序读取文字信息,送入液晶显示模组来进行站数和站名的显示。当汽车到达某站时,司机或乘务人员通过键盘来控制系统进行工作。而且,系统具有根据公交车的行驶方向确定报站顺序的功能(司机或乘务人员可以通过按键来控制)。当系统进行语音录制时,语音信号通过语音录入电路送给语音合成电路中的语音芯片,由语音芯片进行数据处理,并将生成的数字语音信息存储到语音存储芯片中,从而建立语音库3。2.2 基本系统框图 单片机晶振语音提示模块复位文字显示模块电源存储器键盘接口模块图2.1 系统组成结构2.3 系统主要电路简介 微控制器选择目前市场上常用的Intel生产的AT89C51单片机作为主控芯片,同时, AT89C51系统还需要外接晶振和复位电路。语音提示模块选用ISD4004系列语音芯片,外接话筒和音箱组成语音录制和播放电路。其中,音箱由音频功率放大器LM386驱动。文字显示模组采用12864液晶屏作为显示单元,其驱动芯片为带有中文字库的ST7920控制器系列。模组使用ST7920作为控制器和行驱动器,同时使用ST7921作为列驱动器。与单片机的连接,我们采用并行间接访问方式。话筒音频功率放大器语音芯片电源单片机音箱录音放音驱动控制图2.2 语音提示模块组成结构键盘接口电路采用独立按键设计,通过触发器来消除按键抖动。电源采用LM2576作为稳压器件,将公交车上的+24V直流电压转变为+5V直流电压。LM2576是NS生产的3A电流输出降压开关型稳压集成芯片,能够较好地解决LM7805因输入电压过高而发热量较大的问题。3 硬件电路的设计 公交车语音报站系统主要由四个部分组成,即主控电路、按键模块、语音电路、汉字显示电路。各部分电路的设计在本章中做了详细的说明。3.1 主控电路的设计3.1.1 关于AT89C51单片机AT89C51单片机的结构框图如图3.1所示。它主要由下面几个部分组成:1个8位中央处理单元(CPU)、片内Flash存储器、片内RAM、4个8位的双向可寻址I/O口、1个全双工UART(通用异步接收发送器)的串行接口、2个16位的定时器/计数器、多个优先级的嵌套中断结构,以及一个片内振荡器和时钟电路。在AT89C单片机结构中,最显著的特点是内部含有Flash存储器,而在其他方面的结构,则和Inter公司的8051的结构没有太大的区别。外部中断ETC定时器1定时器0片内Flash存储器计数器输入片内RAM中断控制CPU串行端口4I/O端口总线控制振荡器P0 P1 P2 P3RXDTXD图3.1 AT89C单片机的结构框图1) AT89C51芯片主要性能a.与MCS-510b.4K字节可编程闪烁存储器, 寿命:1000次写/擦循环数据保留时间:10年c.全静态工作:0Hz-24Hzd.三级程序存储器锁定e.128*8位内部RAMf.32可编程I/O线g.两个16位定时器/计数器h.6个中断源 i.可编程串行通道j.片内振荡器和时钟电路 另外,AT89C51是用静态逻辑来设计的,其工作频率可下降到0Hz,并提供两种可用软件来选择的省电方式空闲方式(Idle Mode)和掉电方式(Power Down Mode)。在空闲方式中,CPU停止工作,而RAM、定时器/计数器、串行口和中断系统都继续工作。在掉电方式中,片内振荡器停止工作,由于时钟被“冻结”,使一切功能都暂停,故只保存片内RAM中的内容,直到下一个硬件复位为止4。2)引脚功能说明 AT89C51引脚图及实物图如图3.2所示:图3.2 AT89C51单片机实物图级引脚排列图VCC:供电电压。VSS:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8个TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出3.1.2 振荡器电路的设计 89系列单片机的内部振荡器电路如图3.3所示,由一个单级反相器组成。XTAL1为反相器的输入,XTAL2为反相器的输出。可以利用它内部的振荡器产生时钟,只要在XTAL1和XTAL2引脚上外接一个晶体及电容组成的并联谐振电路,便构成一个完整的振荡信号发生器,如图3.5示,此方法称为内部方式。 另一种使用方法如图3.4示,由外部时钟源提供一个时钟信号到XTAL1端输入,而XTAL2端浮空。在组成一个单片机应用系统时,多数采用图3.5所示的方法,这种方式的结构紧凑,成本低廉,可靠性高。振荡器的等效电路如图3.5上部所示。在图中给出了外接元件,即外接晶体及电容C1,C2,并组成并联谐振电路。在电路中,对电容C1和C2的值要求不是很严格,如果用高质的晶振,则不管频率为多少,C1,C2通常都选择30pF。有时,在某些应用场合,为了降低成本,晶体振荡器可用陶瓷振荡器代替。如果使用陶瓷振荡器,则电容C1,C2的值取47pF。XTAL2XTAL1内部定时/PD400D1D2Q1RfQ2VCCQ3Q4图3.3 AT89C51单片机内部振荡器电路XTAL2XTAL1GNDNCCMOS门外部振荡信号图3.4 外部时钟接法XTAL1XTAL289系列单片机GND内部定时VCC/PDRf石英晶体或陶瓷振荡器C1C2图3.5 片内振荡器等效电路通常,在单片机中对所使用的振荡晶体的参数要求如下:ESR(等效串联电阻):根据所需频率按图3.6选取。C0(并联电容):最大7.0pF。CL(负载电容):30pF+3pF。通常,其误差及温度变化的范围要按系统的要求来确定。在本设计中,采用的是内部方式,即如图3.5所示,在XTAL1和XTAL2引脚上外接一个12MHZ的晶振及两个47pF的电容组成6。6005004003002001000 4 8 12 16图3.6 ESR与频率的关系曲线3.1.3 复位电路的设计89系列单片机与其他微处理器一样,在启动的时候都需要复位,使CPU及系统各部件处于确定的初始状态,并从初始状态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如RST引脚上有一个高电平并维持2个机器周期(24个振荡周期),则CPU就可以响应并将系统复位。复位时序如图37所示,因外部的复位信号是与内部时钟异步的,所以在每个机器周期的S5P2都对RST引脚上的状态采样。当在RST端采样到“1”信号且该信号维持19个振荡周期以后,将ALE和/PSEN接成高电平 ,使器件复位。在RST端电压变低后,经过1-2个机器周期后退出复位状态,重新启动时钟,并恢复ALE和/PSEN的状态。如果在系统复位期间将ALE和/PSEN引脚拉成低电平,则会引起芯片进入不定状态。| S5 | S6 | S1 | S2 | S3 | S4 | S5 | S6 | S1 | S2 | S3 | S4 | S5 | S6 | S1 | S2 | S3 |RST:INST ADDR INST ADDR INST ADDR INST ADDR INST ADDR INSTALE:/PSEN:P0:11振荡周期19振荡周期图3.7 内部复位定时时序1) 手动复位手动复位需要人为在复位输入端RST上加入高电平。一般采用的办法是在RST端和正电源VCC之间接一个按钮。当人为按下按钮时,则VCC的+5V电平就会直接加到RST端。由于人的动作很快也会使按钮保持接通达数十毫秒,所以,保证能满足复位的时间要求。手动复位的电路如图3.8所示。Vcc AT89C51RST GND8.2k10uF+Vcc图3.8 手动复位电路2) 上电复位 AT89C51的上电复位电路如图3.9所示,只要在RST复位输入引脚上接一电容至VCC端,下接一个电阻到地即可。对于CMOS型单片机,由于在RST端内部有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至1uF。上电复位的过程是在加电时,复位电路通过电容加给RST端一个短暂的高电平信号,此高电平信号随着Vcc对电容的充电过程而逐渐回落,即RST端的高电平信号必须维持足够长的时间。 上电时,Vcc的上升时间约为10ms,而振荡器的起振时间取决于振荡频率,如晶振频率为10MHz,起振时间为1ms;晶振频率为1MHz,起振时间则为10ms。在图3.8的复位电路中,当Vcc掉电时,必然会使RST端电压迅速下降到0V以下,但是,由于内部电路的限制作用,这个负电压将不会对器件产生损害。另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“1”态。如果系统在上电时得不到有效的复位,则在程序计数器PC中将得不到一个合适的初值,因此,CPU可能会从一个未被定义的位置开始执行程序。VccAT89C51RST8.2k10uF+VccGND图3.9 上电复位电路3) 复位后寄存器的状态 当系统复位时,内部寄存器的状态如表3.1所列,即在SFRS中,除了端口锁存器、堆栈指针SP和串行口的SBUF外,其余的寄存器全部清0,端口锁存器的复位值为0FFH,堆栈指针值为07H,SBUF内为不定值。内部RAM的状态不受复位的影响,在系统上电时,RAM的内容是不定的。表3.1 各特殊功能寄存器的复位值专用寄存器复位值专用寄存器复位值PC0000HTCON00HACC00HB00HPSW00HSP07HDPTR0000HP0-P3FFHIP00000BIE000000BTMOD00HTH000HTL000HTH100HTL100HSCON00HSBUF不定PCON(CHMOS)00000B在本设计中复位电路采用的是上电复位,即如图3.9所示3.1.4 单片机最小系统如图3.10所示 AT89C51单片机最小系统复位和晶振图图3.10 单片机晶振复位电路图3.2 语音模块电路设计ISD4004系列语音芯片工作电压为+3V,单片录放时间8到16分钟,音质好,适用于移动电话及其他便携式电子产品中。芯片采用CMOS 技术,内含振荡器、防混淆滤波器、平滑滤波器、音频放大器、自动静噪及高密度多电平闪烁存储陈列。芯片设计是基于所有操作必须由微控制器控制,操作命令可通过串行通信接口(SPI或Microwire)送入。芯片采用多电平直接模拟量存储技术, 每个采样值直接存储在片内闪烁存储器中,因此能够非常真实、自然地再现语音、音乐、音调和效果声,避免了一般固体录音电路因量化和压缩造成的量化噪声和金属声。采样频率可以是4.0,5.3,6.4或8.0kHz,频率越低,录放时间越长,而音质则有所下降,片内信息存于闪烁存储器中,可在断电情况下保存一百年(典型值),可反复录音十万次。3.2.1 ISD4004芯片内部结构ISD4004芯片内部逻辑结构构成如图3.11所示图3.11 ISD4004的内部结构3.2.2 芯片引脚描述 1)电源(VCCD,VCCA) 芯片内部数字电路电源正极引脚和模拟电路电源正极引脚。为使噪声最小,芯片的数字电路和模拟电路使用不同的电源供电,并且分别引到外封装的不同管脚上,数字和模拟电源端最好分别走线,尽可能在靠近供电端处相连,而去耦电容应尽量靠近器件。 2)地线(VSSD,VSSA) 芯片内部数字电路电源地线和模拟电路电源地线引脚。芯片的数字电路和模拟电路也要使用不同的地线。 3)同相模拟输入(ANA IN+) 录音信号的同相输入端。输入放大器可用单端或差分驱动。单端输入时,信号由耦合电容输入,最大幅度为峰-峰值32mV,耦合电容和本端的3K电阻输入阻抗决定了芯片频带的低端截止频率。差分驱动时,信号最大幅度为峰-峰值16mV。ISD4004芯片实物图和引脚图分别如图3.12 、图3.13所示图3.12 ISD4004实物图图3.13 ISD4004引脚图 4)反相模拟输入(ANA IN-) 差分驱动时,这是录音信号的反相输入端。信号通过耦合电容输入,最大幅度为峰-峰值16mV。 5)音频输出(AUD OUT) 提供音频输出,可驱动5K的负载。 6)片选(SS)此端为低,即向ISD4004芯片发送指令,两条指令之间为高电平。 7)串行输入(MOSI) 此端为串行输入端,主控制器应在串行时钟上升沿之前半个周期将数据放到本端,以供输入。 8)串行输出(MISO) 此端为串行输出端,芯片未被选中时,本端呈高阻态。 9)串行时钟(SCLK) 时钟输入端,由主控制器产生,用于同步MOSI 和MISO的数据传输。数据在SCLK上升沿锁存到芯片,在下降沿移出芯片。 10)中断() 本端为漏极开路输出。芯片在任何操作(包括快进)中检测到EOM或OVF时,本端变低并保持。中断状态在下一个SPI周期开始时清除。中断状态也可用RINT指令读取(OVF标志指示芯片的录/放操作已到达存储器的末尾;EOM标志只在放音中检测到内部的EOM标志时,此状态位才置1)。 11)行地址时钟(RAC) 漏极开路输出。每个RAC周期表示芯片存储器的操作进行了一行(ISD4004系列中的存储器共2400行)。该信号保持高电平175ms,低电平25ms。快进模式下,RAC 218.75s是高电平,31.25s为低电平。该端可用于存储管理技术。 12)外部时钟(XCLK) 本端内部有下拉元件。芯片内部的采样时钟在出厂前已调校,误差在1%以内。商业级芯片在整个温度和电压范围内, 频率变化在2.25%以内。工业级芯片在整个温度和电压范围内,频率变化在4%以内,此时建议使用稳压电源。若要求更高精度,可从本端输入外部时钟。由于内部的防混淆及平滑滤波器已设定,故上述推荐的时钟频率不应改变。输入时钟的占空比无关紧要,因内部首先进行了分频。在不外接时钟时,此端必须接地。13)自动静噪(AM CAP) 当录音信号电平下降到内部设定的某一阈值以下时,自动静噪功能使信号衰弱,这样有助于滤除无信号(静音)时的噪声。通常本端对地接1F的电容,构成内部信号电平峰值检测电路的一部分。检出的峰值电平与内部设定的阈值作比较,决定自动静噪功能的翻转点。大信号时,自动静噪电路不衰减,静音时衰减6dB7。1F 的电容也影响自动静噪电路对信号幅度的响应速度。本端接VCCA则禁止自动静噪。3.2.3 ISD4004芯片使用说明 1)串行外设接口 ISD4000系列语音芯片工作于SPI串行接口。SPI协议是一个同步串行数据传输协议,设定微控制器的SPI移位寄存器在SCLK的下降沿将数据送至MISO引脚。以ISD4004为例,协议的具体内容如下:所有串行数据传输开始于下降沿。在传输期间必须保持低电平,在两条指令之间则保持高电平。数据在时钟上升沿移入,在下降沿移出。变低,输入指令和地址后,ISD4004才能开始录/放操作。指令格式是(八位控制码)加(十六位地址码)。ISD4004的任何操作如果遇到EOM或OVF,则产生一个中断,该中断状态在下一个SPI周期开始时被清除。使用“读”指令使中断状态位移出ISD4004的MISO引脚时,控制及地址数据也应同步从MOSI端移入。因此,要注意移入的数据是否与器件当前进行的操作兼容。当然,也允许在一个SPI周期里,同时执行读状态和开始新的操作(即新移入的数据与器件当前的操作可以不兼容)。所有操作在运行位(RUN)置1时开始,置0时结束。所有指令都在SS端上升沿开始执行。 2)信息快进 用户不必知道信息的确切地址就能快进跳过一条信息。信息快进只用于放音模式,放音速度是正常的1600倍,遇到EOM后停止,然后内部地址计数器1,指向下一条信息的开始处。 3)上电顺序 器件延时TPUD(8KHz采样时,约为25ms)后才能开始操作。因此,用户发完上电指令后,必须等待TPUD,才能发出下一条操作指令。例如,从00处放音,应遵循如下时序:发POWER UP命令;等待TPUD(上电延时);发地址值为00的SET PLAY命令;发PLAY命令。器件会从00地址开始放音,当出现EOM时,立即中断,停止放音。如果从00处录音,则按以下时序:发POWER UP指令;等待TPUD(上电延时);发POWER UP命令;等待2倍TPUD;发地址值为00的 SET REC命令;发REC命令。器件便从00地址开始录音,一直到出现OVF(存储器末尾)时,录音停止。 4)指令码表3.2 ISD4004的指令码指令控制码操作POWERUP00100 xxx上电:等待TPUD后可以工作SETPLAY11100 xxx从指定地址开始放音PLAY11110 xxx从当前地址开始放音SETREC10100 xxx从指定地址开始录音REC10110 xxx从当前地址开始录音SETMC11101xxx从当前地址开始快进MC11111xxx执行快进,直到EOMSTOP0 x110 xxx停止当前操作STOPWRDN0 x01xxxx停止当前操作并掉电RINT0 x110 xxx读状态OVF和EOM 5)SPI端口的控制位MOSIMISOOOC3C4XC0C2OVFEOMP0P15000000C1XX快进模式操作是否使用指令地址电源控制录/放模式允许/禁止操作图3.14 ISD4004的SPI控制位6) SPI控制寄存器 SPI控制寄存器控制器件的每个功能,如录音、放音、信息检索(快进)、上电/掉电、开始/停止操作、忽略地址指针等。表3.2 ISD4004的SPI控制寄存器控制位值功能控制位值功能RUN10允许/禁止操作开始停止PU10电源控制上电掉电P/R10录/放模式放音录音IAB10是否使用指令地址忽略输入地址寄存器内容使用输入地址寄存器内容MC10快进模式允许禁止P15-P0行指针寄存器输出A15-A0输入地址寄存器注:IAB置0时,录/放操作从A9A0地址开始为了能连贯地录/放到后续的存储空间,在操作到达该行末之前,应发出第二个SPI指令将IAB置1,否则器件会在同一地址上反复循环。这个特点对语音提示功能很有用。RAC引脚和IAB位可用于信息管理。SPI端口简单框图如图3.15所示:XXX输入移位寄存器C4C0MOSI选择逻辑字节行计数器输出移位寄存器EOMOVFMISOA15A0P15P0图3.15 ISD4004的SPI端口3.2.4 ISD4004与外围设备的连接语音芯片ISD4004主要与三部分外围设备连接,即单片机控制电路、语音录入电路和语音播放电路。单片机的P1.0、P1.1和P1.2引脚接独立按键,控制语音芯片的放音过程;P1.3引脚经电阻与控制外部语音录入和语音播放电路接通与否的三极管的基极相连;P1.4引脚接片选端SS,控制ISD4004选通与否;P1.5引脚接串行输入MOSI,经此读入放音地址;P1.7引脚接串行时钟SCLK;两芯片中断口相连,以收发中断信号。同相模拟输入(ANA IN+)和反相模拟输入(ANA IN-)与录音电路相连,通过话筒录制各站信息存储于芯片内部以供播放时应用。音频功率放大器LM386驱动音箱组成放音电路,与音频输出端(AUD OUT)相连。另外,发光二极管接于电源通路,可以显示语音芯片工作情况8。ISD4004与外围设备的连接如图3.16所示:3.3 显示电路模块设计液晶显示器LCD(Liquid Crystal Display)广泛应用于微型计算机系统中,与LED相比,具有功率低,抗干扰能力强,体积小,价格低廉等优点。另外,LCD在大小和形状上更加灵活,接口简单,不但可以显示数字、字符,而且可以显示文字和图形。字符和数字的简单显示,不能满足图形曲线和文字显示的要求。点阵式LCD不仅可以显示字符、数字,还可以显示各种图形、曲线及文字,并且可以实现屏幕上下左右滚动、动画、分区开窗口、反转、闪烁等功能,用途十分广泛。现在,随着液晶技术的突破,液晶显示器的质量有了很大的提高,品种也在不断推陈出新,不但有各种规模的黑白液晶显示器,还有绚丽多彩的彩色液晶显示器。在点阵式液晶显示器中,把控制驱动电路与液晶点阵集成在一起,组成一个显示模组,可与八位微处理器接口直接连接,不但使用方便,而且价格也比较便宜。TH12864液晶显示模组是12864点阵的文字图形型液晶显示模组,内置国标GB2312码简体中文字库(1616点阵)、ASCII码字符集(816点阵)和64256点阵显示RAM(GDRAM绘图区域);可与CPU直接接口,提供两种界面来连接微处理机(八位并行及串行连接方式);具有光标显示、画面移位和睡眠模式等多种功能。图3.16 ISD4004与外围设备的连接电路图3.3.1 液晶模组内部结构组成图3.17 液晶模组的组成结构TH12864使用ST7920作为行驱动器,同时使用ST7921作为列驱动器。液晶显示中应尽量避免一个字符一半在左半屏显示,另一半在右半屏显示的情况。由于TH12864液晶显示器是一种带有输出驱动的完整的液晶显示器,八位微处理器可直接与其相连,对液晶屏进行行、列驱动12。3.3.2 引脚功能 TH12864液晶显示器有20个管脚,分电源线、数据线和控制线。其详细功能如下: 1)电源部分VDD 电源正极,通常接+5V。VSS 电源负极,接-5V。为了简化电路,可直接接地。V0 电源控制端,用来调节显示屏灰度。调节该端的电压,可以改变显示屏字符、图形的颜色深浅。 2)数据线DB0DB7 数据总线,双向。 3)控制信号PSB 并口/串口选择信号,接高电平时选择并口,接低电平时选择串口。模块上一般都有跳线方式将其接高或接低,用户可以不处理(事先须声明是用并口还是串口);也可以选择不在模块上处理,而由用户自己选择并口还是串口。 RS(CS) 寄存器选择信号,高电平时为数据操作,低电平时为写指令或读状态(串行方式下为片选信号,低电平有效)。 R/W(SID) 读/写选择信号,高电平为读选通,低电平为写选通(串行方式下作数据线使用)。 E(SCLK) 读/写使能信号,在E的下降沿,数据被锁存(写)入ST7921;在E为高电平期间,数据被读出(串行方式下作时钟输入)。 RST 复位信号,低电平有效。当其有效时,关闭液晶显示,使显示起始行为0。可与单片机相连,由单片机控制;也可直接接VDD,使之不起作用。 BLA 背光源正极(LED+5V)。 BLK 背光源负极(LED0V)。3.3.3 液晶模组与单片机的连接图3.18 液晶模组与单片机的连接电路图3.4 键盘接口电路设计 键盘是若干按键的集合,是向系统提供操作人员干预命令及数据的接口设备。键盘可分为编码键盘和非编码键盘两种类型。前者能自动识别按下的键并产生相应代码,以并行或串行方式发送给CPU。它使用方便,接口简单,响应速度快,但需要专用的硬件电路。后者则通过软件来确定按键并计算键值。这种方法虽然没有编码键盘速度快,但它不需要专用的硬件支持,因此得到了广泛的应用。键盘是计算机应用系统中一个重要的组成部分,设计时必须解决下述一些问题。3.4.1 按键的确认 键盘实际上是一组按键开关的集合,其中每一个按键就是一个开关量输入装置。键的闭合与否,取决于机械弹性开关的通、断状态。反应在电压上就是呈现出高电平或低电平,例如高电平表示断开,低电平表示闭合。所以,通过检测电平状态(高或低),便可确定按键是否已被按下。为了缩小整个系统的规模,简化硬件线路,我们希望设置最少量的按键,获得更多的操作控制功能。3.4.2 重键与连击的处理 实际按键操作中,若无意中同时或先后按下两个以上的键,系统确认哪个键操作是有效的,完全由设计者的意志决定。如视按下时间最长者为有效键,或认为最先按下的键为当前按键,也可以将最后释放的键看成是输入键。不过微型计算机控制系统毕竟资源有限。交互能力不强,通常总是采用单键按下有效,多键同时按下无效的原则(若系统没有复合键,当然应该另当别论)。 有时,由于操作人员按键动作不够熟练,会使一次按键产生多次击键的效果,即重键的情况。为了排除重键的影响,编制程序时,可以将键的释放作为按键的结束。等键释放电平后再转去执行相应的功能程序,以防止一次击键多次执行的错误发生。3.4.3 按键防抖动技术 键盘,作为向系统提供操作人员的干预命令的接口,以其特定的按键序列代表着各种确定的操作命令。所以,准确无误地辨认每个键的动作及其所处的状态,是系统能否正常工作的关键。 多数键盘的按键均采用机械弹性开关。一个电信号通过机械触点的断开、闭合过程,完成高、低电平的切换。由于机械触点的弹性作用,一个按键开关在闭合及断开的瞬间必然伴随有一连串的抖动。抖动过程的长短由按键的机械特性决定,一般为1020ms。 为了使CPU对一次按键动作只确认一次,必须排除抖动的影响,可以从硬件及软件两个方面着手解决。1)硬件防抖动技术 通过硬件电路消除按键过程中抖动的影响是一种广为才用的措施。这种做法,工作可靠,且节省机时。下面介绍两种硬件防抖动电路。滤波防抖动电路 利用RC积分电路对干扰脉冲的吸收作用,选择好电路的时间常数,就能在按键抖动信号通过此滤波电路时,消除抖动的影响。图3.19 滤波防抖动电路 当键K未按下时,电容C两端电压均为0,非门输出为1。当K按下时,由于C两端电压不可能产生突变。尽管在触点接触过程中可能出现抖动,只要适当选取R1、R2和C的值,即可保证电容C两端的充电电压波动不超过非门的开启电压(TTL为0.8V),非门的输出将维持高点平。同理,当触点K断开时,由于电容C经过电阻R2放电,C两端的放电电压波动不会超过非门的关闭电压,因此,非门的输出也不会改变。总之,只要R1、R2和C的时间常数选取得当,确保电容C由稳态电压充电到开启电压,或放电到关闭电压的延迟时间等于或大于10ms,该电路就能消除抖动的影响。双稳态防抖动电路 用两个与非门构成一个RS触发器,即可构成双稳态防抖动电路。图3.20 双稳态防抖动电路 设按键K未按下时,键K与键A端(ON)接通。此时,RS触发器的Q端为高电平1,致使Q端为低电平0。此信号引致1#与非门的输入端,将其锁住,使其固定输出为1。每当开关K被按动时,由于机械开关具有弹性,在A端将形成一连串的抖动波形。而Q端在K到达B端之前始终为0。这时,无论A处出现怎样的电压(0或1),Q端恒为1.只有当K到达B端,使B端为0,RS触发器产生翻转,Q变为高电平,导致Q降为0,并锁住门2,使其输出恒为1。此时,即使B处出现抖动波形,也不会影响Q端的输出,从而保证Q端恒为0。同理,在释放键的过程中,只要一接通A,Q端就升为1。只要开关K不再与B端接触,双稳态电路的输出将维持不变。图3.21 键盘接口电路在键盘接口中,开关SW1接P1.0口,控制语音播放和文字显示;开关SW2接P1.1口,控制提示顺序;开关SW3接P1.2口,用来跳过某站的提示,以实现播放过程的微调。2)软件防抖动方法 若采用硬件防抖动电路,则N个键就必须配有N个防抖动电路。因此,当键的个数比较多时,硬件防抖动将无法胜任。在这种情况下,可以采用软件的方法进行防抖动。当第一次检测到有键按下时,先用软件延时(1020ms),而后再确认该键电平是否仍维持闭合状态电平。若保持闭合状态电平,则确认此键确已按下,从而消除了抖动的影响。3.5 供电电路设计公交车上所使用的电源电压为24V,而AT89C51芯片的工作电压为5V,所以需要将24V的电压转换成5V电压。设计中采用了三端固定正电压集成稳压器7805,来得到+5V稳定电压。电压变换电路如图3.22所示。 集成稳压器是指将不稳定的直流电压变为稳定的直流电压的集成电路。由于集成稳压器具有稳压精度高、工作稳定可靠、外围电路简单、体积小、重量轻等显箸优点,在各种电源电路中得到了普遍的应用。常用的集成稳压器有:金属圆形封装、金属菱形封装、塑料封装、带散热板塑封、扁平式封装、双列直插式封装等。在电子制用中应用较多的是三端固定输出稳压器。 78xx系列集成稳压器是常用的固定正输出电压的集成稳压器,输出电压有5V、6V、9V、12V、15V、18V、24V等规格,最大输出电流为1.5A。它的内部含有限流保护、过热保护和过压保护电路,采用了噪声低、温度漂移小的基准电压源,工作稳定可靠。根据输出电流值的不同,选用不同系列的芯片,当电流小于100mA时,可以选用78L00系列;当电流在0.5A以内时,可选用78M00系列;当电流在1.5A以内,应选用7800系列的芯片。7805的最大输出电流为1.5A。 图3.22 电压变换电路4 软件设计4.1 主程序流程图开始系统初始化开始录音按键值显示提示语延时LCD显示下一站名报下一站名LCD显示发送语音报站名送地址录音模式报站模式Mode=1显示开机画面延时读取按键值显示广告N按键按下N Y按键按下YYY图4.1 主程序流程图4.2 语音提示应用实现4.1.1 放音程序开始执行上电操作指令延迟等待(25ms)知道上电结束N上电延迟时间到Y段间延迟执行SET PLAY 命令设置播放地址 执行PLAY命令NINT有效YY继续播放下一段 N结束执行STOP 命令 图4.2 语音芯片放音程序流程图4.1.2 录音程序开始延迟等待(25ms)直到上电结束执行上电操作命令(POWER UP)执行SET REC命令设置录音地址延迟二倍上电时间N上电延迟时间到Y执行REC命令执行上电操作命令(POWER UP) 执行STOP WRDN命令
展开阅读全文