出租车计价器1Word格式文档下载.docx
《出租车计价器1Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《出租车计价器1Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
![出租车计价器1Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-12/8/d0b769f6-9e41-4e5b-9c90-8e624d931218/d0b769f6-9e41-4e5b-9c90-8e624d9312181.gif)
5调试及性能分析13
5.1调试与测试13
5.2性能分析13
6结论13
致谢14
参考文献15
附录16
1绪论
步入21世纪,出租车已经广泛地出现在我们周围。
随着人们生活水平的不断提高,出租车的使用频率也越来越高,出租车行业也以高质量的服务给人们带来了出行的享受。
但是由于行业的特殊性,出租车行业总存在着买纠纷,困扰着行业的发展。
而在出租车行业中解决这一矛盾的最好方法就是改良计价器,用更加精良的计价器来为乘客提供更加方便快捷的服务。
30年前,我国出现了出租车,但是由于当时的经济水平,出租车并没有普遍在我们生活中出现。
随着改革开放的深入,出租车行业的发展势头已十分突出。
如今出租车在我国的交通运输中承担着重要的角色,出租车计价器是出租车上必不可少的重要仪器,它是负责出租车营运收费的专用智能化仪表。
随着城市旅游业的发展,出租车行业已成为城市的窗口,象征着一个城市的文明程度。
我们都知道,只要出租车开动,随着行驶里程的增加,就会看到汽车前面的计价器里程数字显示的读数从零逐渐增大,而当行驶到某一值时(如5KM)计费数字显示开始从起步价(如10元)增加。
当出租车到达某地需要在那里等候时,司机只要按一下“计时”键,每等候一定时间,计费显示就增加一个该收的等候费用。
汽车继续行驶时,停止计算等候费,继续增加里程计费。
到达目的地,便可按显示的数字收费。
采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试,对于模式的切换需要用到机械开关,机械开关时间久了会造成接触不良,功能不易实现。
为此我们采用了单片机进行设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。
2方案设计
2.1功能要求
利用单片机的软件编写功能,实现以5.0元为起步价,根据所行驶的距离进行计价,长时间时可等待启用等待计价,区分白天和晚上不同计价,以及采用数码管显示所计的价钱。
2.2方案论证
方案一:
采用数字电路控制。
其原理方框图如图2-1所示。
采用传感器件,输出脉冲信号,经过放大整形作为移位寄存器的脉冲,实现计价,但是考虑到这种电路过于简单,性能不够稳定,故障率高,难调试,而且电路不够实用。
图2-1数字电路方案
方案二:
采用单片机控制。
利用单片机丰富的IO端口,及其控制的灵活性,实现基本的里程计价功能,途中等待等不同功能。
通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用后一种方案。
3系统硬件的设计
3.1AT89S52结构及其功能
3.11AT89S52结构
图3-1AT89S52结构
3.12AT89S52主要性能
与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:
0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。
3.13功能特性描述
At89s52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
8位微控制器8K字节在系统可编程FlashAT89S52
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻
辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,
P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;
在程序校验时,输出指令字节。
程序校验
时,需要外部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个
TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入
口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2
的触发输入(P1.1/T2EX),具体如下表所示。
在flash编程和校验时,P1口接收低8位地址字节。
引脚号第二功能
P1.0T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5MOSI(在系统编程用)
P1.6MISO(在系统编程用)
P1.7SCK(在系统编程用)
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)
时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用
8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入
P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。
在flash编程和校验时,P3口也接收一些控制信号。
端口引脚第二功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2INTO(外中断0)
P3.3INT1(外中断1)
P3.4TO(定时/计数器0)
P3.5T1(定时/计数器1)
P3.6WR(外部数据存储器写选通)
P3.7RD(外部数据存储器读选通)
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。
RST——复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
ALE/PROG——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。
FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
3.2LM358结构及其功能
3.21LM358结构
图3-2AT89S52结构
3.22LM358功能特点
1.内部频率补偿
2.低输入偏流
3.低输入失调电压和失调电流
4.共模输入电压范围宽,包括接地
5.差模输入电压范围宽,等于电源电压范围
6.直流电压增益高(约100dB)
7.单位增益频带宽(约1MHz)
8.电源电压范围宽:
单电源(3—30V);
9.双电源(±
1.5一±
15V)
10.低功耗电流,适合于电池供电
11.输出电压摆幅大(0至Vcc-1.5V)
3.3单元电路
3.3.1单片机工作模块
要使主要的处理芯片工作起来,其外围必须有一定的支持电路,提供时钟频率的晶振电路以及供电路复位用的复位电路,具体接法如图3-3所示。
图3-3单片机晶振及复位电路
3.3.2显示模块及指示灯模块电路
采用LED7段数码管来显示所计的价钱,这里选用三位共阳数码管,其原理图接法如图3-4所示。
图3-4显示电路
3.3.3光信息采集电路显示
该电路是用于车轮转过次数的信息收集,通过车轮转过的次数来计算行驶路程,电路用红外发射和接收管和放大电路搭建,如图3-5所示。
图3-5光信息采集电路
3.4整体电路
本设计以AT89S52单片机为核心,采用LED数码管实时显示实际计得的价钱,以红外发射接收管作为基本行程信息的采集工具,另外以一个锁控按键来启动等待计价的功能,当等待结束时,又可恢复原来的工作状态。
此系统硬件设计简单,主要通过软件编程,实现工作状态的定义和等待情况的处理,系统另外还留有P1.2~P1.7以及P2.3~P2.7口的全部资源,使得系统具有一定的可升级性和可扩展性。
图3-6系统整体电路
4系统软件的设计
4.1初始化程序
系统上电时,初始化程序将R1~R5储存单元清0.
4.2主程序
主程序中通过循环判断是否等待计价和车轮计数进行总体计价的实现。
在等计
价中,调用等待计价子程序,每4秒调用计数子程序对计数器加1,在车轮计数中,
车轮每转过1周调用计数子程序对计数器加1。
通过计数器中的累加值,判断数值
并调用显示。
计数子程序是通过对工作寄存器的循环累加实现的。
秒定时子程序通过2000循环调用定时器的2毫秒定时实现,对应调用相应子
程序。
码管显示子程序通过动态扫描实现。
毫秒定时是通过软件延时来实现的。
系统初始化后,判断P1.1口,是否等待计价.若是则进入等待计价处理,若否,则进入下一步,判断是否进行车轮计数,若没有进行车轮计数则返回等待计价处理,若进行车轮计数,则由计数器加1,然后判断计数器是否加到50,若不到50,则由数码管显示,若到了50则由到50方式处理,最后由数码管显示计算的价钱。
图4.1主程序流程图
5调试及性能分析
5.1调试与测试
采用KeilC51编译器进行源程序编译及仿真调试,同时进行硬件电路板的设计制作。
硬件电路制作完毕,用万用表检测有无短路开路等现象,确定硬件电路没有问题后,用仿真头与硬件电路相连,运行程序进行调试。
若调试不成功,则可再单独调试程序和硬件电路。
程序用软件仿真运行,硬件电路再次检查有无焊错,或者元件与插座接触不良等方面问题;
确认均无问题后,再次把软件和硬件联机调试,直至功能正常。
把程序烧录进单片机AT89C52结束调试。
5.2性能分析
制作完成后正式通电检测,用遮挡物使红外接收发射器产生信号,重复第51下时,数码管开始变化,当按下等待按键时,每4秒钟,数码管自动加0.1,表明进入计价等待状态。
参考文献
[1]张友德赵志英涂时亮编单片微型机原理、应用与实验上海:
复旦大学出版社2005.12全书
[2]徐光翔
单片机原理接口及应用
南京大学出版社
[3]张淑清等.单片微型计算机接口技术及其应用北京:
国防工业出版社,
[4]王晓君等.MCS-51及兼容单片机原理与选型北京:
电子工业出版社
[5]
[6]
附录
参考程序
源程序
ORG00H
LJMPMAIN
ORG0100H
MAIN:
MOVR1,#00H;
初始化
MOVR2,#00H
MOVR3,#00H
MOVR4,#00H
MOVR5,#00H
XHPD:
JNBP1.1,JSD;
是否等待计价,若是调用计时子程序
JNBP1.0,XD;
是否有信号
LCALLPAND
LCALLXIANS
JMPXHPD
XD:
LCALLD2MS;
确定有信号
JNBP1.0,HF
LJMPXHPD
HF:
JNBP1.1,JSD
JNBP1.0,HF;
信号是否结束
JBP1.4,JS;
调用计数子程序
JNBP1.4,JSS
;
--------------------------------------------------------------------
计时子程序
JSD:
JBP1.1,XHPD;
是否继续等待计价
LCALLD2S
LCALLJS
JMPJSD
计数子程序
JS:
INCR1
CJNER1,#0AH,JS1;
个位加1
MOVR1,#00H
INCR2
CJNER2,#0AH,JS1;
十位加1
INCR3
CJNER3,#0AH,JS1;
百位加1
JS1:
RET
JSS:
CJNER1,#0AH,JSS1
CJNER2,#0AH,JSS1
INCR3
CJNER3,#0AH,JSS1
MOVR3,#00H
JSS1:
RET
4S延时子程序
D2S:
MOV30H,#2
D2S1:
MOV31H,#250
D2S2:
DJNZ31H,D2S3
DJNZ30H,D2S1
JMPD2S4
D2S3:
JBP1.1,D2S4
LCALLD2MS
JMPD2S2
D2S4:
判断5.0是否到子程序
PAND:
CJNER3,#00H,HIGH1
NEQ1:
CJNER2,#05H,NEQ2
JMPHIGH1
NEQ2:
JCLOW1
LOW1:
MOVR4,#05H;
不到5.0的处理
MOVR5,#00H
JMPPAND1
HIGH1:
MOVA,R1;
超过5.0的处理
MOVR5,A
MOVA,R2
MOVR4,A
PAND1:
显示子程序
XIANS:
MOVA,R5;
显示个位
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVP0,A
CLRP2.0
SETBP2.0
MOVA,R4;
显示十位
MOVDPTR,#TABLE1
CLRP2.1
SETBP2.1
MOVA,R3;
显示百位
MOV