版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
..XX理工大学《单片机应用与仿真训练》设计报告题目缩距法出租车计价器设计__学号:专业班级指导老师所在学院:年月日..缩距法出租车计价器设计摘要随着出租车行业的发展,对出租车计费器的要求也越来越高。二十世纪后半期,随着集成电路和计算机技术的飞速发展,单片机技术也得到了飞速发展,基于单片机的出租车计费器不仅可以解决电子系统小型化、低功耗、高可靠性等问题,而且其开发周期短、开发软件投入少、芯片价格不断降低,特别是对小批量、多品种的产品需求,单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。〔使用单片机的外围电路比较简单,在时间计数和速度的计算上便于扩展功能很,系统能够实现升级。很多数值可以预先写到芯片中。本设计主要了解应用单片机的定时器/计数器,以及中断。这是一个比较小的系统,故采用汇编语言来编辑。汇编语言是一种编译型程序设计语言,它具有编译速度快,占用系统空间小,具有一定的助记可读性等特点。本系统假设起步价5.0元,超过三公里开始计费,每公里加2元。关键词:单片机;霍尔传感器;数码管目录1概述………………31.1基本要求……………………31.2设计参数……………………31.3系统原理……………………32系统总体方案及硬件设计………42.1设计方案介绍………………42.2单片机的概念………………42.3A44E霍尔传感器检测单元…………………52.4计时与时间显示模块电路设计……………62.5键盘调整单元………………72.6键盘程序……………………83软件设计…………93.1模块介绍……………………93.2程序流程图…………………104Proteus软件仿真………………115课程设计体会……………………11参考文献……………12附1:源程序代码…………………12附2:系统原理图…………………221概述1.1基本要求〔1能显示里程,单位为公里,最后一位为小数位。〔2能显示金额数,单位为元,最后一位为小数位。〔3可设定单程价格和往返价格,单程价格为2元/公里,往返价格为1.5元/公里。〔4车速<5公里/小时的时间累积为总等待时间,每5分钟等待时间相当于里程数增加1公里。〔5起步公里数为3公里,价格为5元,若实际距离大于3公里,按规则3计算价格。〔6按暂停键,计价器可暂停计价,按查询键,可显示总等待时间。发挥部分:空车指示、语音提示、信息存储等。1.2设计参数由于要求没有给出车轮的相关参数,所以这里进行一些基本参数的查询。据调查统计,现行出租车轮胎直径大致有四种,直径分别为520mm、540mm、560mm和580mm.本作品针对560mm的出租车进行设计。它的周长为:1.7584m,57圈行驶100m。1.3系统原理出租车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志。它关系着交易双方的利益,具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此,汽车计价器的研究也是十分有应用价值和现实意义的。出租车计价是根据车所行驶的路程以及乘客乘车的方式综合决定的。出租车行驶总路程可以通过车轮的周长乘车轮旋转圈数得到。即可计算得到车轮旋转几周出租车能行驶一公里的路程。使用霍尔传感器方便地计量车轮旋转的圈数。输出的脉冲信号被接入到AT89S52单片机系统中,通过计算接收到的脉冲个数,计算出当前所行驶的路程,并且可以计算实时的速度,在速度低于5公里每小时是进入等待计费。于此同时,根据不同的收费标准,通过选择相应的起步价、单价等收费标准进行计算。通过键盘能够实现往返设置,启动、暂停、停止计价器以及切换显示当前的行驶里程和需支付的车费。本设计硬件电路分为五个单元:单片机最小系统单元,指示灯电路单元,按键电路单元,路程时间与金额显示单元,转速信号接收单元。软件系统分为五个大的模块为:总初始化模块,按键扫描模块,中断与定时模块,数据计算模块,数码管显示模块。其中,键盘扫描和数码管显示采用查询方式,转速信号接收与等待记时采用中断方式。这些软硬件系统构成了最终的设计。2系统总体方案及硬件设计2.1设计方案介绍计数器系统主要由五部分组成:A44E霍尔传感器、STC89C51单片机、独立键盘、EEPROMAT24C02A和显示数码管。霍尔传感器安装在车轮上,主要检测汽车行进的公里数,并产生一系列相应的脉冲输出,脉冲送到单片机进行处理,单片机根据程序设定通过计算脉冲数换算出行驶公里数,再根据从EEPROM中读取的价格等相关数据进行金额的计算,计算好的金额、里程和单价都实时地显示在数码管上。独立键盘可以调节价格等相关数据,按下相应的按钮,产生信号交由单片机处理并实时显示出来,调节好的数据存储到EEPROM中,掉电后可以使调好的数据不丢失,下次得电后直接从EEPROM读到单片机,系统结构图如图1STC89C51 单片机调基本工作原理计数器系统主要由五部分组成:A44E霍尔传感器、STC89C51 单片机调基本工作原理计数器系统主要由五部分组成:A44E霍尔传感器、STC89C51单片机、独立键盘、EEPROMAT24C02A和显示数码管。霍尔传感器安装在车轮上,主要检测汽车行进的公里数,并产生一系列相应的脉冲输出,脉冲送到单片机进行处理,单片机根据程序设定通过计算脉冲数换算出行驶公里数,再根据从EEPROM中读取的价格等相关数据进行金额的计算,计算好的金额、里程和单价都实时地显示在数码管上。独立键盘可以调节价格等相关数据,按下相应的按钮,产生信号交由单片机处理并实时显示出来,调节好的数据存储到EEPROM中,掉电后可以使调好的数据不丢失,下次得电后直接从EEPROM读到单片机,系统结构图如图整切换独立键盘A44E霍尔传感器AT24C02A存储器数码管动态显示2.2单片机的概念单片机〔microcontroller,又称微控制器是在一块硅片上集成了各种部件的微型计算机。这些部件包括中央处理器CPU、数据存储器RAM、程序存储器ROM、定时器/计数器和多种I/O接口电路。图2是80C51单片机的基本结构图图289C51结构方框图图289C51结构方框图2.3A44E霍尔传感器检测单元A44E属于开关型的霍尔器件,其工作电压范围比较宽〔4.5~18V,其输出的信号符合TTL电平标准,可以直接接到单片机的IO端口上,而且其最高检测频率可达到1MHZ。A44E集成霍耳开关由稳压器A、霍耳电势发生器<即硅霍耳片>B、差分放大器C、施密特触发器D和OC门输出E五个基本部分组成。在输入端输入电压Vcc,经稳压器稳压后加在霍尔电势发生器的两端,根据霍尔效应原理,当霍尔片处在磁场中时,在垂直于磁场的方向通以电流,则与这二者相垂直的方向上将会产生霍尔电势差VH输出,该VH信号经放大器放大后送至施密特触发器整形,使其成为方波输送到OC门输出。当施加的磁场达到工作点〔即Bop时,触发器输出高电压〔相对于地电位,使三极管导通,此时OC门输出端输出低电压,三极管截止,使OC门输出高电压,这种状态为关。这样两次电压变换,使霍尔开关完成了一次开关动作。A44E霍尔传感器原理如图3所示。图3A44E霍尔传感器原理里程计算是通过安装在车轮上的霍尔传感器检测到的脉冲信号,送到单片机产生中断,单片机再根据程序设定,计算出里程。其原理如图4所示。图4霍尔传感器的脉冲信号2.4计时与时间显示模块电路设计时间显示采用24小时计时方式,时、分、秒用8位LED数码管动态扫描法显示。该电路采用AT89C52单片机控制,通过4个开关按键来调节时间,其中按键开关SP1、SP2、SP3分别接单片机的P0.0、P0.1、P0.2口,分别调节时钟的秒、分、时;单刀双掷开关K1〔实际硬件电路用短路冒代替控制时、分、秒的加减调节,当发光二极管亮时,按下按键开关进行加1调节;当发光二极管灭时,按下按键开关进行减1调节。在本电路中,各位LED数码管的段选端并接在一起,通过220欧姆电阻和8位数据锁存器74LS573〔下面的模块图中省略,详见后总原理图接到单片机AT89C52的P1口。其中,8位数据锁存器74LS573主要是驱动LED数码管的段选端,使LED数码管的显示更亮;220欧姆电阻在电路中起到限流的作用,防止LED数码管烧坏。各位LED数码管的位选端通过ULN2803〔下面的模块图中省略,详见后总原理图和74LS138接到单片机的P2.0、P2.1、P2.2口。其中,电路通过74LS138将P2.0、P2.1、P2.2口的输出状态译成8种BCD码,这8种BCD码分别对应选择LED数码管的各位,起到位选作用;并在74LS138后面接上达林顿管ULN2803,增加LED数码管位选驱动能力。下面分别介绍各个元器件的功能和在模块电路中的作用。2.5键盘调整单元当单价等信息需要进行修改时,就要用到键盘进行修改。由于调节信息不多,故采用4个独立键盘即可,分别实现清零、切换、增大、减小和功能等作用。电路原理如图5所示。S1:接P1.0口,对上一次的计费进行清零,为下次载客准备S2:接P1.1口,实现白天和夜晚单价的切换;当功能键S4按下时,S2可对数据进行增大。S3:接P1.2口,当功能键S4按下时,S3可对数据进行减小。S4:接P1.3口,按1次,进入调整白天单价;按2次,进入调整夜晚单价;按3次,进入调整等待单价;按4次,进入调整起步价;按5次,返回。图5键盘单元电路2.6键盘程序键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦右按键按下,便转向相应的子程序处理,处理结束再返回。流程图如图6。key3=0?key3=0?key3num为真key1=0?key2=0?key3num=1?key1=0?夜晚单价+1存储白天单价白天单价-1白天单价+1返回key3num=2?显示key3=0?key2=0?夜晚单价-1key3num=3?存储夜晚单价等待单价+1存储等待单价起步价+1key3num=4?key1=0?key1=0?key2=0?key2=0?等待单价-1key3num=5?key3num=0存储起步价起步价+1key3num++YYYYYYYYYYYYYYNYYNNNNNNNNNNNNNNN3软件设计3.1模块介绍该计费器系统的软件设计分为一下几个模块:〔1主程序模块在主程序模块中,需要完成对个接口芯片的初始化、出租车起步价和单价、中断向量的设计以及开中断、循环等待等工作。另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计价等不同的操作。流程图如3-4所示。当按下轻触开关时,开始对系统初始化,价格和时间都显示0、0,再次按下开关,时间单元开始计时,并计算时间是否超过2分钟,超过2分钟,则从第3分钟开始计费。价格单元从起步价5.0元开始计费,每多一分钟,价格单元多加2元。〔2显示子程序模块由于显示是由显示时间子程序DIS1和显示价格子程序DIS组成的,时间由小时、分、秒三个单元组成,共六个数码管。价格由元和角两个单元组成,最大可以显示999.9元。3.2程序流程图开始开始Y初始化切换金额计算显示清零结束夜间单价NNYNY里程>3总金额=起步价总金额+=〔里程-3*单价总金额+=等待时间*等待单价总金额+=等待时间*等待单价返回总金额=起步价4Proteus软件仿真图7整体硬件电路图图7整体硬件电路图5课程设计体会经过这些天有关于出租车计价器的课程设计,使我对单片机的应用有了更深的了解。在课程设计的过程中,还是碰到了许多的问题。比如,对于数码管动态扫描显示和键盘的延时防抖的综合编程不能较好地解决;对于代码的前后顺序及调用掌握得还不够好;对于一些相关的应用软件没能熟练掌握。通过这几天晚上的苦想和反复调试,以及参考网上的程序,最终还是把问题解决了。通过这次课程设计,我最大的收获就是自己的动手能力和独立解决问题的能力得到了很大的提高,也充分体会到了自己设计东西的乐趣、学会查阅资料和对别人的东西融会变通的重要性,也明白了很多知识光靠趴在书本上学是学不到其中的精髓的,必须亲自去试着实践,亲自去经历才能对它们真正的掌握,凡事都要自己去动下手,去实践一下,遇到困难,永远不要沮丧气馁。在动手的过程中,不仅能增强实践能力,而且在理论上可以有更深的认识;这次设计给了我极大的鼓舞和信心,相信在以后的学习中可以通过不断的摸索和实践来提高其他方面的知识。通过本次课程设计,又使我学到了许多书本上无法学到的知识,也使也深该体会到单片机技术应用领域的广泛,不仅使我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的兴趣。在本次课程设计过程中,我学会了在网络上查找有关本设计的各硬件的资源,其中包括:AT89S51单片机及其引脚说明、555引脚图及其引脚功能等,为本次课程设计提供了一定的资料。也为以后的进一步学习打下了坚实的基础。参考文献[1]张友德赵志英涂时亮编单片微型机原理、应用与实验上海:复旦大学出版社2005.12全书[2]徐光翔单片机原理接口及应用XX大学出版社[3]张淑清等.单片微型计算机接口技术及其应用北京:国防工业出版社,[4]王晓君等.MCS-51及兼容单片机原理与选型北京:电子工业出版社[5]张鑫、华臻、陈书谦.《单片机原理及应用》[M].电子工业出版社,2005.P110~136.[6]丁元杰、吴大伟.《单片微机实题集与实验指导书》[M].机械工业出版社,2004.P124~125.[7]附1:源程序代码#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#definedelayNOP<>;{_nop_<>;_nop_<>;_nop_<>;_nop_<>;_nop_<>;};ucharcodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};sbitexter=P3^3;sbitkey0=P1^0;sbitkey1=P1^1;sbitkey2=P1^2;sbitkey3=P1^3;sbitp30=P3^0;/sbitp31=P3^1;sbitp32=P3^2;sbitp34=P3^4;sbitp35=P3^5;sbitp36=P3^6;sbitp37=P3^7;sbitSDA=P2^2;sbitSCL=P2^3;uintinter,aa,bb,temp,temp1;uintzongjine,licheng,dengdai;uintkey3num,qiehuantemp,delaytemp;uchardanjia1,danjia2,danjia3,danjia,qibu;voiddelay<uintx>{inti,j;for<i=x;i>0;i-->for<j=340;j>0;j-->;}voidstart<>{SDA=1;SCL=1;delayNOP<>;SDA=0;delayNOP<>;SCL=0;}voidstop<>{SDA=0;delayNOP<>;SCL=1;delayNOP<>;SDA=1;}voidrespons<>{uchari;SCL=1;delayNOP<>;while<<SDA==1>&&<i<250>>i++;SCL=0;delayNOP<>;}ucharread_byte<>{uchari,j;for<i=0;i<8;i++>{SCL=1;j<<=1;j|=SDA;SCL=0;}return<j>;}voidwrite_byte<uchardate>{uchari,temp;temp=date;for<i=0;i<8;i++>{temp=temp<<1;SCL=0;delayNOP<>;SDA=CY;delayNOP<>;SCL=1;delayNOP<>;}SCL=0;delayNOP<>;SDA=1;delayNOP<>;}voidwrite_data<ucharaddr,uchardate>{start<>;write_byte<0xa0>;respons<>;write_byte<addr>;respons<>;write_byte<date>;respons<>;stop<>;}ucharread_data<ucharaddr>{uchardate;start<>;write_byte<0xa0>;respons<>;write_byte<addr>;respons<>;start<>;write_byte<0xa1>;respons<>;date=read_byte<>;stop<>;returndate;}voiddisplay<uintzongjine0,uintlicheng0,uintdanjia0>{uintjbai,jshi,jge,lshi,lge,dshi,dge;uintnumwei,numshu;jbai=zongjine0/100;jshi=zongjine0%100/10;jge=zongjine0%100%10;lshi=licheng0/10;lge=licheng0%10;dshi=danjia0/10;dge=danjia0%10;if<aa>{aa=0;numshu++;if<numshu==7>numshu=0;P3=0xff;switch<numwei>{case0:p30=0;P0=table[jbai];break;case1:p31=0;P0=table[jshi]&0x7f;break;case2:p32=0;P0=table[jge];break;case3:p34=0;P0=table[lshi];break;case4:p35=0;P0=table[lge];break;case5:p36=0;P0=table[dshi]&0x7f;break;case6:p37=0;P0=table[dge];break;}numwei++;if<numwei==7>numwei=0;}}voidkeyscan<>{if<key3==0>{delay<5>;if<key3==0>{key3num=1;while<!key3>;delay<5>;while<!key3>;while<key3num>{if<key3num==1>{if<key1==0>{delay<5>;if<key1==0>{danjia1++;if<danjia1==100>danjia1=0;while<!key1>;delay<5>;while<!key1>;}}if<key2==0>{delay<5>;if<key2==0>{danjia1--;if<danjia1==-1>danjia1=99;while<!key2>;delay<5>;while<!key2>;}}display<1,0,danjia1>;}if<key3num==2>{write_data<1,danjia1>;if<key1==0>{delay<5>;if<key1==0>{danjia2++;if<danjia2==100>danjia2=0;while<!key1>;delay<5>;while<!key1>;}}if<key2==0>{delay<5>;if<key2==0>{danjia2--;if<danjia2==-1>danjia2=99;while<!key2>;delay<5>;while<!key2>;}}display<2,0,danjia2>;}if<key3num==3>{write_data<2,danjia2>;if<key1==0>{delay<5>;if<key1==0>{danjia3++;if<danjia3==100>danjia3=0;while<!key1>;delay<5>;while<!key1>;}}if<key2==0>{delay<5>;if<key2==0>{danjia3--;if<danjia3==-1>danjia3=99;while<!key2>;delay<5>;while<!key2>;}}display<3,0,danjia3>;}if<key3num==4>{write_data<3,danjia3>;if<key1==0>{delay<5>;if<key1==0>{qibu++;if<qibu==100>qibu=0;while<!key1>;delay<5>;while<!key1>;}}if<key2==0>{delay<5>;if<key2==0>{qibu--;if<qibu==-1>qibu=99;while<!key2>;delay<5>;while<!key2>;}}display<4,0,qibu>;}if<key3num==5>/{write_data<4,qibu>;key3num=0;}if<key3==0>{delay<5>;if<key3==0>{key3num++;while<!key3>;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 捐资助学倡议书模板6篇
- 店铺使用权和代理权转让合同书(3篇)
- 第二十六章 二次函数(64道压轴题专练)
- 代词-2023年中考英语知识清单(原卷版)
- 天津市五区县重点校联考2024-2025学年高二上学期11月期中化学试题(含答案)
- 黑龙江省大庆市肇源县联盟学校2024-2025学年七年级上学期期中地理试题(含答案)
- 上海地区高考语文五年高考真题汇编-作文
- 2024年湖南省公务员考试《行测》真题及答案解析
- 企业间合作战略合同模板集
- 不动产投资合作协议书应注意问题
- DB21T 3354-2020 辽宁省绿色建筑设计标准
- 湖南文艺出版社五年级下册音乐教学计划
- 我的家乡安徽课件
- 原油电脱盐电脱水技术
- 小学生劳动教育评价细则
- 专业工程分包业主审批表
- XX公司员工跟投管理办法
- 道路运输安全事故报告、统计与调查处理制度
- 甘肃广播电视大学钢结构(本)不计分-3.3小测验答案
- 人员密集场所火灾疏散应急预案(精选14篇)
- 不合理处方登记表
评论
0/150
提交评论