![出租车自动计费器_第1页](http://file3.renrendoc.com/fileroot_temp3/2021-12/6/074960af-5fd9-4dc7-bd98-526fbb1100db/074960af-5fd9-4dc7-bd98-526fbb1100db1.gif)
![出租车自动计费器_第2页](http://file3.renrendoc.com/fileroot_temp3/2021-12/6/074960af-5fd9-4dc7-bd98-526fbb1100db/074960af-5fd9-4dc7-bd98-526fbb1100db2.gif)
![出租车自动计费器_第3页](http://file3.renrendoc.com/fileroot_temp3/2021-12/6/074960af-5fd9-4dc7-bd98-526fbb1100db/074960af-5fd9-4dc7-bd98-526fbb1100db3.gif)
![出租车自动计费器_第4页](http://file3.renrendoc.com/fileroot_temp3/2021-12/6/074960af-5fd9-4dc7-bd98-526fbb1100db/074960af-5fd9-4dc7-bd98-526fbb1100db4.gif)
![出租车自动计费器_第5页](http://file3.renrendoc.com/fileroot_temp3/2021-12/6/074960af-5fd9-4dc7-bd98-526fbb1100db/074960af-5fd9-4dc7-bd98-526fbb1100db5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘要 11 概述 21.1 基本要求 21.2 功能介绍 22 设计方案 32.1 设计原理 33 硬件电路 43.1 单片机最小系统 43.2 按键电路 53.3 数码管显示电路 53.4 LCD1602 显示电路 64 软件设计 84.1 单片机 I/O 资源使用 84.2 单片机软件模块设计 84.3 程序框图 95 PROTEU舫真 115.1 总仿真电路图 115.2 不调价仿真 115.3 调价仿真 126 心得体会 14参考文献 15附录1原件清单 16附录2程序 17附录3原理图 30由租车自动计费器设计摘要近些年来,出租车成为了人们出行重要的交通工具之一,出租车以低价高质的服
2、务给人们带来了不少方便。基于单片机系统设计的出租车计费器以单片机作为核心的控制元件,具有功能强,性能可靠,电路简单,成本低的特点,加上经过优化的程序,使其具有很高的智能化水平。本次设计中,硬件设计主电路以AT89S51单片机为核心控制元件,输出采用LCD1602液晶屏和四位一体数码管,显示起价、每公里单价、等待价格、行驶总里程和总金额,并配有多个按键,以供手动调节乘车价格。关键词: 计费器 51 单片机 LCD1602 数码管351 概述1.1 基本要求 以MCS-51系列单片机为核心,设计出租车自动计费器。 设计一个出租车自动计费器,具有行车里程计费、等候时间计费、及起价三部分,用四位数码管
3、显示总金额,最大值为99.99 元。 行车里程单价1 元 /公里,等候时间单价0.5 元 /10 分钟,起价3 元( 3 公里起价)均能通过人工输入。 行车里程的计费以一个脉冲模拟汽车前进十米,用LED显示行驶公里数和收费金额。一、计费功能费用按行驶里程计费,起步价为3 元。1、当行驶里程小于或等于3 公里,按起步价计费2、当行驶里程大于3 公里,每公里收费1 元,不足1 公里不计3、等待时间为每10分钟收费0.5 元,不足10分钟不计二、显示功能1、显示行驶里程:用LCD1602夜晶屏显示,显示方式为“XX,单位为Km范围0-99Km2、显示等候时间:用LCD1602夜晶屏显示,显示方式为“
4、XX',单位Min,范围0-99Min3、显示总费用:用四位数码管显示,显示方式为“ XX.X”,单位元,范围3-99.9元1.2 功能介绍本出租车自动计费,上电后显示默认的起步价,每公里计费单价,等待时间计费单价,可通过按键调整起步价,里程计费单价,等待时间计费单价。具有运行、暂停、停止状态,可以显示行驶的里程、等待的时间和出租车行驶的总费用。2设计方案2.1 设计原理利用单片机的强大功能,可用 AT89S5俾片机作主控芯片,用来处理计费器的各种 数据并控制LCD1602W数码管显示模块,实现基本的里程计费和价格调整。为模拟汽车行驶,用单片机的T0定时器进行16位定时,每0.05S发
5、射一个信号进 入定时中断,20个中断为1S,每秒向单片机发送信号表示前进 10米。2.2 设计方案图2-1总体设计框图3硬件电路3.1 单片机最小系统该电路单片机最小系统由四个部分组成:电源、地、复位电路、时钟电路。电源电 路中,电源接单片机,同时连接一个电容接地用于去耦合,稳定电源电压。复位电路如图3-1所示,共有两种基本形式:上电复位和按键复位。单片机上电瞬 问会对C1进行充电,此过程C1相当于短路,RST引脚电平升高单片机复位;若要手动 复位,则按下RST位位按键,RST引脚直接接高电平,单片机复位。1O|1FLOK GND图3-1复位电路图3-2为单片机时钟电路,AT89S51内部有一
6、个用于构成振荡器的高增益反相放大 器,它的输入端为芯片引脚XTAL1输出端为XTAL2,。这两个引脚跨接石英晶体和微调 电容,构成一个稳定的自激振荡器,微调电容的典型值通常为 30pF。C2GND33pF图3-2时钟电路3.2 按键电路本设计共有6个独立按键:复位按键RSTK进入退出设置键K1,光标移动键K2,数值 增加键K3,等待计时键K4,开始暂彳¥计费键K51 .复位或者程序跑飞,可用 RSTK1进行复位;2 .调整计费单价,按K1进如设置状态,设置完后再按下 K1退出设置状态;3 .按K2可移动光标,分别调整各收费单价;4 .按K5键开始计费,中间需要停车等待,可直接按 K4
7、进行等待计时计费,等待完毕直接按K5继续行驶计费。按键电路如图3-3所小。图3-3按键电路3.3 数码管显示电路数码管用于显示计费总价,显示方式为“ XX.X”,单位元,显示范围为3-99.9元, 为保证数码管显示的稳定性,在段选端前接锁存器74HC573数码管电路如图3-4所示1±_>I氏 口.RP1-VW -w- -WV 一W'yIK图3-4数码管显示电路由于单片机P0 口没有上拉能力,所以数码管的段选口高电平由锁存器提供。3.4 LCD1602显示电路LCD1602夜晶屏是字符型液晶屏,并且带字符库的,不需要查找代码,英文字符可图3-5 LCD显示电路直接输入显示
8、。液晶电路使用时,如果发现液晶不亮可以调节连接液晶的变阻器,改变 液晶的亮度。每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行 之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图 形。LCD1602M示电品&如图3-5所示。另外,系统供电由P1 口外接的5V电源供电,如图3-6VCC P1GND图3-6电源接口4 软件设计4.1 单片机 I/O 资源使用此设计中P10U P13 口和P32 口连接按键控制输入,P0 口和P14 P15 P1& P17 口用于控制数码管,P2 口和P34 P3s P36 口用于控制LCD16021品屏。4
9、.2 单片机软件模块设计一、LCD1602M示模块由于LCD160邪序比较复杂,所以专门创建一个1602的头文件,将1602的使用程 序存放于头文件中,在主程序中只要声明了1602头文件,即可调用1602子程序。头文件下包含的子程序有:延时程序、LCD1602初始化程序、写命令程序和写数据程序。由于只是使用LCD1602a行显示,所以不需要读命令数据程序。二、中断程序模块程序共使用三个中断:INT0、 T0、 T1 中断。INT0 中断用于进入或退出调价模式,打开计费器后进行计费之前,随时可以利用INT0 中断进行调价,开始计费之后则关闭INT0 中断,不能调价。T0定时中断形成行车脉冲,模拟
10、汽车行驶,每 0.05s产生一次中断,每20次中断 为1s,每秒行驶10米距离。程序中设置一个变量flag2用来表示按下的是K4还是K5, 按下K5键T0中断中的t1开始计时,模拟汽车行驶,再次按下则暂停计时,即停止行 驶;按下K4, T0中的t2开始计时,计算等待的时间。T1 中断用于数码管显示,由于数码管是动态显示,所以在此较为复杂的主程序中运行会产生闪烁,将数码管显示程序置于T1 中断程序中,就不会再闪烁。三、其它程序模块其它程序模块主要包括数码管显示模块、数据计算模块、调价模块、按键扫描模块数码管显示模块用于显示总费用,使用四位一体数码管显示,但只用其中后三位,显示 0到 99.9。数
11、据计算模块主要计算行车里程、等待时间、等待收费、总收费。调价模块用于调整起价、每公里单价和等待收费单价。按键扫描模块用于检测用户按下了哪些功能键。4.3 程序框图本设计中,软件设计采用模块化操作,利用各个模块之间的相互联系,在设计中采用主程序调用子程序的方法,使程序通俗易懂。在 main 函数开始,要对系统初始化,和对硬件设备进行初始化,并使硬件处于就绪状态。通过判断是否计费,调价,清零等状态,来分别调用不同的子程序,使程序在设计之前,就有了很强的逻辑关系。这些对应于硬件就是通过按下各个控制开关,来分别进行不同的动作,最后显示屏根据输入的信息,来显示不同的数据信息,这就达到了软件控制硬件,同时
12、输入信息控制输出信息的目的。整个程序的流程图如下:图4-1程序流程图从图中可以看出,程序开始就对LCD1602 T0 T1计数器和INT0进行了初始化,1602 显示器开始显示计费标准,之后判断是否进行调整收费标准,如需调整则进入调整程序 进行价格调整,若不需要调整则判断是否开始计费或者计时,若开始则进入数据处理程 序进行各数据计算,计算结果显示在 LCD1602ffi数码管上,若不开始计价或者计时,则 只用LCD1602a示收费标准。5 PROTEU助真5.1 总仿真电路图使用PROTEUS建好电路,下载程序进行仿真。仿真电路包含 AT89S51单片机、按 键控制电路、74HC573锁存器、
13、四位共阴极数码管和 LCD1602夜晶屏。总电路如图5-1 所示。TALI置血3阳叼口 同*ll =0 2 AD2 司1小:-(I + 74 词&七 即区网冗 E TADF明DMBIf. 打 _3»1口 F2.W1! PZM12 林如3 12.6.-*14 此皆鹏博冷息制 P31iW - 的;*TT 用“n 同血 唾PSXT'TD:ML”gLzl'rSi3 Pl 1 UI9.5TiriE:31 LONTH:22一 1A*pxnT 4LE图5-1仿真电路图5.2 不调价仿真先使用默认的价钱进行仿真,即起步价 3元,每公里1元,每等待10分钟0.5元 通过计算,行
14、驶10公里且不等待收费10块钱,对比仿真结果图5-2发现电路运行正常。图5-2仿真一再仿真等待收费。行驶7公里,等待10分钟,通过计算应收费7.5元,对比仿真结果图5-3,运行结果也正确n i r u I U2-IC00W3KE3E口5141号12LGD1HUE! 10 LOHTHIS0?”学电第总 Ss£S3 58S平Fl可刑 可卜|芈伴|山"Cl图5-3仿真5.3调价仿真这次先进行调价,再开始计费,检查调价程序是否能够正常运行。将起步价调为6元,每公里单价调为3元,按K5开始行驶计费, 算得费用为27元,对比仿真结果图5-4,结果相同。行驶10公里,计U2LUc?1mD
15、3r4内D6W 展U1 29-5 R-Z QQci QCIQQ心LS'I74MC575甘 | | S: 6 P: 3 W:L. 9T111E : 00 LOHTH: 16图5-4仿真三再将起步价调为5元,每公里单价调为2元,每10分钟等待单价调为1.5元进行 仿真,等待10分钟,显示计费12.5元,与计算结果图5-5相同。I?_u 1 2 3 4 s G 7 LLIIE 口 dddddudU0.T4HF11T T kLCD1S: 5 P: 2 U: I . 5TIOE:10 LOHTH:06但演审也三 2-口-塞立俎陛> > > 生:上山 uq 口g二占口平Fl中可中
16、芈斗?同LMJTtL图5-5仿真四6 心得体会出租车计费器系统的设计已经全部完成,能按预期的效果进行模拟汽车启动,停止,暂停等功能,并能够通过LCD?口数码管显示车费数目。本款出租车计价器包括单价输出、 单价调整、显示当前总费用等功能。另外,多功能出租车计价器还具有性能可靠、电路简单、成本低、实用性强等特点,加上经过优化的程序,使其有很高的智能化水平。经过自己努力,基本上完成了设计要求的内容,在系统可行性分析、原理图设计等方面都作了许多实际工作,取得了一些成绩,同时也遇到了一些问题,存在一些不足。经过这几天的学习和工作,我觉得自己不论是在理论知识方面还是在动手能力方面都有了不小的进步,自己从中
17、受益匪浅。这次设计很好的把以前学到的理论知识应用于实践,使我认识到理论知识与实践之间有一定的差距,只有通过不断的努力学习和实践才能很好的把理论知识应用到实践当中,也只有通过不断的实践才能对理论知识的理解。通过这次设计不仅学会了如何去查找相关资料,更重要的是通过查找资料和翻阅书籍学到了不少知识,扩大了知识面,提高了知识水平。经过单元设计和系统设计巩固了以前所学的专业知识,自己真正认识到理论联系实际的重要性,为以后的学习和工作提供了很多有价值的经验。通过这次设计不仅增强了自己的动脑能力和动手能力,也提高了我思考问题、分析问题、解决问题的能力,更重要的是学会用工程化的思想来解决问题。这在以前的学习过
18、程中是不曾学到的。在短短的三个月时间内完成设计内容,在很大程度上得益于老师的帮助。这次设计是我认真认识到完整、严谨、科学分析问题、解决问题的思想是多么的重要,只有拥有了科学的态度才能设计出有用的产品。另外通过本次设计,使我认识到自己理论知识的应用能力有很大的欠缺,需要在以后的学习中进一步提高。参考文献1 张毅坤等 . 单片微型计算机原理及应用. 西安电子科技大学出版社2 李建忠 . 单片机原理及应用. 西安电子科技大学出版社3 张毅刚,彭喜元,彭宇. 单片机原理及应用. 高等教育出版社4 康华光 . 电子技术基础数字部分. 高等教育出版社5 刘坤,赵红波,张宪栋.51 单片机开发技术大全. 人
19、民邮电出版社6 李广弟,朱月秀,冷祖祁. 单片机基础. 北京航空航天大学出版社附录1原件清单名称规格数量电阻10K1个排阻1K1排可艾电阻1个极性电容10uF1个非极性电容33pF2个0.1uF2个晶振12MHz1个LCD16021个数码管1个芯片AT89S511个74HC5731个2 程序主程序:#include <reg52.h>#include "1602.h"#define uint unsigned int#define uchar unsigned charuchar table3=3,1,5;/ 起步价 , 单价 , 等待单价uchar table
20、13;uchar code table2=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar code table3=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;uchar SetPlace,SetState=0; /uchar time1,time2; /uchar kilometre; /double min;double waitm=0.0,money=0.0; /uchar flag1=0,flag2; /uchar num=0;uint x;uint t1,t2;/t1
21、/09/09 带小数点设置位置,设置状态用于定时器计时行走里程等待计费、总计费用于K4和K5按键状态为 T0 定时,表示汽车行走了t1 秒为 T1 定时,表示等待了t2 秒设置移动光标循环增加打开关闭等待计时器打开关闭计价器/ 数码管位选按键选择计费或计时/ 数码管显示计算行走里程、等待收费、总收费按 K1 K2 K3 调整收费标准显示延时c 毫秒外部0 中断初始化定时器0 中断初始化定时器1 中断初始化/t2sbit K1=P3A2;/sbit K2=P1A2;/sbit K3=P1A3;/sbit K4=P1A0;/sbit K5=P1A1;/sbit LSA=P1A4;sbit LSB=
22、P1A5;sbit LSC=P1A6;sbit LSD=P1A7;void Key();/void SMG();void Data();/void tiaojia();/void LcdDisplay();/1602void delay(uint c);/void Int0Configuration(); /void T_0Config();/void T_1Config();/*主程序*/void main()LCD1602init();T_0Config();T_1Config();Int0Configuration();while(1)if(SetState=1)tiaojia(); /
23、 按下 K1 则调整价格,不按则跳过elseKey();/ 按键选择计费或计时Data();/ 数据处理LcdDisplay(); /1602 显示/*数码管显示程序*/ void SMG() / 共阴极数码管for(num=0;num<3;num+)switch(num) /table1 存放的是总金额数case(0):LSA=1;LSB=0;LSC=1;LSD=1;P0=table2table1num;delay(1);P0=0; break;case(1):LSA=1;LSB=1;LSC=0;LSD=1;P0=table3table1num;delay(1);P0=0; break
24、;case(2):LSA=1;LSB=1;LSC=1;LSD=0;P0=table2table1num;delay(1);P0=0; break;/*调价程序*/void tiaojia()/ 调整价格程序uchar i;if(K2=0)/ 检测按键K2 按下 光标移动delay(10);if(K2=0)SetPlace+; / 光标向前移一位if(SetPlace>2)SetPlace=0;while(i<50)&&(K2=0)/ 检测按键是否松开delay(10);i+;i=0;if(K3=0)/ 检测按键K3 按下 调节价格delay(10); / 消除抖动i
25、f(K3=0)if(SetPlace<2)tableSetPlace=tableSetPlace+1;/换成BCM。if(tableSetPlace&&0x0f)>9)转换为BCM之后,就相/ 起步价/ 单价tableSetPlace=tableSetPlace+6; / 当于十进制数了if(tableSetPlace>0x9)&&(SetPlace=0)tableSetPlace=0;if(tableSetPlace>0x9)&&(SetPlace=1)tableSetPlace=0;elsetableSetPlace=
26、tableSetPlace+5;/ 换成 BCD)Ko转换为BCM之后,就相/ 等待单价的10if(tableSetPlace&&0x0f)>9)tableSetPlace=tableSetPlace+6; / 当于十进制数了if(tableSetPlace>0x99)&&(SetPlace=2)倍tableSetPlace=0;while(i<10)&&(K3=0)/ 检测按键是否松开delay(10);i+;i=0;/*数据处理计算程序*/ void Data() / 计算行走里程、等待收费、总收费kilometre=(10
27、*t1)/100;/1000!min=t2/600;/t2/600 是等待了多少个10分钟waitm=min*table2; 不/10 ,在 money处也不 *10 ,正好抵消if(kilometre<=3)money=10*table0+waitm;elsemoney=10*table0+10*(kilometre-3)*table1+waitm;x=money;table10=x/100;table11=x%100/10;table12=x%10;/*按键程序*/ void Key() / 按键选择计费或计时if(K5=0)/按K5退出计时并进入计费模式/ 再按下则退出计费模式de
28、lay(10);if(K5=0)ET0=1; / 开 T0 中断TR0=1; / 启动定时器flag1=!flag1;if(flag1=1)flag2=1;else flag2=0;if(K4=0)/按K4进入等待计时模式delay(10);if(K4=0)ET0=1;TR0=1;flag2=2;/*LCD1602 显示程序*/ void LcdDisplay() /1602 显示LcdWriteCom(0x80);LcdWriteData('S');LcdWriteData(':');LcdWriteData('0'+table0); / 起步
29、价LcdWriteCom(0x80+0x05);LcdWriteData('P');LcdWriteData(':');LcdWriteData('0'+table1); /LcdWriteCom(0x80+0x0a);LcdWriteData('W');LcdWriteData(':');LcdWriteData('0'+ (table2/10);/LcdWriteData('.');LcdWriteData('0'+ (table2%10);LcdWriteCom
30、(0x80+0x40);LcdWriteData('T');LcdWriteData('I');LcdWriteData('M');LcdWriteData('E');LcdWriteData(':');LcdWriteData('0'+(t2/60)/10);LcdWriteData('0'+(t2/60)%10);LcdWriteCom(0x80+0x48);LcdWriteData('L');LcdWriteData('O');LcdWriteD
31、ata('N');LcdWriteData('T');LcdWriteData('H');LcdWriteData(':');LcdWriteData('0'+kilometre/10);LcdWriteData('0'+kilometre%10);每公里单价1等待每 10 分钟单价0.5 元/ 等待时间(t2/60) 099/ 行走里程/*定时器 T0 及 to 中断 */ void T_0Config()TMOD=0x01;PT0=1;/T0 设置为高优先级TH0=(65535-50000)/2
32、56; / 0.05STL0=(65535-50000)%256; / 给定时器装初值,程序启动之后定时器开始计时 EA=1;void T_0() interrupt 1 TH0=(65535-50000)/256; / 重装初值TL0=(65535-50000)%256;time1+;if(time1>=20)/1Stime1=0;switch(flag2) / 按 K5贝1J t1+ ,按 K4 贝U t2+/ 原因是两个程序公用一个定时器case(1):t1+;break;case(2):t2+;break;/*定时器 T1 及 T1 中断 */ void T_1Config()T
33、MOD=0x10;TH1=(65535-10000)/256; / 0.05STL1=(65535-10000)%256; / 给定时器装初值,程序启动之后定时器开始计时EA=1;TR1=1;ET1=1;void T_1() interrupt 3 TH1=(65535-10000)/256; / 重装初值TL1=(65535-10000)%256;SMG();/ 数码管显示在中断中,这样就不会闪了/*外部中断0 及中断 */ void Int0Configuration() / 设置 INT0 IT0=1;/ 跳变沿触发方式(下降沿)EX0=1;/ 打开 INT0 的中断允许。EA=1; / 打开总中断void Int0() interrupt 0/如果按下了 K3就进入中断delay(10);if(K1=0)switch(SetState)case 0:SetState=1;break;case 1:SetState=0;break;SetPlace=0;/* 延时程序*/void delay(uint c) / 延时 c 毫秒粗略延时 uchar a,b;for(c;c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高端煤机装备项目申请报告模板
- 2025年电子厨房秤项目立项申请报告
- 2025年试用策划平台标准协议书样本
- 2025年公交运营协议综合概述
- 2025年单组元肼、双组元液体推力器项目规划申请报告模板
- 2025年毒素类诊断抗原项目申请报告模板
- 2025年全球创新资源共享协议
- 2025年端子机项目提案报告
- 2025年企业临时文员雇佣合同
- 2025年度婚纱礼服租赁策划协议
- 创建动物保护家园-完整精讲版课件
- 广东省保安服务监管信息系统用户手册(操作手册)
- DNA 亲子鉴定手册 模板
- DB33T 1233-2021 基坑工程地下连续墙技术规程
- 天津 建设工程委托监理合同(示范文本)
- 广东中小学教师职称评审申报表初稿样表
- 部编一年级语文下册教材分析
- 火炬及火炬气回收系统操作手册
- 北师大七年级数学下册教学工作计划及教学进表
- 菜肴成本核算(课堂PPT)
- 光纤通信原理课件 精品课课件 讲义(全套)
评论
0/150
提交评论