出租车计费系统.docx

上传人:b****5 文档编号:30157206 上传时间:2023-08-05 格式:DOCX 页数:14 大小:180.42KB
下载 相关 举报
出租车计费系统.docx_第1页
第1页 / 共14页
出租车计费系统.docx_第2页
第2页 / 共14页
出租车计费系统.docx_第3页
第3页 / 共14页
出租车计费系统.docx_第4页
第4页 / 共14页
出租车计费系统.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

出租车计费系统.docx

《出租车计费系统.docx》由会员分享,可在线阅读,更多相关《出租车计费系统.docx(14页珍藏版)》请在冰豆网上搜索。

出租车计费系统.docx

出租车计费系统

 

嵌入式程序课程设计

 

设计题目:

出租车计费系统

指导老师:

温景国

专业班级:

通信06-01班

姓名:

学号:

 

一.设计题目:

出租车计费器

二.设计要求

1.设计任务

(1)外部脉冲自动计数,自动显示。

(2)设计一个255计数器:

0-255计数,计满后自动清0,重新计数(在数码管中显示)。

(3)设计一个50000计数器:

0-50000计数,计满后自动清0,重新计数(在数码管中显示)。

2.设计一个出租车计费系统:

                                    

起步价为5元(2km以内),2km后,0.8元/0.5km;要求每500m刷新计费一次,在8位数码管中,前3位显示数码管显示里程数,后3位数码管显示价钱(角,元,十元,百元)

三.单片机最小系统硬件资源介绍

※MCS-51单片机;

※  6位共阳极数码管;

※  段码驱动器74HC573,位选译码器74HC138;

※  4路独立式按键;

※  外部晶振电路;

※  ISP下载接口(Insystemprogram,在系统编程);

※  DC+5V电源试配器(选配);

※  ISP下载线(选配)。

单片机最小系统实训板硬件资源分布见图1元件布局图和图2电路原理图:

其中P1为外部电源输入座(DC+5V),S8为电源最小系统的电源开关,E1和C3为电源滤波,去耦电容。

D1为系统电源指示灯。

J2为ISP下载接口,S7系统复位按键。

CRY1,C1,C2为外部时针电路。

IC1为89S51(DIP-40),左上角为第一脚。

PRE1,PRE2。

为上拉排阻(阻值4.7k—10k)。

J5,J9,J6,J10分别对应单片机的P0,P1,P2,P3口。

便于二次开发。

6路共阳极数码管动态显示电路,P0口通过74HC573(起驱动和隔离作用,让电流通过74CH573流入公共地),来控制数码管的8路段码,P20-P22通过74HC138译码器(使用其中的6路)控制数码管的公共端(中间还有三极管做驱动器)。

这样设计的理由:

为了保证该单片机最小系统的二次开发的资源充足和合理性。

如果单只做一个动态显示电路,可以省去74HC573,和74HC138。

图1元件布局图

图2单片机最小系统原理图

四.设计思路

1、255计数:

255可用8位二进制数表示,故本设计可直接采用可以重装载的计数器T1模式二进行计数。

然后对TL1的内容进行相应的二进制---十进制转换:

首先TL1的内容除以64H,所的商就是十进制的百位,然后用余数除以0AH,所得的商就是十进制数的十位,余数即相应的十进制的个位。

接着将相应的十进制数进行译码,并在LED数码管上显示出来。

每来一个脉冲其显示的结果加一,直加至255然后T1重新开始计数。

 图3255计数程序流程图

五.计数程序

ORG  0000H

SJMP0030H

ORG  0030H;主程序开始

START:

      MOVTMOD,#60H  ;计数器初始化,选用定时器1,模式2,计数方式

      SETBTR1      ;开启定时器1

      LCALLL1      ;转到读取TL1中得数并进行二到十转换

      LCALLL2      ;转到显示程序进行显示

      SJMPSTART    ;返回主程序

L1:

  MOVR0,#20H    ;将20H地址送R0,用来存放百位

      MOVA,TL1      ;取TL1中的数值,即脉冲数送A

      MOVB,#64H    ;将100送到B

      DIVAB        ;将脉冲数除以100取出百位

      MOV@R0,A      ;存百位到20H

      INCR0        ;R0加1,即得存放十位的地址

      MOVA,B        ;将余下的十位个位送A

      MOVB,#0AH    ;将10送B

      DIVAB        ;将十位个位除以10取出十位

      MOV@R0,A      ;存十位到21H

      INCR0        ;R0加1,即得个位地址

      MOV@R0,B      ;存个位到22H

      RET            ;显示子程序

L2:

  MOVR1,#00H    ;数码管显示从最低位开始

      MOVDPTR,#TAB  ;将译码表首地址送DPTR

L3:

  MOVA,R1      ;将数码管选通信号送A

      MOVP2,A      ;将A中的内容送P2口,控制数码管显示

      MOVA,@R0

      MOVCA,@A+DPTR;查表译码

      MOVP0,A      ;将字符码送P0口输出显示

      LCALLDIMS    ;调用延时子程序

      DECR0

      INCR1

      CJNER1,#03H,L3;循环显示控制,未显示完三位则循环,显示完则退出

      RET            ;延时子程序

DIMS:

MOVR2,#06H    ;延时子程序

DL:

MOVR3,#0FFH

DL1:

DJNZR3,DL1

    DJNZR2,DL

    RET              ;数码管译码表

TAB:

DB0C0H,0F9H,0A4H,0B0H,99H

    DB  92H,82H,0F8H,80H,90H

    END

*0-50000计数程序

ORG  0000H

SJMP0030H

ORG  0030H

MAIN:

MOV70H,#00H

      MOV71H,#00H

      MOV72H,#00H

      MOV73H,#00H

      MOV74H,#00H

      MOVTMOD,#60H

      MOVTL1,#0FFH

      MOVTH1,#0FFH

      SETBTR1

START:

LCALLL2

      LCALLL4

      SJMPSTART

L2  :

JBCTF1,L1  ;判定时器T1是否清零

L3  :

RET  

L1  :

INC70H

      MOVR5,70H

      CJNER5,#0AH,L3  ;十位

      MOV70H,#00H

      INC71H

      MOVR5,71H

      CJNER5,#0AH,L3  ;百位

      MOV71H,#00H

      INC72H

      MOVR5,72H

      CJNER5,#0AH,L3  ;千位

      MOV72H,#00H

      INC73H

      MOVR5,73H

      CJNER5,#0AH,L3  ;万位

      MOV73H,#00H

      INC74H

      MOVR5,74H

      CJNER5,#05H,L3

      MOV74H,#00H

      SJMPL3

L4  :

MOVR1,#00H    ;数码管显示从最低位开始

      MOVDPTR,#TAB  ;将译码表首地址送DPTR

      MOVR0,#70H

L5:

  MOVA,R1      ;将数码管选通信号送A

      MOVP2,A      ;将A中的内容送P2口,控制数码管显示

      MOVA,@R0

      MOVCA,@A+DPTR;查表译码

      MOVP0,A      ;将字符码送P0口输出显示

      LCALLDIMS    ;调用延时子程序

      INCR0

      INCR1

      CJNER1,#05H,L5;循环显示控制,未显示完六位则循环,显示完则退出

      RET            ;延时子程序

DIMS:

MOVR2,#06H    ;延时子程序

DL:

MOVR3,#0FFH

DL1:

DJNZR3,DL1

    DJNZR2,DL

    RET              ;数码管译码表

TAB:

DB0C0H,0F9H,0A4H,0B0H,99H

DB  92H,82H,0F8H,80H,90H

END

*出租车计费显示数码管

图4出租车计费系统显示

5.6出租车计费系统程序

ORG  0000H

SJMP0030H

ORG  0030H

MAIN:

MOV70H,#00H

      MOV71H,#00H

      MOV72H,#00H;脉冲计数

      MOV73H,#00H;每500脉冲显示个位

      MOV74H,#00H;里程数十位

      MOV75H,#00H;里程数百位

      MOV76H,#00H;角

      MOV77H,#05H;元

      MOV78H,#00H;十元

      MOVTMOD,#60H

      MOVTL1,#0FFH

      MOVTH1,#0FFH

      SETBTR1

START:

LCALLL1

      LCALLL9    ;转到显示程序进行显示

      SJMPSTART  ;计数脉冲子程序

L1  :

JBCTF1,JISHU;转到记数脉冲处

L2  :

RET

JISHU:

INC70H          ;计数延时,数据显示频率

      MOVR5,70H

      CJNER5,#01H,L2

     MOV70H,#00H

      INC71H

      MOVR5,71H

      CJNER5,#05H,L2

      MOV71H,#00H

      INC72H

      MOVR5,72H

      CJNER5,#0AH,L2    ;里程数个位

      MOV72H,#00H

      INC73H

      MOVR1,75H

      CJNER1,#00H,L3    ;判断是否超过100公里

      MOVR1,74H

      CJNER1,#00H,L3    ;判断是否超过10公里

      MOVR1,73H

      CJNER1,#03H,L3    ;判断是否超过2公里

  L3:

JCL2

      LCALLMONEY

      MOVR5,73H

      CJNER5,#0AH,L2    ;里程数十位

      MOV73H,#00H

      INC74H

      MOVR5,74H

      CJNER5,#0AH,L2  ;里程数百位

      MOV74H,#00H

      INC75H

      MOVR5,75H

      CJNER5,#0AH,L2

      MOV75H,#00H

      SJMPL2            ;计费开始

MONEY:

CLRC

      MOVR1,76H

      MOVR7,#08H

      MOVA,R7

      ADDCA,R1

      MOVR6,A

      JCL9

L4  :

MOVA,R6

      DAA

      MOVR6,A

      MOVR1,77H

      SWAPA

      ANLA,#0FH

      ADDA,R1

      MOV77H,A

      MOVR5,A

      CJNER5,#0AH,L5

      SJMPL8

L5  :

MOVA,R6

      ANLA,#0FH

      MOV76H,A

L6  :

RET                ;元加1

L7:

INC77H

      MOVA,77H

      MOVR5,A

      CJNER5,#0AH,L4    ;十元加1

      MOV77H,#00H

      INC78H

      MOVA,78H

      CJNER5,#0AH,L6

      MOV77H,#00H

      SJMPL4

L8  :

MOV77H,#00H

      INC78H

      MOVA,78H

      CJNER5,#0AH,L6

      MOV77H,#00H

      SJMPL5

L9:

  MOVR4,#00H    ;数码管显示从最低位开始

      MOVR0,#73H

L10:

  MOVDPTR,#TAB1;将译码表首地址送DPTR

      MOVA,R4      ;将数码管选通信号送A

      MOVP2,A      ;将A中的内容送P2口,控制数码管显示

      MOVA,@R0

      CJNER4,#04H,L11

      MOVDPTR,#TAB2;将译码表首地址送DPTR

L11  :

MOVCA,@A+DPTR;查表译码

      MOVP0,A      ;将字符码送P0口输出显示

      LCALLDIMS    ;调用延时子程序

      INCR0

      INCR4

      CJNER4,#06H,L10;循环显示控制,未显示完六位则循环,显示完则退出

      RET            ;延时子程序

DIMS:

MOVR2,#06H    ;延时3ms子程序

DL:

MOVR3,#0FFH

DL1:

DJNZR3,DL1

    DJNZR2,DL

    RET            ;数码管译码表

TAB1:

DB  0C0H,0F9H,0A4H,0B0H,99H;字符译码

    DB  92H,82H,0F8H,80H,90H

TAB2:

DB  040H,079H,024H,030H,19H;带小数点字符译码

    DB  12H,02H,078H,00H,10H

    END

六.结束语

    通过单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。

创新,是要我们学会将理论很好地联系实际,并不断地去开动自己的大脑,从为人类造福的意愿出发,做自己力所能及的,别人却没想到的事。

使之不断地战胜别人,超越前人。

同时,更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。

设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。

这个设计过程中,我遇到过许多次失败的考验,就比如,自己对实际生活中的交通秩序的不了解给整个设计带来的困扰,真想要就此罢休,然而,就在想要放弃的那一刻,我明白了,原来结果并不那么重要,我们更应该注重的是这一整个过程。

于是,我坚持了下来。

当然最终,这个设计很成功,主要体现在,这一整个系统,几乎没有参考任何书,程序由自己独立完成,与用8255来制作的交通灯控制系统相比,程序简单易读,结构清楚,最重要的是成本低。

在设计一个系统,除了达到所要求的性能指标以外,成本也是很重要的一个指标。

成本的高低也决定了产品的适用性。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文化宗教

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1