基于单片机出租车多功能计价器设计
图3-5 键盘扫描子程序流程图
29
基于单片机出租车多功能计价器设计
3.6计算程序
计算程序根据里程数分别进入不同的计算公式。如果里程大于3公里,则执行公式:总金额=起步价+(里程-3)*单价+等待时间*等待单价;否则,执行公式:总金额=起步价+等待时间*等待单价;如果进入中途等待模式,每等待五分钟相当于加1公里,因为轮长设为1m,采集脉冲数为n,总里程=n*1/1000+等待分钟/5。计算程序流程图如图3-6所示:
调用计算程序 里程>3? 总金额=起步价 总金额=起步价 总金额+= (里程-3)*单价 总金额+=等待时间*等待单价 总金额+=等待时间*等待单价 返回
图3-6计算程序流程图
30
基于单片机出租车多功能计价器设计
void data_process() {
LiCheng=(uint)(Count*LunChang)/100+Minute*10/5; if(LiCheng<=30) }
{
JinEr=80; } else {
JinEr=80+(DanJia*(LiCheng-30))/10; }
31
基于单片机出租车多功能计价器设计
结束语
本次设计中,遇到了许多问题,有许多以前没有接触过的芯片,霍尔传感器A44E、DS1302、AT24C02以及8位锁存器74HC573,对于他们的管脚和用法还不熟悉,因此查阅了许多相关资料,在了解了各个部件的功能的基础上加以设计,最终完成了出租车计价器的设计。本次设计核心器件是AT89C51,采用软硬件相结合的原理,利用AT89C51的丰富的I/O口,控制灵活的特点,软件设计部分用C语言编程实现,硬件部分把各个模块分别与单片机的I/O口相连接。在设计硬件电路的时候,发现单片机的驱动电流太小,不足以驱动数码管里面的二极管显示,于是采用了三极管驱动电路和8位74HC573数据锁存器驱动,在设计键盘电路的时候,发现键盘在按下和释放的时候容易出现抖动,查阅资料是说可以通过C语言编程去抖,于是在键盘程序部分加入延时,起到了去抖的效果。在指示灯电路设计的时候,加入了空车指示灯,使乘客能够一目了然的知道出租车的运行情况,为乘客和司机提供了便利。在利用PROTUES仿真的时候因为把数码管选成了共阳(CA)的数码管,显示时候出现乱码。后来替换元器件改成共阴数码管(CC),不再出现乱码,但是A段却不显示,排查原因后发现是A段的网络标签没弄好。重新标识之后,数码管能够正常显示示数,切换不同的按键,能模拟不同的工作模式。原先设想再加入语音播报模块和打印机模块,使出租车计价器更具有多功能的特性,但由于本人的能力有限,最终没能有效的使他们衔接在一起,只好舍弃之前的想法,在今后的生活中还要继续学习,完善自己的知识面,不断给自己充电。
32
基于单片机出租车多功能计价器设计
致谢
通过不断努力,我终于完成了此次毕业设计。在此,首先感谢刁立强老师,正是他在百忙之中还抽出宝贵的时间对我进行精心的指导,才使我顺利完成了此次毕业设计。我从设计题目的选择,英文翻译,开题报告,方案确定,硬件电路设计以及软件编写,到仿真和最后论文定稿及重复修改等都得到了刁老师的悉心指导与教诲,感谢刁老师多次地为我指点迷津,帮助我开拓思路,精心点拨,热忱鼓励。同时也感谢各位同学和老师对我提供的帮助,使我在此次设计中学到了许多宝贵的知识和经验。在此,衷心地感谢你们!
最后,我还要也感谢百忙中审阅我论文的老师们,感谢老师们对我的教诲与鼓励!
33