《出租车计价器yingliangwei.doc》由会员分享,可在线阅读,更多相关《出租车计价器yingliangwei.doc(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机原理与接口技术课程设计题 目:yingliangwei 学院(系):yingliangwei 年级专业: 自yingliangwei 学 号yingliangwei 学生姓名: yingliangwei 指导教师: yingliangwei 课程设计任务书学生姓名:yingliangwei 专业班级: yingliangweyingliangwei 指导教师yingliangwei 工作yingliangwei 题 目: 基于51单片机的出租车计价器的设计 初始条件:1 运用所学的单片机原理与接口技术知识和数字电路知识;2 51单片机应用开发系统一套;3 PC机及相关应用软件。要求完成的
2、主要任务: (包括课程设计工作量及其技术要求以及说明书撰写等具体要求)1 完成出租车计价器的设计和调试;2 要求用四位八段数码管显示价格和里程,并能修改单价;3 撰写课程设计说明书;4 课程设计说明书要求:引言、设计要求、系统结构、原理设计、各个模块的设计与实现、软件设计、调试过程、收获、体会及总结、参考文献、电路图和源程序。说明书使用A4打印纸计算机打印或手写,用Protel等绘图软件绘制电子线路图纸。时间安排:第1天 下达课程设计任务书和日程安排,根据任务书查找资料;第23天 完成方案论证,单片机系统的设计;第46天 参考有关文献,完成程序的编写; 第710天 调试硬件系统和软件程序;第1
3、112天 结果分析整理、撰写课程设计报告,验收和答辩。指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日 基于51单片机原理出租车计价器的设计 摘要 现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。而部分小城市尚未普及,但随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。本设计以 89S51 单片机为中心,利用键盘模拟代替霍尔传感器测距,实现对出租车计价统计,输出采用 8 段数码显示管。本电路设计的计价器不但能实现基本的计价,而且还能根据里程或手动来调节单价。目 录前 言1
4、第一章 出租车计价系统的设计要求与设计方案21.1出租车计价器概述21.2系统主要功能21.3方案论证与比较2第二章 出租车计价系统的硬件设计32.1出租车的硬件框图32.2AT89C52单片机及其引脚说明3图2-2 AT89C52引脚配置32.3键盘调整单元42.4显示单元5第三章 出租车计价系统的软件设计63.1系统主程序63.2计算子程序流程图73.3显示子程序73.4键盘子程序8第四章 出租车计价系统的安装与调试94.1硬件调试94.2软件调试94.3调试过程9第五章 设计体会与小结10参考文献11附 录12一源程序12二 系统硬件原理图16前 言电子课程设计是电子技术学习中非常重要的
5、一个环节,是将理论知识和实践能力相统一的一个环节,是真正锻炼学生能力的一个环节。出租车能保证乘客快速,轻松的到达目的地。 这些优点受到人们的欢迎。随着出租车行业的发展,出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。而采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试。而采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。本设计采用AT89C52单片机,辅以按键,实现对出租车
6、的多功能的计价设计,输出采用8段数码显示管。本电路设计的计价器不但能实现基本的计价,而且还能根据里程或手动来调节单价。要将出租车计价系统产品化,应该根据客户不同的需求进行不同的设计,应该在程序中增加一些可以人为改变的参数,以便客户根据不同的需要随时调节单价以及计价方式。因此,研究出租车计价器及扩大其应用,有着非常现实的意义。第一章 出租车计价系统的设计要求与设计方案1.1 出租车计价器概述计价器显示的营运金额是营运里程与价格。出租车计价器通过传感器与行驶车辆连接,但在此次课程设计中,因没有传感器,所以用键盘取代,用按键的次数来代表里程数。该课程设计的出租车计价器功能主要有具有数据的复位功能、单
7、价修改功能、数据输出功能、计价功能等等。1.2 系统主要功能本课程设计所设计的出租车计价器的主要功能有:数据的复位、单价修改、数据输出、计价、单价输出及调整、路程输出等功能。输出采用8 段数码显示管。本电路设计的计价器不但能实现基本的计价,而且还能手动来调节单价。1.3 方案论证与比较方案一:采用数字电路控制。采用传感器件,输出脉冲信号,经过放大整形作为移位寄存器的脉冲,实现计价,但是考虑到这种电路过于简单,性能不够稳定,而且不能调节单价,也不能根据天气调节计费标准,电路不够实用。方案二:采用单片机控制。利用单片机丰富的 I/O端口,及其控制的灵活性,实现基本的里程计价功能和价格调节、时钟显示
8、功能。通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能, 而且还可以方便的对系统进行升级, 所以我们采用后一种方案。第二章 出租车计价系统的硬件设计2.1 出租车的硬件框图 键盘控制P3.0P3.1 P3.2 P0P3.3 89C52单 片 机P2 串口显示驱动电路2 位里 程或单价显 示 4 位总 价显 示 图2-1 2.1.1 键盘控制单元用于模拟传感器和进行价格的修改和复位操作。2.1.2 89C52用于进行控制运算。2.1.3 串口显示驱动电路用于用数码管显示所需的数字。2.2 AT89C52单片机及其引脚说明 图2-2 AT89C5
9、2引脚配置AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。 AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。 AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线
10、,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。 AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。2.3 键盘调整单元图2-3S1:接P3.0口,功能一:正常状态下,按一次里程计数加一;功能二:修改单价时,作为切换键。S2:接P3.1口,功能一:进入修改单价的界面;功能二:修改单价时,对整数位按一次加一。S3:接P3.2口,跳出修改单价的界面。S4:接P3.3口,功能一:在正常状态下为复位键;功能二:修改单价时
11、,对小数位按一次加一。2.4 显示单元 显示单元由8个8段共阳数码管组成,采用动态扫描进行显示。前二个数码管用于显示里程数或者单价;后四个用于显示总价格;电路如图2-4所示。图2-4总电路接线图见附录。第三章 出租车计价系统的软件设计3.1 系统主程序在主程序模块中,需要完成对各参量和接口的初始化、出租车起价和单价的初始化以及计算、循环等工作。另外,在主程序模块中还需要设置复位和修改单价的程序。当汽车运行起来时,就启动计价,根据里程寄存器中的内容计算和判断行驶里程是否已超过起步价公里数。若已超过,则根据里程值、每公里的单价数和起步价数来计算出当前的总金额,并将结果输出在显示管中;中途等待时,不
12、产生计数,当时间超过等待设定值时,开始进行计时,并把等待价格加到总金额里,然后将总金额、里程和单价送数码管显示出来。程序流程如图3-1所示。开始初始化切换N 调整单价Y 金额计算 显 示复位 NY 图3-13.2 计算子程序流程图里程计数单元里程3 NY总金额=起步价总金额=起步价+(里程-3)*单价 返 回 图3-23.3 显示子程序显示程序每点亮一个数码管,显示一位数据,利用主函数内的循环,实现动态扫描显示,同时根据数码管余辉和人眼暂留现象,即可实现显示。3.4 键盘子程序键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦右按键按下,便转向相应的子程序处理,处理
13、结束再返回。流程图如图3-3所示。主程序循环扫描Key2=0?YYKey3=0?Key1=0?N NY修改M值 Key1=0?YNm为1且Key4=0Y修改单价N修改里程数NKey4=0Ym为0且Key2=0YN修改单价N 复 位 显示电路图3-3第四章 出租车计价系统的安装与调试4.1 硬件调试通电调试,检查开发板是否正常,各个数码管显示是否正常。4.2 软件调试输入程序并检查无误,经编译、连接后烧入开发板运行,观察现象。经过多次调试后达到了设计要求。4.3 调试过程在最初拿到任务书时,由于第一次做单片机的课程设计,所以心里感觉有点没底。为了给自己减压,于是开始时只是想着如何用数码管同时显示
14、里程数和对应的总价格,通过指定的按键按一次加一公里里程来模拟代替传感器所产生的里程数。由于这个要求比较简单,所以没有碰到什么麻烦变顺利的达到了要求。然后我就想着如何加入修改单价的程序。这部分也是先从简单的做起。我先是想着处理如何通过按键进入修改单价的界面并且停留在修改单价界面直到用指定的按键退出为止。开始时只是显示单价,单价的修改位并不闪烁。这时在修改单价的程序添加IF语句,来控制切换修改单价的各位和小数位,并且在相应的条件下通过指定的按键来修改单价。开始想着单价的既能加又能减,后来从实际使用和程序的复杂度来考虑只是设置了单价的加法操作,在单价加到一定的数值变到相应的最小值,如此反复。这样修改
15、单价的要求也就相应的达到了。最后感觉最难控制的是调整单价时,相应的修改位的数码管闪烁而其他非修改位不闪烁。在这个环节上我花了大量的时间进行调试。最初的想法是用FOR语句来控制50次内单价的个位和小数位都显示,后50次屏蔽掉修改位,如此反复。可结果确实是感觉修改位闪烁而非修改位一直显示,但有明显的瑕疵是非修改位也能感觉到有些闪烁。虽然试了许多总次数组合但依然达不到理想效果。最后没有使用FOR语句,而是在正常的扫描显示程序里通过添加IF语句来控制屏蔽位的亮与不亮的时间比,并且适当延长的非闪烁位的延时时间。这样一来,经过多次调试,闪烁达到了一定效果。 第五章 设计体会与小结 经过这些天有关于出租车计
16、价器的课程设计,使我对单片机的应用有了更深的了解。在课程设计的过程中,还是碰到了许多的问题。比如,对于数码管动态扫描显示、数码管的闪烁和键盘的延时防抖的综合编程不能较好地解决;对于一些相关的应用软件没能熟练掌握。通过这几天晚上的苦想和反复调试,最终还是把问题解决了。通过这次课程设计,我最大的收获就是自己的动手能力和独立解决问题的能力得到了很大的提高,也充分体会到了自己设计东西的乐趣、学会查阅资料和对别人的东西融会变通的重要性,也明白了很多知识光靠趴在书本上学是学不到其中的精髓的,必须亲自去试着实践,亲自去经历才能对它们真正的掌握。最大的收获是更清晰了如何有条理的编程。第一个就是流程图,原来不以
17、为然的事现在觉得非常的有必要。第二就是编程顺序,要写一个功能很复杂的程序首先写那些自己可以很快完成的较简单的内容,比如调单价时的闪烁,那么就可以开始只写调一位单价,然后再加入程序可以调两位单价,再然后加入闪烁功能,这样既可以使编程变得更有条理,而且对心态也是很有帮助的。一步一步的完成相应的要求会使自己的心情倍感舒爽而不是一直未能达到要求时的迷茫。凡事都要自己去动下手,去实践一下,遇到困难,永远不要沮丧气馁。在动手的过程中,不仅能增强实践能力,而且在理论上可以有更深的认识;这次设计给了我极大的鼓舞和信心,相信在以后的学习中可以通过不断的摸索和实践来提高其他方面的知识。参考文献1. 张鑫、华臻、陈
18、书谦单片机原理及应用M电子工业出版社,2005 2. 丁元杰、吴大伟单片微机实题集与实验指导书M机械工业出版社, 20043. 朱承高.电工及电子技术手册M.北京:高等教育出版社,19904. 李群芳,肖看.单片机原理接口与应用.北京:清华大学出版社,2005.5. 张迎新.单片微型计算机原理、应用及接口技术.北京:国防工业出版社,1999.6. 高峰.单片微型应用系统设计及实用技术.北京:机械工业出版社,2004.附 录 一源程序#include code unsigned char tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;
19、 code unsigned char tab1=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;unsigned char baiwei;unsigned char shiwei;unsigned char gewei;unsigned char xiaoshu;unsigned char count;unsigned char djgewei;unsigned char djxiaoshu;unsigned char i;unsigned char m;float money;float jiage;sbit key1=P30;sbit
20、key2=P31;sbit key3=P32;sbit key4=P33;void delay(unsigned int cnt) while(-cnt);main() P0=0x00; count=0; money=0; jiage=3.6; while(1) if(!key2) m=0; delay(18000); while(key3) if(!key1) delay(30000); if(!key1) m+; if(m=2) m=0; if(m) if(!key4) delay(50000); if(!key4) jiage+=0.1; if(int)(jiage*10)%10=0)
21、jiage-=1; jiage*=10; djgewei=tab1(int)jiage/10; P0=djgewei; P2=0; delay(600); i+;if(i50)djxiaoshu=tab(int)jiage%10; P0=djxiaoshu; P2=1;delay(200); jiage/=10;if(i=10) jiage-=10; jiage*=10; djgewei=tab1(int)jiage/10; djxiaoshu=tab(int)jiage%10; P0=djxiaoshu; P2=1; delay(600); i+; if(i50) P0=djgewei; P
22、2=0; delay(200); jiage/=10; if(i160) if(i=159) i=0; if(!key1) delay(25000); count+; if (count=100) count=0; if(!key4) count=0;jiage=3.6; shiwei=tabcount/10; gewei=tabcount%10; P0=shiwei; P2=0; delay(300); P0=gewei; P2=1; delay(300); if(count4) money=6; else money=(count-3)*jiage+6; money*=10; xiaosh
23、u=tab(int)money%10; money/=10; baiwei=tab(int)money/100; money=(int)money%100; shiwei=tab(int)money/10; gewei=tab1(int)money%10; P0=baiwei; P2=4; delay(300); P0=shiwei; P2=5; delay(300); P0=gewei; P2=6; delay(300); P0=xiaoshu; P2=7; delay(300); 二 系统硬件原理图本科生课程设计成绩评定表姓 名性 别专业、班级课程设计题目:课程设计答辩或质疑记录:成绩评定依据:设计方案与内容(20分)制作与调试(30分)说明书内容与规范程度(20分)答 辩(20分)学习态度与考勤(10分)总 分(100分)最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字: 年 月 日