《一个以STC89C52单片机为控制核心的出租车计价器系统.doc》由会员分享,可在线阅读,更多相关《一个以STC89C52单片机为控制核心的出租车计价器系统.doc(16页珍藏版)》请在三一办公上搜索。
1、摘要:本系统以STC89C52单片机为控制核心,辅以键盘调节、数码管显示、蜂鸣器报警、车速模拟、车速检测及信息存储电路,实现了出租车计价器的行车里程和车速的实时检测与显示、计价金额显示以及价格预置等功能,满足了题目中基本部分及发挥部分的要求。在此基础上,还增加了断电保护、蜂鸣器警示、行驶里程及价格打印等功能。该系统功能齐全,实用性强。经测试,计价器的各项显示指标均满足题目要求。关键字:出租车计价器;STC89C52;价格预置;断电保护Abstract: This system uses STC89C52 microcontroller as control core. With the key
2、board control circuit, digital display circuit, beep alarm circuit, speed measurement circuit, speed detection circuit and information storage circuit,this system realizes function of the meter taxi driving mileage ,display and detection of real-time speed, valuation display and price set in advance
3、, it meets all essential and additional requirement. Additional function such as power-off protection , beep alarm the print of mileage and consumption is added. This system is fully functioned and easy to implement. The measurement results show that all indicators of this taxi meter meet the requir
4、ement.Key words: Taxi Meter; STC89C52; Price Set in Advance; Power-off Protection目录1系统方案设计11.1系统整体方案的设计11.2单元模块论证与比较11.2.1显示模块11.2.2车速模拟驱动模块21.2.3键盘设置模块2 2 单元硬件电路设计22.1数码管显示设计22.2键盘设置模块设计32.3车速模拟模块设计32.4车速检测模块设计32.5消费清单打印设计33 软件设计43.1主程序及流程图43.2各部分子程序流程图43.2.1数码管显示子程序43.2.2电机驱动子程序54 系统测试54.1测试仪器清单54
5、.2测试方法54.2.1实时车速检测54.2.2计价测试54.3测试结果54.3.1车速检测结果54.3.2 行车里程及计价测试结果64.4误差分析64.5改进措施65 设计总结6参考文献7附录一7附录二81系统方案设计1.1系统整体方案的设计单片机I/O口丰富、控制灵活、易于编程的优点,以单片机为控制核心的计价系统可以方便地实现车速检测、价格预置、里程计价显示等功能。其原理图如图1。 图1根据上图思路,我们设计了一个以STC89C52单片机为控制核心的出租车计价器系统。该系统由键盘设置、车速检测与里程计算、数码管显示、蜂鸣提示及掉电保护等模块组成。其中,键盘设置模块实现系统的计价预置、计价暂
6、停、“单程”与“往返”设置、及金额查询功能等等;车速检测与里程计算模块通过车速检测传感器器采集车速信息,送至单片机处理,得到实时车速及车的实时行程;数码管显示模块完成车速、里程数、金额数以及累计时间的显示;蜂鸣提示警示出租司机、乘客到达目的地,计价停止;掉电保护模块记录并存储当前计价器的各项显示信息,起到掉电保护作用。1.2单元模块论证与比较1.2.1显示模块方案一:采用普通LED数码管显示。用74LS74驱动数码管实现动态显示,简单直观,且易于编程,但占用系统I/O口较多,不能实现资源的有效利用。从设计的整体性考虑,该方案将导致单片机IO资源缺乏。因此我们放弃了该方案。方案二:采用串行输入数
7、码管显示。LKM1638模组采用专用驱动芯片TM1638,实现8个7段数码管的检测。和单片机采用串行通讯,只需要3个IO,大大节省了主控器IO。LED显示内容直接由单片机送数即可,不需要MCU扫描,节省MCU资源。经比较分析,采用串行输入数码管显示节省大量单片机IO资源,能很好地满足设计的需要,因此我们选择方案二。1.2.2车速模拟驱动模块以电机为驱动,将电机的转子与码盘连接在一起,用码盘的转动模拟出租车车轮的转动,码盘的转速即为出租车的车速。方案一:采用普通直流电机。普通直流电机转动力矩大,转动速度快,驱动能力强,能快速带动码盘转动,很好得到达模拟效果。但是,由于直流电机存在机械触点,易产生
8、噪声,而且单独使用时不能精确控制定位。方案二:采用步进电机。步进电机虽然不能达到很高转速,但其运行平稳,不会产生噪音。此外步进电机的更容易控制:我们只需通过调节步进电机的脉冲给定周期和给定个数就可以分别控制其转动速度和转动角度。经分析,由于步进电机容易控制,使用步进电机为驱动带动码盘转动能很好地达到模拟实时出租车车轮转动的效果,因此我们选择了方案二。2 单元硬件电路设计2.1数码管显示设计4本题中基本要求中的出租车行车里程数和计价金额显示,以及发挥部分的实时车速显示和累计等待时间显示需要两组8位数码管显示,考虑到单片机有限的I/O资源,我们采用能和单片机进行串行通讯的LKM1638 LED模组
9、。该模组显示内容直接由单片机送数即可,不需要MCU扫描,节省MCU资源1。其原理图如图2.1: 图2.12.2键盘设置模块设计本系统采用44键盘,电路原理图见附图1。 图中单片机的P0.0 P0.3控制键盘的行,P0.4 P0.7控制键盘的列。键盘按键的具体功能见附图2。2.3车速模拟模块设计3本设计用步进电机带动码盘转动来模拟出租车车轮转动,从而完成出租车车速的模拟。步进电机的驱动我们采用WZM-2H042M驱动器。WZM-2H042驱动具有抗干扰性、高频性能好、结构简单、运行平稳的优点。其驱动步进电机的电路图见附图3。2.4车速检测模块设计本设计采用WTK-10凹槽光电开关作为车速检测器。
10、WTK-10凹槽光电开关灵敏度高、实用性强、安装方便。WTK-10凹槽光电开关检测码盘转动的圈数,将检测得到的信号送至主控器,主控器运用算法处理接收到的信号,从而得到出租车的实时车速。WTK-10凹槽光电开关的电路图见附图4。2.5消费清单打印设计本设计实现了打印乘客消费清单的功能。打印机我们选择炜煌系列WH-A16-5热敏微型打印机。该型号打印机性能稳定耐用, 打印开发命令有很强的兼容性、且打印清晰美观。 3 软件设计3.1主程序及流程图系统整体程序流程图如图3.1。 图3.13.2各部分子程序流程图 3.2.1数码管显示子程序2单片机不断地将处理后的数据交给数码管显示。数码管显示的信息包括
11、车里程数、计价金额、车速和累计等待时间。数码管采用级联方式与单片机进行串口通信。其具体流程图见附图6。 3.2.2电机驱动子程序车速模拟模块采用电机为驱动(车速模拟及检测模块为单独模块,键盘也为独立键盘,与主控模块互不冲突),其驱动程序流程图见附图6。4 系统测试4.1测试仪器清单 测试使用仪器设备见附表1。4.2测试方法搭建好硬件电路后,进行软件仿真,成功后下载程序到单片机,然后对系统进行调试。4.2.1实时车速检测观察并记录出租车码盘在一定时间内转过的转数,计算出小车的实时车速,然后数码管显示的车速比较。4.2.2计价测试根据模拟车速装置中码盘的转数计算行车里程,并依此作为理论计价依据与实
12、际显示计价金额进行比较。4.3测试结果4.3.1车速检测结果车速检测结果见附表2。4.3.2 行车里程及计价测试结果单程行车里程及计价测试结果见表1。表1序号码盘转数行车里程理论金额实际金额误差122 公里 8 元 8 元0210 10 公里 22元 22元0320 20 公里 42 元 42元0430 30 公里 62 元 64元3.2%540 40 公里 82 元 86元4.9%4.4误差分析本设计误差主要来源于车速检测传感器,由于传感器不够灵敏,当码盘转速较大时导致传感器采集信息出现差错。4.5改进措施减小误差的方法有:采用灵敏度较高的车速检测传感器,主控器采用处理速度更快、精度更高的A
13、RM单片机。5 设计总结四天三夜的时间相当短暂,但经过协力合作,努力实践,我们如期圆满地完成了任务,成功地设计制作了一个出租车计价系统。本系统以STC89C52单片机为控制核心,实现了题目中基本要求及发挥部分的所有功能,此外我们还扩展了出租车计价器的掉电保护功能。通过此次比赛,我们熟悉了一些基础理论知识,对部分原理有了更深的认识。更重要的是四天的磨练,增强了我们的团队合作意识,动手能力,发现问题、解决问题的能力。当然,由于时间仓促,能力有限,我们的作品还存在一些不足与缺陷,恳请各位老师批评指正,以有利于我们以后的进一步提高。参考文献1 夏彬彬,任明全,屈金学. PIC单片机常用模块与综合系统设
14、计. 电子工业出版社,20092 谭浩强. C语言程序设计 清华大学出版社 20053 康华光. 电子技术基础(模拟部分)高等教育出版社 20054 余孟尝. 数字电子技术基础教程 高等教育出版社 2006附录一附表1序号仪器型号用途数量1秒表计时12万用表FLUKE 15 B测量电阻13直流稳压电源SUING-SS2323供电1附表2序号码盘转数所用时间实际车速显示车速误差13 转1分钟3公里/小时3公里/小时0215 转1分钟15公里/小时15.5公里/小时3.3%330 转1分钟30公里/小时31公里/小时3.3%440 转1分钟40公里/小时41.5公里/小时3.75%550 转1分钟
15、50公里/小时52公里/小时4.0%附录二附图1按键1单程设置按键2往返设置按键3模拟里程+按键4暂停键按键5查询按键6清除按键7起步价预置按键8起步里程预置按键9按键10每公里价格预置按键11按键12预置价格增加按键13按键14按键15按键16预置价格减小附图2 附图3 附图4 附图5附图6附图7附录三 重要源程序#include#ifndef_TM1638_H#define_TM1638_H#defineDATA_COMMAND0X40#defineDISP_COMMAND0x80#defineADDR_COMMAND0XC0#define uchar unsigned char#defi
16、ne uint unsigned int sbitCLK=P10;sbitDIO=P11;uchar code tab=0x3F,0x06,0x5B,0x4F,0x66, 0x6D,0x7D,0x07,0x7F,0x6F, 0x77,0x7C,0x39,0x5E,0x79,0x71;uchar code tab1=0xBF,0X86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0xF7,0xFC,0xB9,0xDE,0xF9,0xF1;void TM1638_Write(unsigned charDATA)unsigned char i;for(i=0;i=
17、1;CLK=1;void Write_COM(unsigned char cmd,unsigned char STB_CS)P1&=(0x02STB_CS);/STB=0;TM1638_Write(cmd);P1|=(0x02STB_CS);/STB=1void Write_DATA(unsigned char add,unsigned char DATA,unsigned char STB_CS)Write_COM(0x44,STB_CS);P1&=(0x02STB_CS);/STB=0;TM1638_Write(0xc0|add);TM1638_Write(DATA);P1|=(0x02STB_CS);/STB=1void init_TM1638(unsigned char STB_CS)unsigned char i;Write_COM(0x8b,STB_CS);Write_COM(0x40,STB_CS);P1&=(0x02STB_CS);/STB=0;TM1638_Write(0xc0);for(i=0;i16;i+)TM1638_Write(0x00);P1|=(0x02STB_CS);/STB=1#endif