




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
密级:公开 基于单片机的遥控公交车报站系统The System of Distant Control Bus Station Based on Single Chip Controller学 院:信息科学与工程学院专 业 班 级:电子信息工程1102班学 号: *学 生 姓 名: *指 导 教 师: * (工程师 )2015年 6 月摘 要随着科学技术的发展和时代的进步,公交车在日益成为城市交通中一道亮丽的风景时,为外出的人们提供了方便快捷的服务。但是,随着我国各大城市公交公司的人员精减,每辆公交车上只配备了一个司机,并进行无人售票,这对公交运输提出更高的要求。为了保证公交系统的服务质量,有必要对自动化的公交语音报站系进行进一步的完善。因而,无人售票公交车在街头多起来了,语音报站器也被广泛使用,这在相当大的程度上免除了乘务人员沿途报站的麻烦,给许多不熟悉公交线路的乘客带来了方便。公共汽车为外出的人们提供了方便快捷的服务,而公共汽车的报站则直接影响服务的质量.毕业设计是理工专业毕业测试的特色,旨在将专业技术与实际社会需求相结合。为了能体现毕业设计这一追求目标,本次设计的题目被定为“基于单片机的遥控公交车报站系统”,设计的技术难度适中,技术覆盖面广,涉及了单片机并行通信、中断、定时技术以及数模转换等多项功能。经过市面上各个相似产品的比对,遥控模块选用了最为常见的红外接收头1838和车载mp3遥控器。语音模块中,ISD1700语音模块凭借着拥有简洁易操作的独立工作模式,成为了本次设计的首选。显示模块选择的是12864液晶显示模块。本次设计的原理图是在 Altium Designer Summer 09中绘制而成的。在反复多次的软件调试和现场实践检测下,经过一个学期的努力,报站系统达到了研究设计要求,成功完成了预期设计目标。关键词:公交车报站;红外线遥控;ISD1700;12864;II AbstractThe design of graduate is an special character of science and engineer specialty ,which point to test ability of graduate. The design of graduate is an special character of science and engineer specialty ,which point to test ability of graduate. I have chosen the system of distant control bus station as my theme.To finish perfectly this design seems to be a excellent chance contributing to our ability using technology of MCU. During the early period of preparation ,I take efforts looking up a considerate amount of information that is relevant to my theme. Having compared several similar product, 1838 and Infrared remote controller took part in my design. I the module of voice,ISD1700 become a primary choose ,because of its the module of independent work of a brilliant feature. The module of display consists of one 12864.Therefore ,the primary task is finished.After the primary task finished ,a deeper research and discussion start to put on agenda .Continuing along this path ,its necessary to check out every part of system ,which make sure a normal trace the system must conform with .For a full preparation at the early period, the system of Remote control bus station luckily comes into reality.At last , The software of Altium Designer Summer 09 provides with methods of making the Schematic diagram.This paper of text introduces the whole part of process with illustration of relevant information.Keywords: the system of bus station; distant control;ISD1700;12864;II 目 录摘 要IAbstractII第一张 引言11.1 公交车报站系统的选题背景11.2 国内外关于公交车报站的研究现状11.3 研究思路及预期达到的目标2第二章 设计方案论证32.1 整体设计框图32.2 主控电路的选择42.3 文字显示模块的选择52.4 语音播报模块的选择62.5 红外遥控模块的选择8第三章 硬件电路设计93.1 最小系统各部分简介93.1.1 单片机STC89C52结构和功能简介93.1.2 晶振电路113.1.3 复位电路123.1.4 串行通信电路RS-232及MAX232143.2 文字显示模块带字库型12864153.3 语音播报模块ISD1700173.3.1 独立模式下的语音录制183.3.2 单片机对ISD1700的控制193.4 红外遥控模块193.5 单片机IO口的具体分配情况21第四章 软件设计224.1 软件工具介绍224.1.1 编译调试软件Keil uVision2224.1.2 下载软件stc-isp 4.79224.1.3 制图软件Altium Designer Summer 09224.2 主程序设计234.3 文字显示模块程序设计254.4 语音调动模块的程序设计274.5 红外遥控模块程序设计30第五章 软硬件的联合调试及改进335.1 软件与硬件的联合调试335.2 使用说明345.3 实物展示355.4 技术待改进的地方36结束语37参考文献38致谢39本科生毕业设计第一张 引言1.1 公交车报站系统的选题背景从1831英国人沃尔特汉考克为他的国家制造出了世界上第一辆装有发动机的公共汽车起,到今天,公交车已经历经了将近200年的发展过程。从最初的“闷罐头”到如今配套的空调系统;从专人售票到无人售票;从人工报站到半自动语音报站,公交车向着越来越人性化的方向发展11。随着科学技术的日益发展和进步, 无人售票公交车在街头多起来了,语音报站器也被广泛使用,这在相当大的程度上免除了乘务人员沿途报站的麻烦,给许多不熟悉公交线路的乘客带来了方便。公共汽车为外出的人们提供了方便快捷的服务,而公共汽车的报站直接影响服务的质量。传统由乘务人员人工报站,该方式因其效果太差和工作强度太大,在很多大城市已经被淘汰。近年来,随着科学技术的日益发展和进步,微型计算机技术已经在许多领域得到了广泛的应用。在声学领域,微机技术与各种语音芯片相结合,即可完成语音的合成技术,使得汽车报站器的实现为市民提供了更加人性化的服务成为可能。鉴于传统公交车报站系统的不足之处,为了结合公交车辆的使用特点及实际营运环境,有待设计出一种由单片机控制的公交车自动报站系统。1.2 国内外关于公交车报站的研究现状查阅相关的资料文献可以得知,目前的国内外公交车报站系统大致有以下三种类型: 第一种是在报站装置中安装GPS模块。通过全球定位来实现由实际位置决定报站功能的方式。公交车的位置会在实际运行中得到精确的定位,当公交车的位置与预设的公交车站接近或是重合时,播报系统,便由此触发播报系统。操作的全过程不需要人工的介入。目前,在国外的部分城市已投入了实际运用。在上海、广州、合肥等全国十余个大型城市均对这种采用了基于GPS定位的报站系统。这种系统方案在实际运用过程中也存在着不足之处,技术要求很复杂,由于核心技术GPS是由美国掌控,所以开发成本高,不太适合在中小型城市普及10。 第二种是利用电磁波技术进行报站的技术。其原理是在公交车上安装电磁波接收模块,同时站牌上安装用来传输电磁波的模块9。当公交车路过埋在地下的线圈时,公交车地盘的线圈由于阿拉法特电磁感应原理就会产生切割磁感线的现象,产生感应电流,从而产生并送电磁波。收到相应的电磁波信号后,公交车上就会显示出相应的文字信息。但是,这种方案的缺点是铺设线圈消耗的人力物力财力很大。这使得这种方案并未在现实生活中得到应用。第三种设计方案则是以单片机为核心而设计的。这种方案有两种具体的实施方式。其中的一种是通过对车轮旋转的圈数来测出相邻站台之间的距离,然后根据距离的长短来区分站台的站名,并由此进行播报。但是,这样设计的缺点十分明显,就是不准确,并不适合在用实际中使用。此外,还有一种设计方式就是通过无线遥控的方式来触发系统报站的方式。司机通过手上的遥控装置,对报站系统进行无线遥控。在即将到达公交车站时,司机手动发出指令。接到指令后,报站系统执行报站操作7。经过对三种设计方案的论证,不难发现第三种方案的第二种实施方法的稳定性和可操作性很强,并且由于其为无线遥控触发方式,这大大地减少了由于布线带来的故障率。这种设计的结构十分简单,安装方便,适合大量投入市场。最终本次设计的具体方案被定为第三种方案的第二种实施方法。1.3 研究思路及预期达到的目标设计任务 1、学习掌握遥控公交车报站系统的工作原理;2、根据所掌握的知识和技能,设计红外遥控公交车报站系统的电路和相应程序。实现功能1、本设计是在无线条件下,通过红外遥控器控制;2、本设计可以实现各段语音的,逐次循环、快进、复位等三种形式的播报;3、在语音播报的同时,显示模块显示相应的汉字。设计要求1、掌握语音播报模块、文字显示模块以及红外遥控模块的工作原理和相对应辅助电路设计与组装;2、独立构思设计红外遥控公交车报站系统的原理图,焊接、调试并测试相应的硬件电路;3、设计说明书通俗易懂、结构合理、表达规范。采用的方法途径1、查阅资料,阅读有关书籍,对单片机系统与C语言编程进行复习与再学习;2、搜索与“基于单片机的遥控公交车报站系统”相关的论文,增进对题目的了解,拓宽眼界,汲取先进经验;3、选择本系统中需要使用的各种元器件,分析优缺点,明确型号;4、设计、编写、调试程序;5、制作系统硬件,调试,排除故障。第二章 设计方案论证2.1 整体设计框图 本次设计的题目为基于单片机的遥控公交车报站系统。经过分析,整个系统需要一个MCU模块、红外遥控模块、语音播报模块和文字显示模块。整体设计思路是,在红外遥控模块发出用户所需的指令下,收到指令的MCU向语音播报模块和文字显示模块发出控制信号,使系统实现执行符合用户要求的功能。图2.1 整体设计框图2.2 主控电路的选择目前常用的CPU有STC89C52单片机和STM32F1微控制器两种。具体的介绍分别如下:1、STC89C52单片机STC89C52单片机是一种大规模集成电路,它的上面集成了CPU、RAM、ROM、定时计数器和多功能IO口部件的。本次设计所用的单片机内部的配置4KB的ROM程序存储器256字节的内RAM,外置了4组32个可编程多功能IO口。为了补充内部存储容量还分别外设了容量均为64KB的ROM和RAM。 2、STM32F1微控制器 STM32F1微控制在现实生活中的使用十分广泛,在工业、建筑、安防、家电以及居民消费均有应用。其具有先进的内核结构,哈佛结构。Thumb-2指令集在16位的代码密度的条件下,实现了32位的性能。内部高效的中断控制器,也大大地提高了运行效率。中断的时间几个周期就足够了。STM32F1的系统是由3个被动单元和5个驱动单元构成。比较结果:STC89C52单片机具有很高的性价比,高性能,低功耗等特点,可参阅资料较多,操作简单,本设计决定使用STC89C52。 2.3 文字显示模块的选择 显示装置由于发展较早,种类众多,显示原理也不尽相同。市面上最常用的是LED显示和液晶显示。1、LED电子显示屏LED电子显示屏是由相应数量的特定颜色的发光二极管均匀排列而成。排列的二极管会因使用的材料不同而发出不同颜色的光,现在使用最广泛的颜色是红色、绿色和黄色。2、ICD12864液晶显示屏12864顾名思义其显示部分是一块128*64点阵的液晶屏。12864分为带字库和不带字库两种。其内部拥有可供选择的8位和4位并行方式和2线或3线串行传输数据的方式。带字库型中内部出厂前已经存储了八千一百九十二个汉字,其汉字是16*16点的。 STN、半透和正显是12864的三种可选择的显示方式。它的功耗不到一般LED灯的五分之一。视角方向选为六点。通过PSB引脚高低电平的设置选择数据传输方式,即串行传输和并行传输。实际使用时,内置的DC-DC电路解决了需外加负压的问题。若要简化软件设计可以不考虑片选信号。ICD12864对温度也有着明确的要求,工作温度的范围是0-55摄氏度,存储温度在零下20摄氏度至零上60度。 比较结果:LED的光线较为刺眼,有害人的眼部健康,而12864的液晶显示亮度相对来说更为温和。此外,12864的操作十分简单,并且自带字库,省去了由于存储字模而占用了的大量内存空间。综上所述,本设计使用12864液晶模块。2.4 语音播报模块的选择语音模块主要有ISD40系列和ISD17系列。本次设计需要存储数十段语音数据,对语音的音质和内部存储能力有着比较高的要求。具体的介绍分别如下1、 ISD4004语音模块ISD4004 系列工作电压3V,单片录放时间8 至16 分钟,音质好,适用于移动电话及其他便携式电子产品中。芯片采用CMOS 技术,内含振荡器、防混淆滤波器、平滑滤波器、音频放大器、自动静噪及高密度多电平闪烁存贮陈列。芯片设计是基于所有操作必须由微控制器控制,操作命令可通过串行通信接口(SPI 或Microwire)送入。芯片采用多电平直接模拟量存储技术, 每个采样值直接存贮在片内FLASH存贮器中,因此能够非常真实、自然地再现语音、音乐、音调和效果声,避免了一般固体录音电路因量化和压缩造成的量化噪声和金属声。采样频率可为 4.0、5.3、6.4、8.0kHz,频率越低,录放时间越长,而音质则有所下降,片内信息存于FLASH存贮器中,可在断电情况下保存100 年(典型值),反复录音10 万次12。一般来说,通常选用3V的电源来接通ISD4004模块。单片条件下的录放时间有八分钟至十六分钟。音质比较不错,适合用于各类可携带的电子产品。其还内置有有防混淆功能的滤波器、振荡器以及可保证正常播报的音频放大器。2、ISD1700语音模块 ISD1700语音模块的核心是1760语音芯片。在实际使用的过程中无需外置功率放大器电路即可完成正常的录音和播放电路。模块上还装有七个按键,分别完成独立工作模式(模块的两种工作模式之一,下文有详细描述)的录音、放音、快进、擦出、复位、调音和线录操作。 与其他类似的语音模块电路相比,ISD1700语音模块,另一个重要的特点是双工作模式。因此这种模块电路在接通电源的条件下,既可以通过按键进行独立工作,也可以接到上位机的指令下执行相应的操作。两种模式均可以在适应不同工作条件下,完成录音、播报等设计要求。相比较嵌入式工作模式,独立工作模式完全手动操作,过程更加简单,可操纵性强。这一优点在录音操作中体现得十分明显。在独立模式下录音完成后,可以将芯片的相应引脚与单片机的IO口相连,从而实现CPU和语音模块的连接。比较结果:ISD1700拥有独立工作模式,因此录音工作无需连接上位机,接通电源即可独立进行,这样大大简化语音录制工作的过程。由于工作时是独立工作模式,仅需部分引脚接收CPU指令,这会极大地减少CPU程序运行空间。鉴于以上特点,本次设计决定使用ISD1700。2.5 红外遥控模块的选择 红外遥控装置在市面上种类比较单一,红外接收头一般常用的是1838。遥控器虽然外形种类繁多,大小不一,但是原理基本相同15。因此,本次设计选用了小巧灵便的车载mp3遥控器,以下是对两个部件的详细说明:1、红外接收头红外接收头1838,在夜间的室外环境下,处于黑暗无任何的阻挡物的情形下,遥控的实际有效距离大于8米。但是实测距离还完全取决于遥控接收头的灵敏度、电路设计时的可靠性、中间存在的阻挡物和使用时系统所处的环境条件。2、红外遥控器红外遥控器,车载mp3红外遥控器。遥控器总共有21个按键,每一个按键都有对应的用户码和键位码。遥控器上的所有按键用户码是一样的。但是每一个按键都有其本身唯一对应的键位码,当按下不同按键,发出的红外光波也是各不相同的。第三章 硬件电路设计3.1 最小系统各部分简介3.1.1 单片机STC89C52结构和功能简介图3.1 STC89C52的引脚STC89C52单片机的全名叫单片微型计算机,一种大规模的集成电路,能够实现计算机的基本操作。本次设计所用的单片机内部的配置4KB的ROM程序存储器256字节的内RAM,外置了4组32个可编程多功能IO口。为了补充内部存储容量还分别外设了容量均为64KB的ROM和RAM。另外,定时计数器、全双工串行口以及相应的中断电路。这样的配置足以执行计算机的各项基本功能1。STC89C52单片机有3种不同的封装,其有效引脚为40个。PDIP(双列直插式)封装的管脚说明如图3.1所示。3.1.2 晶振电路单片机之内的各种操作都需要时间基准,这个时间基准需要时钟信号。51系列单片机的时钟信号发生电路通常有内部震荡、外部震荡两种方式。图 3.2 内部震荡方式电路3.1.3 复位电路复位的作用是将单片机电路初始化。初始化操作的主要功能是使单片机从0000H单元开始执行程序。系统除了进入正常的初始化以外,当由于其程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境也需要通过此键进行重新启动。STC89C52系列单片机的复位信号从RST脚输入到片内的复位电路,当系统处于正常工作状态,且振荡器工作稳定,如在RST脚上有从低电平上升到高电平并维持2个机器周期以上,CPU就可以响应并将系统复位。复位方式有自动复位和手动复位两种,本设计采用的复位方式是手动复位。图 3.3 复位电路3.1.4 串行通信电路RS-232及MAX232RS-232既可以通过TXD和RXD传送程序,也可以起到握手信号的作用,协调双方的互传作用。本次设计中只使用TXD、RXD和GND这三个基本数据传送的引脚,对于未使用的握手信号引脚,在这里不进行详细描述了。RS-232及MAX232串行通信电路的原理图如图3.4所示。图 3.4 串行通信电路3.2 文字显示模块带字库型12864 文字显示模块是以12864为核心的功能电路,以满足本次设计中显示汉字的要求。市面上的12864分为带字库和不带字库两种。不带字库的在显示汉字前,需要用字模提取软件对所需显示的汉字逐一提取字模,再输入程序中。这样做法复杂,字模的存储十分浪费空间14。较之于需要额外提取字模并大量占取ROM的空间,带字库在这个方面的优点则十分明显,只需在程序里面定义一个装有待显示汉字的二维数组,并定义与显示过程相对应的6个函数,即可实现文字显示的功能。全面权衡了这几点,本设计将带字库型12864作为红外遥控公交车报站系统的文字显示模块的核心器件。图3.5 LCD12864引脚图在实际编程时,12864模块传输数据既可以是串行,也可以是并行。但是,并行模式虽然传输速度快,可占用单片机引脚却达11个之多,焊接电路时也比较麻烦。相比之下,串行模式则不必如此麻烦,虽然速度慢点,但是仅占用2个引脚。并且经过实测,一次串行刷新只需要0.1s,这在实际应用中基本上可以忽略不计了,所以传输速度慢的特点在此并不明显。综合以上几点的考量,串行模式更为合适本次设计。本设计中使用的带汉字字库的12864,各个引脚连接方法如下:1:VSS,接地端。2:VDD,电源端,接+5V。3:VL ,用来调整对比度的端口,本次设计在此端口和+5V之间接一个可调电阻,用来灵活调节对比度。4:RS,使能端口。本次设计,将其与单片机P1.0口相接。5:RW,数据输入端口,连接的是P1.1口。6:EN,时钟输入端口,连接的是P1.2口。714:DB0 DB7,并行数据总线,由于这次用的是串行模式中,这八个引脚无需连接。15:PSB,用来选择串并模式,置0是串行模式,置1就是并行模式。在电路中与P1.6口相连。16:NC,空引脚,不需要连接。17:RST,复位端。在本次设计中,与单片机的P1.3口相接。18:VEE,空引脚,不用考虑连接问题。19:BLA,背光正极,接+5V。20: BLK,背光负极,接地。在红外遥控公交车报站系统中,所使用的带字库12864被选用的是串行模式。在串行模式下,1号引脚和20号引脚接地,2号、3号和19号接+5V,4、15、16和17分别连接单片机的P1.0、P1.6、P1.7和P1.3.。并且,12864的5号引脚和6号引脚是用于本次串行收发的的两个引脚,分别连接的是单片机的SPI输出和SPI时钟信号输出,即5号、6号引脚分别连接单片机的P1.1和P1.2引脚。3.3 语音播报模块ISD1700图3.6 ISD1700模块电路图 ISD1700语音模块的核心是1760语音芯片。在实际使用的过程中无需外置功率放大器电路即可完成录音和播放操作。模块上置有七个按键,分别完成独立工作模式(模块的两种工作模式之一,下文有详细描述)下的录音、放音、快进、删除、复位、调音和线录操作。2 与其他种类的语音模块相比,ISD1700语音模块的另一个重要的特点是双工作模式,既可以独立工作,也可以在上位机的指令下执行相应的操作。两种模式均可以在适应不同工作条件下,完成录音、播报等设计要求。 相比较嵌入式工作模式,独立工作模式完全手动操作,过程更加简单,可操纵性强。这一优点在录音操作中体现得十分明显。 在独立模式下录音完成后,可以将芯片的相应引脚与单片机的IO口相连(下文就具体电路连接方式和操作方法,还会有更加具体的描述)。3.3.1 独立模式下的语音录制1、录音按键REC 这个按键一端与1760芯片的REC引脚相连,另一端与地相连。紧紧地按住这个按键,一旁的LED灯便亮起来了,此时就可以对着模块上的驻极体说话。当松开按键,此段录音结束。当你再次按下这个按键,模块就进入第二段的录音了。以后的每一段录音按照均这样的操作进行。2、放音按键PLAY 放音按键连接在1760芯片的PLAY引脚和地之间。边沿触发和电平触发是放音按键PLAY的两种触发的方式。边沿触发,点按PLAY键就会播放当前段语音。伴随着放音,LED灯会一直闪烁。随着放音结束LED会随之熄灭熄灭。内部程序的放音指针,在播放过后会重新指向刚才播放那一段的起始地址处。也就是说,再次点按PLAY,播放的语音还是刚才播报了的语音;电平触发,当按住PLAY键始终不放开,全部语音会依次播放,不断循环,直到松开PLAY按键。3、快进按键FWD 此按键连接的是芯片的FWD引脚。在播放之前 ,点按此键以使放音指针移动到下一段语音。要是连续点按两下此键,指针就会移动到下一段之后的一段语音。要是当前处在最后一段,再次点按,放音指针将回到第一段,从而实现循环播放的效果。4、擦除按键ERASE 点按擦除按键后,原来语音的第一段和最后一段则会被擦去。当使用者第二次点按后,原先语音的第二段和倒数第二段则会被删除。长按超过3秒钟, “全部删除模式”就会被启动。这时LED灯会闪烁两下,继续按住不动,LED灯在再次闪动七次,此后就不再闪烁。这个时候,松开按键。芯片里面原先存储的语音就会被全部删除。5、复位按键RESET 点按过后,芯片就会复位。此时,放音的指针就指在最后一段的起始位置。此时,点按PLAY键,则播放最后一段语音。点按录音按键,就会接着最后一段继续向前录音。6、调节音量按键VOL 点按一下这个按键或者直接用导线将芯片的VOL引脚拉低。每进行一次其中一种操作,扬声器播放的音量就会减小一点。芯片内部设有8个音量的档位,每个档位会改变4dB。复位操作后,音量会默认在最大档位。 在芯片进行录音操作时,曾出现芯片内部程序紊乱,点按任何芯片均无任何响应的现象,只见LED灯在每次点按后闪烁七次便熄灭,且各处接线均正常。解决办法是执行全部擦除操作,全部擦除后,模块的一切功能就恢复正常。故障因此得到解决。3.3.2 单片机对ISD1700的控制 单片机通过IO口对ISD1700模块进行控制。首先将芯片的MOSI、SCLK和SS接高电平,使整个模块工作在独立模块状态。在语音录制完成后,将芯片的PLAY、FWD和RESET引脚通过杜邦线与单片机选定的IO口相连。下载了相应的程序后,单片机就可以通过相应引脚高低电平的变化,对ISD1700语音模块进行控制了8。 3.4 红外遥控模块 红外遥控模块是由发射和接受两部分组成。发出红外信号部分是车载mp3遥控器,接收信号部分是1838红外接头。红外接收头1838,在晚上户外无任何的阻挡物的条件下,遥控的实际有效距离大于8米。但是实测距离还完全取决于遥控接收头的灵敏度、电路设计时的可靠性、中间存在的阻挡物和使用时系统所处的环境条件4。图3.7 1838接收头红外遥控器,车载mp3红外遥控器。遥控器总共有21个按键,每一个按键都有对应的用户码和键位码。遥控器上的所有按键用户码是一样的。但是每一个按键都有其本身唯一对应的键位码,当按下不同按键,发出的红外光波也是各不相同的。图3.8 遥控器键位码发射的每一帧码都含有一个引导码,引导码发送过后,紧接着依次跟着16位用户码、8位每个按键独有的数据码及其对应8位数据反码6。码型结构如图3.9所示:图3.9 编码方式由图3.6可以看出,引导码,作为随后发送的码的引导,先是9ns的高电平,紧接着4.5ms的低电平。这样当接收系统是微处理器的时候可以更好地处理数码的时序关系。利用高低电平的时间比值,来确定1或者0。一般来说,接收时,引导码过后,每一位数据脉冲起初是0.56ms的高电平,之后如果接收到2.56ms的低电平,则可以被判定为为1;若只接收到1.125ms的低电平之后,便进入下一位数据脉冲,即可判定为0.由于在8位数据码被发送之后,与之对应的8位数据码反码也随之发送,误码率也随之减少。3.5 单片机IO口的具体分配情况单片机四组IO口中的部分引脚分别红外遥控模块、文字显示模块和语音播报模块的相对应控制端相连,从而启到CPU的作用5。对应关系如下:文字显示模块:D/IP1.0 R/WP1.1 EP1.2 PSBP1.6 NCP1.7 RSTBP1.3 语音播报模块:PLAYP2.7 FWDP2.6 RESP2.5红外遥控模块;1838的1号脚P3.3第四章 软件设计4.1 软件工具介绍4.1.1 编译调试软件Keil uVision2 本次设计软件程序的编译和调试软件是Keil uVision2。Keil uVision2是美国的Keil Softwave公司开发以供单片机C语言编程使用。Keil有十分完整的开发方案,总共包括C编译器、链接器、仿真调试器、宏汇编和库函数。这些是通过一种集成开发的环境而被组合在了一起,而这个集成开发环境即为uVision。可以在WIN98、WIN2000、WIN XP和WIN7系统上运行。 在软件中,可以进行调试以及仿真。能够发现程序中的语法错误、不符合单片机实际情况的问题,提示用户进行合理正确地修改。此外,还可以模拟单片机的运行,并记录单片机内部各个寄存器以及各个引脚的数值变化情况。4.1.2 下载软件stc-isp 4.79stc-isp是一种将程序下载并烧录在单片机内的软件工具,是专门针对STC系列的单片机而设计的。操作简捷,免于安装是最大的特点。本次设计中中用的是stc-isp 4.79。具体的操作使用步骤,在打开对话框后,有明确的指示;第一步在MCUtype栏中选用STC89C52RC。第二步选择波特率,这关系到程序下载的速度,设计者直接选用最快的115200。然而,通常情况下使用软件默认的值。第三步点击“打开文件”,选定HEX文件。第四步点击“Download”按钮,再接通电源。下载就完成了。4.1.3 制图软件Altium Designer Summer 09本次设计使用的制图软件是Altium Designer Summer 09。Altium Designer是业界唯一一种用来提供完整的板极设计解决方案的软件工具。这款版本Altium Designer 09,在保持老版本的全部优点的基础上,还增加了更加高端、更加实用的功能。首先:在设计PCB板图时,布线更加简洁方便,还有自动查询错误功能;第二,绘制原理图时,新增加“灵巧粘贴”能够把不同的对象复制在原理图上。第三 在嵌入式的编排和设计中,对所使用的器件的实时显示功能有了极大的提升,在已有的几类处理器的内核之外,还加强了32位的微处理器功能上的支持。4.2 主程序设计 以下为主程序设计框图: 图4.1 主程序框图 程序开始后,首先对各部分进行初始化,随后开始等待红外信号的中断、在接收到红外信号的中断后,单片机对收到的信号先后进行记录和译码,再由红外信号所载的键位码的不同,对各模块发出相应的指令。以下是主程序的主要部分:void Main()EA=1; /首先,将总中断开启;EX1=1; /开启INT1。 INT1连接红外接收头1838的数据引脚; IT1=1; /设置中断的触发方式为下降沿触发方式; TMOD=0X10; /定时器1的方式116位计数器,用来计算时间; j=0; /在存储各段文字的二维数组中,用来计算各段文字序号的变量; PSB=0; /显示模块,将12864设置为串行传输模式; Delay_400ms(); Icd_init(); /显示模块,对ICD12864显示屏进行初始化; Delay_5ms(); play=1; /语音模块,播放引脚的初始化,将其拉高,置为1; fwd=1; /语音模块,快进引脚的初始化,将其拉高,置为1; res=1; /语音模块,将复位引脚拉高,置为1; while(1) /等待红外线中断 While循环之前的三部分初始化语句,就是对电路中三个模块的初始化语句。由于红外接收头与INT1引脚相连接,所以对外部中断的初始化操作即为对红外遥控模块的初始化。主函数最后的while语句,是一个无限循环语句,用来等待外部中断,即当接到红外信号中断,便立即跳入中断操作,执行一次后跳回。其语句中的具体程序,这里没有列出,但在下文会进行详细的描述。4.3 文字显示模块程序设计文字显示模块的程序设计,由于12864显示屏的特殊时序关系和数据传送特点,程序相对来说比较复杂,调用的函数达六个之多。在这六个函数相互配合下,12864与单片机之间的指令数据传送以及显示功能才能得以实现。以下是文字显示模块的程序: void Sendbyte(unsigned char zdata) /发送函数 unsigned int i; for(i=0;i0) /在传输汉字时*s会大于0,传输结束时*s即为0; Write_data(*s); /将每一个字节,通过发送数据函数,发送至12864; s+; /将指针移动至下一个待发送的字节; void Xianshi() Write_com(0x03); Delay_5ms();Write_com(0x81); /发出指令,在显示屏第一行显示文字; Display(共建微笑沈阳); Write_com(0x91); /发出指令,在显示屏第二行显示文字;Display(tablej); /显示已到站的名称,并存储在一个二维的数组内; Write_com(0x89); /发出指令,在显示屏第三行显示文字; if(j=0|j=4) /始发站时j为0,终点站时j为4; Display(本次公交车); Else /第三行,在终点站和始发站,显示的文字与其他站显示的不同; Display(请从后门下车); Write_com(0x99); Display(); /第四行不设计显示文字;文字显示模块对应有六个函数,分别负责传送字节、写指令。发数据。初始化12864模块、处理和显示等环节的任务。此模块显示的各段汉字被存储在一个二维数组中,从而方便了“处理”函数的调用【3】:unsigned char table811=欢迎乘坐0,二号站到了0,三号站到了0,终点站到了0,欢迎乘坐0,三号站到了0,二号站到了0,一号站到了0; 为了实现公交车往返,各个公交车站名堆栈式的循环,本次设计将每个公交车站名进行两次定义,正序和反序各一次,如上段所示。为了可以识别本组汉字是否已经显示结束,每组汉字结尾处均定义有一个“0”,从而便于“处理”函数在调用每一组汉字结束时,能够识别并及时跳出,从而不会将下一组汉字显示出来。 在实际调试中出现了问题,存储的汉字不能超过一百个字。由于所定义的数组是存储在内RAM里面,可是STC89C52的内RAM容量极为有限,只有256个字节,所以在存储公交站名时字数收到了限制。因此,本次设计只显示了四个公交站的名称及相关提示的文字信息。4.4 语音调动模块的程序设计 程序中没有为此模块单独编写函数,由于语音模块工作在独立工作模式,仅需对PLAY、FWD和RES三个变量进行控制,再配合相应的延时函数,即可完成语音功能的程序编写。程序框图如图4.2所示。图 4.2 语音模块程序框图 以下是主函数中while循环内与语音模块相关的程序 ;if(ly_lhj2=0x0c) /判断红外遥控器发出报站的信号为“报站”; j+; fwd=0; /按下进位健 Delay_400ms(); fwd=1; /松开进位健 Delay_400ms(); play=0; /按下播放键 Delay_400ms(); play=1; /松开播放键 else if(ly_lhj2=0x18)/判断红外遥控器发出报站的信号为“快进”; j=j+2; Delay_5ms(); fwd=0; /按下进位健 Delay_400ms(); fwd=1; /松开进位健 Delay_400ms(); fwd=0; /再按下进位健 Delay_400ms(); fwd=1; /再松开进位健 Delay_400ms(); play=0; /按下播放键 Delay_400ms(); play=1; /松开播放键 else if(ly_lhj2=0x5e)/判断红外遥控器发出报站的信号为“复位”; j=0; res=0; /按下复位键 Delay_400ms(); res=1; /松开复位键 Delay_400ms(); play=0; /按下播放键 Delay_400ms(); play=1; /松开播放键 由于处在独立模式下的语音模块是受控于按键控制下的电平变化,单片机若要实现对其的控制,就要在与语音模块相连的IO口端口上模仿按键按下全过程的电平变化。以PLAY键为例:play=0; /按下播放键 Delay_400ms(); play=1; /松
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 为奥运助力活动方案策划
- 北京大数据营销方案策划
- 医院单位团建活动策划方案
- 农村电影活动服务方案策划
- 新都建筑维修方案设计团队
- 药厂能源管理课件
- 季节班幼儿活动方案策划
- 老鸭粉丝汤创业计划书
- 心理咨询预算方案
- 寺庙建筑配色方案设计意图
- 公安机关人民警察执法资格(高级)考前点题卷一
- 人力资源管理SOP标准化流程手册
- 2025-2026学年人教鄂教版(2024)小学科学三年级上册(全册)教学设计(附目录P137)
- 2025-2030中国家政服务业社区化发展与本地化服务模式探讨
- 2025年翼状胬肉试题及答案
- 2025年暗挖隧道坍塌应急救援演练脚本(2篇)
- 2025年Q2起重机司机模拟考试题库(附答案)
- 道路绿化监理规划方案(3篇)
- 沥青混凝土供货方案及保障措施
- (高清版)T∕CES 243-2023 《构网型储能系统并网技术规范》
- 注册城乡规划师之城乡规划原理题库及答案(押题版)
评论
0/150
提交评论