嵌入式公交汉字显示系统的设计与实现
1 绪论
1.1 课题背景与意义
随着现代社会的建设,公共汽车越来越为大众所喜爱,不仅仅可以在低消费下达到目的地,同时也能很方便的省去很多的自驾麻烦。是打工族和学生族的常用交通工具。而随着人们使用公共汽车的普遍,车辆上一般都相当拥挤,造成许多的乘客未到站先下车或者推迟下车的情况,也加重了售票员的劳动强度。随着信息社会的到来,单片机广泛的应用于工业控制系统、数据采集系统、自动测试系统、声学领域和微机技术等广阔的领域。而利用单片机对语音芯片进行控制可以达到语音报站的效果。因此,了解并掌握单片机智能控制技术工作原理及特性是非常重要的。
在一些自动语音报站系统中,广泛采用的是通过使用语音芯片进行设计电路,然后通过MIC录音电路以及功放电路进行语音的录制与播放,同时通过单片机对语音芯片进行选择以及功能的控制,从而完成语音报站。但是由于传统的语音芯片的外围电路比较复杂,所以实现复杂、易受干扰、不易控制且精度不高。因此,本系统用一种比较昂贵且现代社会才刚刚常用的一种ISD4004系列语音芯片,不需复杂的外围电路和A/D转换电路能直接与单片机完成语音的录制和播放,实现方便、精度高,可根据不同需要用于各种场合;为了提高对语音芯片的认识和了解,尤其是对ISD4004系列的深入研究以及其用法与用途,基于实用、广泛和典型的原则而设计了本系统。
本设计基于ISD4004芯片设计的公交车汉字显示报站系统,介绍了STC89C52RC单片机语音汉字显示控制系统,主要是通过单片机组成的应用系统
1
来完成对语音的录制以及播放,汉字的LED点阵显示以及语音播放的控制,从而实现了单片机对语音汉字的控制。在正常情况下,通过ISD4004对语音报站信息进行播放以及利用LED点阵进行相关提示汉字的显示,ISD4004芯片采用CMOS技术,内含振荡器、防混淆滤波器、平滑滤波器、音频放大器、自动静噪及高密度多电平闪烁存贮陈列。芯片设计是基于所有操作必须由微控制器控制,操作命令可通过串行通信接口(SPI或Microwire)送入。通过单片机对报站语音进行采集处理,同时设定相关汉字显示信息;当到站按键按下时,该系统会发出到站站名及相关语音声音,同时让LED点阵进行汉字提示信息的显示,报站语音以及汉字显示结束时等待下一个到站按键的触发。
1.2 选题的目的与研究内容
首先是设计出一种的方便实用的公交车汉字显示报站系统。单片机智能控制技术广泛地应用于工业控制、智能语音等方面,ISD4004 系列工作电压3V,单片录放时间8至16分钟,音质好,适用于移动电话及其他便携式电子产品中。芯片采用多电平直接模拟量存储技术, 每个采样值直接存贮在片内闪烁存贮器中,因此能够非常真实、自然地再现语音、音乐、音调和效果声,避免了一般固体录音电路因量化和压缩造成的量化噪声和\金属声\。采样频率可为 4.0,5.3,6.4,8.0kHz,频率越低,录放时间越长,而音质则有所下降,片内信息存于闪烁存贮器中,可在断电情况下保存100年(典型值),反复录音10 万次。而本系统则基本完成了设计的任务要求,通过STC89C52RC单片机语音录放控制系统,主要是通过单片机组成的应用系统来完成对语音的采集、语音的存储处理、提示汉字的显示以及语音播放的控制,从而实现了单片机对公交车到站的语音汉字显示功能。
其次,为了联系实际,用大学所学的理论来进行实际工作,将知识转变为生产力。通过大学本科四年的学习,已经初步具有了一定的分析和设计能力。通过本次设计将大学所学的知识进行系统地梳理,概括和总结,并综合运用这些所学的知识。
2
公共汽车为外出的人们提供了方便快捷的服务,而公共汽车的报站直接影响服务的质量。传统由乘务人员人工报站,该方式因其效果太差和工作强度太大,在很多大城市已经被淘汰。近年来,随着科学技术的日益发展和进步,微型计算机技术已经在许多领域得到了广泛的应用。在声学领域,微机技术与各种语音芯片相结合,即可完成语音的合成技术,使得汽车报站器的实现成为可能,从而为市民提供了更加人性化的服务。鉴于传统公交车报站系统的不足之处,结合公交车辆的使用特点及实际营运环境,设计了一种由单片机控制的公交车语音报站显示系统 。
1.3 国内的的动态发展趋势
当今社会,公交车是大多数城市居民出行的重要工具之一,但就公交车目前的报站系统来看很难满足大家的要求。现在公交车使用普遍的还是人工按键报站系统,此系统存在以下二个不可忽略的弊端:
(1)存在隐形的安全隐患,因为每次驾驶员都要在行驶时对报站器进行操作以进行报站,而车辆在进出站的时候路面情况都很复杂,因此给行驶中的车辆和行人带来一定的安全隐患。
(2)报站不够准确,因为驾驶员在行驶的过程中操作报站系统时时常会忘按键或者按错键,有时在调整报站系统时会连续报站,这样会给不熟悉路线的乘客带来不便。
目前我国的大部分城市公交自动报站的方式主要有三种:
(1)人工进行报站,一般是由当地的乘务人员用方言来进行报站,这样会给外地乘客带来很大的不便,但这种方式已经被淘汰。
(2)半自动报站,这种报站方式是现在运用普遍的,但由于这种报站系统需要驾驶员来控制,故会有误报现象且还存在安全隐患。
(3)自动报站系,此报站方式已智能化,即无需驾驶员得参与,系统将自动识别站点?虽然比较准确,但也容易出现问题且价格昂贵,所以这种方式运用
3
的不是很普遍。
虽然国能外都在研究公交自动报站系统,但采用的技术手段不一样,如:采用GPS定位系统自动报站等等。这些开发成本较高,且难以实现普及,特别是一些中小城市难以负担,故开发一种综合性强的、且价格交低、易于实现普及的系统是公交事业迫切需要的。
4
2 μC/OS-II操作系统移植
μC/OS-II 的前身是μC/OS,最早出自于1992 年美国嵌入式系统专家Jean J.Labrosse 在《嵌入式系统编程》杂志的5 月和6 月刊上刊登的文章连载,并把μC/OS 的源码发布在该杂志的B B S 上。μC/OS-II 是专门为计算机的嵌入式应用设计的, 绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。
2.1 μC/OS-II操作系统的工作原理
μC/OS-II是一种基于优先级的可抢先的硬实时内核。
要实现多任务机制,目标CPU必须具备一种在运行期更改PC的途径,否则无法做到切换。一般CPU都允许通过类似JMP,CALL这样的指令来间接的修改PC。多任务机制的实现也正是基于这个出发点,使用CALL指令或者软中断指令来修改PC,主要是软中断。但在一些CPU上,并不存在软中断这样的概念,所以,在那些CPU上使用几条PUSH指令加上一条CALL指令来模拟一次软中断的发生。
在μC/OS-II里,每个任务都有一个任务控制块(Task Control Block),这是一个比较复杂的数据结构。在任务控制块的偏移为0的地方,存储着一个指针,它记录所属任务的专用堆栈地址。在μC/OS-II内,每个任务都有自己的专用堆栈,彼此之间不能侵犯。一般做法是把他们申明成静态数组,且要申明成OS_STK类型。当任务有自己的堆栈,就可以将每一个任务堆栈在那里记录到前面谈到的任务控制快偏移为0的地方。每当发生任务切换,系统必然会先进入一个中断,这一般是通过软中断或者时钟中断实现。然后系统会先把当前任务的堆栈地址保存起来,仅接着恢复要切换的任务的堆栈地址。由于任务的堆栈里一定存的是地址,就达到修改PC为下一个任务的地址的目的。
5