最新出租车计价器系统的设计.docx

上传人:b****8 文档编号:10928761 上传时间:2023-02-23 格式:DOCX 页数:17 大小:126.88KB
下载 相关 举报
最新出租车计价器系统的设计.docx_第1页
第1页 / 共17页
最新出租车计价器系统的设计.docx_第2页
第2页 / 共17页
最新出租车计价器系统的设计.docx_第3页
第3页 / 共17页
最新出租车计价器系统的设计.docx_第4页
第4页 / 共17页
最新出租车计价器系统的设计.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

最新出租车计价器系统的设计.docx

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

最新出租车计价器系统的设计.docx

最新出租车计价器系统的设计

 

出租车计价器系统的设计

摘要:

在交通发展迅速的今天,出租车是我们交通中不可缺少的工具。

同时出租车中的计价器是必不可少的一种设备。

出租车计价器系统设计的主要内容是通过C51单片机上的数码显示器来模拟出租车计价器的路程显示表,通过单片机上的键盘上的某些键来表示开始、暂停、复位等功能。

步骤如下:

首先,程序开始做一些必要的初始化工作,等待键盘输入。

然后,启动键按下(0)后LED数码管开始记录路程并显示。

最后,当需要停止是可按相应的键(F)对路程计数器进行暂停。

而且还可以复位(E)。

关键词:

C51单片机;8255;计价器;LED数码管

 

1设计内容及要求

1.1设计内容及要求

(1)出租车里程测量:

采用信号源产生脉冲模拟出租车计价传感器产生脉冲,设每产生100个脉冲出租车行驶1公里信号源脉冲频率〈=1KHZ;

(2)里程显示为:

***.***公里;

(3)采用8255芯片管理键盘显示。

1.2框图

根据设计内容及要求,设计框图如图1所示。

图1设计框图

2系统组成及工作原理

2.1控制单元设计

按键名称,O键表示开始计算路程;F键表示暂停;E键表示复位。

当程序开始运行后,按下0键则表示开始计算路程,并由数码管显示出来;按下F键则路程记数器暂停,并显示当前路程,当按下E键则复位。

2.2输出单元设计

通过六个8段LED数码管来显示路程。

前四个分别表示千位、百位、十位、个位,而后两个表示十分位和百分位。

2.3定时器的功能和使用方法

首先选择方式1——为16位的定时器,其初始化具体如下:

«SkipRecordIf...»«SkipRecordIf...»s

其中fosc为晶振频率,定时时间«SkipRecordIf...»«SkipRecordIf...»。

3电路方案设计

3.1电路设计方案

使用单片机来完成设计要求。

电路包括显示电路,设置电路,存储电路,复位电路,其工作原理图如图2所示,单片机功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。

针对计费模式的切换,通过软件编程就可以轻容易的实现。

避免了机械开关带来的不稳定因素,单片机单元框图如图3所示。

图2工作原理框图

图3单片机单元框图

3.2单元电路设计

3.2.1复位电路设计

在单片机的应用系统中,除单片机本身需复位以外,外部扩展的I/O接口电路等也需要复位,因此需要一个系统的同步复位信号:

即单片机复位后,CPU开始工作时,外部的电路一定要复位好,以保证CPU有效的对外部电路进行初始化编程。

51系列单片机的复位端RST是一个施密特触发输入,高电平有效。

复位电路产生的复位信号经施密特电路整形后作为系统复位信号,加到51系列单片机和外部I/O接口电路的复位端.其电路图如图4所示,其中R1=47KΩ,R2=100Ω,C=10uF。

图4复位电路

3.2.2时钟电路设计

89C51系列单片机内部有一个可控制的反相放大器,引脚XTAL1、XTAL2为反相放大器的输入端和输出端,在XTAL1、XTAL2上外接晶振(或陶瓷谐振器)和电容便组成振荡器。

具体的时钟电路如图5所示。

电容1、2的典型值为30pF+10pF(晶振)或40pF+10pF(陶瓷谐振器)。

振荡器频率主要取决与晶振(或陶瓷谐振器)的频率,但必须小于器件所允许的最高频率。

振荡器的工作受控制,复位后=0(=1)振荡器工作,可由软件置‘1’,使振荡器停止振荡,从而使整个单片机停止工作,以达到节电的目的。

 

图3.2时钟电路

图5时钟电路

3.2.3单片机最小系统

主控机系统采用了Atmel公司生产的89C51单片机,它含有128字节数据存储器,内置4K的电可擦除FLASHROM,可重复编程,大小满足主控机软件系统设计,所以不必再扩展程序存储器。

复位电路和晶振电路是89C51工作所需的最简外围电路。

89C51的复位端是一个史密特触发输入,高电平有效,而系统中的时钟接口和CAN总线接口的复位信号都是低电平有效。

在复位电路中,按一下复位开关就使在RS端出现一段时间的高电平,经过74LS14的一次反相整形,提供给单片机复位端。

再经过一次反相整形,通过I/ORST端提供给外部接口电路。

外接12M晶振和两个20P电容组成系统的内部时钟电路。

3.38255A键盘显示电路设计

8255的数据线片选信号线、地址线、读写控制线等分别与系统总线相连,其A、B、C三个端口以排针形式引出,供8255实验使用,如图6所示。

«SkipRecordIf...»

图6系统中的8255线路

4程序设计

4.1主程序模块

在主程序模块中,需要完成对各接口芯片的初始化、中断向量的设计以及开中断、循环等待等工作。

另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器,并对它们进行初始化。

然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程等不同的操作。

4.2定时中断服务程序

在定时中断服务程序中,每1ms产生一次中断,当产生1000次中断的时候,也就到了一秒,送数据到相应的显示缓冲单元,并调用显示子程序实时显示。

里程计数程序流程图如图7所示。

 

图7里程计数程序流程图

5总结

5.1结论

通过用单片机来模拟出租车计价器,并且使用了单片机上的键盘和数码显示管来模拟。

硬件各方面相对吻合安全性高、耦合度高,能够对键盘上的0键进行启动、F键进行停止、E键进行复位的操作。

程序首先进行初始化设置(包括数码管、字型表、定时中断设置);然后对键盘进行扫描,判断是否有功能键被按下;最后根据哪个功能键被按下,执行相应的程序以实现功能。

5.2课程设计体会

经过两周有关于通过模拟出租车计价器的课程设计,使同学们对单片机的应用有了更深的了解。

在课程设计的过程中,还是碰到了许多的问题。

比如,对于单片机的一些基本代码及程序还有一些不清楚的地方;对于代码的前后顺序及调用掌握的还不够好。

通过请教老师和同学,最终把问题解决了。

此外,去图书馆和网上查相关资料也是一种学习的途径。

   

 

附录

ORG0000H

SJMPSTART;定义程序起始位置

ORG000BH

SJMPDS0;定时器T0入口地址

START:

CLRTR0;关闭T0中断

MOVA,#81H;将立即数81H放入A中

MOVDPTR,#0FF23H;定义DPTR外部数据指针为0FF23H,指向8255的控制字口

MOVX@DPTR,A;把81H放入8255控制字口,让8255以PA、PB口0状态输出工作,PC口0状态输入

MOVTMOD,#01H;定义T0为16位计数器

MOVTH0,#0FCH;定义中断延时

MOVTL0,#24H;定义中断延时

;1MS=1000US,假设晶振频率为12MHZ,延时常数=(2的16次方-1000)将其转换到16进制

MOVIE,#82H;定义中断允许控制字,开CPU中断,开T0中断

MOV71H,#00H;

MOV72H,#00H

MOV73H,#00H

MOV74H,#00H

MOV75H,#00H

MOV76H,#00H

MOV40H,#50;延时用

MOV00H,#00H;标志

MOV01H,#00H

MOV02H,#00H

MOV03H,#00H

MOV04H,#00H

MOVR1,#00H;用来检测键盘开始键

MOVR3,#00H;用来检测停止键

MOVR4,#00H;用来监听复位键

MOV50H,#10;循环次数

MOV51H,#10;循环次数

MOV52H,#10

MOV53H,#10

MOV54H,#10

MOV55H,#10

SETBTR0;允许T0计数

CLRC;清空CY

SJMP$;等待中断来临

DS0:

;中断处理子程序

MOVTH0,#0FCH;把中断延时还给T0

MOVTL0,#24H

LCALLKEY_STATE;调用键盘扫描子程序,获取当前的键盘状态,1MS扫描一次

CJNER1,#0,RUN;如果“0”被按下,就跳转到运行子程序,计算里程数

CJNER3,#0,STOP;如果“F”被按下,就跳转到停止子程序

CJNER4,#0,RESET;如果“E”被按下,就跳转到复位子程序

RETI;如果3个键都没有被按下,不做处理,直接返回中断,等待下一次中断来临

RESET:

;复位的子程序

MOV71H,#00H;初始化查表单元数据

MOV72H,#00H

MOV73H,#00H

MOV74H,#00H

MOV75H,#00H

MOV76H,#00H

MOV51H,#10;初始化循环次数

MOV52H,#10

MOV53H,#10

MOV54H,#10

MOV55H,#10

LJMPXIANSHI;跳转到显示子程序

RETI;返回中断

STOP:

;停止子程序

LJMPXIANSHI;跳转到显示子程序

KEY_STATE:

;键盘行扫描处理子程序

KEY_0:

;检查0

MOVR2,#0FDH;定义8255对第2个LED数码管进行键盘扫描

MOVDPTR,#0FF20H

MOVA,R2

MOVX@DPTR,A

MOVDPTR,#0FF22H;将DPTR指向8255的PC口

MOVXA,@DPTR;从PC口获取键盘状态

JBACC.1,KEY_F;判断第1列是否为0,如果为0,证明0被按下

SJMPKEY_DOWN0;按下了就跳转到0被按下的子程序

RETI;返回中断

KEY_F:

;检查F

MOVR2,#0F7H

MOVDPTR,#0FF20H

MOVA,R2

MOVX@DPTR,A

MOVDPTR,#0FF22H

MOVXA,@DPTR

JBACC.1,KEY_E

SJMPKEY_DOWNF

RETI

KEY_E:

;检查E

MOVR2,#0DFH

MOVDPTR,#0FF20H

MOVA,R2

MOVX@DPTR,A

MOVDPTR,#0FF22H

MOVXA,@DPTR

JBACC.1,RETURN2

SJMPKEY_DOWNE

RETURN2:

;返回中断

RETI

KEY_DOWN0:

;0被按下

MOVR1,#1;把标志R1设置为1

MOVR3,#0;其他标志设置为0

MOVR4,#0

RETI;返回中断

KEY_DOWNF:

;F被按下

MOVR3,#1;把R3设置为1

MOVR1,#0;其他标志设置为0

MOVR4,#0

RETI;返回中断

KEY_DOWNE:

;E被按下

MOVR4,#1;把R4设置为1

MOVR3,#0;其他标志设置为0

MOVR1,#0

RETI;返回中断

RUN:

;运行子程序

DJNZ40H,XIANSHI;延时显示

MOV40H,#50

INC71H;百分位查表单元+1

DJNZ50H,XIANSHI;循环10次

MOV50H,#10;如果百分位循环了10次,那么十分位上应该得到进位

INC72H;十分位查表单元+1

MOV71H,#00H

DJNZ51H,XIANSHI

MOV51H,#10

INC73H

MOV71H,#00H

MOV72H,#00H

DJNZ52H,XIANSHI

MOV52H,#10

INC74H

MOV71H,#00H

MOV72H,#00H

MOV73H,#00H

DJNZ53H,XIANSHI

MOV53H,#10

INC75H

MOV71H,#00H

MOV72H,#00H

MOV73H,#00H

MOV74H,#00H

DJNZ54H,XIANSHI

MOV54H,#10

INC76H

MOV71H,#00H

MOV72H,#00H

MOV73H,#00H

MOV74H,#00H

MOV75H,#00H

DJNZ55H,XIANSHI

AJMPSTART

XIANSHI:

;显示百分位

JB00H,P10;作为标志判断当前应该去显示哪个数码管

JB01H,P100

JB02H,P1000

JB03H,P10000

JB04H,P100000

MOVDPTR,#0FF20H;定义显示最右边的数码管

MOVA,#0FEH

MOVX@DPTR,A

MOVA,71H;把百分位查表单元的数据送到A中

MOVDPTR,#TAB1;查表

MOVCA,@A+DPTR;把字型码送到8255的PB口

MOVDPTR,#0FF21H

MOVX@DPTR,A

CPL00H;取反标志,能够让数码管循环点亮

CPL01H

CPL02H

CPL03H

CPL04H

LJMPRETURN;返回中断

P10:

;显示十分位

MOVDPTR,#0FF20H

MOVA,#0FDH

MOVX@DPTR,A

MOVA,72H

MOVDPTR,#TAB1

MOVCA,@A+DPTR

MOVDPTR,#0FF21H

MOVX@DPTR,A

CPL00H

LJMPRETURN

P100:

;显示个位

MOVDPTR,#0FF20H

MOVA,#0FBH

MOVX@DPTR,A

MOVA,73H

MOVDPTR,#TAB1

MOVCA,@A+DPTR

MOVDPTR,#0FF21H

MOVX@DPTR,A

CPL01H

LJMPRETURN

P1000:

;显示十位

MOVDPTR,#0FF20H

MOVA,#0F7H

MOVX@DPTR,A

MOVA,74H

MOVDPTR,#TAB1

MOVCA,@A+DPTR

MOVDPTR,#0FF21H

MOVX@DPTR,A

CPL02H

LJMPRETURN

P10000:

;显示百位

MOVDPTR,#0FF20H

MOVA,#0EFH

MOVX@DPTR,A

MOVA,75H

MOVDPTR,#TAB1

MOVCA,@A+DPTR

MOVDPTR,#0FF21H

MOVX@DPTR,A

CPL03H

LJMPRETURN

P100000:

;显示千位

MOVDPTR,#0FF20H

MOVA,#0DFH

MOVX@DPTR,A

MOVA,76H

MOVDPTR,#TAB1

MOVCA,@A+DPTR

MOVDPTR,#0FF21H

MOVX@DPTR,A

CPL04H

LJMPRETURN

RETURN:

RETI;返回中断

TAB1:

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;0,1,2,3,4,5,6,7,8,9

END

 

参考文献

1吴开志等.单片机技术指导[M].南昌航空出版社,2007.8

2张友德赵志英涂时亮.单片微型机原理、应用与实验[M].复旦大学出版社,2006.6

3孙涵芳.MCS-51系列单片机原理及应用[M].北京航空航天大学出版社,1996.4

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

当前位置:首页 > 工程科技 > 机械仪表

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

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