基于以AT89S52单片机和语音芯片ISD4004为核心公交车自动报站系统.docx
《基于以AT89S52单片机和语音芯片ISD4004为核心公交车自动报站系统.docx》由会员分享,可在线阅读,更多相关《基于以AT89S52单片机和语音芯片ISD4004为核心公交车自动报站系统.docx(49页珍藏版)》请在冰点文库上搜索。
物理与电子信息学院
课程设计报告书
姓名:
班级:
08电信(本)
学号:
时间:
2010年12月
目录
1设计任务和要求 2
2方案论证 2
2.1方案比较 2
2.1.1方案一 3
2.1.2方案二 3
2.2方案选择 4
3系统硬件设计 4
3.1主控电路的设计 5
3.1.1关于AT89C51单片机 5
3.1.2振荡器电路的设计 7
3.1.3复位电路的设计 9
3.2DS1302时钟电路 12
3.3DS18B20数字温度传感器 13
3.4语音输出电路的设计 15
3.4.1关于语音芯片 15
3.4.2录音、放音电路的设计 20
3.5LCD12864液晶显示的设计 22
4软件设计 23
4.1主控程序的设计 23
4.2程序清单 24
5系统测试结果及分析 26
5.1测试方法 26
5.2测试结果及分析 27
6结束语与心得体会 27
参考文献 27
附录1 28
附录2 44
2
设计题目
公交车自动报站器的设计
设计要求
设计一种基于以AT89S52单片机和语音芯片ISD4004为核心公交车自动报站系统。
LCD12864液晶显示时间以及车内的温度,实时显示年、月、日、星期、时、分、秒,采用按键式实现时钟对表和快慢调整。
同时,每到一站会有语音提示和标语提示。
设计过程
摘要:
本次课程设计以实现公交车的语音自动报站,即在进站、出站时候自动播报语音提示信息及服务用语,同时利用LCD电路进行汉字显示。
本设计要求利用AT89C52作为主控芯片完成主控电路的设计,辅助电路要求包括语音电路、汉字点阵显示电路、时钟电路、电源电路等。
本系统使用了专门的时钟芯片DS1302,读出其时间在LCD12864上显示,并能通过按键对其进行调时和校准。
温度使用DS18B20数字温度传感器,以显示车内的温度。
语音芯片使用ISD4004-8MP,ISD4004-8MP是使用很广泛的语音芯片。
该芯片具有很强大的功能,可容纳300个站点信息和8分钟语
音广告信息。
关键字:
AT89S52单片机、DS1302,LCD12864,DS18B20,公交报站
1.设计任务和要求
(1)应用AT89S52单片机设计单片机实现对DS1302和DS18B20以及语音芯片ISD4004的控制
(2).选用LCD12864显示,实时显示年、月、日、星期、时、分、秒,采用按键式实现时钟对表和快慢调整;
(3)硬件设计部分,根据设计的任务选定合适的单片机,根据控制对象设计接口电路。
设计的单元电路必须有工作原理,器件的作用,分析和计算过程;
(4)软件设计部分,根据电路工作过程,画出软件流程图,根据流程图编写相应的程序,进行调试并打印程序清单;
(5)原理图设计部分,根据所确定的设计电路,利用Protel99se和
Protues工具软件绘制电路原理图。
2.方案论证
2.1方案比较
2.1.1方案一
放音电路
语音芯片
公交车自动报站器的设计,对车轮轴的转角的脉冲进行计数,将计数值与预置值对比,即可确定报站时刻,达到准确自动的目的。
以AT89C52为主控芯片,对外来脉冲计数,结合语音芯片ISD4004输出语音。
系统由脉冲检测、脉冲计数、CPU控制、控制信号、语音芯片、输出显示等组成。
原理框图如图2.1所示。
控制信号
CPU控制
输出显示
脉冲检测
脉冲计数
图2.1方案1原理框图
(1)脉冲检测:
该系统关键是对转轴所转过的圈数进行计数,考虑到车辆将在复杂的环境中运行,故采用可靠的霍尔元件DN6848作为信号的采集装置,再经光电耦合器4N25输入给单片机。
(2)脉冲计数:
光电耦合器的信号进入C51后,采用中断方式对脉冲计数。
外部晶振12MHz。
(3)CPU控制:
程序中将计数值于预置值进行比较,判断是否到站,当到站时就输出信号控制语言芯片进行报站。
(4)控制按键:
用于手动控制、手动调整、预置值的输入等
(5)语言芯片:
由专用语音芯片ISD4004组成,可擦写,便于在不同公交线上使用。
(6)输出显示:
LCD液晶汉字显示。
(7)预置存储:
采用两种方式存储,一种是在烧写器上将数据写入,另一种是在车上,单片机处于输入状态,车辆行驶一遍,将站与站之间的脉冲数写入片内。
2.1.2方案二
利用8051单片机作为CPU来进行总体控制,当汽车到达某站时,汽车
34
LED点
阵显示电路
司机通过键盘来控制本系统进行工作,并且,系统将使用状态指示电路,向司机指示出当前的行驶方向及站号(如与实际方向不符,司机可通过键盘来调整)。
原理图框图如图2.2所示。
语音合成电路
8051小系统
语音输入输出电路
键盘
状态指示电路
图2.2方案二原理框图
本系统使用8051作为CPU,由CPU来控制语音合成芯片TC8830AF,使其工作在CPU控制模式下。
当系统进行语音再生时,由CPU控制语音合成电路中的语音芯片来读取其外接的存储器内部的语音信息,并合成语音信号,再通过语音输出电路,进行语音报站和提示。
CPU同时通过程序读取汉字信息,送入LED点阵显示电路来进行汉字提示。
当系统进行语音录制时,语音信号通过语音输入电路输入给语音合成电路中的语音合成芯片,由语音合成芯片进行数据处理,并将生成的数字语音信息存储到语音存储芯片中,从而建立语音库。
2.2方案选择
将方案一与方案二进行比较,方案二是采用8051单片机控制,通过键盘来控制报站时刻,并不完全符合设计的要求,它仍然需要操作员员手动控制,所以本课题决定选用方案一,它使用AT89C51作为主控制芯片,通过对里程的计数来控制报站时刻,完全无需人工介入,选用的语音芯片是美国ISD公司的ISD4004,该芯片与其它语音芯片相比较,其语音音质好,录放时间长。
3.系统硬件设计
公交车报站系统主要由四个部分组成,即主控电路、时钟电路、语音电
路以及LCD液晶汉字显示电路。
各部分电路的设计在本章中做了详细的说明。
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的结构没有太大的区别。
外部中断
器1
定时
ETC
中断控
片内
RA
片内Flash存储
计数器输入
CP
振荡
总线控
4I/O端口
串行端
(1)主要性能
P0P2P1P3
地址/数
图3.1AT89C51单片机的结构框图
TXD
与MCS-51兼容;4K字节可编程闪烁存储器;1000次写/擦循环;数据保留时间10年;全静态工作:
0Hz-24Hz;三级程序存储器锁定;128*8位内部RAM;32可编程I/O线;;两个16位定时器/计数器;6个中断源;可编程串行通道;片内振荡器和时钟电路
另外,AT89C51是用静态逻辑来设计的,其工作频率可下降到0Hz,并提供两种可用软件来选择的省电方式——空闲方式(IdleMode)和掉电方式
(PowerDownMode)。
在空闲方式中,CPU停止工作,而RAM、定时器/计数器、串行口和中断系统都继续工作。
在掉电方式中,片内振荡器停止工作,由于时钟被“冻结”,使一切功能都暂停,故只保存片内RAM中的内容,直到下一个硬件复位为止。
(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.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.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。
内部定时
VCC
XTAL1
400W
D1
Rf
Q1
D2
/PD
Q2
XTAL2
Q3
Q4
图3.3 AT89C51单片机内部振荡器电路
外部振荡信号
NC
CMOS门
XTAL2XTAL1GND
图3.4 外部时钟接法
VCC /PD
内部定时
Rf
GND
89系列单片机
XTAL1
XTAL2
石英晶体或陶瓷振荡器
C1C2
图3.5片内振荡器等效电路
通常,在单片机中对所使用的振荡晶体的参数要求:
ESR(等效串联电阻):
根据所需频率按图366选取。
C0(并联电容):
最大7.0pF。
CL(负载电容):
30pF+3pF。
其误差及温度变化的范围要按系统的要求来确定。
600
500
400
300
200
100
0 4 8 12 16
图3-6 ESR与频率的关系曲线
在本设计中,采用的是内部方式,即如图3.5所示,在XTAL1和
XTAL2引脚上外接一个12MHZ的晶振及两个30pF的电容组成。
3.1.3复位电路的设计
89系列单片机与其他微处理器一样,在启动的时候都需要复位,使CPU及系统各部件处于确定的初始状态,并从初始状态开始工作。
89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。
当系统处于正常工作状态时,且振荡器稳定后,如RST引脚上有一个高电平并维持2个机器周期(24个振荡周期),则CPU就可以响应并将系统复位。
复位时序如图
3.7所示,因外部的复位信号是与内部时钟异步的,所以在每个机器周期的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:
ALE
/PSEN:
P0
34
INSTADDRINSTADDRINSTADDRINSTADDRINSTADDRINST
图3.7内部复位定时时序
(1)手动复位
手动复位需要人为在复位输入端RST上加入高电平。
一般采用的办法是在RST端和正电源VCC之间接一个按钮。
当人为按下按钮时,则VCC的
+5V电平就会直接加到RST端。
由于人的动作很快也会使按钮保持接通达数十毫秒,所以,保证能满足复位的时间要求。
手动复位的电路如图3.8所示。
Vcc
Vcc
44
8.2k
+
10uF
RST
AT89C51
GND
图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可能会从一个未被定义的位置开始执行程序。
Vcc
Vcc
10uF+
AT89C51
RST
8.2k
GND
图3.9上电复位电路
(3)复位后寄存器的状态
当系统复位时,内部寄存器的状态如表3.1所列,即在SFRS中,除了端口锁存器、堆栈指针SP和串行口的SBUF外,其余的寄存器全部清0,端口锁存器的复位值为0FFH,堆栈指针值为07H,SBUF内为不定值。
内部RAM的状态不受复位的影响,在系统上电时,RAM的内容是不定的。
在本设计中复位电路采用的是手动复位,即如图3.8所示。
表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.2DS1302时钟电路
时钟芯片DS1302与外围电路的连接:
与MCS-51单片机的接口是由3条线来完成的,AT89S52单片机的P1.0与时钟芯片的数据传输端I/O相连,P1.1用来作为DS1302输入时钟SCLK控制端,P1.2控制DS1302的复位输入端RST。
DS1302的X1和X2管脚外接标DS1302的复位引脚通过把RST输
入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:
首先,
40
VCC
9
8
7
6
5
4
3
2
1
DS1
数数数*4
DS2
□数数*4
+5V
RP1RES-8
C4104
Y2
K1
+5V1
2
3
4
U4
CRYSTAL
X1SCLKX2IOGNDRST
DS1302(8)
VCCV1CC27
8
U1
6
5
K2
1
2
3
4
5
6
7
8
13
1212
P10P11P12P13P14P15P16P17
INT1INT0
T1T0
P00P01
39
38
37
+5V 19
1
2
3
4
5
6
7
8
9
U3
GDIR
A1A2A3A4A5A6
B117B
18A
P02
B216C
P0335
36
B315D
P04P05P06P07
B414E
34
33
32
B513F
A7
B612G
K3
1
2
13
U2A
&
P20211
A8 B8
74LS245
B711H
P21222
233
C1
22PFC2
22PF
15
74S15 14
+5V
31
P22
P23244
P24255
P25
266
Y1
CRYSTAL
EA/VPP26277
+5V
19
18
9
17
16
P27
288
X1X2
RESETRXD
10
RDALE/P30
TXD11
K4
WRPSEN
29
AT89C51
R1
100
C322UF
R2
1K
a a a afgbfgbfgbfgb
edcedcedcedcdp dp dp dp
a a a afgbfgbfgbfgb
edcedcedcedcdp dp dp dp
1
12
11A
7B
4C
2D
1E
10F
5G
3H
abcdefg
dp
2
9
3
8
4
6
5
12
11A
7B
4C
2D
1E
10F
5G
3H
abcdefg
dp
6
9
7
8
8
6
RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供了终止单字节或多字节数据的传送手段。
当RST为高电平时,所有的数据传送被初始化,允许对DS1