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

上传人:b****2 文档编号:372310 上传时间:2022-10-09 格式:DOCX 页数:16 大小:144KB
下载 相关 举报
出租车计价器系统的设计.docx_第1页
第1页 / 共16页
出租车计价器系统的设计.docx_第2页
第2页 / 共16页
出租车计价器系统的设计.docx_第3页
第3页 / 共16页
出租车计价器系统的设计.docx_第4页
第4页 / 共16页
出租车计价器系统的设计.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

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

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

出租车计价器系统的设计.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位的定时器,其初始化具体如下:

s

其中fosc为晶振频率,定时时间

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所示。

图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的控制字口

MOVXDPTR,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

MOVXDPTR,A

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

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

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

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

RETI;返回中断

KEY_F:

;检查F

MOVR2,#0F7H

MOVDPTR,#0FF20H

MOVA,R2

MOVXDPTR,A

MOVDPTR,#0FF22H

MOVXA,DPTR

ACC.1,KEY_E

SJMPKEY_DOWNF

RETI

KEY_E:

;检查E

MOVR2,#0DFH

MOVDPTR,#0FF20H

MOVA,R2

MOVXDPTR,A

MOVDPTR,#0FF22H

MOVXA,DPTR

ACC.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

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

当前位置:首页 > 解决方案 > 学习计划

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

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