单片机课程设计出租车计价器_第1页
单片机课程设计出租车计价器_第2页
单片机课程设计出租车计价器_第3页
单片机课程设计出租车计价器_第4页
单片机课程设计出租车计价器_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、河南理工大学河南理工大学河南理工大学单片机应用与仿真训练单片机应用与仿真训练设计报告设计报告题目题目:出租车计价器设计:出租车计价器设计姓 名: 吴昊 学 号: 姓 名: 林涛 学 号: 8 专业班级: 自动化 108 班 指导老师: 刘巍 所在学院:电气工程与自动化学院2012 年 1 月 16 日 摘要摘要 随着科技的进步和社会的发展,出租车行业已经成为交通的重要部分,因此是制定一个合适的出租车计价系统对于出租车公司和乘客是非常重要的。本课程设计以 STC10F08XE 单片机为核心,实现对出租车多功能计价设计。出租车的计价是又乘客所选择的乘车方式和出租车所行驶的里程所决定的,而出租车的行

2、驶的里程可通过测量车轮旋转的圆周圈数间接计算出来,本课程设计用微型电电动机模拟出租车轮,通过安装在微型电动机上的霍尔传感器测量车轮旋转圈数。输出的脉冲信号被接入到 STC10F08XE 单片机系统中,通过计算接收到的脉冲个数,计算出当前所行驶的路程,并且可以计算实时的速度,在速度低于 5 公里每小时是进入等待计费。同时根据乘客选择的乘车方式选择收费标准,计算出乘客应付的出租车费用,并显示在数码管上。本设计可以实现单双程设置、系统暂停和清零、空车指示、信息显示、显示切换、掉电保护等功能。它由 5 个单元组成:按键电路单元,指示灯电路单元路,转速信号,接收单元程时间与金额显示单元。软件系统可以大致

3、分为五个大的模块为:总初始化模块,按键扫描模块,中断与定时模块,数据计算模块,数码管显示模块。关键字关键字:多功能计价器;STC10F08XE;霍尔传感器;直流电动机 第一章第一章 概述概述 .11.1 初始条件.11.2 要求完成的主要任务 .1 1.3 设计参数.1第二章第二章 出租车计价系统的设计方案出租车计价系统的设计方案.1第三章第三章 出租车计价系统的硬件设计出租车计价系统的硬件设计.23.1 单片机最小系统单元 .23.2 显示单元电路设计.43.3 键盘及 LED 指示灯电路设计.63.4 路程测量部分设计.7第四章第四章 出租车计价系统出租车计价系统的软件设计的软件设计.74

4、.1 扫描程序.74.2 中断程序.84.3 显示程序.94.4 计算程序.9五五 PROTEUS 仿真仿真 .105.1 PROTEUS介绍.10第六章第六章 设计体会与小结设计体会与小结.11参考文献参考文献.12附录附录.12第一章第一章 概述概述1.1 初始条件初始条件(1)运用所学的单片机原理与接口技术知识和数字电路知识;(2)STC10F08XE 单片机应用开发系统一套;(3)PC 机及相关应用软件。1.2 要求完成的主要任务要求完成的主要任务(1)能显示里程,单位为公里,最后一位为小数位。(2)能显示金额数,单位为元,最后一位为小数位。(3)可设定单程价格和往返价格,单程价格为

5、2 元/公里,往返价格为1.5 元/公里。(4)车速5 公里/小时的时间累积为总等待时间,每 5 分钟等待时间相当于里程数增加 1 公里。(5)起步公里数为 3 公里,价格为 5 元,若实际距离大于 3 公里,按规则 3 计算价格。(6)按暂停键,计价器可暂停计价,按查询键,可显示总等待时间。1.3 设计参数设计参数由于要求没有给出车轮的相关参数,所以这里进行一些基本参数的查询。据调查统计,现行出租车轮胎直径大致有四种,直径分别为520mm、540mm、560mm 和 580mm.本作品针对 560mm 的出租车进行设计。它的周长为:1.7584 m,57 圈行驶 100m。第二章第二章 出租

6、车计价系统的设计方案出租车计价系统的设计方案出租车计价器用于记录里程与价格的关系,它能有效地避免司机与乘客的矛盾,保证双方的利益。计价是根据车所行驶的路程决定的,出租车行驶总路程可以通过车轮的周长乘车轮旋转圈数得到,即可计算得到车轮旋转几周出租车能行驶一公里的路程。使用霍尔传感器方便地计量车轮旋转的圈数。输出的脉冲信号被接入到STC10F08XE 单片机系统中,通过计算接收到的脉冲个数,计算出当前所行驶的路程,并且可以计算实时的速度,在速度低于 5 公里每小时是进入等待计费。于此同时,根据不同的收费标准,通过选择相应的起步价、单价等收费标准进行计算。通过键盘能够实现往返设置,启动、暂停、停止计

7、价器以及切换显示当前的行驶里程和需支付的车费。本设计硬件电路分为五个单元:单片机最小系统单元,指示灯电路单元,按键电路单元,路程时间与金额显示单元,转速信号接收单元。软件系统分为五个大的模块为:总初始化模块,按键扫描模块,中断与定时模块,数据计算模块,数码管显示模块。其中,键盘扫描和数码管显示采用查询方式,转速信号接收与等待记时采用中断方式。这些软硬件系统构成了最终的设计。系统框图如图 1 所示:图 1第三章第三章 出租车计价系统的硬件设计出租车计价系统的硬件设计3.1 单片机最小系统单元单片机最小系统单元 本课程设计主控系统采用 STC 公司生产的STC10F08XE 单片机,其内部存储空间

8、满足系统软件设计,各引脚功能如下 。 VCC:供电电压。GND:接地。P0 口:P0 口为一个8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门流。按键电路信号输入时钟与复位电路LED 发光二级光数码管显示STC10f08xe单片机当 P1 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原码输入口,当 FIASH 进行 校验时,P0 输出原码,此时 P0 外部必须被 拉高。 P1 口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输出 4TTL 门电流。

9、P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1口作为第八位地址接收。 P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可接收,输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器

10、进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个TTL 门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。P3 口也可作为STC10F08XE的一些特殊功能口,P3 口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电

11、平用于锁存地址的地位字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。此时, ALE 只有在执行 MOVX,MOVC 指令是 ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE 禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN 有效。但在访问外部数据存储器时

12、,这两次有效的/PSEN 信号将不出现。/EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000H-FFFFH) ,不管是否有内部程序存储器。注意加密方式 1 时,/EA 将内部锁定为RESET;当/EA 端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电源(VPP) 。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。单片机最小系统电路如图 2。图 23.2显示单元电路设计显示单元电路设计七段 LED 共阴极数码管显示有八个发光二级管组成,其管脚配置及常用的字符段码表如下图:显示字符共阴数

13、码管段码显示字符共阴数码管段码03FHC39H106HD5EH25BHE79H34FHF71H466H.80H56DHP73H67DHU3EH707HT31H97FHY6EH96FH8.FFHA77H“灭”00HB7CH自定义本课程设计采用 1 个四位 8 段共阴数码显示,通过按键将数码管显示切换为不同的状态,即应付金额显,行驶路程,等待时间一组显示金额,另一组显示路程与等待时间配合按键来切换。四位八段共阴极数码管电路连接图 3. 图 33.3 键盘及键盘及 LED 指示灯电路设计指示灯电路设计由于只有一个四位八段共阴极数码管,因此不能将应付金额,行驶路程,等待时间同时显示出来,故需要通过键盘

14、使数码管在三种之间进行切换,并以发光二级管作为数码管显示状态的标志,键盘的切换功能和 LED 灯所表示的状态如下按键 1:系统清零按键,将数码管显示清零;按键 2:单双程切换按键,用来显示是单程收费还是双程;按键 3:路程与等时间切换按键:按键 4:系统暂停按键暂;按键 5:价格显示按键;LED1:清零显示标志;LED2:单双程收费显示标志;LED3:时间显示标志;LED4:暂停标志;LED5:单片机是否检测到车辆在行驶。其键盘和 LED 指示灯的电路图如图 4.图 43.4 路程测量部分设计路程测量部分设计里程计算是通过安装在车轮上的霍尔传感器A44E检测到的信号,送到单片机,经处理计算,送

15、给显示单元的。此处选择单片机P3.2作为单片机的接收信号,其原理图5所示:霍尔传感器车轮P3.2STC89C51 单片机小磁铁图 5第四章第四章 出租车计价系统出租车计价系统的软件设计的软件设计 硬件电路搭建完成只是出租车计价器设计的基础,实现出租车计价器的核心是其软件的设计,本课程设计采用 C 语言编写,共分五部分:扫描部分,中断部分,显示部分,计算部分。4.1 扫描程序扫描程序对于扫描式键盘判键,首先看有键按下不,如果有键按下则延时一会儿,在判断是否真的有键按下,如果确实有键按下,在判键释放,最后执行键功能程序。判键子函数的流程框图如图 6 所示。 判键子程序流程(图 6)4.2 中断程序

16、中断程序 当车轮每转动依次时,霍尔传感器就输出一个低电平信号,并传给单片机系统,产生一次中断每当光电传感器输出一个低电平信号就使单片机中断一次,当里程计数器对里程脉冲计满 50 次时,进入里程计数中断服务程序中,里程变量加一。主函数中总金额也相应地变化。其流程图如下图 图 74.3 显示程序显示程序对于一个四位八段位共阴极数码管,采用动态显示,通过按键在计费金额显示,等待时间显示,行驶路程三种显示状态间切换。4.4 计算程序计算程序 计算程序根据里程数分别进入不同的计算公式。如果里程大于 3 公里,则执行公式:总金额=起步价+(里程-3)*单价+等待时间*等待单价;否则,执行公式:总金额=起步

17、价+等待时间*等待单价。 图 8五五 proteus 仿真仿真5.1 Proteus 介绍介绍Proteus 软件是来自英国 Labcenter electronics 公司的 EDA 工具软件,它组合了高级原理布图、混合模式 SPICE 仿真,PCB 设计以及自动布线来实现一个完整的电子设计系统。此系统受益于 15 年来的持续开发,被电子世界在其对 PCB 设计系统的比较文章中评为最好产品“The Route to PCB CAD”。Proteus 产品系列也包含了我们革命性的 VSM 技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。用户甚至可以实时采用诸如LED/LCD、

18、键盘、RS232 终端等动态外设模型来对设计进行交互仿真。 其功能模块:个易用而又功能强大的 ISIS 原理布图工具;PROSPICE 混合模型 SPICE 仿真;ARES PCB 设计。PROSPICE 仿真器的一个扩展 PROTEUS VSM:便于包括所有相关的器件的基于微处理器设计的协同仿真。此外,还可以结合微控制器软件使用动态的键盘,开关,按钮,LEDs 甚至 LCD 显示 CPU 模型。支持许多通用的微控制器,如 PIC,AVR,HC11 以及 8051。最新支持 ARM。交互的装置模型包括:LED 和 LCD 显示,RS232 终端,通用键盘,I2C,SPI 器件。强大的调试工具,

19、包括寄存器和存储器,断点和单步模式。IAR C-SPY 和 Keil uVision2 等开发工具的源层调试。应用特殊模型的 DLL 界面-提供有关元件库的全部文件。5.2 软件仿真软件仿真将整个系统原理图在 Proteus 连接好后,下载如编写好的程序下载进仿真单片机系统,仿真如图显示的状态,设置为:单程,车速大于 5km/h,当路程等于40.4km 时的显示情况。第六章第六章 设计体会与小结设计体会与小结本次单片机课程设计,我们选的题目是出租车计价器的设计。通过仿真、焊接、调试等不断的努力,我们的出租车计价器实现了基本要求的全部功能和发挥部分的部分功能。比如能显示里程、金额数、总等待时间,

20、可设定单程价格和往返价格,按暂停键,计价器可暂停计价,按查询键,可显示总等待时间,空车指示、信息存储等。最近以来,经过我和队友的努力,基本上完成了设计要求的内容,在系统可行性分析、原理图设计等方面都作了许多实际工作,取得了一些成绩,同时也遇到了一些问题,存在一些不足。经过这一个月的学习,我觉得自己不论是在理论知识方面还是在动手能力方面都有了不小的进步,自己从中受益匪浅。这次设计很好的把以前学到的理论知识应用于实践,使我认识到理论知识与实践之间有一定的差距,只有通过不断的努力学习和实践才能很好的把理论知识应用到实践当中,也只有通过不断的实践才能对理论知识的理解。通过这次设计不仅学会了如何去查找相

21、关资料,更重要的是通过查找资料和翻阅书籍学到了不少知识,扩大了知识面,提高了知识水平。经过单元设计和系统设计巩固了以前所学的专业知识,自己真正认识到理论联系实际的重要性,为以后的学习和工作提供了很多有价值的经验。通过这次设计不仅增强了自己的动脑能力和动手能力,也提高了我思考问题、分析问题、解决问题的能力,更重要的是学会用工程化的思想来解决问题。这在以前的学习过程中是不曾学到的。这次设计是我们认真认识到完整、严谨、科学分析问题、解决问题的思想是多么的重要,只有拥有了科学的态度才能设计出有用的产品。另外通过本次设计,认识到自己理论知识的应用能力有很大的欠缺,需要在以后的学习中进一步提高。参考文献参

22、考文献1. 李广弟,朱月秀,冷祖祁.单片机基础M.第 3 版.北京航空航天大学出版社,20072. 李华.MCS-51 系列单片机实用接口技术M.北京航空航天大学出版社,19963. 李群芳,肖看.单片机原理接口与应用.北京:清华大学出版社,20054. 朱承高.电工及电子技术手册M.北京:高等教育出版社,19905. 高峰.单片微型应用系统设计及实用技术.北京:机械工业出版社,20046. 胡辉,单片机原理及应用设计21 世纪高等院校规划教材M,水利水电出版社,2005.77.刘守义,单片机应用技术M,西安:西安电子科技大学出版社,1996 附录附录源程序代码源程序代码LLED 灯标志子程序

23、#includestc10.h#include#includechuli.h#includetype.hextern bit key1_flag,key0_flag,key3_flag,flag;extern uchar second,minute,key2_flag;extern uint distance,price,cost,wait,round;void jisuan(void) wait=minute*60+second;distance=round+wait/30;/车轮转 57 圈为 100m,等待时间 30s 为 100mif(key1_flag)price=15; /往返价格

24、 1.5 元/公里 else price=20; /单程价格 2 元/公里 if(distance=30) /小于 3 公里 cost=50; elsecost=price*(distance-30)/10+50;/(distance-30)/10 是公里数void init_data(void)distance=0;cost=0;round=0;second=0;minute=0;key0_flag=0;/空车key1_flag=0; /单程key2_flag=1; /路程key3_flag=0; /正常,非暂停flag=1;void init() P1M1=0 x00; P1M0=0 xf

25、f;init_data(); /初始化数据TMOD=0 x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;ET0=1; / 开定时器中断IT0=0; /外部中断 0 边沿触发方式 EA=1;/开总中断EX0=1; /开外部中断TR0=1; /开定时器键盘扫描子程序#includestc10.h#include#includeyanshi.h#includetype.h#includechuli.h#includekeyscan.hextern bit key0_flag,key1_flag,key3_flag,flagxian,flag;exter

26、n uchar key2_flag,second,minute;extern uint distance,price,cost,wait,round,temp;void keyscan(void) P3&=0 x3f;P0|=0 xe0;if(P0!=0 xe0)delay(10);if(P0!=0 xe0)P3|=0 x80;P3&=0 xbf;switch(P0&0 xe0)case 0 xc0:key0_flag=!key0_flag;if(!key0_flag) init_data(); break; /空车 case 0 xa0:key1_flag=!key1

27、_flag;break;/单程还是双程 case 0 x60:key2_flag+;break;/路程还是时间 P3|=0 x40;P3&=0 x7f;switch(P0&0 xe0)case 0 xc0:key3_flag=!key3_flag;if(key3_flag) /暂停还是正常 EX0=0; /关闭外部中断和定时器TR0=0;elseEX0=1;TR0=1;break;case 0 xa0:flagxian=!flagxian;break;/价格P3&=0 x3f;P0|=0 xe0;while(P0&0 xe0)=0 xc0)|(P0&0

28、xe0)=0 xa0)|(P0&0 xe0)=0 x60); 延时子程序#include#includeyanshi.h#includetype.h/#define uchar unsigned char/#define uint unsigned intvoid delay(uint z) uchar j; uint i; for(i=z;z0;z-) for(j=0;j115;j+);处理子程序#include#includeyanshi.h#includetype.h/#define uchar unsigned char/#define uint unsigned intvoid delay(uint z) uchar j; uint i; for(i=z;z0;z

温馨提示

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

评论

0/150

提交评论