出租车计价器设计.docx
《出租车计价器设计.docx》由会员分享,可在线阅读,更多相关《出租车计价器设计.docx(32页珍藏版)》请在冰豆网上搜索。
出租车计价器设计
一、设计目的
出租车计价器是乘客与司机双方的交易准则,是出租车行业发展的重要标志,它关系着交易双方的利益。
现在,城市建设日益加快,象征着城市面貌的出租车行业也将加快发展,计价器的普及是毫无疑问的,所以未来出租车行业计价器的市场是很有潜力的。
本文是为了探索计价器的设计而制作的。
二、设计要求
1、不同情况具有不同的收费标准。
白天、晚上、途中等待<>10min开始收费)
2、能进行手动修改单价
3、具有数据的复位功能
4、10口分配的简易要求,距离检测使用霍尔开关A44E,白天就上收费标准的转换开关,数据的淸零开关,单价的调整(最好使用+和一按键)
5、数据输岀(采用LCM103)单价输出2位、路程输出2位、总金额输岀3位
6、按键启动计时开关、数据复位(淸零)、白天/晚上转换
三、总体设计
1、采用单片机控制,程序框图如下:
键盘控制
里程计算单元
串口显示驱动电路
图1程序框图
利用单片机丰富的10端口,及其控制的灵活性,实现基本的里程计价功能和价格调节、时钟显示功能。
单片机方案有较大的活动空间,不但能实现所要求
的功能,而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级。
2、程序流程图如下:
图2主程序流程图
每公里的单价数和起价数来计算出当询的累讣价格,并将结果存于价格寄存器中,然后将时间和当前累计价格送显示电路显示出来。
当到达LI的地的时候,由于霍尔开关没有送来脉冲信号,就停止计价,显示当前所应该付的金额和对应的单价,到下次启动计价时,系统自动对显示清零,并重新进行初始化过程。
四、各部分电路设计
1、键盘调整单元
图3键盘调整单元
当单价等信息需要进行修改时,就要用到键盘进行修改。
山于调节信息不多,故釆用4个独立键盘即可,分别实现清零、切换、增大、减小和功能等作用。
电路原理如图3所示。
S1:
接P1.0口,对上一次的计费进行清零,为下次载客准备
S2:
接P1.1口,实现白天和夜晚单价的切换;当功能键S4按下时,S2可对数据进行增大。
S3:
接P1.2口,当功能键S4按下时,S3可对数据进行减小。
S4:
接P1.3口,按1次,进入调整白天单价;按2次,进入调整夜晚单价;按3次,进入调整等待单价;按4次,进入调整起步价;按5次,返回。
2、里程计算
里程计算是通过安装在车轮上的霍尔传感器A44E检测到的信号,送到单片机,经处理计算,送给显示单元的。
其原理如图4传感器测距示意图所示。
图4传感器测距示意图
由于A44E属于开关型的霍尔器件,其工作电压范围比较宽(4.5〜18V),其输出的信号符合TTL电平标准,可以直接接到单片机的10端口上,而且其最高检测频率可达到1MHZ。
A44E集成霍耳开关由稳压器A、霍耳电势发生器(即硅霍耳片)B、差分放大器C、施密特触发器D和0C门输出E五个基本部分组成。
在输入端输入电压%V,经稳压器稳压后加在霍耳电势发生器的两端,根据霍耳效应原理,当霍耳片处在磁场中时,在垂直于磁场的方向通以电流,则与这二者相垂直的方向上将会产生霍耳电势差“卩输出,该〃7信号经放大器放大后送至施密特触发器整形,使其成为方波输送到0C门输出。
当施加的磁场达到工作点(即OP时,触发器输出高电压(相对于地电位),使三极管导通,
此时0C门输出端输出低电压,通常称这种状态为开。
当施加的磁场达到释放点(即rPB}时,触发器输出低电压,三极管截止,使0C门输出高电压,这种状态为关。
这样两次电压变换,使霍耳开关完成了一次开关动作。
我们选择了P3.2口作为信号的输入端,内部釆用外部中断0(这样可以减少程序设计的麻烦),车轮每转一圈(我们设车轮的周长是1米),霍尔开关就检测并输出信号,引起单片机的中断,对脉讣数,当计数达到1000次时,也就是1公里。
3、显示电路设计
图5显示电路
显示单元由7个8段共阳数码管组成,采用动态扫描进行显示。
前三个数码管分别接P3・0、P3」和P3.2,用于显示总金额;中间两个分别接P3.4和P3.5,用于显示里程;后边两个分别接P3.6和P37用于显示单价。
电路如图5所示。
4、总金额计算
总金额二单价*里程+起步价
五、整体电路图
图7整体电路图
1、SI按键的功能
在出租车不走的时候,按下S1,可以实现数据的分屏显示;车在行走的时候只有总金额和单价显示屏在显示,当到达LI的地的时候,客户要求查看总的里程的时候,就可以按下S1切换到里程和单价显示屏,供客户查询。
2、S2按键的功能
在按下S1按键之后,若接着按下S2键则进行单价调整(默认为调整白天单价),当接着按下S1时,则进行晚上单价调,再次按下S1可进行中途等待单价调整。
当单价调整结束后,可以通过过按下S2按键进行时间调整,默认为调整时,接着按下S1可进行调整分,分调整后再接下S1可进行秒调整。
当时调整完成后,若接着按下S2则又可进行单价调整。
3、S3按键的功能
在显示金额及单价时,若按下S3键则显示路程和单价,再次按下S3,可返回显示金额及单价。
4、S4按键的功能
在按下S1按键之后,若接着按下S4按键,则进行设定默认晚上单价,并启动讣价器,若没有按下S4则可设定默认单价(口天),并启动计价器。
当设定默认晚上单价结束后,再次接下S4按键,则可设定默认中途等待单价,并启动计价器。
当设定默认中途等待单价后,若还按一次S4,则返回系统时间的显示。
六、设计总结
经过本周关于出租车计价器的课程设汁,我对单片机的应用有了更深的了解。
当然在课程设计的过程中,不可避免的碰到了许多问题。
对于代码的前后顺序及调用掌握得还不够好:
对于一些相关的应用软件没能熟练掌握。
通过这几天的思考,以及参考网上的程序和听取同学的讲解,最终还是把问题解决了。
通过本次课程设计,乂使我学到了许多书本上无法学到的知识,也使也深该体会到单片机技术应用领域的广泛,不仅使我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的兴趣。
要做好一个课程设计,就必须做到:
在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设讣好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明口你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常,我们应该将每次遇到的问题记录下来,并分析清楚,将之一一解决。
全部源程序
该出租车讣价器的系统软件设讣源程序如下:
DAY.PRICEEQU6FH
NIGHT_PRICEEQU6EH
MIDWAY.PRICEEQU6DHSTART_PRICEEQU6CHCOUNTLEQU6BHCOUNTHEQU6AH
M100EQU69H;外部中断次数
DISTANCEEQU68H;行车距离
MS100EQU67H
SECEQU66H
MINEQU65H
HOUREQU64H
LEDSLEQU63H;时分钞显示缓冲区
LEDSHEQU62H
LEDMLEQU61H
LEDMHEQU60H
LEDHLEQU5FH
LEDHHEQU5EH
LEDDANJIALEQU5DH;总额,单价显示缓冲区
LEDDANJIAHEQU5CH
LINE.EQU5BH
LEDCOUNT1EQU5AH
LEDCOUNT2EQU59H
LEDCOUNT3EQU58H
LEDDANJIA2LEQU57H;路程,单价显示缓冲区
LEDDANJIA2HEQU56H
LINE_EQU55H
LINE—EQU54H
LEDDISTANCELEQU53H
LEDDISTANCEHEQU52H
LEDDAY.PLEQU51H;中途,晚上,口天显示缓冲区
LEDDAY_PHEQU50H
LEDNIG_PLEQU4FH
LEDXIG_PHEQU4EH
LEDW.PLEQU4DH
LEDW.PHEQU4CH
51BITP1.0
52BITPl.1
53BITPl.2
54BITPl.3
SUEQU4BH
S22EQU4AH
S33EQU49H
S44EQU48H
MlEQU47H
甜ISO爆HlEQU46HM2EQU45HH2EQU44HPRICEEQU43HORG01HAJMPMAI/ORG0003HAJMPTOORGiBHAJMPTOTIMEORGOO1BHAJMPTOSTARTORG0030H-MOVSPU70H
MOV
MOV
MOV
MOV
MOV
MOV
TMOP龙1H
THO
壮3CH
TLO
TH1
TL1
22H
SETBEA
SETBTRO
SETBEXO
SETBITO
SETBETO
SETBET1
#OBOH
#3CH
4-tOBOH
#OAH
MOVRr#34
MOVRp壮69H
LOOPLWOV⑥ROLO
DECRO
DJ/ZReLOOPL
MOVCOU/TL#OOH-佬爺
MOVCOUVIH#O5H
MOVDAY.PRICE,#25H;口天价格初始化
MOVNIGHT.PRICE,#30H;晚上价格初始化
MOVMIDWAY.PRICE,#10H;中途等待初始化
MOVSTART_PRICE,#50H;起步价初始化
MOVSil,#0
MOVS22,#0
MOVS33,#0
MOVS44,#0
MOVDISTANCE,#02H
MOVHOUR,#12H
KEY_MAIN:
SETBTRO
ACALLHMS.DIS
ACALLT100MSD
ACALLT100MSD
ACALLT100MSD
JBSI,KEY.MAIX
ACALLT10MSD
JBSI,KEYJfAIN
JNBSI,S
SJMPWAU
WAI:
JBSI,KI
ACALLT10MSD
JBSI,KI
WAIT1:
JNBSI,WAIT1
MOVRO,#LEDDANJIAL
MOVR2,#6
CLRA
MOVCOUNTL,A
MOVCOUNTH,A
MOVM100,A
MOVDISTANCE,A
BK1:
MOV@R0,A
DECRO
DJNZR2,BK1
MOVPRICE,DAY.PRICE;起动初始化
MOVCOUXTL,#00H;起步价
MOVCOUNTH,#05H
LCALLCP_DIS;总金额和单价显示
KI:
JBS2,K2
ACALLT1OMSD
JBS2,K2
WAIT2:
JNBS2,WAIT2
INCS22
MOVA,S22
CJNEA,#1,NEXT1
LCALLPA_DIS
LJMPKEY_DJ
NEXT1:
CJNEA,#2,NEXT2
CLRTRO
LCALLHMS.DIS
LJMPKEY_SJ
NEXT2:
CJNEA,#3,K2
MOVS22,#0
K2:
JBS3,K3
ACALLT10MSD
JBS3,K3
WAIT3:
JNBS3,WAIT3
INCS33
MOVA,S33
CJNEA,#1,XXT1
LCALLDP_DIS
NXT1:
CJNEA,#2,NXT2
CLRC
MOVA,M2
SUBBA,Ml
MOVMl,A
MOVA,H2
SUBBA,Hl
MOVHl,A
NXT2:
CJNEA,#3,K3
MOVS33,#0
LCALLCP_DIS
K3:
JBS4,BK_KEY_MAIN
ACALLT10MSD
JBS4,BK_KEY_MAIX
WAIT4:
JNBS4,WAIT4
INCS44
MOVA,S44
CJNEA,#1,XT1
MOVPRICE,DAY.PRICE
LCALLCP.DIS
NT1:
CJNEA,#2,NT2
MOVPRICE,NIGHT_PRICE
LCALLCP_DIS
NT2:
CJNEA,#3,NT3
MOVPRICE,MIDWAY_PRICE
SETBTRI
LCALLCP_DIS
NT3:
CJNEA,#4,BK_KEY_MAIN
MOVS44,#0
LJMPKEY.MAIN
BK_KEY_MAIN:
LJMPWAI
KEY_DJ:
JBSI,KYI
ACALLT10MSD
JBSI,KYI
WAIT5:
JNBSI,WAIT5
INCSU
MOVA,SU
CJNEA,#1,NEXT11
LJMPDAY_P
NEXT11:
CJNEA,#2,
NEXT12
LCALL\IG_P
NEXT12:
CJNEA,#3,KYILCALLMID_PMOVSil,#0LJMPKEY.MAIN
KY1:
JBS2,KY2ACALLT10MSDJBS2,KY2
WAIT6:
JNBS2,WAIT6
INCS22
MOVA,S22CJNEA,#1,NEXT13LCALLPA_DIS
LJMPKEY_DJ
NEXT13:
CJNEA,#2,NEXT14CLRTRO
LCALLHMS_DISLCALLKEY_SJ
NEXT14:
CJNEA,#3,KY2MOVS22,#0LJMPKEY.MAIN
KY2:
AJMPKEY_DJ
KEY_SJ:
JBSI,KEY1ACALLT10MSDJBSI,KEY1
WAIT?
:
JNBSI,WAIT7
INCSil
MOVA,SU
CJNEA,#1,NEXT21LCALLHOU_T
NEXT21:
CJNEA,#2,NEXT22
LCALLMIN_T
NEXT22:
CJNEA,#3,KEY1
MOVSil,#0
LJMPKEY.MAIN
KEY1:
JBS2,KEY2
ACALLT10MSD
JBS2,KEY2
WAIT8:
JNBS2,WAIT8
INCS22
MOVA,S22
CJNEA,#1,NEXT23
LCALLPA_DIS
LJMPKEY_DJ
NEXT23:
CJNEA,#2,NEXT24
CLRTRO
LCALLHMS_DIS
NEXT24:
CJNEA,#3,KEY2
MOVS22,#0
LCALLKEY_SJ
LJMPKEY.MAIN
KEY2:
AJMPKEY_SJ
DAY_P:
SETBFO
LCALLT100MSD
LCALLT100MSD
MOVLEDDAY_PL,#OAH
MOVLEDDAY_PH,#OAH
LCALLPA_DIS1
LCALLT100MSD
LCALLT100MSD
LCALLPA_DIS
LP1:
JBS3,KEY11
MOVA,#1
ADDA,DAY_PRICE
DAA
MOVDAY_PRICE,A
MOVA,DAY_PRICE
CJNEA,#99H,KEY11
MOVDAY_PRICE,#0
KEY11:
JBS4,KEY12
LCALLT10MSD
JBS4,KEY12
MOVA,DAY_PRICE
ADDA,#99H
DAA
MOVDAY_PRICE,A
CJNEA,#00H,KEY12
MOVA,#99H
KEY12:
JBSI,KEY13
ACALLT10MSD
JBSI,KEY13
WAITH:
JNBSI,WAITH
INCSil
MOVA,SU
CJNEA,#1,
NEXT31
LCALLDAY_P
NEXT31:
CJNEA,#2,NEXT32
LCALLNIG_P
NEXT32:
CJNEA,#3,NEXT33
LCALLMID_P
NEXT33:
CJNEA,#4,KEY13
MOVSil,#0
KEY13:
JBS2,KEY14
LCALLT10MSD
JBS2,KEY14
WAIT12:
JNB
S2,WAIT12
LJMPKEY_MAIN
KEY14:
AJMPDAY_P
NIG_P:
SETBFO;调用定时延时标志位
LCALLT100MSD
LCALLT100MSD
MOVLEDNIG.PL,#OAH
MOVLEDNIG_PH,#OAH
LCALLPA_DIS1
LCALLT1OOMSD
LCALLT1OOMSD
LCALLPA_DIS
JBS3,KEY21
LCALLT1OMSD
JBS3,KEY21
MOVA,#1
ADDA,\IGHT_PRICE
DAA
MOVNIGHT_PRICE,A
CJNEA,#99H,KEY21
MOVNIGHT_PRICE,#0
KEY21:
JBS4,KEY22
LCALLT10MSD
JBS4,KEY22
MOVA,NIGHT_PRICE
ADDA,#99H
DAA
MOVNIGHT_PRICE,A
CJNEA,#00H,KEY22
MOVNIGHT_PRICE,#99H
KEY22:
JBSI,KEY23
ACALLT10MSD
JBSI,KEY23
WAIT15:
JNBSI,WAIT15
INCSU
MOVA,SU
CJNEA,#1,
NEXT41
LCALLDAY_P
NEXT41:
CJNEA,#2,NEXT42
LCALLNIG_P
NEXT42:
CJNEA,#3,NEXT43
LCALLMID_P
NEXT43:
CJNEA,#4,KEY23
MOVSil,#0
LJMPKEY_DJ
KEY23:
JBS2,KEY24
LCALLT10MSD
JBS2,KEY24
WAIT30:
JNBS2,WAIT30
LJMPKEYJfAIN
KEY24:
AJMPNIG_P
MID_P:
SETBFO;调用定时延时标志位
LCALLT100MSD
MOVLEDW_PL,#OAH
MOVLEDW.PH,#OAH
LCALLPA_DIS1
LCALLT100MSD
LCALLPA_DIS
JBS3,KEY31
LCALLT10MSD
JBS3,KEY31
MOVA,MIDWAY_PRICE
ADDA,#1
DAA
MOVMIDWAY_PRICE,A
CJNEA,#99H,KEY31
MOVMIDWAY.PRICE,#00H
CJNEA,#100,KEY31
MOVMIDWAY_PRICE,#0
KEY31:
JBS4,KEY32
LCALLT10MSD
JBS4,KEY32
MOVA,MIDWAY.PRICE
ADDA,#99H
DAA
MOVMIDWAY_PRICE,A
CJNEA,#00H,KEY32
MOVNIGHT_PRICE,#99H
KEY32:
JBSI,KEY33
ACALLT1OMSD
JBSI,KEY33
WAIT18:
JNBSI,WAIT18
INCSU
MOVA,SU
CJNEA,#1,
NEXT51
LCALLDAY_P
NEXT51:
CJNEA,#2,NEXT52
LCALLNIG_P
NEXT52:
CJNEA,#3,NEXT53
LCALLMID_P
NEXT53:
CJNEA,#4,KEY33
MOVSil,#0
LJMPKEY_DJ
KEY33:
JBS2,KEY34
LCALLT10MSD
JBS2,KEY34
WAIT31:
JNBS2,WAIT31
LJMPKEYJIAIN
KEY34:
AJMPMID_P
HOU_T:
SETBFO;调用定时延时标志位
LCALLT100MSD
LCALLT100MSD
MOVLEDHL,#OAH
MOVLEDHH,#OAH
LCALLHMS.DIS1;直接调用显示,不经过拆分程序
LCALLT100MSD
LCALLT100MSD
MOVSEC,#0
LCALLHMS.DIS
JBS3,KEY41
MOVA,HOUR
ADDA,#1
DAA
MOVHOUR,A
CJNEA,#24H,KEY41
MOVHOUR,#0
KEY41:
JBS4,KEY42
MOVA,HOUR
ADDA,#99H
DAA
MOVHOUR,A
CJNEA,#99H,KEY42
MOVHOUR,#23H
KEY42:
JBSI,KEY43
ACALLT10MSD
JBSI,KEY43
WAIT21:
JNBSI,WAIT21
INCSil
MOVA,SU
CJNEA,#1,NEXT61
LJMPHOU_T
NEXT61:
CJNEA,#2,NEXT62
LJMPMIN_T
NEXT62:
CJNEA,#3,KEY43
MOVSU,#0
LJMPKEY_SJ
KEY43:
JBS2,KEY44
LCALLT10MSD
JBS2,KEY44
WAIT32:
JNBS2,WAIT32
LJMPKEY_MAIN
KEY44:
AJMPHOU_T
MIN_T:
SETBFO;调用定时延时标志位
LCALLT1OOMSD
LCALLT1OOMSD
MOVLEDML,#OAH
MOVLEDMH,#OAH
LCALLHMS.DISl;直接调用显示,不经过拆分程序
LCALLT1OOMSD
LCALLT1OOMSD
MOVSEC,#0
LCALLHMS.DIS
JBS3,KEY51
MOVA,MIN
ADDA,#1
DAA
MOVMIX,A
CJNEA,#60H,KEY51
MOVMIX,#0
KEY51:
JBS4,KEY52
MOVA,MIN
ADDA,#99H
DAA
MOVMIN,A
CJNEA,