单片机课程设计---出租车计价器.docx_第1页
单片机课程设计---出租车计价器.docx_第2页
单片机课程设计---出租车计价器.docx_第3页
单片机课程设计---出租车计价器.docx_第4页
单片机课程设计---出租车计价器.docx_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘 要出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。而采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试。而采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。本设计的是一个基于单片机at89s52的出租车自动计费设计,附有复位电路,时钟电路,键盘电路等。复位电路是单片机的初始化操作,除了正常的初始化外,为摆脱困境,通过复位电路可以重新开始。时钟电路采用12mhz的晶振,作为系统的时钟源,具有较高的准确性。在上电时led数码管显示最初的起步价,里程收费,等待时间收费三种收费。按暂停键,计价器可暂停计价,按查询键,在led数码管上可以显示运行时等待的时间。通过计算可以得出总共的费用和总的路程。在这里主要是以at89s52单片机为核心控制器,p0口、p2 口接两片四合一数码管,p1口接按键,通过按键输入。关键词:单片机 at89s52;led数码管;出租车计费器;目 录1 概述11.1 课题简介11.2 功能要求12 系统总体方案及硬件设计22.1 系统工作原理及总体方案22.2 单片机最小系统单元32.3 霍尔传感器检测单元32.4 键盘调整单元52.5 显示单元53 软件设计73.1系统主程序73.2 按键扫描程序83.3 中断程序93.4 计算程序103.5 显示程序104 实验仿真124.1 proteus介绍124.2 调试与测试124.3 里程计价测试125 课程设计体会14参考文献15附1:系统原理图16附2:源程序代码1624 1 概述1.1 课题简介出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。为此,我们采用单片机系统设计了一款符合大众化的计费系统。本方案以at89s52单片机为中心、配合led数码管,实现对出租车计价统计。本方案可以实现:1. 系统接收里程传感器的脉冲输入,并对脉冲进行计数,继而转换为里程。2. 采用现行出租车的计价系统的计算方法,并对行驶里程进行计费,提供友好的用户界面,并具有发光二极管指示操作状态功能。1.2 功能要求利用at89s52单片机配合led数码管,实现基本的出租车计价功能,具体设计规格如下:1. 用前4位数码管实时显示里程数,单位为公里,最后一位为小数位;用后4位数码管时时显示金额数,单位为元,最后一位为小数位。2. 规定出租车单程价格为2元/公里,往返则价格为1.5元/公里;单程/往返分别由“单程” 按键和“往返” 按键设定。3. 车速5公里/小时的时间累积为总等待时间t(分钟),每5分钟等待时间相当于里程数增加1公里。4. 起步公里数为3公里,价格为5元;若实际运行大于3公里, 按“设计任务2”计算价格。5. 到达目的地后,按“暂停” 键,计价器可暂停计价。6. 按“清除” 键,计价器能将记录数据(里程、等待时间与价格等)自动清0。7. 按“查询”键,能自动显示总等待时间t,再按下该键回到显示里程数、金额状态。8. 扩展:空车指示、语音提示、信息存储等2 系统总体方案及硬件设计2.1 系统工作原理及总体方案出租车计价器用于记录里程、等待时间、是否往返、起步公里数与价格的关系,它能有效地避免司机与乘客间的矛盾,保障双方的利益。出租车行驶总路程可以通过车轮的周长乘车轮旋转圈数得到。即可计算得到车轮旋转几周出租车能行驶一公里的路程。因此,使用霍尔传感器的目的就是方便地计量车轮旋转的圈数。可在车轮转盘上粘一个小磁钢,当转轮转动时,霍尔传感器检测到磁场及其变化,产生脉冲信号。输出的脉冲信号被接入到at89s52单片机系统中,通过计算接收到的脉冲个数,计算出当前所行驶的路程。同时,根据不同的收费标准,选择相应的起步价、单价等收费标准进行计算。再配置上键盘和数码显示,通过键盘能够实现启动、暂停计价器、切换显示当前的行驶里程和需支付的车费。通过分析,需要实现四个主要的功能模块,分别为脉冲计数模块、定时器计时模块、按键的处理以及数码管动态扫描等功能。定时器计时模块主要完成途中等待(即没有脉冲来时)30秒的计时。在启动键按下后,定时器就不停的计时,只要有脉冲来就将计时的值清除为零。如果没有脉冲来,当计时超过30秒时,相应的总金额要按照收费标准计价。中断的管理:尽管中断有嵌套以及优先级的功能,但是由于定时器已经使用一个了中断资源,脉冲检测不宜再采用中断方式,而是采用查询方式。由于需要不停的要清除30秒的计时,因此,脉冲的计数不采用定时器的计数方式。启动键触发定时器开始工作,而定时器的运行可以作为脉冲计数的标志,只要定时器计时在运行,每来一个中断都应该计数。主程序完成键盘的扫描和按键的处理,查询脉冲产生的中断,并完成脉冲的计数。若每个脉冲代表1米,则当计数到1000时表示1千米的距离,相应的总金额要按照收费标准计价。采用mcs51系列单片机at89s51作为主控制器,外围电路器件包括数码管、独立式键盘、复位电路等。模拟出租车计价器能根据总里程数、总等待时间长短、是否往返、起步公里数的情况作出相应报价等。当然实际的出租车计价器还具有打印票据,显示是否空车等功能。总体模块如图2.1所示。图2.1 电路的组成部分2.2 单片机最小系统单元主控机系统采用了atmel 公司生产的 at89s52单片机,它含有256 字节数据存储器,内置8k的电可擦除flash rom,可重复编程,大小满足主控机软件系统设计,所以不必再扩展程序存储器。复位电路和晶振电路是at89s52工作所需的最简外围电路。单片机最小系统电路图如图2.2所示。图2.2 单片机最小系统图在复位电路中,按一下复位开关就使在rst端出现一段时间的高电平,外接11.0592m 晶振和两个30pf电容组成系统的内部时钟电路。2.3 霍尔传感器检测单元us1881 属于开关型的霍尔器件,其工作电压范围比较宽(3.524v),其输出的信号符合ttl电平标准,可以直接接到单片机的io 端口上,而且其最高检测频率可达到1mhz。us1881 集成霍耳开关由稳压器a、霍耳电势发生器(即硅霍耳片)b、差分放大器c、施密特触发器d和oc门输出e五个基本部分组成。在输入端输入电压vcc,经稳压器稳压后加在霍尔电势发生器的两端,根据霍尔效应原理,当霍尔片处在磁场中时,在垂直于磁场的方向通以电流,则与这二者相垂直的方向上将会产生霍尔电势差vh输出,该vh信号经放大器放大后送至施密特触发器整形,使其成为方波输送到oc门输出。当施加的磁场达到工作点(即bop)时,触发器输出高电压(相对于地电位),使三极管导通,此时oc门输出端输出低电压,三极管截止,使oc门输出高电压,这种状态为关。这样两次电压变换,使霍尔开关完成了一次开关动作。图2.3 霍尔开关集成传感器原理图及其输出特性 里程计算是通过安装在车轮上的霍尔元件检测到的信号,送到单片机,经过处理计算,送给显示显示单元的。霍尔传感器是一种磁传感器。用它可以检测磁场及其变化,可在各种与磁场有关的场合中使用。霍尔传感器以霍尔效应为其工作基础,是由霍尔元件和它的附属电路组成的集成传感器。霍尔传感器分为线性型霍尔传感器和开关型霍尔传感器两种。我们所用的是开关型霍尔传感器。其原理图如图2.4所示:图2.4 传感器测距示意图我们选择p3.2口作为信号输入端,车轮每转一圈(假设车轮周长为1米),霍尔开关就检测并输出信号,引起单片机中断,对脉冲计数,当计数达到一千次时,也就是1公里,单片机就控制金额自动增加。2.4 键盘调整单元独立式键盘:独立式键盘中,每个按键占用一根i/o口线,每个按键电路相对独立。i/o口通过按键与地相连,i/o口有上拉电阻,无键按下时,引脚端为高电平,有键按下时,引脚电平被拉低。i/o口内部有上拉电阻时,外部可不接上拉电阻。键盘接口电路如图2.5所示:图2.5 键盘接口电路 s1:接p1.0口,对上一次的计费进行清零,为下次载客准备。s2:接p1.1口,能自动显示总等待时间t,再按下该键回到显示里程数、金额状态。s3:接p1.2口,选择是按单程计费还是双程计费。s4:接p1.3口,可以暂停计费,方便乘客结账。 2.5 显示单元 对于现实电路我们可以采用数码管,也可以采用液晶显示。led数码管特点有:寿命长、成本低、亮度高、故障少、视角大、可视距离远等,但其显示内容有限。液晶显示的特点有:显示内容丰富等,但其驱动复杂,成本高;外部光线强时,可视距离近。综合考虑,本次设计采用led数码管。显示电路如图2.6所示:图2.6 显示电路3 软件设计软件是单片机系统的灵魂,根据设计的要求,在本系统中本系统软件中包括下面程序模块:主程序: 初始化系统涉及到的硬件模块,扫描键盘,根据按键启动/停止里程测量,实时更新单价、里程、等待时间、费用等信息显示。 按键扫描程序:扫描按键,返回扫描结果。计算程序:将传感器发出脉冲数转换为公里数,并根据规则计算对应的费用。显示子程序:将计算程序得到的数据反映到数码显示管上。中断程序:监测行驶速度,统计等待时间。现在应用更广泛的是单片机c语言,因其简单明了,故此次课程设计采用单片机c语言编程。3.1系统主程序在主程序模块中,需要完成对各参量和接口的初始化、出租车起价和单价的初始化以及中断、计算、循环等工作。 当汽车运行起来时,就启动计价,根据里程寄存器中的内容计算和判断行驶里程是否已超过起步价公里数。若已超过,则根据里程值、每公里的单价数和起步价数来计算出当前的总金额,并将结果存于总金额寄存器中;中途等待时,无脉冲输入,不产生中断,当时间超过等待设定值时,开始进行计时,并把等待价格加到总金额里,然后将总金额、里程和单价、往返价格送数码管显示出来。程序流程如图3.1所示:图3.1 主程序流程3.2 按键扫描程序键盘实质上是一组按键开关的集合,均利用机械触点的合、断作用。按键在闭合及断开的瞬间均伴随有一连串的抖动,抖动反应在电压上就是呈现出高电平或低电平,为了确保cpu对一次按键动作只确认一次,必须消除抖动的影响。去抖通常有硬件去抖和软件去抖两种方法,本程序使用软件延时去抖。 图3.2 按键抖动信号波形对于独立式键盘判键,首先看有键按下不,如果有键按下则延时一会儿,在判断是否真的有键按下,如果确实有键按下,再判键释放,最后执行键功能程序。判键子函数的流程框图如图3.3所示:图3.3 判键子程序流程图3.3 中断程序 每当霍尔传感器输出一个低电平信号就使单片机中断一次,当里程计数器对里程脉冲计满1500次时,进入里程计数中断服务程序中,里程变量加一。主函数中总金额也相应地变化。在中途等待中断程序中,每1ms产生一次中断,将由当前里程计算出速度值送入某个缓存变量。把当前速度值与预先设定的速度值相比较,当小于设定的车速时,进入等待计时。等待时间5分钟相当于里程增加一公里。流程如图3.4所示:图3.4 中断流程3.4 计算程序计算程序根据里程数分别进入不同的计算公式。如果里程大于3公里,则执行公式:总金额=起步价+(里程-3)*单价;否则,执行公式:总金额=起步价。程序流程如3.5所示:图3.5 计算程序流程3.5 显示程序程序利用定时器每1ms产生一次中断,相应变量置位,点亮一个数码管,显示一位数据,利用主函数内的循环,实现动态扫描显示,同时根据数码管余辉和人眼暂留现象,即可实现显示。0x3f,0x06,0x05b,0x04f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/段码表示0-9图3.6 显示子程序流程4 实验仿真4.1 proteus介绍proteus软件是来自英国labcenter electronics公司的eda工具软件,它组合了高级原理布图、混合模式spice仿真,pcb设计以及自动布线来实现一个完整的电子设计系统。此系统受益于15年来的持续开发,被电子世界在其对pcb设计系统的比较文章中评为最好产品“the route to pcb cad”。proteus 产品系列也包含了我们革命性的vsm技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。用户甚至可以实时采用诸如led/lcd、键盘、rs232终端等动态外设模型来对设计进行交互仿真。其功能模块:个易用而又功能强大的isis原理布图工具;prospice混合模型spice仿真;ares pcb设计。prospice 仿真器的一个扩展proteus vsm:便于包括所有相关的器件的基于微处理器设计的协同仿真。此外,还可以结合微控制器软件使用动态的键盘,开关,按钮,leds甚至lcd显示cpu模型。支持许多通用的微控制器,如pic,avr,hc11以及8051。最新支持arm。交互的装置模型包括:led和lcd显示,rs232终端,通用键盘,i2c,spi器件。强大的调试工具,包括寄存器和存储器,断点和单步模式。iar c-spy 和keil uvision2等开发工具的源层调试。应用特殊模型的dll界面-提供有关元件库的全部文件。4.2 调试与测试采用keilc51编译器进行源程序编译及仿真调试,同时进行硬件电路板的设计制作。硬件电路制作完毕,用万用表检测有无短路开路等现象,确定硬件电路没有问题后,用仿真头与硬件电路相连,运行程序进行调试。若调试不成功,则可再单独调试程序和硬件电路。程序用软件仿真运行,硬件电路再次检查有无焊错,或者元件与插座接触不良等方面问题;确认均无问题后,再次把软件和硬件联机调试,直至功能正常。把程序烧录进单片机stc89c52结束调试。4.3 里程计价测试由于实验条件的限制,我们采用霍尔传感器产生外部中断,设定中断间隔为10ms,假定1500个脉冲为1公里,则此时车速为1km/h=5圈/s。整个系统以此为基础,通过计费程序完成中金额的计算。表4.1的测试条件是:假设单程的单价是2元,起步价为5元(包含3公里),分别不公里程测试得数据如表:4km6km7km9km 总 金额理论 7元 11元13元 17元实际 7元11元13元17元行驶里程理论4km6km7km9km实际4km6km7km9km表4.1 实际金额和里程数表4.2的测试条件是:假设在单程运行中的单价2元的情况下行驶了6km,进行中途等待,分别等待不同的时间(每5分钟相当于增加1公里),起步价为5元(包含3km)。5min10min15min20min总金额理论 13元15元17元19元实际13元15元17元19元表4.2 总金额对比5 课程设计体会出租车计费器系统的设计已经全部完成,能按预期的效果进行模拟汽车启动,停止,暂停等功能并能够通过数码管显示车费数目。本款出租车计价器包括单价输出、单价调整、显示当前的行驶里程等功能。另外,多功能出租车计价器还具有性能可靠、电路简单、成本低、实用性强等特点,加上经过优化的程序,使其有很高的智能化水平。一个月来,经过自己努力,基本上完成了设计要求的内容,在系统可行性分析、原理图设计等方面都作了许多实际工作,取得了一些成绩,同时也遇到了一些问题,存在一些不足。经过这一个月的学习,我觉得自己不论是在理论知识方面还是在动手能力方面都有了不小的进步,自己从中受益匪浅。这次设计很好的把以前学到的理论知识应用于实践,使我认识到理论知识与实践之间有一定的差距,只有通过不断的努力学习和实践才能很好的把理论知识应用到实践当中,也只有通过不断的实践才能对理论知识的理解。通过这次设计不仅学会了如何去查找相关资料,更重要的是通过查找资料和翻阅书籍学到了不少知识,扩大了知识面,提高了知识水平。经过单元设计和系统设计巩固了以前所学的专业知识,自己真正认识到理论联系实际的重要性,为以后的学习和工作提供了很多有价值的经验。通过这次设计不仅增强了自己的动脑能力和动手能力,也提高了我思考问题、分析问题、解决问题的能力,更重要的是学会用工程化的思想来解决问题。这在以前的学习过程中是不曾学到的。并且这次设计还使我认识到完整、严谨、科学分析问题、解决问题的思想是多么的重要,只有拥有了科学的态度才能设计出有用的产品。为了使我们设计的系统更具人性化,电机的启动,使用了手动开关按键,使用起来比较方便。通常在不同的方式,不同的情况下都会有不同的收费标准;单程、白天和中途等待,考虑后首选用开关来实现这些切换功能,简单方便,同时显示器会显示相应的指示。最大的方便了司机的计费控制。并且能根据市场经济的变化而发生相应的跳动计价。但是在设计和调试的过程中,也发现了一些问题,譬如计价的金额数有限,实际的里程可能会很远,会超出实际的显示范围;计价过程出现突然断电时如何处理这些问题,因此对此方案还可以进行进一步改进,如:实现白天、晚上计费自动切换和具有记忆功能,也可以加上语音提示功能,防作弊功能等,这样可能会更让乘客放心乘坐出租车,并得到广泛的应用。参考文献1 谭浩强著. c程序设计m. 北京:清华大学出版社, 20052 余发山、王福忠编著.单片机原理及应用技术m.中国矿业大学出版社,2008.63 贾宗璞、许合利.c语言程序设计m.中国矿业大学出版社,2007.24 孙余凯.传感器应用电路300例m. 北京:电子工业出版社, 2008.5 田立. 51单片机c语言程序设计快速入门m. 北京:人民邮电出版社, 20076 霍尔传感器原理及其应用/view/cf5d144e852458fb770b568f.html7 proteus与keil的使用及联调/view/01d2a93410661ed9ad51f3fa.html附1:系统原理图 附2:源程序代码#include #define uchar unsigned char #define uint unsigned int uchar qianwei,baiwei,shiwei,gewei; /显示数据各个位置数字的临时变量 char led_seg_code10=0x3f,0x06,0x05b,0x04f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/段码表示0-9 uint tt,aa,round,distance,cost,price,wait;/定义路程、价钱、等待时间及一些全局的变量等; uchar dengdai,second,minute; unsigned long wait_ten_ms;/记录等待时间多少个10ms/按键的定义,所有按键按下去为低电平sbit key0=p10; /清零sbit key1=p11; /切换路程与等待时间sbit key2=p12; /单程还是往返设置sbit key3=p13; /暂停按钮sbit led1=p36;/ 双程 sbit led2=p47;/ 暂停sbit led3=p54;/ 堵车sbit led4=p65; / 切换bit key1_flag;/由于按键会自动复位,这个为标志位bit key2_flag;bit key3_flag;bit flag;/初始化函数void initial_data(void)distance=0;cost=0;second=0;minute=0;wait_ten_ms=0;key1_flag=1; /key2_flag=0; /单程or往返,接指示灯;key3_flag=1; /暂停,接指示灯;flag=0;round=0;dengdai=0;led1=1; /双程指示led2=1; /暂停指示 led3=1; /堵车指示led4=1; / 等待时间切换标志/暂停程序void zanting(void) if(key3_flag) ex0=0; /关闭中断和定时器tr0=0;elseex0=1;tr0=1; key3_flag=!key3_flag; /计算数据处理 void jisuan() distance=round/60+wait_ten_ms/3000;/车轮转60圈为100m,等待时间30s为100mif(distance30)cost=price*(distance-30)/10+50; wait=minute*100+second; /显示的辅助程序,分离一个数的各个数字 void fenli(uint temp) /数据的分离处理 if(temp9999) temp=9999;qianwei=temp/1000;baiwei=temp/100%10;shiwei=temp%100/10;gewei=temp%10; /延时约1ms,数码管显示时使用void diplay_delay(void) uint i; for(i=0;i0;i-) for(j=340;j0;j-); /键盘的扫描 void keyscan() if(key1=0) / 按键消抖并判断按下去的次数为基数还是偶数 delay(5); if(key1=0) key1_flag=!key1_flag; while(!key1)led_show(); delay(5); while(!key1)led_show();

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论