出租车计费系统外部脉冲计数单片机_第1页
出租车计费系统外部脉冲计数单片机_第2页
出租车计费系统外部脉冲计数单片机_第3页
出租车计费系统外部脉冲计数单片机_第4页
出租车计费系统外部脉冲计数单片机_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、设计任务:11 外部脉冲自动计数,自动显示。111设计一个255计数器:0255计数,计满后自动清0,重新计数(在数码管中显示)。112设计一个50000计数器:050000计数,计满后自动清0,重新计数(在数码管中显示)。12 设计一个出租车计费系统: 起步价为5元(2km以内),2km后,0.8元/0.5km;要求每500m刷新计费一次,在8位数码管中,前3位显示数码管显示里程数,后4位数码管显示价钱(角,元,十元,百元)注:要求首先采用PROTEUS完成单片机最小系统的硬件电路设计及仿真;程序仿真测试通过后,再下载到单片机实训板上执行。二、单片机最小系统硬件资源介绍: 89S51单片

2、机; 6位共阳极数码管; 段码驱动器74HC573,位选译码器74HC138; 4路独立式按键; 外部晶振电路; ISP下载接口(In system program,在系统编程); 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.7k1

3、0k)。J5,J9,J6,J10分别对应单片机的P0,P1,P2,P3口。便于二次开发。6路共阳极数码管动态显示电路,P0口通过74HC573(起驱动和隔离作用,让电流通过74CH573流入公共地),来控制数码管的8路段码,P20-P22通过74HC138译码器(使用其中的6路)控制数码管的公共端(中间还有三极管做驱动器)。这样设计的理由:为了保证该单片机最小系统的二次开发的资源充足和合理性。如果单只做一个动态显示电路,可以省去74HC573,和74HC138。 图1 元件布局图图2 单片机最小系统原理图三、设计思路:1、对外部脉冲0-255计数的设计:设计思路:255可用8位二进制数表示,故

4、本设计可直接采用可以重装载的计数器T1模式二进行计数。然后对TL1的内容进行相应的二进制-十进制转换:首先TL1的内容除以64H,所的商就是十进制的百位,然后用余数除以0AH,所得的商就是十进制数的十位,余数即相应的十进制的个位。接着将相应的十进制数进行译码,并在LED数码管上显示出来。每来一个脉冲其显示的结果加一,直加至255然后T1重新开始计数。开始初始化堆栈,定时器初始化清零相关RAM地址单元TF1=1?调用显示子程序脉冲数加1即20H加120H=100?21H加120清零计算出脉冲数的个,十,百位分别存放于30H,31H,32H(20H=54)&(21H=2?)脉冲数计到255

5、后重新计数即20H,21H清零说明:1. 20H存放脉冲的个位和十位数值,21H存放脉冲的百位和千位数值。 2.计算脉冲数的个位和十位数值:(20H)/10的商即十位数值存放于31H,余数即个位数值存放于30H。 3. 计算脉冲数的百位数值:(20H)/10的余数即百位数值存放于32H。例如:脉冲数212(十进制),(20H)=12,(21H)=2。脉冲的个位数值(30H)=2, 脉冲的十位数值(31H)=1, 脉冲的百位数值(32H)=2. 图3 255计数程序流程图 调试程序: ORG 0000H ;复位入口 SJMP MAIN ORG 000BH ;T0口溢出中断 AJMP T0 MAI

6、N: MOV TMOD,#06H ;设置T0工作于计数方式2 MOV P2,#00H MOV TH0,#00H MOV TL0,#0FCH MOV P3,#0 MOV DPTR,#NUMTAB SETB EA SETB ET0 SETB TR0 JSXS: MOV A,TL0 ;算百位 MOV B,#100 DIV AB MOV R0,B MOVC A,A+DPTR ;查表 MOV P0,A ;显示百位 SETB P2.0 ACALL W1 ;调用延时 CLR P2.0 MOV A,R0 ;算十位 MOV B,#10 DIV AB MOV R1,B MOVC A,A+DPTR MOV P0,A

7、 SETB P2.1 ACALL W1 CLR P2.1 MOV A,R1 ;算个位 MOVC A,A+DPTR MOV P0,A SETB P2.2 ACALL W1 CLR P2.2 T0: AJMP JSXS W1: MOV R7,#10 ;延时程序 W2: MOV R6,#50 DJNZ R6,$ DJNZ R7,W2 RET NUMTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EHPROTEUS仿真图:见图一:对外部脉冲0-255计数的PROTEUS仿真电路图 2、对外部脉冲05

8、0000的计数:设计思路:0-50000计数器设计方法与0-255计数器设计方法有很多地方相似,主要在一些地方作了一些技术处理。由于十进制数0-50000用8位二进制已不能表示出来,在此只能选择定时器/计数器工作方式1。在用16位计数器处理0-50000计数时,我们既可用单纯的定时器/计数器模式,也可采用定时器/计数器中断模式。中断模式的优越之处在于它可在计数溢出时打断主程序的执行,通过在中断服务程序中编写显示清零程序,可以很精确的实现0-50000的计数。而用定时器/计数器模式时有可能在计数满50000时显示不能及时清零,造成这种现象的原因主要是外部脉冲频率太大,程序来不及对每个脉冲进行处理

9、。因此非中断模式要受到外部脉冲的限制,考虑到现实中有些情况下脉冲频率也可能会很大,故本程序及下面的出租车计费器均采用中断模式,把计数清零语句放到中断服务程序中,以保证能精确实现0-50000的计数。调试程序: ORG 0000H SJMP MAIN ORG 000BH AJMP T0 MAIN: MOV TMOD,#05H ; 选择T0的计数功能,选择工作方式1 MOV P1,#0 ; 将P1口置1 MOV TH0,#0FFH MOV TL0,#0FFH ; 计数器初始化,有一个脉冲即中断 MOV P3,#0 ; 将P3口置0 CLR C ; C置0 MOV DPTR,#NUMTAB ; 指针

10、指向NUMTAB SETB EA ; 总中断允许 SETB ET0 ; T0中断允许 MOV R0,#8 ; 个位值 MOV R1,#8 ; 十位值 MOV R2,#9 ; 百位值 MOV R3,#9 ; 千位值 MOV R4,#4 ; 万位值 ; 各数码管置数 SETB TR0 ; 打开T0开关 ACALL T1 ; 显示加等待中断 T0: MOV TH0,#0FFH ; MOV TL0,#0FFH ; 中断将计数器初始化 INC R0 ; R0加1 MOV A,R0 ; 将R0的值赋入A中 CJNE A,#10,A1 ; 比较,是否进位 MOV R0,#0 ; R0置0 INC R1 ;

11、进位到十位 A1: MOVC A,A+DPTR ; 查表 MOV P2,A ; SETB P1.0 ; 显示个位 ACALL W1 ; 延时 CLR P1.0 ; MOV A,R1 ; R1的值赋入A中 CJNE A,#10,A2 ; 比较,是否进位 MOV R1,#0 ; 进位 R1置0 INC R2 ; 进位到百位 A2: MOVC A,A+DPTR ; 查表 MOV P2,A ; SETB P1.1 ; 显示十位 ACALL W1 ; 延时 CLR P1.1 ; MOV A,R2 ; R2赋入百位 CJNE A,#10,A3 ; 比较,是否进位 MOV R2,#0 ; 进位,R2置0 I

12、NC R4 ; 进位到千位 A3: MOVC A,A+DPTR ; 查表 MOV P2,A SETB P1.2 ; 显示百位 ACALL W1 ; 延时 CLR P1.2 MOV A,R3 ; R3赋入A中 CJNE A,#10,A4 ; 比较,是否进位 MOV R3,#0 ; 进位置0 INC R4 ; 进位到万位 A4: MOVC A,A+DPTR ; 查表 MOV P2,A SETB P1.3 ; 显示千位 ACALL W1 ; 延时 CLR P1.3 MOV A,R4 ; R4赋入A中 CJNE A,#5,A5 ; 比较万位是否到5 MOV R4,#0 ; 万位到5时置0 MOV R3

13、,#0 A5: MOVC A,A+DPTR ; 查表 MOV P2,A ; SETB P1.4 ; 显示万位 ACALL W1 ; 延时 CLR P1.4 RETI T1: MOV A,R0 ; 等待中断时调用 MOVC A,A+DPTR MOV P2,A SETB P1.0 ACALL W1 CLR P1.0 MOV A,R1 MOVC A,A+DPTR MOV P2,A SETB P1.1 ACALL W1 CLR P1.1 MOV A,R2 MOVC A,A+DPTR MOV P2,A SETB P1.2 ACALL W1 CLR P1.2 MOV A,R3 MOVC A,A+DPTR

14、MOV P2,A SETB P1.3 ACALL W1 CLR P1.3 MOV A,R4 MOVC A,A+DPTR MOV P2,A SETB P1.4 ACALL W1 CLR P1.4 AJMP T1 W1: MOV R7,#10 ; 延时程序 W2: MOV R6,#10 DJNZ R6,$ DJNZ R7,W2 RETNUMTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH ; 共阳极数值码PROTEUS仿真图:见图二:对外部脉冲050000的计数的PROTEUS仿真电路图3、出租

15、车计费系统:设计思路:出租车计费器的设计可在0-50000计数器的基础上扩充改写而成。出租车上安装有一个传感器,车子每行进0.5km传感器便产生一个脉冲。因此车程可用计数脉冲的个数表示出来,因而车程的显示可转化为计数器显示问题。而车程与收费之间的数学关系在设计要求中已明确。我采用6位数码管来显示车程和收费。其中前三个数码管显示车程,后四个数码管显示收费。特别指出最好用中断处理计数脉冲数的临界值,否则很容易不能达到预期目标。 调试程序:ORG 0000H ;复位入口 LJMP MAIN ORG 000BH ;T0口溢出中断 LJMP T0 JIAO EQU 20H ;标号赋值 YUAN EQU

16、21H SHIY EQU 22H BAIY EQU 23H LI EQU 24H SHILI EQU 25H BAILI EQU 26H ORG 2000H MAIN: MOV TMOD,#6 ;设置T0工作方式 MOV TH0,#0FFH ;赋初值 MOV TL0,#0FFH SETB EA ;中断允许 SETB ET0 SETB TR0 CLR JIAO MOV YUAN,#5 CLR SHIY CLR BAIY CLR LI CLR SHILI CLR BAILI MOV R0,#5 MOV DPTR,#NUMTAB A0: ACALL XS AJMP A0 T0: INC LI ;算公

17、里 DJNZ R0,H0 MOV R0,#1 B1: MOV A,JIA O ;算角 ADD A,#8 MOV JIAO,A CJNE A,#10,Z0 MOV JIAO,#0 INC YUAN SJMP Z1 Z0: JC Z1 SUBB A,#10 MOV JIAO,A INC YUAN Z1: MOV A,YUAN ;算元 CJNE A,#10,Z2 MOV YUAN,#0 INC SHIY Z2: MOV A,SHIY ;算十元 CJNE A,#10,H0 MOV SHIY,#0 INC BAIY H0: MOV A,LI CJNE A,#10,Y0 MOV LI,#0 INC SHI

18、LI Y0: MOV A,SHILI ;算十里 CJNE A,#10,Z3 MOV SHILI,#0 INC BAILI Z3: ACALL XS ZZZ: RETI ;中断返回 XS: MOV A,JIAO ;显示数值 MOVC A,A+DPTR MOV P2,A SETB P1.0 ACALL W1 CLR P1.0 MOV A,YUAN MOV DPTR,#NUMTAB1 MOVC A,A+DPTR MOV P2,A SETB P1.1 ACALL W1 CLR P1.1 MOV DPTR,#NUMTAB MOV A,SHIY MOVC A,A+DPTR MOV P2,A SETB P1.2 ACALL W1 CLR P1.2 MOV A,BAIY MOVC A,A+DPTR MOV P2,A SETB P1.3 ACALL W1 CLR P1.3 MOV A,LI MOVC A,A+DPTR MOV P2,A SETB P1.4 ACALL W1 CLR P1.4 MOV A,SHILI MOVC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论