基于单片机的出租车计价器设计.docx_第1页
基于单片机的出租车计价器设计.docx_第2页
基于单片机的出租车计价器设计.docx_第3页
基于单片机的出租车计价器设计.docx_第4页
基于单片机的出租车计价器设计.docx_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

目录前 言2一、方案设计21.1功能要求21.2系统原理及组成模块3二、硬件设计32.1单片机组成的最小系统模块32.2脉冲检测模块52.3显示模块62.4键盘模块电路62.5全系统原理图7三、软件设计731主程序流程图732乘车时间、车速、里程获取流程图833按键流程图11四、总结11五、附录(源程序)125.1 taxi.c文件125.2 taximain.c文件17基于单片机的出租车计价器设计前 言近几年来,出租汽车行业在各地得以蓬勃发展,出租车经营更加步入正轨的状态,出租车计价器成为出租车营运中必配的、可靠的计量器具,其使用准备性直接关系到经营者与乘客的经济利益。而随着出租车行业的发展,对出租车计价器的要求也越来越高,用户不仅要求计费器性能稳定,计费准确,有防作弊功能;同时还要求其具有车票资料打印、ic卡付费和电脑串行通信功能。不同国家和地址的计费方式存在差异,如有些地区有夜间收费及郊区收费等,而有些地区则无夜间收费和郊区收费。但是在实际的运营中,总有不少经营者或乘客反映相同路径,不同车辆的收费有较大出入。计价器的设计早已成熟,但还可以在此基础上增加一些功能,以使得出租车计价器的功能和性能更加完善。出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。而采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试。而采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。本设计采用stc89c52单片机为主控器,并用光电传感器检测转盘转动模拟车速,实现对出租车的多功能的计价设计,输出采用hd7279芯片驱动8段数码显示管。本电路设计的计价器不但能实现基本的计价,而且还能根据单程,往返和中途等待来调节单价。一、方案设计1.1功能要求1、显示模块由四位数码管组成,在控制按钮下实现单价、里程、总价钱和乘车时间的显示。单价(元)和总价(元)由四位不带小数点数码管显示,里程(公里km)和时间(分钟min)由四位带一位小数的数码管显示。2、按键模块由五个案件组成,依次分别实现单价显示、里程显示、总价显示、乘车时间显示和初始化系统的功能。3、脉冲发生模块实现车速和里程的测量,在车轮上安装基于光耦传感器的脉冲发生电路,通过测量脉冲的个数计算出车速、里程、总价的信息。4、单片机系统实现总价、里程、乘车时间的计算。其中里程由测速模块电路获得,而总价的算法如下:起步价8元,三公里内里程增加起步价不变,超过三公里每公里1.9元;全程如果车速时速在12公里以下则每30秒1块钱,如果时速在12公里以上则不算钱;如果中途任何时候停车,只按时间收费。1.2系统原理及组成模块1、系统工作原理整个系统由数据处理模块、数据采集模块、显示模块、键盘模块组成。当有乘客上车,系统开始工作;数据采集模块通过采集车轮圈数而获得车速、里程和总价的数据,同时将数据输入数据处理模块进行处理,处理后将里程、乘车时间和总价的数据处理后输出到显示模块进行驱动,实现对里程、乘车时间和总价信息的显示;通过按键的输入的变化,改变显示的内容。2、 系统组成模块单片机脉冲检测电路数码管显示键盘二、硬件设计2.1单片机组成的最小系统模块单片机的最小系统由单片机、振荡电路和手动复位电路组成。各部分电路和说明如下:1、 单片机单片机是数据处理的核心芯片,通过振荡电路由xtal1口和xtal2提供时钟,由i/o口输入输出数据。本次用at89c51芯片。1、 振荡电路振荡电路由12m晶振和两个电容组成,为系统提供12m的时钟。2、 手动复位电路手动复位电路通过按下按键是单片机的复位端口置为高电平,实现复位;松开按键由于电容的作用又将单片机复位端口置为低电平,单片机正常工作。3、 整体最小系统2.2脉冲检测模块该模块由槽型光耦为主要器件组成。传耦合器以光为媒介输电信号。它对输入、输出电信号有良好的隔离作用,所以,它在各种电路中得到广泛的应用。目前它已成为种类最多、用途最广的光电器件之一。光耦合器一般由三部分组成:光的发射、光的接收及信号放大。输入的电信号驱动发光二极管(led),使之发出一定波长的光,被光探测器接收而产生光电流,再经过进一步放大后输出。这就完成了电光电的转换,从而起到输入、输出、隔离的作用。由于光耦合器输入输出间互相隔离,电信号传输具有单向性等特点,因而具有良好的电绝缘能力和抗干扰能力。又由于光耦合器的输入端属于电流型工作的低阻元件,因而具有很强的共模抑制能力。所以,它在长线传输信息中作为终端隔离元件可以大大提高信噪比。在计算机数字通信及实时控制中作为信号隔离的接口器件,可以大大增加计算机工作的可靠性。而槽型光耦为中断槽隙透视式光电传感器。槽型光耦的工作原理:槽隙两边分别装有红外发射器和接收器。当槽内无物体时,红外发射管的光直接照在硅光敏三极管的窗口上,从而产生大的电流输出;当有物体经过槽隙时,切断了光路,阻挡了信号的传输,这时光敏三极管无输出,这样可以辨别物体的有无。槽型光耦用vcc=5v电源,可以安装在出租车车轮处。当出租车在行进过程中,则车轮就会不断对它遮挡,从而产生一系列脉冲。由于这些脉冲可能会被干扰,或者电平不稳定,因此就需要增加一个三级管对信号进行放大。而74ls14是作为反相器的功能来使用,可以z口输出的脉冲符合ttl电平,直接可输入到stc89c52的int0口。电路图如下:2.3显示模块显示模块分为扫描部分和显示部分;显示部分由4位共阴数码管和电阻组成,其中电阻起保护数码管和限制亮度的作用,74hc573为锁存器,锁存要显示的数据;扫描部分由74ls138译码器完成。电路如下: 2.4键盘模块电路其中自上往下四个按钮作用依次是,启动关闭中断,即计价开始结束控制;车速显示;里程显示;总金融显示。2.5全系统原理图三、软件设计软件设计完成通过槽形光耦测得的脉冲数据和单片机内部定时器的时钟数据计算出时间、车速、里程、总金额和数码管显示驱动的任务。个部分流程图如下。31主程序流程图流程图中flag表示是否有乘客上车,当有乘客上车时计价系统开始工作。开始初始化系统flag=1? n y执行各个获取数据操作 flag=0? n y初始化系统结束32乘车时间、车速、里程获取流程图由于需要计算车速,则可以在计算时间的同时算出车速和里程信息。流程图如下:开始flag=1? n y 打开int0中断打开t0中断是否有中断是否有中断 n n y ysum_pulse加1sum_pulse_ps加1num加1num=20? n n y计算车速、里程t_sec加1num、sum_pulse_ps清零flag=0? n n n结束初始化系统,关闭中断流程图中num是时间标志位,每隔50ms加1,计满20即1s清零,t_secw为累计时间;sum_pulse为总脉冲数,sum_pulse_ps为每秒脉冲数,计满1s清零。则车速v的即为1s内所走的路程,因而该系统每隔1s测一次车速,里程s为总脉冲sum_pulse与轮子周长的乘积,乘车时间即为t_sec。下面为总金额计算流程: 开始v12? n ys3?s3? n n y y 计算sum4计算sum3计算sum2计算sum1结束其中:sum1=8.0; sum2=8.0+1.9*(s-3.0); sum3=8.0+1.9*(s-3.0)+1/30*t_sec; sum4=8.0+1/30*t_sec; 33按键流程图开始 key=0? n执行才做 y消抖结束key=0? n y y其中key=0表示有按键按下。四、附录(源程序)4.1 taxi.c文件/*该文件为出租车个模块驱动函数和中断服务程序*/#include#include#define uchar unsigned char#define uint unsigned int#define d 1.99 /车轮周长米为单位uint num;/时间标志位,满20为1秒uint sum_pulse;/测量总脉冲数uint sum_pulse_ps; /每秒的脉冲数,用于计算车速uint t_sec=0; /以秒为单位的时间计数float t_min=0.0; /以分钟为单位的时间计数float v=0.0; /车速单位公里每小时float s=0.0;/里程float sum=0.0; /总价钱sbit key1=p23; /定义四个按键端口sbit key2=p24;sbit key3=p25;sbit key4=p26;sbit key5=p27;sbit ls138a=p20; /定义138译码器端口sbit ls138b=p21;sbit ls138c=p22;uchar led_out4; /数码管显示各位数unsigned char code disp_tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40; /0-9七段码 uchar flag; /有无乘客标志位/*延时函数*/void delay(uint xms) /延时x毫秒 uint i,j; for(i=xms;i0;i-) for(j=110;j0;j-); /*to中断服务程序*/void to_time() interrupt 1 th0=15536/256;/在12m时钟下每次计数完毕为50毫秒 tl0=15536%256; num+; /num满20为1秒/*外部脉冲中断服务程序*/void int0_pulse() interrupt 0 ex0=0; sum_pulse+; sum_pulse_ps+; ex0=1;/*获取乘车时间(秒为单位)、车速和里程*/void get_time_vel_s() if(num=20) t_sec+; /满1秒时间累计加1 v=d*sum_pulse_ps/3.6;/每秒走的路程为米每秒为单位的速度,该公式换算成公里每小时为单位的车速/ s=d*sum_pulse; /动态获取里程 num=0; sum_pulse_ps=0; /*计算总费用*/void get_sum_money() if(v12.0) /车速大于12公里每小时 if(s3.0) /里程大于3公里 sum=8.0+1.90*(s-3.0); else/里程小于3公里 sum=8.0; else/车速小于12公里每小时 if(s3.0) /里程大于3公里 sum=8.0+1.90*(s-3.0)+(1/30)*t_sec; else /里程小于3公里 sum=8.0+(1/30)*t_sec; /*显示函数数码管驱动*/void display(float x) /显示数x保留一位小数 uint i,j; j=x*10; /浮点型转成无符号整型 led_out0=disp_tabj%10; /小数点后一位 led_out1=disp_tabj%100/10|0x80; /个位带小数点 led_out2=disp_tabj%1000/10; /十位 led_out3=disp_tabj%10000/100; /百位 for(i=0;i4;i+) p1=led_outi; switch(i)/138驱动 case 0:ls138a=0; ls138b=0; ls138c=0; break; case 1:ls138a=1; ls138b=0; ls138c=0; break; case 2:ls138a=0; ls138b=1; ls138c=0; break; case 3:ls138a=1; ls138b=1; ls138c=0; break;delay(100); /*按键操作*/void key_scan() if(flag=0) /没有乘客 if(key1=0) /有乘客上车 delay(10); if(key1=0) flag=1; ex0=1; /开启int0外部中断 tr0=1; /开启to中断 while(!key1); /等待按键释放 if(flag=1) /有乘客 if(key1=0) /乘客下车 delay(10); if(key1=1) flag=0; ex0=0;/关闭int0中断 tr0=0;/关闭t0中断 th0=15536/256;/定时器清零 tl0=15536%256; sum_pulse=0; /脉冲计数清零 sum_pulse_ps=0; t_sec=0; /累计时间清零 t_min=0.0; v=0.0; /车速清零 sum=0.0; /总价清零 s=0.0; /里程清零 p1=0; while(!key1); if(key2=0) /显示车速 delay(10); if(key2=1) display(v); while(!key2); if(key3=0) /显示里程 delay(10); if(key3=1) flag=0; display(s); while(!key3); if(key4=0) /显示乘车时间 delay(10); if(key4=1) flag=0; display(t_min); while(!key4); if(key5=0) /显示总价 delay(10); if(key5=0) flag=0; display(sum); while(!key5); /*总处理*/voi

温馨提示

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

评论

0/150

提交评论