单片机课程设计 出租车计价器.docx
- 文档编号:8538942
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:29
- 大小:180.84KB
单片机课程设计 出租车计价器.docx
《单片机课程设计 出租车计价器.docx》由会员分享,可在线阅读,更多相关《单片机课程设计 出租车计价器.docx(29页珍藏版)》请在冰豆网上搜索。
单片机课程设计出租车计价器
简易出租车计价器
摘要:
介绍了一种以单片机为核心的多功能出租车计价器,该计价器采用单CPU结构,具有计量功能、掉电保护功能、语音功能等。
文中阐述了系统的硬件及软件结构。
关键词:
出租车计价器单片机多功能
第1节引言
汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。
它关系着交易双方的利益。
具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。
因此,汽车计价器的研究也是十分有一个应用价值的。
电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试,对于模式的切换需要用到机械开关,机械开关时间久了会造成接触不良,功能不易实现。
为此我们采用了单片机进行设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。
针对计费模式的切换,通过软件编程就可以轻易而举的实现。
避免了机械开关带来的不稳定因素。
随着生活水平的提高,人们已不再满足于衣食住的享受,出行的舒适已受到越来越多人的关注。
于是,出租车行业以低价高质的服务给人们带来了出行的享受。
但是总存在着买卖纠纷困扰着行业的发展。
而在出租车行业中解决这一矛盾的最好方法就是改良计价器。
用更加精良的计价器来为乘客提供更加方便快捷的服务。
现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。
而部分小城市尚未普及,但随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。
1.1出租车计价器概述
本电路以89S51单片机为中心、附加A44E霍尔传感器测距,实现对出租车计价统计,采用AT24C02实现在系统掉电的时候保存单价和系统时间等信息,输出采用8段数码显示管。
本电路设计的计价器不但能实现基本的计价,而且还能根据白天、黑夜、中途等待来调节单价,同时在不计价的时候还能作为时钟为司机同志提供方便。
1.2本设计任务
1.2.1设计任务
设计简易出租车计价器
1.2.2课程设计目的
«微机原理与接口技术»是一门实践性和实用性都很强的课程,学习的目的在于应用。
本课程设计是配合“微机原理与接口技术”课堂教学的一个重要的实践教学环节,它能其到巩固课堂和书本上所学知识,加强综合能力,提高系统设计水平,启发创新思想的效果。
我们希望每个学生都能自己动手独立设计完成一个典型的微机应用小系统。
1.2.3课程设计内容
㈠系统功能任务要求
1)自动记录(日、夜)单价、总额、里程、耗时
2)按十进制显示以上数据
3)全部采用LED显示
4)有语音播放提示
㈡系统设计说明
1)可以自增系统功能
2)允许用MSC-51系列或8086系列
3)系统程序采用汇编或C语言编程
4)硬件原理图采用电子CAD绘制
1.3系统主要功能
本课程设计所设计的出租车计价器的主要功能有:
数据的复位、白天/晚上转换、数据输出、计时计价、单价输出及调整、路程输出、语音播报数据信息、实现在系统掉电的时候保存单价和系统时间等信息等功能。
输出采用8段数码显示管。
本电路设计的计价器不但能实现基本的计价,而且还能根据白天、黑夜、中途等待来调节单价,同时在不计价的时候还能作为时钟为司机同志提供方便。
第2节计价器硬件设计
本系统的硬件设计主要包括单片机AT89S51、数据显示部件、A44E霍尔传感器电路、AT24C02掉电存储单元的设计、里程计算及计价单元的设计。
在硬件设计过程中,充分利用各部件的功能,实现多功能的出租车计价器设计。
2.1系统的硬件构成及功能
它由以下几个部件组成:
单片机AT89S51、总金额及单价显示部件、键盘控制部件,AT24C02掉电存储控制、里程计算单元、串中显示驱动电路等。
利用单片机丰富的IO端口,及其控制的灵活性,实现基本的里程计价功能和价格调节、时钟显示功能。
不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级。
具体电路参见“总体电路图”。
2.2AT89S51单片机及其引脚说明
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,具有很高性价比。
AT89S51是一个有40个引脚的芯片,引脚配置如下图所示。
AT89S51引脚配置
AT89S51芯片的40个引脚功能为:
VCC电源电压。
GND接地。
RST复位输入。
当RST变为高电平并保持2个机器周期时,将使单片机复位。
WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRTO位(地址8EH)可打开或关闭该功能。
DISKRTO位缺省为RESET输出高电平打开状态。
XTAL1反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2来自反向振荡放大器的输出。
P0口一组8位漏极开路型双向I/O口。
也即地址/数据总线复用口。
作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
Flash编程和程序校验期间,P1接收低8位地址。
P1口部分端口引脚及功能如表1所示。
表1P1口特殊功能
P1口引脚
特殊功能
P1.5
MOSI(用于ISP编程)
P1.6
MOSI(用于ISP编程)
P1.7
SCK(用于ISP编程)
P2口一个带内部上拉电阻的8位双向I/O口。
P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器时,P2口线上的内容在整个访问期间不改变。
Flash编程和程序校验期间,P2亦接收低8位地址。
P3口一个带内部上拉电阻的8位双向I/O口。
P3的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写“1”时,它们被内部的上拉电阻把拉到高电并可作输入端口。
作输入端口使用时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如表2所示。
P3口还接收一些用于Flash闪速存储器编程和程序校验期间的控制信号。
表2P3口特殊功能
P3口引脚
特殊功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
(外部中断0)
P3.3
(外部中断1)
P3.4
T0(定时器0外部输入)
P3.5
T1(定时器1外部输入)
P3.6
(外部数据存储器写选通)
P3.7
(外部数据存储器读选通)
PSEN程序储存允许输出是外部程序存储器的读先通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN/有效,即输出两个脉冲。
当访问外部数据存储器,没有两次有效的PSEN/信号。
EA/VPP外部访问允许。
欲使CPU仅访问外部程序存储器,EA端必须保持低电平,需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
Flash存储器编程时,该引脚加上+12V的编程电压VPP。
2.3AT24C02引脚图及其引脚功能
AT24C02芯片引脚配置如下图所示:
AT24C02引脚配置图
AT24C02芯片DIP封装,共有8个引脚,下表是其引脚功能表:
引脚名
功能
A0~A2
地址引脚
SDA/SCL
连续数据信号/连续时钟信号
WP
写保护引脚
VCC/GND
电源端/接地端
WP接VSS时,禁止写入高位地址,WP接VDD时,允许写入任何地址;
2.3.1AT24C02掉电存储单元的设计
掉电存储单元的作用是在电源断开的时候,存储当前设定的单价信息。
AT24C02是ATMEL公司的2KB字节的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使用方便。
其电路如下图:
掉电存储电路原理图
图中R8、R9是上拉电阻,其作用是减少M24C02的静态功耗,由于M24C02的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线SCL(移位脉冲)和SDA(数据/地址)与单片机传送数据。
每当设定一次单价,系统就自动调用存储程序,将单价信息保存在芯片内;当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用。
2.4里程计算、计价单元的设计
里程计算是通过安装在车轮上的霍尔传感器A44E检测到的信号,送到单片机,经处理计算,送给显示单元的。
其原理如下:
传感器测距示意图
由于A44E属于开关型的霍尔器件,其工作电压范围比较宽(4.5~18V),其输出的信号符合TTL电平标准,可以直接接到单片机的IO端口上,而且其最高检测频率可达到1MHZ。
(a)(b)
集成开关型霍耳传感器原理图
A44E集成霍耳开关由稳压器A、霍耳电势发生器(即硅霍耳片)B、差分放大器C、施密特触发器D和OC门输出E五个基本部分组成,如上图所示。
(1)、
(2)、(3)代表集成霍耳开关的三个引出端点。
在输入端输入电压VCC,经稳压器稳压后加在霍耳电势发生器的两端,根据霍耳效应原理,当霍耳片处在磁场中时,在垂直于磁场的方向通以电流,则与这二者相垂直的方向上将会产生霍耳电势差VH输出,该VH信号经放大器放大后送至施密特触发器整形,使其成为方波输送到OC门输出。
当施加的磁场达到『工作点』(即BOP)时,触发器输出高电压(相对于地电位),使三极管导通,此时OC门输出端输出低电压,通常称这种状态为『开』。
当施加的磁场达到『释放点』(即BrP)时,触发器输出低电压,三极管截止,使OC门输出高电压,这种状态为『关』。
这样两次电压变换,使霍耳开关完成了一次开关动作。
其集成霍耳开关外形及接线如下图:
(a)(b)
集成霍耳开关外形及接线
我们选择了P3.2口作为信号的输入端,内部采用外部中断0(这样可以减少程序设计的麻烦),车轮每转一圈(我们设车轮的周长是1米),霍尔开关就检测并输出信号,引起单片机的中断,对脉计数,当计数达到1000次时,也就是1公里,单片机就控制将金额自动的加增加,其计算公式:
当前单价×公里数=金额。
2.5按键单元的设计
电路共采用了四个按键,S1、S2、S3、S4,其功能分别是:
S1分屏显示切换按键,S2功能设定按键,S3『+』/白天晚上切换按键,S4『-』/中途等待开关。
2.6语音功能的设计
语音功能主要用于语音报价:
目前国内企业的广告意识增强,希望能通过计价器进行语音广告宣传。
为降低计价器成本,节省单片机I/O资源,语音功能的实现没有采用专用语音芯片,而是由4个权电阻构成。
如下图所示:
语音功能电路
语音信号经A/D采集处理后压缩成4位,存储在程序存储器中,由软件使用。
程序存储器中可存储70K的语音数据,共60个汉语词汇。
2.7设计总框图
总体设计框图
2.8总体电路图
(在后面)
第3节系统的软件设计
本系统的软件设计主要可分为主程序模块、定时计数中断程序、里程计数中断服务程序、中途等待中断服务程序、显示子程序服务程序、键盘服务程序六大模块。
下面对各部分模块作介绍。
3.1系统主程序设计
在主程序模块中,需要完成对各接口芯片的初始化、出租车起价和单价的初始化、中断向量的设计以及开中断、循环等待等工作。
另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。
然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计价等不同的操作。
其程序流程如主程序流程图所示。
当按下S1时,就启动计价,将根据里程寄存器中的内容计算和判断出行驶里程是否已超过起价公里数。
若已超过,则根据里程值、每公里的单价数和起价数来计算出当前的累计价格,并将结果存于价格寄存器中,然后将时间和当前累计价格送显示电路显示出来。
当到达目的地的时候,由于霍尔开关没有送来脉冲信号,就停止计价,显示当前所应该付的金额和对应的单价,到下次启动计价时,系统自动对显示清零,并重新进行初始化过程。
3.2定时中断服务程序设计
在定时中断服务程序中,每100ms产生一次中断,当产生10次中断的时候,也就到了一秒,送数据到相应的显示缓冲单元,并调用显示子程序实时显示。
其程序流程如定时中断服务程序图所示。
3.3里程计数中断服务程序设计
每当霍尔传感器输出一个低电平信号就使单片机中断一次,当里程计数器对里程脉冲计满1000次时,就有程序将当前总额,使微机进入里程计数中断服务程序中。
在该程序中,需要完成当前行驶里程数和总额的累加操作,并将结果存入里程和总额寄存器中。
其程序流程如定时中断服务程序图所示。
3.4中途等待中断服务程序设计
当在计数状态下霍尔开关没有输出信号,片内的T1定时器便被启动,每当计时到达10分钟,就对当前金额加上中途等待的单价,以后每十分钟都自动加上中途等待的单价。
当中途等待结束的时候,也就自动切换到正常的计价。
3.5显示子程序服务程序设计
由于是分屏显示数据,所以就要用到4个显示子程序,分别是:
时分秒显示子程序(HMS_DIS)、金额单价显示子程序(CP_DIS)、路程单价显示子程序(DP_DIS)、单价调节子程序(PA_DIS)。
3.6键盘服务程序设计
键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦右按键按下,便转向相应的子程序处理,处理结束再返回。
其程序流程如图所示.
定时中断服务程序
否
是
是
否
否
是
否
否
是
否
是
是
是
是否
否
是
否
主程序流程图
2.计价表使用说明
(1)S1按键的功能
在出租车不走的时候,按下S1,可以实现数据的分屏显示;车在行走的时候只有总金额和单价显示屏在显示,当到达目的地的时候,客户要求查看总的里程的时候,就可以按下S1切换到里程和单价显示屏,供客户查询。
(2)S2按键的功能
在按下S1按键之后,若接着按下S2键则进行单价调整(默认为调整白天单价),当接着按下S1时,则进行晚上单价调,再次按下S1可进行中途等待单价调整。
当单价调整结束后,可以通过过按下S2按键进行时间调整,默认为调整时,接着按下S1可进行调整分,分调整后再接下S1可进行秒调整。
当时调整完成后,若接着按下S2则又可进行单价调整。
(3)S3按键的功能
在显示金额及单价时,若按下S3键则显示路程和单价,再次按下S3,可返回显示金额及单价。
(4)S4按键的功能
在按下S1按键之后,若接着按下S4按键,则进行设定默认晚上单价,并启动计价器,若没有按下S4则可设定默认单价(白天),并启动计价器。
当设定默认晚上单价结束后,再次接下S4按键,则可设定默认中途等待单价,并启动计价器。
当设定默认中途等待单价后,若还按一次S4,则返回系统时间的显示。
参考文献
[1]丁元杰主编.《单片微机原理及应用》[M].机械工业出版社.
[2]戴永主编.《微机控制技术》[M].湖南大学出版社.
[3]李伯成主编.《微型计算机原理及接口技术》[M].清华大学出版社.
设计感受
本款出租车计价器比目前市场现在的增加了不少功能,其中包括单价输出、单价调整、路程输出、显示当前的系统时间、语音播报数据信息等功能。
另外,多功能出租车计价器还具有性能可靠、电路简单、成本低、实用性强等特点,加上经过优化的程序,使其有很高的智能化水平。
通过本次课程设计,又使我学到了许多书本上无法学到的知识,也使也深该体会到单片机技术应用领域的广泛,不仅使我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的兴趣。
在本次课程设计过程中,我学会了在网络上查找有关本设计的各硬件的资源,其中包括:
AT89S51单片机及其引脚说明、AT24C02引脚图及其引脚功能等,为本次课程设计提供了一定的资料。
由于平时很少进行课程设计,所以对于课程设计报告的格式也是近期才接触到,经过这两次的设计,为我们以后毕业设计的制作也奠定了一定的基础。
3.全部源程序
该出租车计价器的系统软件设计源程序如下:
DAY_PRICEEQU6FH
NIGHT_PRICEEQU6EH
MIDWAY_PRICEEQU6DH
START_PRICEEQU6CH
COUNTLEQU6BH
COUNTHEQU6AH
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
LEDNIG_PHEQU4EH
LEDW_PLEQU4DH
LEDW_PHEQU4CH
S1BITP1.0
S2BITP1.1
S3BITP1.2
S4BITP1.3
S11EQU4BH
S22EQU4AH
S33EQU49H
S44EQU48H
M1EQU47H
H1EQU46H
M2EQU45H
JBS1,KEY_MAIN
ACALLT10MSD
JBS1,KEY_MAIN
JNBS1,$
SJMPWAI1
WA1:
JBS1,K1
ACALLT10MSD
JBS1,K1
WAIT1:
JNBS1,WAIT1
MOVR0,#LEDDANJIAL
MOVR2,#6
CLRA
MOVCOUNTL,A
MOVCOUNTH,A
MOVM100,A
MOVDISTANCE,A
BK1:
MOV@R0,A
DECR0
DJNZR2,BK1
MOVPRICE,DAY_PRICE;起动初始化
MOVCOUNTL,#00H;起步价
MOVCOUNTH,#05H
LCALLCP_DIS;总金额和单价显示
K1:
JBS2,K2
ACALLT10MSD
JBS2,K2
WAIT2:
JNBS2,WAIT2
INCS22
MOVA,S22
CJNEA,#1,NEXT1
LCALLPA_DIS
LJMPKEY_DJ
NEXT1:
CJNEA,#2,NEXT2
CLRTR0
LCALLHMS_DIS
LJMPKEY_SJ
NEXT2:
CJNEA,#3,K2
MOVS22,#0
K2:
JBS3,K3
ACALLT10MSD
JBS3,K3
WAIT3:
JNBS3,WAIT3
INCS33
MOVA,S33
CJNEA,#1,NXT1
LCALLDP_DIS
NXT1:
CJNEA,#2,NXT2
CLRC
MOVA,M2
SUBBA,M1
LJMPKEY_DJ
NEXT13:
CJNEA,#2,NEXT14
CLRTR0
LCALLHMS_DIS
LCALLKEY_SJ
NEXT14:
CJNEA,#3,KY2
MOVS22,#0
LJMPKEY_MAIN
KY2:
AJMPKEY_DJ
KEY_SJ:
JBS1,KEY1
ACALLT10MSD
JBS1,KEY1
WAIT7:
JNBS1,WAIT7
INCS11
MOVA,S11
CJNEA,#1,NEXT21
LCALLHOU_T
NEXT21:
CJNEA,#2,NEXT22
LCALLMIN_T
NEXT22:
CJNEA,#3,KEY1
MOVS11,#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
CLRTR0
LCALLHMS_DIS
NEXT24:
CJNEA,#3,KEY2
MOVS22,#0
LCALLKEY_SJ
LJMPKEY_MAIN
KEY2:
AJMPKEY_SJ
DAY_P:
SETBF0
LCALLT100MSD
LCALLT100MSD
MOVLEDDAY_PL,#0AH
MOVLEDDAY_PH,#0AH
LCALLPA_DIS1
LCALLT100MSD
LCALLT100MSD
LCALLPA_DIS
LP1:
JBS3,KEY11
MOVA,#1
DAA
MOVNIGHT_PRICE,A
CJNEA,#99H,KEY21
MOVNIGHT_PRICE,#0
KEY21:
JBS4,KEY22
LCALLT10MSD
JBS4,KEY22
MOVA,NIGHT_PRICE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机课程设计 出租车计价器 单片机 课程设计 出租车 计价器