资源描述
摘 要本设计介绍了一种利用红外线遥控技术,模拟公交车自动报站的系统。以AT89C52为主芯片。公交车上的接收电路收到站台信息后解码,解码后把信号传送给AT89C52单片机,启动LCD12864显示站名。同时,应用语音模块播报站名,还可以实现手动报站功能。系统由红外线的发射模块、接收模块、LCD12864显示模块及ISD4004语音播报模块组成。语音芯片ISD4004,采用模拟数据半导体存储器直接存储的专利技术,即将模拟语音数据直接写入单个存储单元,不需经过A/D、D/A转换,因此能够较好地真实再现语音的自然效果,避免了一般固体语音电路因为量化和压缩造成的量化噪声和失真现象,配合LCD12864屏显示,就使得该报站系统更加实用。关键词:AT89C52;红外线编码技术 ;LCD12864;ISD4004AbstractThis design introduces a use of infrared remote control technology, simulation bus stop automated system. To the main chip AT89C52. Receiver circuit bus station information received after the decoding, after decoding the signal transmitted to the AT89C52 microcontroller, display station names start LCD12864. At the same time, the application of voice broadcast station module. Can also manually stop function. Stop time. System module from the infrared transmitter module, receiver module, LCD12864 display module and the ISD4004 voice broadcast module. Speech synthesis chip ISD4004 adopts the patented technology for semiconductor memory directly simulated data storage of analog voice, that analog voice data is written directly to the individual storage units, not through A/D and D/A conversion, so we can receive the natural emergence of better voice effects and avoid the quantization of noise and distortion caused by the quantization and compression in the generally solid voice circuit. Besides, LCD12864 makes the reporting system more practical.Key words:AT89C52;Infra-red coding technology; LCD12864;ISD4004目 录摘 要IAbstractII目 录III1 绪论 1 1.1 课题研究的背景及意义 1 1.2 报站器的动态发展趋势 1 1.3 设计的主要目标任务 2 2 方案的设计与分析 3 2.1 方案的设计 3 2.2 方案的分析 3 2.2.1 无线收发模块的分析与论证 3 2.2.2 控制模块的分析与论证 3 3 系统硬件设计 5 3.1 系统硬件设计 5 3.1.1 系统总体方框图 5 3.2 单元电路的设计与分析 5 3.2.1 AT89C52单片机介绍 5 3.2.2 晶振电路 6 3.2.3 复位电路 7 3.2.4 遥控收发电路 7 3.2.5 AT89C52控制的LCD12864电路 10 3.2.6 ISD4004语音录放电路 14 3.2.7 本设计总原理图 21 4 系统软件设计 22 4.1 系统流程图 22 4.1.1 LCD12864流程图 22 4.1.2 定时器中断0服务子程序流程图 23 4.1.3 遥控接收程序流程图 23 4.1.4 定时中断1子程序流程图 24 4.1.5 外部中断1子程序流程图 24 4.1.6 ISD4004放音程序 25 4.1.7 ISD4004录音程序 26 5 系统测试 27 5.1 调试软件KeilC51简介 27 5.2 软件程序测试 27 5.3 系统电路功能仿真 28 5.4 Keil与Proteus对系统联调 28 参考文献 32 结 束 语 33 致 谢 34 附录一:系统总原理图 35 附录二:LCD12864显示模块参考程序 36 附录三:ISD4004语音播报程序 52 - 59 -宁夏理工学院毕业论文1 绪论随着科学技术的日益发展和进步, 无人售票公交车在街头多起来了,语音报站器也被广泛使用,这在相当大的程度上免除了乘务人员沿途报站的麻烦,给许多不熟悉公交线路的乘客带来了方便。1.1 课题研究的背景及意义公共汽车为外出的人们提供了方便快捷的服务,而公共汽车的报站直接影响服务的质量。传统由乘务人员人工报站,该方式因其效果太差和工作强度太大,在很多大城市已经被淘汰。近年来,随着科学技术的日益发展和进步,微型计算机技术已经在许多领域得到了广泛的应用。在声学领域,微机技术与各种语音芯片相结合,即可完成语音的合成技术,使得汽车报站器的实现成为可能,从而为市民提供了更加人性化的服务。鉴于传统公交车报站系统的不足之处,结合公交车辆的使用特点及实际营运环境,设计了一种由单片机控制的公交车自动报站系统。公交车自动报站器的设计主要是为了弥补改变传统语音报站器必须有司机操控才能工作的落后方式,进站、出站自动播报站名及服务用语,为市民提供更人性化,更完善的服务。1.2 报站器的动态发展趋势公共汽车行驶在现代文明程度高的市区,它是一道流动的风景线,因而对整车外形乃至色彩都有更高的要求。作为公共汽车还要求有醒目和减少乘务人员劳动强度的电子报站器,电子显示路牌,无人售票装置,前后电视监视系统等新技术的采用也将越来越普及。公交车报站器在公交事业中占有举足轻重的地位,它直接影响到公交车的服务质量。目前公交车报站有三种方式,一种是利用GPS全球卫星定位系统的公交车报站系统,在司机座位后面隔板上,安装了一台15英寸的液晶电视和 GPS信号接收器,安装了这套设备后,公交车在语音报站的同时,通过液晶电视还可以显示到站站名的字幕,这样如果没听清报站的话,通过显示屏,乘客也可以一目了然。当出现紧急情况时,调度中心将会给公交车发出相应的信息,以短信的形式传送到显示屏上,同时车载台会发出相应的提示音;驾驶员也可以通过相应的工具进行回复。目前在美国部分城市GPS卫星定位系统已经投入使用,国内也有此类产品的研制开发,其功能强大,系统稳定,但其投资昂贵,尤其是一些中小城市无法承受。另外两种是手动电子报站和人工报站的方式,而它们都离不开司务人员,加大司乘人员的工作强度。手动电子报站一般有司机或者乘务员控制,经常出现错报,误报的情况。城市公共交通是市民出行的主要交通工具之一。提供舒适,安全、便捷的乘车环境,对于公交企业来说,不仅是应尽的责任,亦是不断追求的目标。1.3 设计的主要目标任务本课题要求设计一公交车自动报站系统 1 ,以实现公交车的语音自动报站,即公交车快要进站、出站时候通过红外接收模块的LED发亮接着按下按键本系统就可以自动播报语音提示信息及服务用语,同时利用LCD12864电路进行汉字显示。本设计要求利用AT89C52作为主控芯片完成主控电路的设计,辅助电路要求包括语音电路、LCD12864显示电路等。2 方案的设计与分析2.1 方案的设计用AT89C52单片机来设计一个公交车自动报站系统 2 。要求用遥控模拟实现当公交车靠近站点时可以用文字来显示站名,语音播报站名。2.2 方案的分析2.2.1 无线收发模块的分析与论证方案一:无线AP。由无线AP构成,通信的效果好,数据传送量大,但是其成本比较高,由于采用IEEE 802.11b和IEEE 802.11g的通信协议,因此它比较适合用于移动上网。方案二:无线数传模块。采用专用收发集成电路的无线数传模块构成,所以性能相对较好,而且容易实现,并且在功耗,抗干扰性等方面都比较优越,但是由于基于此芯片的无线传输模块价格和无线AP模块差不多,所以成本相对偏高。方案三:PT2262/PT2272-L4集成芯片。方案采用低功耗、低价位、通用编解码电路,发送用高的达林顿管,所以在灵敏度和抗干扰性方面有保障。方案四:红外遥控。可以用现有的遥控装置,我们只要了解其编解码原理,就可以采用现成的简易装置来模拟应用。以上四种都是可供参考的方案,在考虑了诸多因素之后,决定采用方案四。虽然在软件解码方面比较复杂,但其工作稳定,可靠性高。2.2.2 控制模块的分析与论证方案一:采用GPRS作为系统的控制器GPRS即“通用分组无线业务”(GeneralPacketRadioService的英文简称)是在现有GSM网络上开通的一种新型的分组数据传输技术相对于原来GSM以拨号接入的电路交换数据传送方式GPRS是分组交换技术具有“永远在线”、“自如切换”、“高速传输”等优点。GPRS可作为实现各种复杂的逻辑功能,规模大,但其成本非常高。方案二:采用嵌入式ARM的32位单片机LPC2138。LPC2138功能庞大,内部资源丰富,易于数据的采集,不但具有一般单片机的所有功能,还内置了PWM,具有很强的串行通信功能,引脚非常丰富,功耗低,稳定性好,易于功能扩展,其在线仿真技术,软硬件调试方便,但ARM板成本较高。方案三:采用AT89C52单片机控制,它简单易用、成本低廉,软件编程自由度大,可用编程实现各种控制算法和逻辑控制,采用AT89C52单片机为控制核心,系统功能强大,资源配置灵活,运行可靠稳定,是一套相对完善工业低压控制系统,采用板式结构、安装牢靠,操作简洁。综上所说ARM虽功能强但成本高,且用单片机也能很好的控制,所以该系统的设计选用单片机编程即可,我们所以选择方案三。3 系统硬件设计3.1 系统硬件设计本设计采用红外遥控来实现无线数据的收发,采用AT89C52单片机 3 为控制核心,实现公交车的自动报站功能。3.1.1 系统总体方框图图3.1 系统总体方框图3.2 单元电路的设计与分析3.2.1 AT89C52单片机介绍随着计算机技术的发展,单片机技术已成为计算机技术中的一个独特的分支,单片机的应用领域也越来越广泛,特别是在工业控制和仪器仪表智能化中扮演着极其重要的角色。实际上,单片机几乎在人类生活的各个领域都表现出强大的生命力,使计算机的应用范围达到了前所未有的广度和深度。单片机的出现尤其对电路工作者产生了观念上的冲击。过去经常采用模拟电路、数字电路实现的电路系统,现在相当大一部分可以用单片机予以实现,传统的电路设计方法已演变成软件和硬件相结合的设计方法,而且许多电路设计问题将转化为纯粹的程序设计问题。诚然,单片机的应用意义远不限于它的应用范畴或由此带来的经济效益,更重要的是它已从根本上改变了传统的控制方法和设计思想。是控制技术的一次革命,是一座重要的里程碑。AT89C52是ATMEL公司生产的51系列单片机的一个型号,是一个低电压,高性能CMOS8位单片机,片内含8Kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外部中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低成本。AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。主要功能特性:兼容MCS51指令系统,8K可反复擦写(1000次)Flash ROM,32个双向I/O口,2568bit内部RAM,3个16位可编程定时/计数中断,时钟频率0-24MHZ,2个串行中断,可编程UART串行通道,2个外部中断,共6个中断源,2个读写中断口线,3级加密位,低功耗空闲和掉电模式,软件设置睡眠和唤醒功能。3.2.2 晶振电路AT89C52的内部有一个用于构成振荡器的高增益反相放大器。通过XTAL1,ATAL2外部接上一片作为反馈元件的晶体,与C1和C2构成了并联谐振电路 4 ,使其构成自激振荡器。电容的值具有微调的作用,我们取30PF。具体的接法如图3.2外部晶振电路:图3.2 外部晶振电路AT89C52的工作频率范围在024MHZ。我们选用的是12MHZ的晶振,机器周期为1us,所以这个晶振可以满足这个系统的要求。并且晶振不能离单片机太远,不然使用外部晶振进行软件调试时就会发现找不到信号。3.2.3 复位电路复位有硬件和软件两种,复位的作用是使程序自动从0000H开始执行,因此我们只要在AT89C52单片机的RESET端加上一个高电平信号,并持续10ms以上即可,RESET端接有一个上电复位电路,它是由一个小的电解电容和一个接地的电阻组成的。人工复位电路另外采用一个按钮来给RESET端加上高电平信号。图3.3 人工复位电路我们采用放电型人工复位电路,如图3.3人工复位电路,上电时C通过R充电,维持宽度大于10ms的正脉冲,完成上电复位功能。C充电结束后,RESET端出现低电平CPU正常工作。在此我们取了典型值R1=1K,R6=10K,C=10UF。上电复位实现的时间:T=R*C =10K*10UF =100ms=10ms需要人工复位时,按下按钮K,C通过K和R1放电,RESET端电位上升到高电平,实现人工复位,K松开后C重新充电,充电结束后,CPU重新工作,R1是限流电阻,阻值不可以过大,否则不能起到复位作用。3.2.4 遥控收发电路红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控 5装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图3.4所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。图3.4 红外遥控系统框图遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的UPD6121G组成发射电路为例说明编码原理。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图3.5所示。图3.5 遥控码的“0”和“1”上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如图3.6所示。图3.6 遥控信号编码波形图UPD6121G产生的遥控编码 6 是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。该芯片的用户识别码固定为十六进制01H;后16位为8位操作码(功能码)及其反码。UPD6121G最多有128种不同组合的编码。遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在4563ms之间。当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(9ms18ms),高8位地址码(9ms18ms),8位数据码(9ms18ms)和这8位数据的反码(9ms18ms)组成。如果键按下超过108ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。图3.7 红外接收电路解码的关键是如何识别“0”和“1”,从位的定义我们可以发现“0”、“1”均以0.56ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56ms,“1”为1.68ms,所以必须根据高电平的宽度区别“0”和“1”。如果从0.56ms低电平过后,开始延时,0.56ms以后,若读到的电平为低,说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比0.56ms长些,但又不能超过1.12ms,否则如果该位为“0”,读到的已是下一位的高电平,因此取(1.12ms+0.56ms)/2=0.84ms最为可靠,一般取0.84ms左右均可。接收电路如图3.7所示。PC3388是红外接收头,1脚是信号端,2脚是接地端,3脚是电源端。当电路正常工作时,发光二极管发亮。测试时可以观察D6的状态来判断是否有接收到信号。3.2.5 AT89C52控制的LCD12864电路LCD12864介绍LCD12864 7 在市面上主要分为两种,一种是采用ST7920控制器的,它一般带有中文字库字模,价格略高一点。另一种是采用KS0108控制器,它只是点阵模式,不带字库。我的这块就是KS0108控制器不带汉字库的。LCD12864模块的20个引脚定义如下:1) Vss 逻辑电源地2) VDD 逻辑电源正极3) VO LCD驱动电压4) RS 数据/指令选择:高电平为数据,低电平为指令5) R/W 读/写选择:高电平为读数据,低电平为写数据6) E 读写使能,高电平有效,下降沿锁定数据7) DB0 数据输入输出引脚8) DB1 数据输入输出引脚9) DB2 数据输入输出引脚10) DB3 数据输入输出引脚11) DB4 数据输入输出引脚12) DB5 数据输入输出引脚13) DB6 数据输入输出引脚14) DB7 数据输入输出引脚15) CS1 片选择号,低电平时选择前64列16) CS2 片选择号,低电平时选择后64列17) RET 复位信号,低电平有效。18) Vout 输出10V电源给VO提供驱动电源19) A 背光电源LED正极20) K 背光电源LED负极LCD12864的内部控制结构如图3.8所示:图3.8 LCD12864的内部控制结构图由上图可以看出12864屏是分为左、右两块控制的。所有对屏幕的操作要受片选CS1、CS2来控制。表3.1是屏幕操作数据与屏幕点阵的排布关系图。表3.1 屏幕操作数据与屏幕点阵的排布关系图 CS2=1CS1=1Y=016263016263行号X=0DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB707DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7855X=7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB7DB0DB75663从上表可以看出数据按字节在屏幕上是竖向排列的。上方为低位,下方为高位。因此在横向上(也就是Y)就一共是128列数据。分为CS1和CS2两个64列来写入。在竖方向上(也就是X)一字节数据显示8个点,竖向64个点分为8个字节,称做8页(X=0-7)。了解这些后我们就知道要满屏显示一张图就要从y=0127、X=07一共写1288=1024个字节的数据。同样在AT89C52中存一张图就要1024个字节的空间。指令表如表3.2所示。表3.2 指令表指令指 令 码功 能R/WRSD7D6D5D4D3D2D1D0显示ON/OFF0000111111/0控制显示器的开关不影响DDRAM中数据和内部状态显示起始行0011显示起始行063指定显示屏从DDRAM中哪一行开始显示数据设置X地址0010111X 0 7设置DDRAM中的页地址(X地址)设置Y地址0001Y地址063设置地址(Y地址)读 状 态10BUSY0ON/OFFRST0000读取状态RST 1:复位 0:正常ON/OFF 1:显示开 0:显示关BUSY 0READY 1:IN OPERATION写显示数据01显 示 数 据将数据线上的数据DB7DB0写入DDRAM读显示数据11显 示 数 据将DDRAM上的数据读入数据线DB7DB01)显示开关控制(DISPLAY ON/OFF) 代码形式R/WRSDB7DB6DB5DB4DB3DB2DB1DB0000011111DD=1:开显示(DISPLAY ON)意即显示器可以进行各种显示操作 D=0:关显示(DISPLAY OFF) 意即不能对显示器进行各种显示操作 2)设置显示起始行(DISPLAY START LINE) 代码形式R/WRSDB7DB6DB5DB4DB3DB2DB1DB00011A5A4A3A2A1A0A5A0 6位地址自动送入Z地址计数器,起始行的地址可以是063的任意一行。 例如: 选择A5A0是62,则起始行与DDRAM行的对应关系如下: DDRAM 行:62 63 0 1 2 3 28 29 屏幕显示行: 1 2 3 4 5 6 31 32 3)设置页地址(SET PAGE “X ADDRESS”)代码形式R/WRSDB7DB6DB5DB4DB3DB2DB1DB00010111A2A1A0所谓页地址就是DDRAM的行地址,8行为一页,模块共64行即8页,A2A0表示07页。读写数据对地址没有影响,页地址由本指令或RST信号改变复位后页地址为0。页地址与DDRAM的对应关系见DDRAM地址表。4)设置Y地址(SET Y ADDRESS) 代码形式R/WRSDB7DB6DB5DB4DB3DB2DB1DB00001A5A4A3A2A1A0 此指令的作用是将A5A0送入Y地址计数器,作为DDRAM的Y地址指针。在对DDRA M进行读写操作后,Y地址指针自动加1,指向下一个DDRAM单元。 5)读状态(STATUS READ) 代码形式R/WRSDB7DB6DB5DB4DB3DB2DB1DB001BUSY0ON/OFFRST0000当R/W=1 ,RS=0时,在E信号为“H” 的作用下,状态分别输出到数据总线(DB7DB0)的相应位。 BUSY:为1内部忙,不能对液晶进行操作。0工作正常。ON/OFF:1显示关闭;0显示打开RST:RST=1表示内部正在初始化,此时组件不接受任何指令和数据。6)写显示数据(WRITE DISPLAY DATE)代码形式R/WRSDB7DB6DB5DB4DB3DB2DB1DB001D7D6D5D4D3D2D1D0D7D0为显示数据,指令把D7D0写入相应的DDRAM单元,Y地址指针自动加1。7)读显示数据(READ DISPLAY DATE)代码形式R/WRSDB7DB6DB5DB4DB3DB2DB1DB011D7D6D5D4D3D2D1D0此指令把DDRAM的内容D7D0读到数据总线DB7DB0,Y地址指针自动加1。 AT89C52控制的LCD12864显示电路如图3.9所示。图3.9 AT89C52控制的LCD12864显示电路3.2.6 ISD4004语音录放电路ISD4004 8 系列语音芯片工作电压为+3V,单片录放时间8到16分钟,音质好,适用于移动电话及其他便携式电子产品中。芯片采用CMOS技术,内含振荡器、防混淆滤波器、平滑滤波器、音频放大器、自动静噪及高密度多电平闪烁存储陈列。芯片设计是基于所有操作必须由微控制器控制,操作命令可通过串行通信接口(SPI或Microwire)送入。芯片采用多电平直接模拟量存储技术,每个采样值直接存储在片内闪烁存储器中,因此能够非常真实、自然地再现语音、音乐、音调和效果声,避免了一般固体录音电路因量化和压缩造成的量化噪声和金属声。采样频率可以是4.0,5.3,6.4或8.0kHz,频率越低,录放时间越长,而音质则有所下降,片内信息存于闪烁存储器中,可在断电情况下保存一百年(典型值),可反复录音十万次。1).内部结构图3.10 ISD4004的内部结构2).引脚描述(1)电源(VCCD,VCCA) 芯片内部数字电路电源正极引脚和模拟电路电源正极引脚。为使噪声最小,芯片的数字电路和模拟电路使用不同的电源供电,并且分别引到外封装的不同管脚上,数字和模拟电源端最好分别走线,尽可能在靠近供电端处相连,而去耦电容应尽量靠近器件。图3.11 ISD4004芯片引脚(2)地线(VSSD,VSSA) 芯片内部数字电路电源地线和模拟电路电源地线引脚。芯片的数字电路和模拟电路也要使用不同的地线。(3)同相模拟输入(ANA IN+) 录音信号的同相输入端。输入放大器可用单端或差分驱动。单端输入时,信号由耦合电容输入,最大幅度为峰峰值32mV,耦合电容和本端的3K电阻输入阻抗决定了芯片频带的低端截止频率。差分驱动时,信号最大幅度为峰峰值16mV。(4)反相模拟输入(ANA IN-) 差分驱动时,这是录音信号的反相输入端。信号通过耦合电容输入,最大幅度为峰峰值16mV。(5)音频输出(AUD OUT) 提供音频输出,可驱动5K的负载。(6)片选() 此端为低电平,即向ISD4004芯片发送指令,两条指令之间为高电平。(7)串行输入(MOSI) 此端为串行输入端,主控制器应在串行时钟上升沿之前半个周期将数据放到本端,以供输入。(8)串行输出(MISO) 此端为串行输出端,芯片未被选中时,本端呈高阻态。(9)串行时钟(SCLK) SD的时钟输入端,由主控制器产生,用于同步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)自动静噪(AMCAP) 当录音信号电平下降到内部设定的某一阈值以下时,自动静噪功能使信号衰弱,这样有助于滤除无信号(静音)时的噪声。通常本端对地接1F的电容,构成内部信号电平峰值检测电路的一部分。检出的峰值电平与内部设定的阈值作比较,决定自动静噪功能的翻转点。大信号时,自动静噪电路不衰减,静音时衰减6dB。1F的电容也影响自动静噪电路对信号幅度的响应速度。本端接VCCA则禁止自动静噪。3) 操作规则(1)串行外设接口 ISD4000系列语音芯片工作于SPI串行接口。SPI协议是一个同步串行数据传输协议,设定微控制器的SPI移位寄存器在SCLK的下降沿将数据送至MISO引脚。以ISD4004为例,协议的具体内容如下:所有串行数据传输开始于下降沿。在传输期间必须保持低电平,在两条指令之间则保持高电平。数据在时钟上升沿移入,在下降沿移出。变低,输入指令和地址后,ISD4004才能开始录/放操作。指令格式是(八位控制码)加(十六位地址码)。ISD4004的任何操作如果遇到EOM或OVF,则产生一个中断,该中断状态在下一个SPI周期开始时被清除。使用“读”指令使中断状态位移出ISD4004的MISO引脚时,控制及地址数据也应同步从MOSI端移入。因此,要注意移入的数据是否与器件当前进行的操作兼容。当然,也允许在一个SPI周期里,同时执行读状态和开始新的操作(即新移入的数据与器件当前的操作可以不兼容)。所有操作在运行位(RUN)置1时开始,置0时结束。所有指令都在端上升沿开始执行。(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.3 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端口的控制位图3.12 ISD4004的SPI控制位(6)SPI控制寄存器 SPI控制寄存器控制器件的每个功能,如录音、放音、信息检索(快进)、上电/掉电、开始/停止操作、忽略地址指针等。表3.4 ISD4004的SPI控制寄存器控制位功能控制位功能RUN允许/禁止操作1开始0停止PU电源控制1上电0掉电P/录/放模式1放音0录音IAB操作是否使用指令地址1忽略输入地址寄存器内容0使用输入地址寄存器内容MC快进模式1允许0禁止P15-P0行指针寄存器输出A15-A0输入地址寄存器注:IAB置0时,录/放操作从A9A0地址开始。为了能连贯地录/放到后续的存储空间,在操作到达该行末之前,应发出第二个SPI指令将IAB置1,否则器件会在同一地址上反复循环。这个特点对语音提示功能很有用。RAC引脚和IAB位可用于信息管理。SPI端口简单框图3.13所示。图3.13 SPI端口简单框图4) ISD4004与外围设备的连接图3.15 ISD4004与外围设备的连接语音芯片ISD4004主要与三部分外围设备连接 9 ,即单片机控制电路、语音录入电路和语音播放电路。P1.0引脚接片选端,控制ISD4004选通与否;P1.2引脚接串行输入MOSI,经此读入放音地址;P1.3引脚接串行输出MISO;P1.1引脚接串行时钟SCLK;P3.3引脚接中断;两芯片中断口相连,以收发中断信号。同相模拟输入(ANAIN+)和反相模拟输入(ANAIN-)与录音电路相连,通过话筒录制各站信息存储于芯片内部以供播放时应用。音频功率放大器LM386驱动音箱组成放音电路,与音频输出端(AUDOUT)相连。另外,发光二极管接于电源通路,可以显示语音芯片工作情况。3.2.7 本设计总原理图通过以上单元电路的分析我们已经对各单元电路的硬件都有了一定的了解。下面对其总体实现情况作一个简单的说明。红外接收电路接收遥控信息并解码,解码后把信息通过外部中断1与单片机通信。单片机处理后,启动LCD12864及ISD4004模块显示播报站名。PC3388的信号端连到AT89C52的外部中断1。本设计总原理图如附图1.1所示。4 系统软件设计4.1 系统流程图4.1.1 LCD12864流程图图4.1 LCD12864流程图4.1.2 定时器中断0服务子程序流程图图4.2 定时器中断0服务子程序流程图4.1.3 遥控接收程序流程图图4.3 遥控接收程序流程图4.1.4 定时中断1子程序流程图图4.4 定时中断1子程序流程图4.1.5 外部中断1子程序流程图图4.5 外部中断1子程序流程图4.1.6 ISD4004放音程序图4.6 放音程序流程图4.1.7 ISD4004录音程序图4.7 录音程序流程图5 系统测试5.1 调试软件KeilC51简介Keil C51软件是众多单片机应用开发的优秀软件之一,它集编辑、编译、仿真于一体,支持汇编语言、PLM语言和C语言的程序设计 10 ,界面友好,易学易用。1)Keil的Vision3可以进行纯粹的软件仿真(仿真软件程序,不接硬件电路);也可以利用硬件仿真器,搭接上单片机硬件系统,在仿真器中载入项目程序后进行实时仿真;还可以使用Vision3的内嵌模块Keil Monitor-51,在不需要额外的硬件仿真器的条件下,搭接单片机硬件系统对项目程序进行实时仿真。2)uVision3调试器具备所有常规源极调试,符号调试特性以及历史跟踪,代码覆盖,复杂断点等功能。DDE界面和shift语言支持自动程序测试。5.2 软件程序测试1) 工程设置根据系统电路中晶振参数对工程中AT89C52进行设置,将Xtal(MHz)项中参数改为12.0,与晶振频率相同。2) 程序调试图5.1 程序调试图对程序中参数进行调整需进入调试模式,按按钮进入调试模式,由于该模式下可单步执行程序且左边框图同步显示运行时间值,所以可以随意对参数进行设置,直到得到所要求的功能。程序调试图如图5.1所示。5.3 系统电路功能仿真利用Proteus 11 绘制仿真图。整个仿真图的绘制过程主要有以下几部组成:首先新建一个Proteus的工程,在元件库里面搜索所需要的元器件,在元器件上单击右键选中,再单击左键对其进行命名和赋值,接着在编辑器左边的一栏中,找出绘制各种需要的线条和其他一些相关的线条和器件,进行节点出是否连接好进行检查,为下一步的系统仿真作准备。画出的仿真电路图如图5.2所示:图5.2 仿真电路图5.4 Keil与Proteus对系统联调Proteus与Keil两个软件可以进行联调 12 ,这一强大功能是其他软件无法办到的,仿真时通过KeilC51和Proteus结合实现的。首先,要将KEIL C51中调试成功的程序生成.HEX文本并保存,在Proteus中的主芯片AT89C52中导入此文本,即可在Proteus环境中实现系统的仿真。(1) Keil与Proteus联调,如图5.3所示。图5.3 联调图(2)无故障正常时,即正常,LCD12864正确显示,测试图如图5.4,5.5所示。利用仿真软件对所编写的程序进行调试,联机前先断电,把将调试成功的程序下载到AT89C52芯片中,检查一下电路之间的电源、接地是否良好,若一切正常,即可打开电源。在系统的调试过程中不是希望中的顺利,在调试中出现了问题,一点点的解决,软件调试出预期的结果。红外接收系统的测试可以通过观察发光二极管D6的状态来辨别该系统是否正常工作,如果接收到遥控信息,发光二极管点亮。还可以用电压表来测试信号端的电压来判断接收系统是否正常工作,如果电压表上显示的电压小幅度摆动,说明接收正常。图5.4 工作时仿真电路图一图5.5 工作时仿真电路图二按下遥控上的任意键,接收电路上的发光二极管D6发光,说明接收电路正常工作。但是,译码不够准确,所以不能很好的按预定的顺序来显示报站。预定的报站顺序是:第1次按下,LCD12864显示宁夏理工;第2次按下,LCD12864显示市博物馆;第3次按下,LCD12864显示东湖宾馆;第4次按下,LCD12864显示永康花园;第5次按下,LCD12864显示百花市场。SB1按下:如果是第1次按下,LCD12864显示宁夏理工;再按下,依次显示市博物馆、东湖宾馆、永康花园、百花市场。SB2按下,如果是第1次按下,LCD12864显示百花市场;再按下,依次显示永康花园、东湖宾馆、市博物馆、宁夏理工。测试基本达到设计要求,由于Proteus库里面没有ISD4004模块,所以ISD4004语音芯片尚未调试。参考文献1 刘国尧, 王娟. 公交自动报站系统的设计.自动化技术与应用J.黑龙江科技学院电气与信息工程学院,2010, 15(8):7476.2 朱奕丹, 黄志明, 吴彬. 单片机公交车到站语音播报与液晶显示控制系统的研制J.现代电子技术,2006,15(11). 153155.3 周润景, 徐宏伟, 丁莉. 单片机电路设计分析与制作M. 北京. 机械工业出版社, 2010. 5560.4 钟富昭. 8051单片机典型模块设计与应用M.北京. 人民邮电出版, 2007. 9095.5 张爱全. 红外遥控的基本原理和应用范围J.山西电子技术,2003, 21(6): 4041.6 王俊峰, 薛鸿德. 现代遥控技术及应用M. 北京: 人民邮电出版社, 2005. 96100.7 李维諟, 郭强. 液晶显示应用技术M. 北京: 电子工业出版社, 2005. 7780.8 Winbond. ISD4004 Series Single-Chip Voice Record/Playback DevicesM. California: Information Storage Devices, 2000. 7073.9 梁子伊. ISD4004系列语音芯片的单片机控制技术J.江苏省常州信息职业技术学院,2002,20(2): 6163.10 赖麒文. C语言程序彻底应用M. 北京. 科学出版社, 2002. 6570.11 蒋辉平. 基于Proteus的单片机系统设计与仿真实例M. 北京. 机械工业出版社, 2009. 7781.12 刘映群. Proteus与Keil整合构建单片机虚拟实验室J.中国现代教育装备,2005,10(8):21-24.结 束 语本文所设计的公交车报站器最主要是通过LCD12864显示站名来报站的,报站是通过按键控制站名显示的,还可以进行插入广告。本设计只对显示模块进行调试以及仿真,由于语音芯片在Proteus库里没有,所以未对语音模块进行调试仿真。仿真结果可以达到设计要求。通过本次设计让我加深对单片机的知识,让我重温了以前学的C语言知识与单片机的连续,也让我对protel以及proteus画图仿真软件更熟练。本文的设计缺陷就是遥控解码不是很正确,显示屏LCD12864不能显示温度以及日期,语音芯片未能调试。致 谢走的最快的总是时间,来不及感叹,大学生活已近尾声,四年多的努力与付出,随着本次论文的完成,将要划下完美的句号。从课题选择到具体的写作过程,无不凝聚着老师的心血和汗水。老师要指导很多同学的论文,加上本来就有的教学任务,工作量之大可想而知,她还在百忙之中抽出大量时间指导我们。她循循善诱的教导和不拘一格的思路给予我无尽的启迪,她渊博的专业知识,精益求精的工作作风,严以律己,宽以待人的崇高风范,将一直是我工作,学习中的榜样。在我的毕业论文写作期间,老师为我提供了种种专业知识上的指导和一些赋予创造性的建议,没有这样的帮助和关怀,我不会这么顺利的完成毕业论文。在此向冯月春老师表示深深的感谢和崇高的敬意。其次,论文的顺利完成,离不开其他各位老师,同学和朋友的关心和帮助。在整个论文的写作中,各位老师,同学和朋友积极地帮助我查资料和有利于论文写作的建议和意见,在这里我衷心的谢谢你们在这段日子力给予我生活和精神上的支持,在你们的帮助下,论文才得以不断地完善,最终帮助我完整的写完了整个论文。在这里,我要对你们说声谢谢,真的很感谢你们。最后,也是重要的,我要感谢我的父母,因为没有他们,就没有现在站在这里的我,是他们给以我生命,给以我上大学的机会,是他们造就了今天的我,对于你们,我充满无限的感激。附录一:系统总原理图附图1.1 系统总原理图附录二:LCD12864显示模块参考程序#include /*预定义*/#define uchar unsigned char#define uint unsigned intUnsigned charkey_temp,key_bak,ychi,keyvalue=0 x0f;unsigned char one_cnt=0,two_cnt=0;uchar key=0 x0f;unsigned char up,down;static unsigned char data IRCode3,IRCON,IRCON2;static unsigned char data DT;/*12864管脚配置*/#define port P0sbit rs=P30;sbit rw=P31;sbit e=P32;sbit cs1=P37;sbit cs2=P36;sbit P3_2 = P33;uchar code data_shuju3832 = /*- 文字: 宁 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0 x00,0 x90,0 x8C,0 x84,0 x84,0 x84,0 x85,0 x86,0 x84,0 x84,0 x84,0 x84,0 x94,0 x8E,0 x04,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x40,0 x80,0 x7F,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,/*- 文字: 夏 -*/*- 宋体12; 此字体下对应的点阵为:宽x高=16x16 -*/0 x00
展开阅读全文