出租车计价器设计与实现

上传人:feng****heng 文档编号:160967585 上传时间:2022-10-12 格式:DOCX 页数:32 大小:845.75KB
返回 下载 相关 举报
出租车计价器设计与实现_第1页
第1页 / 共32页
出租车计价器设计与实现_第2页
第2页 / 共32页
出租车计价器设计与实现_第3页
第3页 / 共32页
点击查看更多>>
资源描述
西安电子科技大学单片机电路设计报告设计题目:出租车计价器设计与实现系 部计算机系专业计算机科学与技术班级030914学生姓名罗维、张长建、邓海霞学 号指导教师田玉敏2011 年 11 月 24 日1.前言本文介绍了出租车计价器系统在实际生产生活中的重要性,介绍一种以单片机STC89C52 为核心的出租车计价器的设计,阐述硬件设计过程中关键技术的处理。在出租车是城市交通的重要组成部分,行业健康和发展也获得越来越多的关注。汽车 计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要 的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还 是乘客来说都是很必要的。因此,汽车计价器的研究也是十分有一个应用价值的。本设计采用STC89C52单片机为主控器,实现对出租车的计价设计,输出采8段数码显 示管,74LS245芯片和74LS138芯片驱动。本电路设计的计价器不但能实现基本的计价,而 且还能根据白天,黑夜来调节单价,同时具有计时功能。2系统整体设计设计要求设计一款基于STC89C52单片机的出租车计价器 基本功能(1)根据输入的模拟脉冲实现同步计费,起步价设为7 元,每公里费用初始设为2元(2)能够根据白天/晚上切换单价(3)具有清零功能(4)八位数码管动态显示(计费模式下4位显示路程,4 位显示费用)(5)具有计时功能(6)能够在计时模式和计费模式之间切换(7)按键要求:白天/晚上切换、中断输入、清零、计时模式/计费模式切换系统功能本次设计的出租车计价器的主要功能有:金额输出、里程输出、数据复位、白天/晚上 单价转换、计时等。输出采用2个4位8段共阳极数码管。计费模式下前四位显示金额,后 四位显示里程,计时模式下八位全用来显示时间。设计方案本设计是由硬件设计和软件设计两部分所组成。软件设计要进行程序的编写和软件仿 真;硬件设计要进行原理图设计,PCB设计,制作电路板和硬件调试等硬件设计方案:本系统的硬件设计主要包括单片机STC89C52、数据显示部分、按键单元、电源部分、 RS232 串口部分。在硬件设计过程中,充分利用各部件的功能,实现多功能出租车计价器的 设计计价器的系统框图如图 1 所示:按键输入电源输入数码管显示电路图 1 总体方案方框图软件设计方案本设计采用C语言编写程序,使用KeilC51和Proteus 7软件进行软件调试和仿真。 其中的里程计算方案和金额计算方案如下:里程计算(1) 用按键输入来代替霍尔传感器对车轮检测的输出脉冲到单片机(2) 单片机对按键输入的信号进行计数,并进行路程计算。一个输入代表路程0.1km 金额计算(1)起步价初始设定为7元,并且2km内不加价(2)当路程超过2km后,开始加价。白天按2元/公里,晚上按3元/公里结束图 2 软件流程3.硬件设计本系统的硬件设计主要包括单片机STC89C52、数据显示电路、按键单元、电源电路部 分、RS232串口电路STC89C52STC89C52 主要特征与MCS-51系列单片机产品兼容 4K字节在系统可编程Flash存储器(片内具有4K字节闪速存储器) 1000次擦写周期 128Bytes的内部RAM单元 4个8位1/0 口,即32位可编程1/0 口线 2个16位定时器/计数器 6个中断源可编程全双工串行口低功耗空闲和掉电模式掉电后中断可唤醒看门狗定时器双数据指针灵活的ISP在线编程功能(字或字节模式)宽范围的工作电压,VCC的允许变化范围为了 2.76.0V可设置为待机状态和掉电状态振荡器及时钟电路,全静态工作方式,时钟频率可为0Hz24MHz。具有全静态的工作 方式,表明它不一定要求连续的工作时钟定时,在等待内部事件期间,时钟频率可降至0。STC89C52芯片在出厂时,闪存处于可擦除状态,各地址单元内容为FFH,可随时进行编 程。编程是按字节进行的。编程电压VPP有高压12V的,也有低压5V的。STC89C52的内部结构框图如图3所示:STC89C52 管脚结构图及管脚说明如图4所示VCC:供电电压。GND:接地P0 口: P0 口为一个8位漏级开路双向I/O 口,每脚可吸收8TTL门电流。当P1 口的管 脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为 数据/地址的第八位。在FLASH编程时,P0 口作为原码输入口,当FLASH进行校验时, P0输出原码,此时P0外部必须被拉高。P1 口: P1 口是一个内部提供上拉电阻的8位双向I/O 口, P1 口缓冲器能接收输出4TTL 门电流。P1 口管脚写入1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时, 将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1 口作为第八位地址接收。PDIFF10E Fl IL PI JEF1.JLPI.4L PlP1AL FUC Rsn r (fiXDjPSO 匸 CO冋1匚 zr par noiR.c 凹P3让 (WRjP3r 陌宀匚 XTAL?CJCTM.1EHDC12恥3933S4175a35734辱曲32wai11302913id制37162fi稲ITZ3旳3Q?1 vet POO IAD4 PO.f (W 1 J POd啊間 PO/i (AM J P0.5 (AD聞 POiAD 空 了 4*E 7 qcvvpp_ ALjfO4 PSE-M P2 7为 PZ#(AH) PS,5 (A 讪H P94 4诵 P2.3 AHJ P?J (AIOj5p2 4N引里片机最图13 RS232串口电路4.软件设计主程序在主程序中,需要完成对各参量和接口的初始化、出租车起步价和单价的初始化以及中 断、计算、循环等工作。另外,在主程序模块中还需要设置启动/清除标志寄存器、里程 寄存器和价格寄存器,并对它们进行初始化。然后,主程序将根据各标志寄存器的内容, 分别完成启动、清除、计程和计价等不同的操作。主程序流程图路程计数中断程序每当按键输入一个低电平信号就使单片机中断一次,路程增加0.1km,并根据白天/晚 上按键的状态设定单价是2元/公里还是3元/公里,然后计算出金额计算程序计算程序根据路程数分别进入不同的计算公式。如果路程大于2公里,则执行公式:总 金额=起步价+ (路程-20) *单价。白天单价2元/公里,晚上单价3元/公里显示程序显示程序利用定时器每1ms产生一次中断,相应变量置位,点亮一个数码管,显示一 位数据,利用主函数内的循环,实现动态扫描显示,同时根据数码管余辉和人眼暂留现象, 即可实现显示。按键程序键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序, 旦有按键按下,便转向相应的子程序处理,处理结束再返回。5.仿真调试根据系统设计方案,本系统调试分为两部分:软件调试和硬件调试软件仿真调试编译软件G - 建按窗a:中apltt昭it际丿*融了使用keilC51进行软件调试和编译,编译成功后生成“Taxi.hex”文件71 iM-in - |GU5E.GilhE.DH:EptdinJtS;1wihTEl|自刪(El喈旧IJfflCfl工锂回 MEi湘曲 丹囲知迪 LH(D EVCElfl 3曲 XlW.w 卬f20-.Im曲te s dWi tCfa lr*l赋伺寺氓.teeuk 11 护扫如ran Hlza j data3y. data-U cada-lGti MEX丈件 tMi ! - 0汗tii:名0 f警甘.!:PW: ablm shig: 1 bruk:049 2i |PE=OL5.PD=Tatl5iuJl订nwK.ca-je 3:PD=ftia ) bTMk.lifle, 4: fr&cO? PD-t占“.Jb-eak.qua 5: d | Ibruk. 卜左丄酉t】1:* #*亠*亠W p峠丰亠.亠.亠,亠亠.亠-卜-亠*亠亠-廿每誉険卡丹*肝4丄怙d4- */|日W 3切VH訴|L2Ba:l图14 keilC51编译仿真调试在proteus 7中绘制出电路原理图,将keilC51编译生成后的“Taxi.hex”文件导入至U 单片机中,单机“运行”按键进行仿真C3F-i.vnb M3WI r-urc-E-D H敝Qi MMM M.flfr-M HJWC:卜oo8.aooe,6口IEFIE57:=:-X-mMbfii faVBbnamTPZ&TTlntfui:口 imr口 12 . J 4 r.- .ta r图15 proteus仿真软件仿真结果全额mm;路程二图16起步价7元,两公里内不加价人站疋;lifj i口金额;路桂00900030FEiCCe FG DP12 54367*8图17白天2元/公里全额mm;路程HEiCCEFG DF图18晚上3元/公里n n _ 1! 0-30u U 1图19计时器硬件调试绘制PCB图使用altium designer 9绘制出原理图,然后转换成PCB图,进行元件布局、布线M+r0a aQC-J-l01109:1 F图16 PCB图电路板调试将PCB图送至公司制成PCB版,购买元器件进行焊接,焊接完成后将程序下载到单片机 里进行硬件调试匚TIflfiHSflflflHL图20硬件调试6.结论在这段时间里,经过自己努力,基本上完成了设计要求的内容,在系统可行性分析、原 理图设计、PCB绘制等方面都作了许多实际工作,取得了一些成绩,同时也遇到了一些问题, 存在一些不足。经过这段时间的学习和工作,我觉得自己不论是在理论知识方面还是在动手 能力方面都有了不小的进步,自己从中受益匪浅。这次设计很好的把以前学到的理论知识应 用于实践,使我认识到理论知识与实践之间有一定的差距,只有通过不断的努力学习和实践 才能很好的把理论知识应用到实践当中,也只有通过不断的实践才能对理论知识的理解。通过这次设计不仅学会了如何去查找相关资料,更重要的是通过查找资料和翻阅书籍 学到了不少知识,扩大了知识面,提高了知识水平。经过单元设计和系统设计巩固了以前所 学的专业知识,自己真正认识到理论联系实际的重要性,为以后的学习和工作提供了很多有 价值的经验。通过这次设计不仅增强了自己的动脑能力和动手能力,也提高了我思考问题、 分析问题、解决问题的能力,更重要的是学会用工程化的思想来解决问题。这在以前的学习 过程中是不曾学到的。这次设计是我认真认识到完整、严谨、科学分析问题、解决问题的思想是多么的重要 只有拥有了科学的态度才能设计出有用的产品。另外通过本次设计,使我认识到自己理论知 识的应用能力有很大的欠缺,需要在以后的学习中进一步提高。7.致谢在这里,我要感谢我的指导老师田玉敏老师在设计期间给与我的关心、指导和教诲。田 玉敏老师治学严谨的作风及平易近人的态度使我受益匪浅,并且也是对我的鞭策和激励。同时我也要感谢我的同学们,感谢他们给予我的关心和帮助8.附录电路原理图Jm兹&riKu q r m r 5 y jj MMAIAIA1AIMAIXa:i :v;n汕3戏mc E j巧& me ewed Y E 徒 2V-&S Gv.g 2?&dulu*.H MuXH aulu m MuuPH gu2 H X3F 二d po- “d二:. CY s noYYE mev m K iu1i Fa CCY O SPOA2XX 耳IX占占凸占 Avt o3 s-程序#include#include #define uint unsigned int#define uchar unsigned charsbit ACC_O=ACCO;sbit ACC_7 = ACL7;/位寻址寄存器定义sbit SCLK = Pl;/ DS1302时钟信号7脚sbit DIO= P0;/ DS1302数据信号6脚sbit RST = P2;/ DS1302 片选5脚sbit Start=P5;sbit Clear=P6;sbit Switch = P7;sbit key4 = P32;uchar shi1,shi2,fen1,fen2,miao1,miao2,tt0;uchar num,PRI1,PRI2,PRI3,PRI4,DIS1,DIS2,DIS3,DIS4;uchar tt =0;uchar tt0,signal;uchar Switch_a = 1;uchar Switch_b = 1;float Price;uint num1,num2,tt1;uchar code table = 0x3F,0X30,0X5b,0X4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40;/共阴数码管0-9,灭,-编码 uchar code wei = 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07; /位选编码/ *X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*tI* 丿 I 7 、人I f *x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x* / /I -5 r I / I/延时ms子程序void delay(uint i)uint j;for(i; i 0; i-)for(j = 110; j 0; j-);void Price_DistanRST_display()switch(num) /数码管显示case 1:P2=0x00;P0=tablePRI1;delay(1);break;case 2:P2=0x01;P0=tablePRI2;delay(1);break;case 3:P2=0x02;P0=tablePRI3+0x80;delay(1);break;case 4:P2=0x03;P0=tablePRI4;delay(1);break;case 5:P2=0x04;P0=tableDIS1;delay(1);break;case 6:P2=0x05;P0=tableDIS2;delay(1);break;case 7:P2=0x06;P0=tableDIS3+0x80;delay(1);break;case 8:P2=0x07;P0=tableDIS4;delay(1);break;void zhuanhuan() /数据转换DIS1=num1/1000;DIS2=num1%1000/100;DIS3=num1%1000%100/10;DIS4=num1%10;PRI1=num2/1000;PRI2=num2%1000/100;PRI3=num2%1000%100/10;PRI4=num2%10;void int1() interrupt 0 if(key4 = 0)/速度采集/外部中断(INTO)delay(20); if(key4 = 0) num1+; while(!key4);if(Switch_b = 1)Price = 2; /白天元/公里if(Switch_b = 2)Price = 3; /晚上元/公里if(num1 != 0)if(num1 2)Switch_b = l;if(Clear=0) /清零键delay(20);if(Clear=0)return;while(!Clear);if(Switch=0) /切换键delay(20); /防抖动if(Switch=0)Switch_a+;if(Switch_a2)Switch_a=1;while(!Switch);
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 毕设全套


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!