毕业设计(论文)基于单片机实现公交车的自动考核与报站.doc
基于单片机实现公交车的自动考核与报站摘 要 公交车是现今社会人们出行的主要交通工具。针对公交车报站与考核的现状,本文设计了以单片机AT89C51为核心的公交车自动报站与考核系统。在自动报站部分,系统利用无线收发模块结合编码芯片PT2262和解码芯片PT2272实现公交车站台信息的发射与接收,用语音芯片ISD4004实现公交车的报站。在考核部分,利用霍尔传感器将车轮转过的圈数转换成脉冲数传入单片机。最终实现对公交车里程及速度的测量,并能通过LCD准确地显示。本设计主要包括硬件设计和软件设计两个部分。其中:硬件包括单片机最小系统、无线射频发射电路、无线射频接收电路、语音电路、显示电路等;软件主要包括部分电路的设计流程。由于本设计为自动报站,在应用中可以大大降低司机的工作强度,提高车辆在行驶过程中的安全指数。关键词 单片机,自动报站,ISD4004,里程ABSTRACTNowadays,bus travel is the main transport for people.Aimed at the bus stops and evaluation of the situation,this article is designed to AT89C51 SCM as the core of the bus automatic station and assessment system.In the automatic stop part,system use wireless transceiver module with encording and decording chip PT2262 /PT2272 to implement the bus stattion emitting and receiving information,and use voice chip ISD4004 to implement the bus stop.In the assessment part of the system,the number of cycles to the wheel turn can turn into the number of pulses by using Hall Sensor,and put the number into SCM.Finally implement the bus milege and speed measurement,and accurately displayed through the LCD. The design includes hardware design and software design.Among them:Hardware including microcontrollers,RF transmitter circuit, RF receier circuit, voice circuit ,display circuit.Software is mainly talk about the process of the part circuit design.As the design for the automatic station in application,it can greatly reduce the strength of the diver and improve the vehicle safety index in driving process.Key Words: SCM Automaticlly Stop ISD4004 Mileage目录1、绪论51.1 本课题的目的51.2 本课题在国内外的发展状况51.3 本课题的指导思想62、单片机的相关介绍72.1 单片机原理及其发展趋势72.2 单片机的引脚功能介绍73、硬件电路设计103.1 单片机内部时钟电路103.2 复位电路103.3 无线射频发射电路113.3.1 设计思路113.3.2 设计电路及说明133.4 无线射频接收电路143.4.1 设计电路及说明143.5 语音电路153.5.1 设计思路153.5.2 设计电路及说明163.6 考核系统183.6.1 设计电路及说明184、软件部分设计224.1语音报站程序设计224.2 考核模块主程序设计244.3里程及速度计算子程序设计254.4 LCD显示子程序264.5定时计数子程序285、仿真305.1 考核部分仿真306、结论32答谢33参考文献34附录 考核系统及语音报站程序351、绪论1.1 本课题的目的随着社会的高速发展,人们出行工具的选择也越来越多。作为经济方便的代表,公交车依旧发挥着极其重要的作用。我国的大多数城市都采用手动考核与报站。由于手动考核与报站是人为控制,不仅增加了公交车在行驶过程中的安全隐患,还给公交车的报站造成了些许的偏差:错报、误报的情况时有发生。并且手动考核无法对车辆行驶过程中存在的超速等问题进行有效的监督。为了能提高公交车的工作效率及服务水平,我们急需一种系统可以实现公交车的自动考核与报站。1.2 本课题在国内外的发展状况通过市场调查,现今公交车的报站主要有两种方式。一种是通过全球卫星定位系统(GPS)来实现,目前美国部分城市已投入使用。但这种方案所需要的技术太过复杂,开发成本太高,不适合应用在中小城市。另一种是人工报站,我国大部分城市仍使用该方案。它需要司乘人员进行相关操作才能完成,这就加大了司机的工作强度,增加了车辆运行过程中的安全隐患。近年来,单片机技术飞速发展,主要用来实现对信号的检测、数据的采集以及对应用对象的控制。它在工业控制、家用电器、汽车电子乃至航天电子等领域都有着重要的应用。由于单片机具有稳定性好、成本低、很好的扩展性及可编程性等优点,所以通过单片机等技术来实现公交车的自动考核与报站就受到了越来越多的关注。1.3 本课题的指导思想本课题主要研究的是用单片机实现公交车的自动考核与报站。设计主要可实现两个功能:公交车的自动报站:在各个站点安装无线发射模块F05P以及PT2262编码集成电路,用来发射站台信号;在公交车上安装无线接收模块J04V、PT2272解码集成电路、语音电路、单片机最小系统等,用来接收站台发射的信号并对其进行解码,从而判断该站点并进行自动报站。公交车的自动考核:通过霍尔传感器将公交车的车轮转数转换成脉冲信号传入单片机,用单位时间内车轮转过的圈数来判断车超速情况,同时将公交车在行驶过程中的里程和速度记录在系统中。所谓里程数=车轮转数*车轮周长,速度=车轮周长/车轮每转一圈所用的时间。2、单片机的相关介绍2.1 单片机原理及其发展趋势单片微机是单片微型计算机SCMC(single chip micro computer)的译名简称,在国内也常简称为“单片机”。单片机是指一个采用超大规模集成电路技术,将中央处理器CPU、随机存储器RAM、只读存储器ROM、中断系统、定时器/计数器、串行口和I/O口等集成在一块芯片上的计算机系统。12.2 单片机的引脚功能介绍AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS 8位单片机。2其引脚图见下:图2.1 AT89C51的引脚图按引脚的功能可分为四部分:电源引脚:Vcc:接电源正极。Vss:接地。时钟电路引脚:XTAL1:片内振荡器反相放大器的输入端。XTAL2:片内振荡器反相放大器的输出端。并行I/O口引脚:共四个口,32根I/O线。P0:8位、漏极开路型双向I/O口。可作通用I/O口使用,当使用片外存储器时,作低8位地址和8位数据分时复用。在程序校验期间,输出指令字节,验证时需加外部上拉电阻。P1:内部带上拉电阻的8位、准双向I/O口。在编程/校验期间,用作输入低位字节地址。P2:内部带上拉电阻的8位、准双向I/O口。当使用片外存储器时,输出高8位地址。在编程/校验期间,接收高位字节地址。P3:内部带上拉电阻的8位、多功能双向I/O口。除了作通用I/O口外,其主要功能是它的各位还有第二功能:P3.0:RXD 串行输入端P3.1:TXD 串行输出端P3.2:INT0 外部中断0输入端P3.3:INT1 外部中断1输入端P3.4:T0 定时器/计数器0的外部输入P3.5:T1 定时器/计数器1的外部输入P3.6:WR低电平有效,输出,片外数据存储器或I/O口写选通P3.7:RD 低电平有效,输出,片外数据存储器或I/O口读选通控制信号引脚:RST:复位输入信号,高电平有效。EA/Vpp:片外程序存储器访问允许信号,低电平有效。ALE/PROG:地址锁存允许信号,输出。PSEN:片外程序存储器读选通信号,低电平有效。3、硬件电路设计一个单片机系统的硬件设计主要包括:单片机系统的扩展部分设计、各功能模块的设计和工艺设计。3本设计的硬件电路主要包括:单片机内部时钟电路、复位电路、无线射频发射电路、无线射频接收电路、语音电路和考核系统的设计。3.1 单片机内部时钟电路时钟电路主要用来产生单片机工作所需要的时钟信号。由于单片机内部本身带有时钟电路,所以只需在片外的XTAL1和XTAL2之间跨接晶振和微调电容即可。该电路如下图(本设计使用12MHz晶振):图3.1 单片机内部时钟电路3.2 复位电路对于复位信号,高电平有效。复位有上电自动复位、按键电平复位和外部脉冲复位3种操作方式。在本设计中,采用的是按键电平复位,它通过按压键使复位端经电阻与Vcc接通来实现。该电路如下图:图3.2 复位电路3.3 无线射频发射电路3.3.1 设计思路通过翻阅各种资料,我了解到:目前主要有4种方式可实现公交车的自动报站。(1)GPS系统:它是一种高精度卫星导航系统,通过用户设备接收GPS信号,对信号进行处理后获取方向、位置等有效信息,从而实现GPS的导航与定位。但因其价格昂贵,目前只被较少的城市使用。(2)无线收发一体芯片:例如,TR3001主要通过蓝牙技术设计。蓝牙是一种短距离通信的无线电技术,一般在10米以内。它支持点对点及点对多点通信。4因此,在实际应用中也不适用于公交车自动报站。 (3)无线遥控系统:一般有红外线发射和电磁波发射两种方式。红外遥控系统以红外线为数据传输介质,由发射和接收两部分组成。一般用遥控器产生的编码脉冲驱动红外发射管,输出红外遥控信号;用一体化接收头完成对信号的接收、放大、检波、滤波、整形,并解调出相应的编码脉冲,遥控编码脉冲是一组二进制码。红外发射管是一种能将电能转变为近红外光的发光显示器件,它的发射信号经频率调制后一般的接收距离可超过10米,无干扰时可超过30米。由于公交行驶线路不可能畅通无阻,它的速度一般为40-50公里(千米)/小时,因此它每秒行驶的路程大约为11.1米。由此可见,当公交车到达某一站点时速度稍微过大,就可能无法接收到红外信号,从而也就无法实现报站。红外遥控距离短,只能直线方向遥控,而且红外线无法穿透障碍物。因此,以上情况都可能成为报站过程中存在的不确定因素。以电磁波为数据传输介质的遥控系统,主要框架和红外遥控系统相同。不同之处在于,电磁波的遥控具有衍射作用,可以跨越一定的障碍物,也不需要直线遥控。当发射端发射一定频率的电磁波时,接收端只有筛选出相同频率的电磁波信号并经过解码才能得到。(4)无线射频收发模块F05P、J04V:F05P与J04V是配对使用的。它们常与编解码集成电路组成无线收发电路。F05P是射频无线发射模块,适合短距离无线遥控报警及单片机无线数据传输,对直流电平及模拟信号不能发射,采用ASK方式调制。J04V是超再生接收模块,主要应用于需要长期处于接收状态的遥控报警及单片机数据传输系统。性能稳定,具有较好的灵敏度及性价比。它们二者都是小体积、低功耗的模块。5基于以上方案,本设计采用方案四,通过无线收发模块F05P/J04V与 PT2262/PT2272的编解码集成电路共同实现公交车的自动报站。常用的编解码集成电路芯片为:PT2262/PT2272。它们的引脚图如下:图3.3 编解码芯片PT2262/2272引脚图PT2262最多可有6位数据端管脚,编码信号是由8位地址码、4位数据码以及同步码组成的一个串行码字。PT2262和PT2272的地址编码必须完全一致,而且振荡电阻也必须匹配。一般PT2262的振荡电阻采用12兆欧,PT2272用200千欧匹配。编码信号从PT2262的17脚DOUT输出,由无线射频发射模块F05P的数据信号输入端发射出去。该信号经无线射频接收模块J04V接收送至解码芯片PT2272,只有当PT2272连续三次检测到相同的地址码加数据码之后,其 VT脚才输出高电平,同时PT2262的DOUT脚也输出高电平。6PT2262:A0-A11:地址管脚,用于进行地址编码。D0-D5:数据输入端。TE:编码启动端,低电平有效。OSC1/OSC2:振荡电阻的输入/输出端。DOUT:编码输出端,正常时为低电平。PT2272:A0-A11:地址管脚,必须与2262一致,否则不解码。DIN:数据信号输入端,来自接收模块输出端。VT:编码有效确认输出端(常低),解码有效变成高电平(瞬态)。3.3.2 设计电路及说明无线射频发射电路原理框图如下:地址设定PT2262编码高频发射电路图3.4 无线射频发射电路原理框图此部分需要安装在各个公交站点。本设计中,地址设定通过PT2262的1-8脚设定,它一般有三种状态:接电源正极、接地及悬空。这样就会有6561组不同的编码,一般城市的公交车站点为20个,满足设计需要。PT2262完成的是编码功能,通过其数据端口所接的按键触发电路传送4位并行数据,并由高频发射电路进行调制、功率放大和发送。这里,按键触发电路与二极管组合给芯片PT2262上电,无线射频发送模块F05P则充当了高频发射电路部分。具体电路图如下:图3.5 无线射频发射电路3.4 无线射频接收电路3.4.1 设计电路及说明无线射频接收原理框图如下:选频放大检波滤波整形PT2272解码图3.6 无线射频接收原理框图此部分应该与语音电路、单片机最小系统以及考核系统连在一起安装在公交车上。本设计中,地址编码且是加密的,只有开发者知晓。而且PT2272的地址比须和PT2262的完全一致。此处,我们在接收端接收到的信号是高频的载波信号,载波信号经过选频、放大、检波、滤波、整形之后,才能由解码芯片PT2272进行解码。由于无线接收模块J04V内部具有放大整形电路,所以它在这里起到的就是放大、检波、滤波、整形的作用。J04V只适合数据信号的接收,而不适合模拟信号。PT2272通过数据端和数据信号输入端与单片机相连。其具体电路图如下:图3.7 无线射频接收电路检波:解调,从已调波提取调制信号的过程。滤波:将信号中特定波段频率滤除的操作,提取有用信号。3.5 语音电路3.5.1 设计思路根据公交车报站的顺序报站和反向报站这一特点,本设计将语音电路设计如下:首先将所需要报站的站台语音信息按顺序分段录入语音芯片中。由于本系统中PT2262和PT2272的地址码是一样的。所以当PT2262的编码发射后,只要PT2272接收到相同的编码信号,就认为是本系统的信号,并且同时进行语音信息的播放。当进行顺向报站时,第一次接收到相同的编码信号就播放第一段录音,也就是进行第一站的播报;第二次接收到相同的编码信号就播放第二段录音,也就是进行第二站的播报,以此类推。反向报站时,从最后一段开始播放。3.5.2 设计电路及说明本设计采用的是ISD4004语音芯片。该芯片内含振荡器、防混淆滤波器、音频放大器、自动静噪及高密度多电平闪烁存贮陈列。单片8至16分钟录放,可反复录音10万次,满足报站所需要求。该芯片必须由微控制器控制,操作命令可通过串行通信接口MISO送入。由于公交车内噪声较大,所以采用TDA2822集成功放电路。此功放电路具有集成度高,外围元件少,音质好等特点。由于本功放为直接耦合,输入信号时不能带直流成分。如果有直流成分时,则必须在输入端串接4.7-10uF左右的电容隔开,否则电流过大会造成扬声器的烧毁。图3.8 ISD4004语音芯片引脚图语音芯片ISD4004的各引脚功能如下:7SS:器件选择,低电平有效。MOSI:串行输入端。MISO:串行输出端。NC:空脚。AUDOUT:音频信号输出端,能驱动5千欧负载。AMCAP:自动静噪端,大信号下不衰减,静音时衰减6db。RAC:行地址时钟输出,内部存储器共分为800行,当操作到达行末时,本端输出一低电平脉冲。INT:中断输出,当存贮器溢出或放音结束标志位出现时,该端为低电平并保持。XCLK:外部时钟输入端,不用时接地。SCLK:串行时钟,用于同步串行数据。TDA2822引脚见图3.9,语音电路的硬件电路见图3.10。图3.9 TDA2822引脚图图3.10语音电路3.6 考核系统3.6.1 设计电路及说明考核系统主要由开关型霍尔元件电路、LCD显示电路以及报警电路组成。该部分的系统原理框图如下:霍尔传感器LCD显示报警电路单片机AT89C51外部信号图3.11考核系统原理框图(1)开关型霍尔元件电路:作为常用的测速元件,霍尔传感器利用霍尔效应能将磁转换为电。其获取信号的方式为:在公交车的转轴齿轮盘上粘一粒磁钢,并将霍尔器件固定在前叉上。在车轮转动的过程中,霍尔器件会与磁钢接触,然后就会不断的产生脉冲信号。本设计中,利用霍尔传感器将采集到的脉冲信号输入引脚P3.5(T1),车轮每转动一圈,霍尔传感器就输出一个低电平脉冲信号,用T0进行定时,然后用T1对所定时间内的脉冲进行计数。这里,里程值为脉冲数n与公交车车轮周长L的乘积。经查找资料得知,型号为“10.00-20”(轮胎宽10英寸,钢圈20)的公交车车轮直径R1为1.016米,型号为“9.00-20”的公交车车轮直径R2为0.965米。由周长计算公式L=3.14*R(R为直径值)可得:L1=3.19米,L2=3.03米。速度值可由公式“速度=车轮周长L/车轮每转一圈所用的时间t”计算得知。(2)LCD显示电路:本设计仿真时采用LCD1602作为2*16字、点阵字符式液晶显示模块来显示公交车的里程及速度值,从而让司机对该车的行驶状况有所了解。此液晶模块具有显示质量高、数字式接口、功率消耗小等特点。此模块采用14引脚接线:Vss:接地。Vee:可不接。Vdd:接电源正极。RS:数据/命令寄存器选择端。高电平时选择数据寄存器,低电平时选择命令寄存器。RW:读/写选择端。高电平读,低电平写。E:使能端。由高电平跳变成低电平时,液晶模块执行命令。D0-D7:8位双向数据总线。具体连接电路见图3.12。本模块中:显示缓冲区DDRAM有80个单元,第1行的地址为00H-0FH,第2行的地址为40H-4FH。DDRAM单元存放的是要显示字符的ASCII码。字符发生器CGROM存储了不同的点阵字符图形,每一个字符在它里面都有一个固定的代码。例如,经查表可得,字符“.”的代码为2eH,字符“6”的代码为36H。本模块的控制是通过操作命令完成的,它有特定的操作命令。例如:0x04表示的是光标从最后一位开始往前显示。0x01表示的是对LCD进行清屏。图3.12 LCD显示电路(3)本设计中,报警电路采用的是蜂鸣器。它是一种常用于单片机应用系统的电声转换器件,使用PNP型三极管进行驱动控制。当所测速度超过设置的该值时,P3.1(TXD)引脚输出低电平,三极管导通,蜂鸣器发出声响。电路图如下:图3.13 报警电路(4)单片机的P2.4口接开关KEY1用来控制里程值及速度的显示。 P2.5口接KEY2用来选择车轮的周长为3.19米,P2.6口接KEY3用来选择车轮的周长为3.03米。考核系统与语音电路的连接图如下:图3.14 语音报站与考核部分硬件电路图4、软件部分设计在软件设计时,应注意以下几个方面:程序模块化。程序流程图。通常在编制程序前,要先画出程序流程图。合理分配资源。程序注释。应该在程序的有关位置添加功能注释,提高程序的可读性。8本设计的程序部分采用C语言编制。C语言是国际上广泛流行的计算机高级语言。它具有以下特点:语言简洁、紧凑、使用方便、灵活。运算符及数据类型丰富。具有结构化的控制语句,语法限制不太严格,程序设计自由度大。允许直接访问物理地址,能进行位操作。用C语言编写的程序可移植性好,生成目标代码质量高,程序执行效率高。本设计的软件部分设计主要包括:语音报站程序、考核模块主程序、里程及速度值计算子程序、LCD显示子程序、定时计数子程序。4.1语音报站程序设计该部分程序包括两个子程序:录音子程序以及放音子程序。语音芯片ISD4004在器件延时后才能开始操作。因此,当用户发完上电指令后,必须等待延时才能发出一条操作指令。部分指令如下:POWERUP:上电,等待延时后器件可以工作。SET PALY:从指定地址开始放音,比须后跟PLAY指令使放音继续。PLAY:从当前地址开始放音,直至EOM或OVF。SET REC:从指定地址开始录音,必须后跟REC指令录音继续。REC:从当前地址开始录音,直至OVF或停止。STOP:停止当前操作。STOP WRDN:停止当前操作并掉电。RINT:读状态:OVF和EOM。开始送录音地址开始录音返回键是否按下YN图4.1 录音子程序根据地址判断释放哪段录音开始自动放音送放音地址返回图4.2 放音子程序4.2 考核模块主程序设计程序流程图如下:开始初始化P1.6=1?P1.7=1?出错信息将车轮周长调入P1.0=1?调用里程、速度值子程序YNNYYNY返回清屏图4.3 考核模块程序流程图先在系统中设定好该公交车车轮的周长,即:空调车时,P2.5口所接的按键KEY2闭合,此时L=3.19m;一般车时,P2.6口所接的按键KEY3闭合,此时L=3.03m。当按下任意周长选择键后,再按下速度里程值读取键KEY1时,LCD中会显示出相应的里程及速度值。如果不设置公交车的周长时,当按下KEY1键时,LCD中显示出错信息“error”。当再次按下KEY1键时,LCD会被清屏。4.3里程及速度计算子程序设计P1.0口所连接的KEY1键按下时,KEY1=0,LCD的显示屏上同时显示里程和速度值,第1行显示的是里程值,第2行显示的是速度值。设车轮周长为L,里程值s=车轮周长L*车轮转过的圈数n,速度(瞬时速度)=车轮周长L/车轮转一圈所用的时间t。其中:用T0定时10ms,用T1对10ms内所检测到的脉冲个数n进行计数,t=0.01/n。本设计中,里程的单位为m,速度的单位为m/s。在实际应用中,我们认为速度大于80km/h(22.2m/s)为超速。由于本设计中存在按键抖动的问题,所以我们使用软件延时10ms对其进行消抖。命令为:delay(10)。计算出速度值后,与单片机中已设置好的速度上限值进行比对:如果超过该值,则触发报警电路,蜂鸣器发出声响,并同时显示该速度值。如果小于该值,则只进行相应速度值的显示。流程图如下:计算里程、速度开始P1.0=1?NN清屏Y是否超速?报警电路Y显示速度N返回图4.4 里程速度计算子程序流程图4.4 LCD显示子程序首先要对LCD进行初始化,然后进行相应功能的设置。之后在LCD进行显示之前,要对LCD判忙,这里我们用判忙函数check完成此功能。在对LCD送地址、送数据以后就可以进行相应的显示了。该部分程序流程图如下:开始液晶初始化判断是否显示字符相应功能的设置送地址送数据判断是否显示完返回NYYN图4.5 LCD显示子程序流程图里程的单位m、速度的单位m/s以及出错信息error都是通过LCD逐个字符显示的。各个字符的代码如下:m0x6d/0x2fs0x73e0x65r0x72o0x6f表1 字符代码4.5定时计数子程序本设计使用的是单片机内部的,由高8位和低8位两个寄存器组成的定时/计数器:T0和T1。工作方式寄存器TMOD用来设置定时/计数器的工作方式。低4位用于设置T0,高4位用于设置T1。其格式如下:GATEC/TM1M0GATEC/TM1M0T1T0图4.6 TMOD的格式门控位GATE=0时,使TR0=1或TR1=1,可以启动定时/计数工作。其中:TR0(TCON.4)为T0的运行控制位,TR1(TCON.6)为T1的运行控制位。定时计数选择位C/T=0时为定时模式,C/T=1时为计数模式。工作方式设置位M1M0:01为工作方式1,表示16位定时/计数器计数个数N与计数初值X的关系为:X=65536-N,初值在65535-0范围时,计数范围为1-65536。计数初值要分解成2个字节并分别送入TH0、TL0(或TH1、TL1)中。本设计采用12MHz的晶振,所以机器周期为Tcy=1/(12*(1/12)=1us,N=t/Tcy=10000,X=65536-10000=5536=15A0H。其中,15H送入TH0中,A0H送入TL0中。综上所述,当T0用作定时器,T1用作计数器时,可将TMOD设置为:0X51H,即:01010001B。由于:ET0(IE.1)为定时器/计数器T0中断允许位,ET1(IE.3)为定时器/计数器T1中断允许位,EA(IE.7)为CPU中断允许位,所以在主程序设置中,ET0=1,ET1=1,EA=1。本设计中,T0定时时间为10ms,计算定时内脉冲的个数n用公式:n=num*65536+TH1*256+TL1,其中num为定时溢出时计数器的值。5、仿真本设计主要分为三大部分,无线射频收发电路、语音电路以及考核电路。其中,无线射频收发电路由PT2262及PT2272来完成,由于Protues中没有此类芯片信息,所以这部分不进行仿真。语音电路同样也不能进行仿真。所以这里将考核电路单独进行仿真。5.1 考核部分仿真Protues软件中没有霍尔传感器的元件信息,所以在仿真时,直接在T1口输入方波信号,其频率可随设计需要改动。信号仿真图如下:图5.1 信号仿真以下为仿真的几组数据:当没有输入车轮周长信息时,显示出错信息。如下:图5.2 出错信息的显示当信号的频率设置为10HZ,车轮周长为3.03m时的显示结果,乱码显示。图5.3 乱码显示当输入的信号频率设置为1HZ,车轮周长设置为3.19m时,显示如下数据。我们可通过公式来验证其错对。图5.4 正常数据显示S=L*n;v=L/t;f=n/0.01;t=0.01/n其中,L为车轮周长,f为所输入信号的频率,n为所测的脉冲数,0.01为定时10ms。经过计算得知,所测速度和里程值正确。经过反复的测量发现:误差的来源是测量时接收到的脉冲数。由于脉冲数只能为整数,所以只要它接收到信号就算有一个脉冲,而不管此脉冲是不是完整。 6、结论本次毕业设计的是基于单片机的公交车的自动考核与报站。它完成了设计所需的俩大基本功能,即自动报站与考核。虽然报站部分无法进行仿真,但由于编解码芯片PT2262/PT2272集成电路的广泛应用,此部分是可以实现的。考核部分则实现了对速度和里程值的简单测量。在本次毕业设计过程中,我对无线射频收发电路的原理有了较深的了解,也对单片机及编解码芯片的基本功能有了更深的认识。由于本设计的软件部分是用C语言编写,所以此次毕业设计又让我巩固了以前学到的C语言知识。虽然设计过程中遇到的问题很多,但在自己及老师的耐心工作下,它们还是被我们逐个解决。本次毕业设计虽然内容繁多,过程繁琐,但我收获颇多。它让我们为以后的工作积累了经验,也让我们认识到以后工作过程当中耐心及认真的重要性。答谢本次毕业设计是在张心歌老师的耐心指导下完成的,在此特表示感谢。经过本次毕业设计,我深深的了解到:只有努力才能获得成功。在刚刚拿到这个题目时,我就被难住了,根本不知道该从哪下手。由于对单片机知识的不精通,很长一段时间我什么都没有做出来。经过张老师不厌其烦的讲解及鼓励,我终于有了些思路。在最后的紧要关头,我的设计终于出来了。在此还要感谢我的舍友,是她们帮助我完成考核系统的编程部分,最后感谢学校领导为我们提供的这次学习、锻炼的机会。参考文献1 高峰单片微型计算机原理与接口技术第二版,北京,科学出版社 ,2008年1月2 李全利单片机原理及接口技术高等教育出版社,2009年第2版3 王为青,邱文勋51单片机应用开发案例精选北京,人民邮电出版社,2007年8月第1版4 全泽昌,谢自美,王文龙无线收发一体芯片TR3001武汉,载微电子学与计算机2001年5期5 李强,唐铭卓,杨桂芹无线收发模块设计实现兰州交通大学,2010年1期6 赵秋利用编解码芯片的无线收发电路南京,载信息化研究第35卷第9期,2009年9月7 古玉年ISD4004系列8-16分钟单片语音录放电路及其应用苏州,载苏州职业大学学报2002年第2期8 魏伟,胡玮,王永清51单片机C语言开发与应用技术北京,化学工业出版社,2010年6月第1版 9 周波,冯顽童,胡建龙公交车自动报站系统的设计四川理工学院,2001第3期10 许连华,李学庆基于GPS的公交车自动报站系统山东大学,2005年12月11 童强民一种基于单片机系统的无线遥控技术安徽,载电脑知识与技术2009年5月附录 考核系统及语音报站程序#include<reg51.h>#include<stdio.h>#include<math.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define ulong unsigned longsbit E=P22; /定义LCD芯片引脚sbit RS=P20;sbit RW=P21;sbit busy=P07;sbit key1=P24;sbit key2=P25;sbit key3=P26;sbit spk=P31; /定义蜂鸣器引脚sbit _ss = P14; /定义语音芯片引脚sbit _sclk= P17;sbit _mosi= P15;sbit _miso= P16;sbit _rac = P13;sbit _int = P12;uchar time;uchar num; /num为定时溢出时计数器的值long int i1,k,s1,v1,j1,d; /s为里程值,v为速度值unsigned long n; /n为脉冲数long float L1,L2,L,v,t,s;uchar err=0x72,0x6f,0x72,0x72,0x65,; /"error"void delay(uint z)/延时 uint x,y; for(x=z;x>0;x-) for(y=110;y>0;y-);void check() /判断LCD忙或空闲 do P0=0xFF; RS=0; RW=1; /读rs rw的值为01 E=0; /E=0,禁止读写 delay(1); /等待,液晶显示器处理数据 E=1; /E=1,允许读写 while(busy=1); /判断是否为空闲,1为忙,0为空闲void write_com(uchar com) /写指令 P0=com; /P0与液晶相连 RS=0; /选择指令寄存器 RW=0; /进行写操作 E=0; /E从高变为低,液晶模块执行命令 delay(2); check(); E=1;void write_data(uchar dat)/写数据 P0=dat;RS=1; /选择数据寄存器RW=0; /进行写操作E=0;delay(2); check();E=1;void error() /报错函数 write_com(0x80+0x4f); write_com(0x04); for(d=0;d<5;d+) write_data(errd);void init() /初始化 E=1; /使能信号为高电平 delay(1); write_com(0x38); /8位,2行DDRAM的地址 delay(5); write_com(0x38); delay(5); write_com(0x0c); /显示开,光标关,不闪烁 delay(5); write_com(0x06); /增量方式不移位 delay(5); write_com(0x80); /检测忙信号 delay(5); write_com(0x01); /显示开,光标关,不闪烁 delay(5);void timer0()interrupt 1 time=0; TH0=(65536-10000)/256; /商为计数初值的高字节