公交车报站课程设计.docx
《公交车报站课程设计.docx》由会员分享,可在线阅读,更多相关《公交车报站课程设计.docx(44页珍藏版)》请在冰豆网上搜索。
公交车报站课程设计
中南大学
毕业设计(论文)
设计题目:
公交车报站
专业名称:
电气工程及其自动化
学 号:
***************
*****************************************
**************************************
设计时间:
2012/5/7~2012/5/11
摘要
本次课程设计以实现公交车的语音自动报站,即在进站、出站时候自动播报语音提示信息及服务用语,同时利用LCD电路进行汉字显示。
本设计要求利用AT89C52作为主控芯片完成主控电路的设计,辅助电路要求包括语音电路、汉字点阵显示电路、时钟电路、电源电路等。
本系统使用了晶振电路做定时,模拟实现报站的过程。
语音芯片使用的是ISD4003,它是使用很广泛的语音芯片。
该芯片具有很强大的功能,可容纳300个站点信息和8分钟语音广告信息。
关键字:
AT89S51单片机,ISD4003语音芯片,LED1602芯片、公交车报站
摘要
1设计任务和要求……………………………………….………..…….3
2方案论证………………………………………………….…….……..4
2.1方案比较…………………………………………….…….……..4
2.1.1方案一…………………………………………….………….4
2.1.2方案二………………………………………………….…….5
2.2方案选择……………………………………………….….……..5
3系统硬件设计……………………………………………….….……..6
3.1主控电路设计………………………………………….….……..6
3.1.1关于AT89C51单片机……………………………..…………6
3.1.2振荡器电路的设计……………………………….…..……..10
3.1.3复位电路的设计…………………………………...…..……12
3.2语音输出电路设计……………………………………......…….15
3.2.1关于语音芯片………………………………….…......……..15
3.2.2录音、放音电路设计………………………..……..….……20
3.3LCD1602液晶显示电路设计………………..…………….……22
3.3.1LCD液晶显示流程图………………………………….……22
3.3.2LCD1602液晶显示电路设计…………………………...…..23
4软件设计……………………………………………………..….……24
4.1主控程序的设计……………………………………….…….….24
4.2程序清单及元件清单………………………………….….…….25
5测试方法与课程设计小结…………………………………..……….30
致谢…………………………………………………………….……….31
参考文献…………………………………………………………....…..32
附录…………………………………………………………………..…34
1设计任务和要求
设计任务:
(1)应用AT89S51单片机设计单片机实现对语音芯片ISD4003的控制;
(2)硬件设计部分,根据设计的任务选定合适的单片机,根据控制对象设计接口电路。
设计的单元电路必须有工作原理,器件的作用,分析和计算过程;
(3)软件设计部分,根据电路工作过程,画出软件流程图,根据流程图编写相应的程序,进行调试并打印程序清单;
(4)原理图设计部分,根据所确定的设计电路,利用Protel99se和Protues工具软件绘制电路原理图。
设计要求:
(1)主控部分:
选择单片机为核心元件构成系统。
(2)语音部分:
选择ISD4003系列语音芯片,作为报站器系统设计的基础。
(3)硬件设计:
供电部分、录音电路、ISD4003基本电路部分、放音电路、单片机系统部分、按键输入部分和提示灯部分。
2方案论证
2.1方案比较
2.1.1方案一
公交车自动报站器的设计,模拟定时,将计数值与预置值对比,即可确定报站时刻,达到准确自动的目的。
以AT89C51为主控芯片,对外来脉冲计数,结合语音芯片ISD4003输出语音。
系统由脉冲检测、脉冲计数、CPU控制、控制信号、语音芯片、输出显示等组成。
原理框图如图2.1所示。
图2.1方案1原理框图
(1)脉冲检测:
设计为模拟到站脉冲,即把预值作为到站脉冲进行中断定时响应。
(2)脉冲计数:
光电耦合器的信号进入C51后,采用中断方式对脉冲计数。
外部晶振12MHz。
(3)CPU控制:
程序中将计数值于预置值进行比较,判断是否到站,当到站时就输出信号控制语言芯片进行报站。
(4)控制按键:
用于手动控制到站后的清零。
(5)语言芯片:
由专用语音芯片ISD4003组成,可擦写,便于在不同公交线上使用。
(6)预置存储:
采用预先设置好在程序里的方式对站点信息存储。
(7)LED液晶:
显示到站站台名称。
2.1.2方案二
利用8051单片机作为CPU来进行总体控制,当汽车到达某站时,汽车司机通过键盘来控制本系统进行工作,并且,系统将使用状态指示电路,向司机指示出当前的行驶方向及站号(如与实际方向不符,司机可通过键盘来调整)。
原理图框图如图2.2所示。
图2.2方案二原理框图
本系统使用8051作为CPU,由CPU来控制语音合成芯片TC8830AF,使其工作在CPU控制模式下。
当系统进行语音再生时,由CPU控制语音合成电路中的语音芯片来读取其外接的存储器内部的语音信息,并合成语音信号,再通过语音输出电路,进行语音报站和提示。
CPU同时通过程序读取汉字信息,送入LED点阵显示电路来进行汉字提示。
当系统进行语音录制时,语音信号通过语音输入电路输入给语音合成电路中的语音合成芯片,由语音合成芯片进行数据处理,并将生成的数字语音信息存储到语音存储芯片中,从而建立语音库。
2.2方案选择
将方案一与方案二进行比较,方案二是采用8051单片机控制,通过键盘来控制报站时刻,并不完全符合设计的要求,它仍然需要操作员员手动控制,所以本课题决定选用方案一,它使用AT89C51作为主控制芯片,通过对里程的计数来控制报站时刻,完全无需人工介入,选用的语音芯片是美国ISD公司的ISD4003,该芯片与其它语音芯片相比较,其语音音质好,录放时间长。
3系统硬件设计
3.1主控电路设计
公交车报站系统主要由四个部分组成,即主控电路、时钟电路、语音电路以及电源电路。
图3.1主控电路原理图
3.1.1关于AT89C51单片机
AT89C51单片机的结构框图如图3.2所示。
它主要由下面几个部分组成:
1个8位中央处理单元(CPU)、片内Flash存储器、片内RAM、4个8位的双向可寻址I/O口、1个全双工UART(通用异步接收发送器)的串行接口、2个16位的定时器/计数器、多个优先级的嵌套中断结构,以及一个片内振荡器和时钟电路。
在AT89C51单片机结构中,最显著的特点是内部含有Flash存储器,而在其他方面的结构,则和Inter公司的8051的结构没有太大的区别。
图3.2AT89C51单片机的结构框图
(1)主要性能
与MCS-51兼容;4K字节可编程闪烁存储器;1000次写/擦循环;数据保留时间10年;全静态工作:
0Hz-24Hz;三级程序存储器锁定;128*8位内部RAM;32可编程I/O线;;两个16位定时器/计数器;6个中断源;可编程串行通道;片内振荡器和时钟电路
另外,AT89C51是用静态逻辑来设计的,其工作频率可下降到0Hz,并提供两种可用软件来选择的省电方式——空闲方式(IdleMode)和掉电方式(PowerDownMode)。
在空闲方式中,CPU停止工作,而RAM、定时器/计数器、串行口和中断系统都继续工作。
在掉电方式中,片内振荡器停止工作,由于时钟被“冻结”,使一切功能都暂停,故只保存片内RAM中的内容,直到下一个硬件复位为止。
(2)引脚功能说明
图3.3AT89C51引脚图
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.0RXD(串行输入口);P3.1TXD(串行输出口);P3.2/INT0(外部中断0);P3.3/INT1(外部中断1);P3.4T0(记时器0外部输入);P3.5T1(记时器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.4所示,由一个单级反相器组成。
XTAL1为反相器的输入,XTAL2为反相器的输出。
可以利用它内部的振荡器产生时钟,只要在XTAL1和XTAL2引脚上外接一个晶体及电容组成的并联谐振电路,便构成一个完整的振荡信号发生器,如图3.5示,此方法称为内部方式。
另一种使用方法如图3.5示,由外部时钟源提供一个时钟信号到XTAL1端输入,而XTAL2端浮空。
在组成一个单片机应用系统时,多数采用图3.5所示的方法,这种方式的结构紧凑,成本低廉,可靠性高。
振荡器的等效电路如图3.6上部所示。
在图中给出了外接元件,即外接晶体及电容C1,C2,并组成并联谐振电路。
在电路中,对电容C1和C2的值要求不是很严格,如果用高质的晶振,则不管频率为多少,C1,C2通常都选择30pF。
有时,在某些应用场合,为了降低成本,晶体振荡器可用陶瓷振荡器代替。
如果使用陶瓷振荡器,则电容C1,C2的值取47pF。
图3.4AT89C51单片机内部振荡器电路
图3.5外部时钟接法
图3.6片内振荡器等效电路
通常,在单片机中对所使用的振荡晶体的参数要求:
ESR(等效串联电阻):
根据所需频率按图3.6选取。
C0(并联电容):
最大7.0pF。
CL(负载电容):
30pF+3pF。
其误差及温度变化的范围要按系统的要求来确定。
图3.7ESR与频率的关系曲线
在本设计中,采用的是内部方式,即如图3.6所示,在XTAL1和XTAL2引脚上外接一个12MHZ的晶振及两个30pF的电容组成。
3.1.3复位电路的设计
89系列单片机与其他微处理器一样,在启动的时候都需要复位,使CPU及系统各部件处于确定的初始状态,并从初始状态开始工作。
89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。
当系统处于正常工作状态时,且振荡器稳定后,如RST引脚上有一个高电平并维持2个机器周期(24个振荡周期),则CPU就可以响应并将系统复位。
复位时序如图3.8所示,因外部的复位信号是与内部时钟异步的,所以在每个机器周期的S5P2都对RST引脚上的状态采样。
当在RST端采样到“1”信号且该信号维持19个振荡周期以后,将ALE和/PSEN接成高电平,使器件复位。
在RST端电压变低后,经过1-2个机器周期后退出复位状态,重新启动时钟,并恢复ALE和/PSEN的状态。
如果在系统复位期间将ALE和/PSEN引脚拉成低电平,则会引起芯片进入不定状态。
图3.8内部复位定时时序
(1)手动复位
手动复位需要人为在复位输入端RST上加入高电平。
一般采用的办法是在RST端和正电源VCC之间接一个按钮。
当人为按下按钮时,则VCC的+5V电平就会直接加到RST端。
由于人的动作很快也会使按钮保持接通达数十毫秒,所以,保证能满足复位的时间要求。
手动复位的电路如图3.9所示。
图3.9手动复位电路
(2)上电复位
AT89C51的上电复位电路如图3.10所示,只要在RST复位输入引脚上接一电容至VCC端,下接一个电阻到地即可。
对于CMOS型单片机,由于在RST端内部有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至1uF。
上电复位的过程是在加电时,复位电路通过电容加给RST端一个短暂的高电平信号,此高电平信号随着Vcc对电容的充电过程而逐渐回落,即RST端的高电平信号必须维持足够长的时间。
上电时,Vcc的上升时间约为10ms,而振荡器的起振时间取决于振荡频率,如晶振频率为10MHz,起振时间为1ms;晶振频率为1MHz,起振时间则为10ms。
在图3.9的复位电路中,当Vcc掉电时,必然会使RST端电压迅速下降到0V以下,但是,由于内部电路的限制作用,这个负电压将不会对器件产生损害。
另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“1”态。
如果系统在上电时得不到有效的复位,则在程序计数器PC中将得不到一个合适的初值,因此,CPU可能会从一个未被定义的位置开始执行程序。
图3.10上电复位电路
(3)复位后寄存器的状态
当系统复位时,内部寄存器的状态如表3.1所列,即在SFRS中,除了端口锁存器、堆栈指针SP和串行口的SBUF外,其余的寄存器全部清0,端口锁存器的复位值为0FFH,堆栈指针值为07H,SBUF内为不定值。
内部RAM的状态不受复位的影响,在系统上电时,RAM的内容是不定的。
在本设计中复位电路采用的是手动复位,即如图3.10所示。
表3.1各特殊功能寄存器的复位值
专用寄存器
复位值
专用寄存器
复位值
PC
0000H
TCON
00H
ACC
00H
B
00H
PSW
00H
SP
07H
DPTR
0000H
P0-P3
FFH
IP
×××00000B
IE
0××00000B
TMOD
00H
TH0
00H
TL0
00H
TH1
00H
TL1
00H
SCON
00H
SBUF
不定
PCON(CHMOS)
0×××0000B
3.2语音输出电路设计
3.2.1关于语音芯片
(1)ISD—Winbond语音芯片概述
美国ISD(InformationStorsgeDevices)公司是专业研制和生产先进的半导体语音芯片的著名厂家和领导者,其开发的高密度“多级”存储方法称作“ChipCorder”的专业技术,可以在一个存储单元存储256级的不同电平,即存储相同信息仅需要用传统存储技术1/8的存储空间。
该公司与1998年12月被台湾华邦(Winbond)并购,1990年改名为WECA(WinbondElectronicCorprationAmerican),但保留其ISD名称和标识,这个合并将把ISD公司领先的信息存储、语音录放技术和强大的用户群与Winbond公司的高效率的制造能力和分布于全时间的营销能力结合起来。
ISD系列语音芯片有ISD1100系列、ISD1200系列、ISD1400系列、ISD2500系列、ISD4000系列和ISD5000系列几种。
ISD1100系列中有10s和12s的单片声音录放器件ISD1110和ISD1112。
ISD1200系列中有10s和12s的单片声音录放器件ISD1210和ISD1212。
ISD1400系列中有16s和20s的单片声音录放器件ISD1416和ISD1620。
ISD1800系列中有8s、10s、12s和16s的单片单段声音录放器件ISD1810。
ISD2500系列中有32s、40s、48s、64s和60s、75s、90s、120s的单片声音录放器件ISD2532、ISD2540、ISD2548、ISD2564和ISD2560、ISD2575、ISD2590、ISD120。
ISD4000系列中有120s、150s、180s和240s的单片声音录放器件ISD4001、ISD4002、ISD4003和ISD4004。
ISD5000系列中有4min、5min、6min和8min的单片声音录放器件ISD5008。
其中ISD1100系列、ISD1200系列和ISD1400系列都是独立使用;ISD2500系列是手动切换或则与微控制器兼容,放音时可以用边沿或电平进行触发;ISD4000系列、ISD5000系列都带有微控制器SPI或Microwire串行接口。
(2)语音芯片ISD4003
ISD4000系列单片声音录放器件是用CMOS工艺实现的高语音质量、3V工作电压的集成电路芯片,特别适用于移动电话和各种便携式产品。
按录放时间又分ISD4002、ISD4003和ISD4004三个子系列。
片内集成有振荡器、抗混叠滤波器、平滑滤波器、自动静音电路、音频放大器和高密度多级Flash存储阵列。
这个系列的新片要求用于微处理器或微控制器系列,通过串行外围接口SPI或Microwire串行接口进行寻址和控制。
录音数据被存放方法是通过ISD的多级存储专利技术实现的,用声音和声频信号的自然形式直接存放在故态存储器中,从而提供高质量回放语音的保真度。
ISD4003的主要性能及其特点:
单片实现声音录放功能;采用单一3V工作电压;低功耗:
典型的录音工作电流为25mA;典型的放音工作电流为15mA,典型待机节能状态电流为1uA;单片录放时间为8min、10min、12min和16min;高质量自然的声音/音频回放;自动静音电路可以在无声状态时消除背景噪音;不需要考虑实现算法;具有微控制器SPI或Microwire串行接口;可以对多段信息寻址控制;可以通过SPI或Microwire控制寄存器控制功耗;语音数据断电不丢失,可以保存100年;允许反复录音10万次;片上带有时钟源;有PDIP、SOIC、TSOP和CSP多种封装形式;使用温度范围有商业用扩展型和工业用两种可供选择:
商业品扩展型:
-20~+70℃,工业品:
-40~+85℃。
ISD4003外部引脚及其说明:
电源(VCCA,VCCD):
为使噪声最小,芯片的模拟和数字电路使用不同的电源总线,并且分别引到外封装的不同管脚上,模拟和数字电源端最好分别走线,尽可能在靠近供电端处相连,而去耦电容应尽量靠近器件;
地线(VSSA,VSSD):
芯片内部的模拟和数字电路也使用不同的地线;
同相模拟输入(ANAIN+):
这是录音信号的同相输入端。
输入放大器可用单端或差分驱动。
单端输入时,信号由耦合电容输入,最大幅度为峰峰值32mV,耦合电容和本端的3KΩ电阻输入阻抗决定了芯片频带的低端截止频率。
差分驱动时,信号最大幅度为峰峰值16mV,为ISD33000系列相同;
反相模拟输入(ANAIN-):
差分驱动时,这是录音信号的反相输入端。
信号通过耦合电容输入,最大幅度为峰峰值16mV;
音频输出(AUDOUT):
提供音频输出,可驱动5KΩ的负载;
片选(SS):
此端为低,即向该ISD4003芯片发送指令,两条指令之间为高电平;
串行输入(MOSI):
此端为串行输入端,主控制器应在串行时钟上升沿之前半个周期将数据放到本端,供ISD输入;。
串行输出(MISO):
ISD的串行输出端。
ISD未选中时,本端呈高阻态;
串行时钟(SCLK):
ISD的时钟输入端,由主控制器产生,用于同步MOSI和MISO的数据传输。
数据在SCLK上升沿锁存到ISD,在下降沿移出ISD;
中断(/INT):
本端为漏极开路输出。
ISD在任何操作(包括快进)中检测到EOM或OVF时,本端变低并保持。
中断状态在下一个SPI周期开始时清除。
中断状态也可用RINT指令读取。
OVF标志----指示ISD的录、放操作已到达存储器的未尾。
EOM标志----只在放音中检测到内部的EOM标志时,此状态位才置;
行地址时钟(RAC):
漏极开路输出。
每个RAC周期表示ISD存储器的操作进行了一行(ISD4003系列中的存贮器共2400行)。
该信号175ms保持高电平,低电平为25ms。
快进模式下,RAC的218.75μs是高电平,31.25μs为低电平。
该端可用于存储管理技术;
外部时钟(XCLK):
本端内部有下拉元件。
芯片内部的采样时钟在出厂前已调校,误差在+1%内。
商业级芯片在整个温度和电压范围内,频率变化在+2.25%内。
工业级芯片在整个温度和电压范围内,频率变化在-6/+4%内,此时建议使用稳压电源。
若要求更高精度,可从本端输入外部时钟(如前表所列)。
由于内部的防混淆及平滑滤波器已设定,故上述推荐的时钟频率不应改变。
输入时钟的占空比无关紧要,因内部首先进行了分频。
在不外接地时钟时,此端必须接地;
自动静噪(AMCAP):
当录音信号电平下降到内部设定的某一阈值以下时,自动静噪功能使信号衰弱,这样有助于养活无信号(静音)时的噪声。
通常本端对地接1mF的电容,构成内部信号电平峰值检测电路的一部分。
检出的峰值电平与内部设定的阈值作比较,决定自动静噪功能的翻转点。
大信号时,自动静噪电路不衰