缩距法出租车计价器设计DOCWord下载.docx
- 文档编号:22335574
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:28
- 大小:206.47KB
缩距法出租车计价器设计DOCWord下载.docx
《缩距法出租车计价器设计DOCWord下载.docx》由会员分享,可在线阅读,更多相关《缩距法出租车计价器设计DOCWord下载.docx(28页珍藏版)》请在冰豆网上搜索。
3软件设计…………………………………………………………………………9
3.1模块介绍……………………………………………………………………9
3.2程序流程图…………………………………………………………………10
4Proteus软件仿真………………………………………………………………11
5课程设计体会……………………………………………………………………11
参考文献……………………………………………………………………………12
附1:
源程序代码…………………………………………………………………12
附2:
系统原理图…………………………………………………………………22
1概述
1.1
基本要求
(1)能显示里程,单位为公里,最后一位为小数位。
(2)能显示金额数,单位为元,最后一位为小数位。
(3)可设定单程价格和往返价格,单程价格为2元/公里,往返价格为1.5元/公里。
(4)车速<
5公里/小时的时间累积为总等待时间,每5分钟等待时间相当于里程数增加1公里。
(5)起步公里数为3公里,价格为5元,若实际距离大于3公里,按规则3计算价格。
(6)按暂停键,计价器可暂停计价,按查询键,可显示总等待时间。
发挥部分:
空车指示、语音提示、信息存储等。
1.2
设计参数
由于要求没有给出车轮的相关参数,所以这里进行一些基本参数的查询。
据调查统计,现行出租车轮胎直径大致有四种,直径分别为520mm、540mm、560mm和580mm.
本作品针对560mm的出租车进行设计。
它的周长为:
1.7584
m,57圈行驶100m。
1.3
系统原理
出租车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志。
它关系着交易双方的利益,具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。
因此,汽车计价器的研究也是十分有应用价值和现实意义的。
出租车计价是根据车所行驶的路程以及乘客乘车的方式综合决定的。
出租车行驶总路程可以通过车轮的周长乘车轮旋转圈数得到。
即可计算得到车轮旋转几周出租车能行驶一公里的路程。
使用霍尔传感器方便地计量车轮旋转的圈数。
输出的脉冲信号被接入到AT89S52单片机系统中,通过计算接收到的脉冲个数,计算出当前所行驶的路程,并且可以计算实时的速度,在速度低于5公里每小时是进入等待计费。
于此同时,根据不同的收费标准,通过选择相应的起步价、单价等收费标准进行计算。
通过键盘能够实现往返设置,启动、暂停、停止计价器以及切换显示当前的行驶里程和需支付的车费。
本设计硬件电路分为五个单元:
单片机最小系统单元,指示灯电路单元,按键电路单元,路程时间与金额显示单元,转速信号接收单元。
软件系统分为五个大的模块为:
总初始化模块,按键扫描模块,中断与定时模块,数据计算模块,数码管显示模块。
其中,键盘扫描和数码管显示采用查询方式,转速信号接收与等待记时采用中断方式。
这些软硬件系统构成了最终的设计。
2系统总体方案及硬件设计
2.1设计方案介绍
计数器系统主要由五部分组成:
A44E霍尔传感器、STC89C51单片机、独立键盘、EEPROMAT24C02A和显示数码管。
霍尔传感器安装在车轮上,主要检测汽车行进的公里数,并产生一系列相应的脉冲输出,脉冲送到单片机进行处理,单片机根据程序设定通过计算脉冲数换算出行驶公里数,再根据从EEPROM中读取的价格等相关数据进行金额的计算,计算好的金额、里程和单价都实时地显示在数码管上。
独立键盘可以调节价格等相关数据,按下相应的按钮,产生信号交由单片机处理并实时显示出来,调节好的数据存储到EEPROM中,掉电后可以使调好的数据不丢失,下次得电后直接从EEPROM读到单片机,系统结构图如图1
2.2单片机的概念
单片机(microcontroller,又称微控制器)是在一块硅片上集成了各种部件的微型计算机。
这些部件包括中央处理器CPU、数据存储器RAM、程序存储器ROM、定时器/计数器和多种I/O接口电路。
图2是80C51单片机的基本结构图
2.3A44E霍尔传感器检测单元
A44E属于开关型的霍尔器件,其工作电压范围比较宽(4.5~18V),其输出的信号符合TTL电平标准,可以直接接到单片机的IO端口上,而且其最高检测频率可达到1MHZ。
A44E集成霍耳开关由稳压器A、霍耳电势发生器(即硅霍耳片)B、差分放大器C、施密特触发器D和OC门输出E五个基本部分组成。
在输入端输入电压Vcc,经稳压器稳压后加在霍尔电势发生器的两端,根据霍尔效应原理,当霍尔片处在磁场中时,在垂直于磁场的方向通以电流,则与这二者相垂直的方向上将会产生霍尔电势差VH输出,该VH信号经放大器放大后送至施密特触发器整形,使其成为方波输送到OC门输出。
当施加的磁场达到工作点(即Bop)时,触发器输出高电压(相对于地电位),使三极管导通,此时OC门输出端输出低电压,三极管截止,使OC门输出高电压,这种状态为关。
这样两次电压变换,使霍尔开关完成了一次开关动作。
A44E霍尔传感器原理如图3所示。
图3A44E霍尔传感器原理
里程计算是通过安装在车轮上的霍尔传感器检测到的脉冲信号,送到单片机产生中断,单片机再根据程序设定,计算出里程。
其原理如图4所示。
图4霍尔传感器的脉冲信号
2.4计时与时间显示模块电路设计
时间显示采用24小时计时方式,时、分、秒用8位LED数码管动态扫描法显示。
该电路采用AT89C52单片机控制,通过4个开关按键来调节时间,其中按键开关SP1、SP2、SP3分别接单片机的P0.0、P0.1、P0.2口,分别调节时钟的秒、分、时;
单刀双掷开关K1(实际硬件电路用短路冒代替)控制时、分、秒的加减调节,当发光二极管亮时,按下按键开关进行加1调节;
当发光二极管灭时,按下按键开关进行减1调节。
在本电路中,各位LED数码管的段选端并接在一起,通过220欧姆电阻和8位数据锁存器74LS573(下面的模块图中省略,详见后总原理图)接到单片机AT89C52的P1口。
其中,8位数据锁存器74LS573主要是驱动LED数码管的段选端,使LED数码管的显示更亮;
220欧姆电阻在电路中起到限流的作用,防止LED数码管烧坏。
各位LED数码管的位选端通过ULN2803(下面的模块图中省略,详见后总原理图)和74LS138接到单片机的P2.0、P2.1、P2.2口。
其中,电路通过74LS138将P2.0、P2.1、P2.2口的输出状态译成8种BCD码,这8种BCD码分别对应选择LED数码管的各位,起到位选作用;
并在74LS138后面接上达林顿管ULN2803,增加LED数码管位选驱动能力。
下面分别介绍各个元器件的功能和在模块电路中的作用。
2.5键盘调整单元
当单价等信息需要进行修改时,就要用到键盘进行修改。
由于调节信息不多,故采用4个独立键盘即可,分别实现清零、切换、增大、减小和功能等作用。
电路原理如图5所示。
S1:
接P1.0口,对上一次的计费进行清零,为下次载客准备
S2:
接P1.1口,实现白天和夜晚单价的切换;
当功能键S4按下时,S2可对数据进行增大。
S3:
接P1.2口,当功能键S4按下时,S3可对数据进行减小。
S4:
接P1.3口,按1次,进入调整白天单价;
按2次,进入调整夜晚单价;
按3次,进入调整等待单价;
按4次,进入调整起步价;
按5次,返回。
图5键盘单元电路
2.6键盘程序
键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦右按键按下,便转向相应的子程序处理,处理结束再返回。
流程图如图6。
3软件设计
3.1模块介绍
该计费器系统的软件设计分为一下几个模块:
(1)主程序模块
在主程序模块中,需要完成对个接口芯片的初始化、出租车起步价和单价、中断向量的设计以及开中断、循环等待等工作。
另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。
然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计价等不同的操作。
流程图如3-4所示。
当按下轻触开关时,开始对系统初始化,价格和时间都显示0、0,再次按下开关,时间单元开始计时,并计算时间是否超过2分钟,超过2分钟,则从第3分钟开始计费。
价格单元从起步价5.0元开始计费,每多一分钟,价格单元多加2元。
(2)显示子程序模块
由于显示是由显示时间子程序DIS1和显示价格子程序DIS组成的,时间由小时、分、秒三个单元组成,共六个数码管。
价格由元和角两个单元组成,最大可以显示999.9元。
3.2程序流程图
4Proteus软件仿真
5课程设计体会
经过这些天有关于出租车计价器的课程设计,使我对单片机的应用有了更深的了解。
在课程设计的过程中,还是碰到了许多的问题。
比如,对于数码管动态扫描显示和键盘的延时防抖的综合编程不能较好地解决;
对于代码的前后顺序及调用掌握得还不够好;
对于一些相关的应用软件没能熟练掌握。
通过这几天晚上的苦想和反复调试,以及参考网上的程序,最终还是把问题解决了。
通过这次课程设计,我最大的收获就是自己的动手能力和独立解决问题的能力得到了很大的提高,也充分体会到了自己设计东西的乐趣、学会查阅资料和对别人的东西融会变通的重要性,也明白了很多知识光靠趴在书本上学是学不到其中的精髓的,必须亲自去试着实践,亲自去经历才能对它们真正的掌握,凡事都要自己去动下手,去实践一下,遇到困难,永远不要沮丧气馁。
在动手的过程中,不仅能增强实践能力,而且在理论上可以有更深的认识;
这次设计给了我极大的鼓舞和信心,相信在以后的学习中可以通过不断的摸索和实践来提高其他方面的知识。
通过本次课程设计,又使我学到了许多书本上无法学到的知识,也使也深该体会到单片机技术应用领域的广泛,不仅使我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的兴趣。
在本次课程设计过程中,我学会了在网络上查找有关本设计的各硬件的资源,其中包括:
AT89S51单片机及其引脚说明、555引脚图及其引脚功能等,为本次课程设计提供了一定的资料。
也为以后的进一步学习打下了坚实的基础。
参考文献
[1]张友德
赵志英
涂时亮
编
单片微型机原理、应用与实验
上海:
复旦
大学出版社2005.12
全书
[2]
徐光翔
单片机原理接口及应用
南京大学出版社
[3]
张淑清等.
单片微型计算机接口技术及其应用
北京:
国防工业出版社,
[4]
王晓君等.
MCS-51及兼容单片机原理与选型
电子工业出版社
[5]张鑫、华臻、陈书谦.《单片机原理及应用》[M].电子工业出版社,2005.P110~136.
[6]丁元杰、吴大伟.《单片微机实题集与实验指导书》[M].机械工业出版社,
2004.P124~125.
[7]
AT89C52概述[EB/OL]:
源程序代码
#include<
reg52.h>
#include<
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
#definedelayNOP();
{_nop_();
_nop_();
};
ucharcodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
sbitexter=P3^3;
sbitkey0=P1^0;
sbitkey1=P1^1;
sbitkey2=P1^2;
sbitkey3=P1^3;
sbitp30=P3^0;
/
sbitp31=P3^1;
sbitp32=P3^2;
sbitp34=P3^4;
sbitp35=P3^5;
sbitp36=P3^6;
sbitp37=P3^7;
sbitSDA=P2^2;
sbitSCL=P2^3;
uintinter,aa,bb,temp,temp1;
uintzongjine,licheng,dengdai;
uintkey3num,qiehuantemp,delaytemp;
uchardanjia1,danjia2,danjia3,danjia,qibu;
voiddelay(uintx)
{
inti,j;
for(i=x;
i>
0;
i--)
for(j=340;
j>
j--);
}
voidstart()
SDA=1;
SCL=1;
delayNOP();
SDA=0;
SCL=0;
}
voidstop()
voidrespons()
uchari;
SCL=1;
while((SDA==1)&
&
(i<
250))
i++;
SCL=0;
ucharread_byte()
uchari,j;
for(i=0;
i<
8;
i++)
{
j<
<
=1;
j|=SDA;
return(j);
voidwrite_byte(uchardate)
uchari,temp;
temp=date;
temp=temp<
1;
SDA=CY;
SDA=1;
voidwrite_data(ucharaddr,uchardate)
start();
write_byte(0xa0);
respons();
write_byte(addr);
write_byte(date);
stop();
ucharread_data(ucharaddr)
uchardate;
write_byte(0xa1);
date=read_byte();
returndate;
voiddisplay(uintzongjine0,uintlicheng0,uintdanjia0)
uintjbai,jshi,jge,lshi,lge,dshi,dge;
uintnumwei,numshu;
jbai=zongjine0/100;
jshi=zongjine0%100/10;
jge=zongjine0%100%10;
lshi=licheng0/10;
lge=licheng0%10;
dshi=danjia0/10;
dge=danjia0%10;
if(aa)
aa=0;
numshu++;
if(numshu==7)
numshu=0;
P3=0xff;
switch(numwei)
case0:
p30=0;
P0=table[jbai];
break;
case1:
p31=0;
P0=table[jshi]&
0x7f;
case2:
p32=0;
P0=table[jge];
case3:
p34=0;
P0=table[lshi];
case4:
p35=0;
P0=table[lge];
case5:
p36=0;
P0=table[dshi]&
case6:
p37=0;
P0=table[dge];
numwei++;
if(numwei==7)
numwei=0;
voidkeyscan()
if(key3==0)
delay(5);
if(key3==0)
key3num=1;
while(!
key3);
while(key3num)
if(key3num==1)
if(key1==0)
danjia1++;
if(danjia1==100)
danjia1=0;
key1);
if(key2==0)
danjia1--;
if(danjia1==-1)
danjia1=99;
key2);
display(1,0,danjia1);
if(key3num==2)
write_data(1,danjia1);
danjia2++;
if(danjia2==100)
danjia2=0;
danjia2--;
if(danjia2==-1)
danjia2=99;
display(2,0,danjia2);
if(key3num==3)
write_data(2,danjia2);
danjia3++;
if(danjia3==100)
danjia3=0;
danjia3--;
if(danjia3==-1)
danjia3=99;
}
display(3,0,danjia3);
if(key3num==4)
write_data(3,danjia3);
qibu++;
if(qibu==100)qibu=0;
qibu--;
if(qibu==-1)
qibu=99;
display(4,0,qibu);
if(key3num==5)/{
write_data(4,qibu);
key3num=0;
key3num++;
voidinit()
zongjine=0;
licheng=0;
dengdai=0;
danjia1=read_data
(1);
danjia2=read_data
(2);
danjia3=read_data(3);
qibu=read_data(4);
bb=0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 缩距法 出租车 计价器 设计 DOC