单片机基于出租车计价系统的设计.doc

上传人:本田雅阁 文档编号:2051064 上传时间:2019-02-08 格式:DOC 页数:40 大小:1.91MB
返回 下载 相关 举报
单片机基于出租车计价系统的设计.doc_第1页
第1页 / 共40页
单片机基于出租车计价系统的设计.doc_第2页
第2页 / 共40页
单片机基于出租车计价系统的设计.doc_第3页
第3页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《单片机基于出租车计价系统的设计.doc》由会员分享,可在线阅读,更多相关《单片机基于出租车计价系统的设计.doc(40页珍藏版)》请在三一文库上搜索。

1、泸州职业技术学院毕业论文 目录泸 州 职 业 技 术 学 院毕 业 论 文基于单片机的出租车计价系统的设计3毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文

2、)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文

3、版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年 月 日 泸州职业技术学院 摘要摘 要出租车计价器是乘客与司机双方的交易准则,他是出租车行业发展的重要标志,是现代出租车不可或缺的部分。它关系着交易双方的利益。具有良好性能的计价器,无论是对广大出租车司机朋友还是乘客都是很必要的。因此,出租车计价器

4、的研究也是一个具有应用价值的研究课题。而采用模拟电路或是数字电路设计的计价器整体电路规模较大,用到的器件多,造成的故障率高,难调试。相对于普通的模拟电路或数字电路,采用单片机AT89S52型号芯片进行的设计相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可用12864液晶显示屏显示,可以通过软件编程来完成更多的附加功能。针对计费模式的切换,通过软件编程就可以轻易而举的实现。避免了机械开关带来的不稳定因素。关键词:出租车计价器, AT89S52,12864液晶显示屏28泸州职业技术学院 目录录目摘 要1第一章 绪 论1第一节 课题背景1第二节 课题意义1第

5、二章 系统组成及功能2第一节 系统的组成2第二节 系统工作原理2第三节 系统功能的确定32.3.1 基本功能32.3.2 扩展功能32.3.3系统操作说明4第三章 系统硬件设计5第一节 芯片的选择5第二节 芯片图6第三节 功能电路分析63.3.1 时钟电路63.3.2 复位电路73.3.3 键盘电路73.3.4 LCD12864显示8第四章 系统软件设计10第一节 主程序设计10第二节 定时中断服务程序12第三节 键盘服务程序12第五章 系统测试14第一节 硬件调试14第二节 软件调试15结束语18致谢19附录A20附录B:程序清单21参考文献29泸州职业技术学院 绪论第一章 绪 论单片机自1

6、976年由Intel公司推出MCS-48开始,迄今已有二十多年了。由于单片机集成度高、功能强、可靠性高、体积小、功耗低、使用方便、价格低廉等一系列优点,目前已经渗入到人们工作和生活的方方面面,单片机的应用领域已从面向工业控制、通讯、交通、智能仪表等迅速发展到家用消费产品、办公自动化、汽车电子、PC机外围以及网络通讯等广大领域。单片机有两种基本结构:一种是在通用微型计算机中广泛采用的,程序存储器和数据存储器共用一个存储器空间的结构,称为“冯诺依曼”(Von Neumann)结构。另一种是将程序存储器和数据存储器截然分开,分别寻址的结构,称为“哈佛”(Harvard)结构,目前的单片机采用此种结构

7、为多。 汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此,汽车计价器的研究也是十分有一个应用价值的。我国在70年代开始出现出租车,但那时的计费系统大都是国外进口不但不够准确,价格还十分昂贵。随着改革开放日益深入,出租车行业的发展势头已十分突出,国内各机械厂家纷纷推出国产计价器。出租车计价器的功能从刚开始的只显示路程(需要司机自己定价,计算后四舍五入),到能够自主计费,以及现在的能够打一发票和语音提示、按时间自主变动单价等功能。随着城市旅游业的发展,出租

8、车行业已成为城市的窗口,象征着一个城市的文明程度。本次设计的目的在于现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。而部分小城市尚未普及,但随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。 泸州职业技术学院 系统组成及功能第二章 系统组成及功能 第一节 系统的组成本系统有硬件和软件两部分组成。本系统有硬件采用模块化设计,以AT89S52控制器为核心,与独立键盘电路和显示电路等组成出租车计价系统。该系统硬件的组成包括单片机为主控模块、LM324、电机、光电传感器、独立按键等。单片机主控模

9、块完成外围硬件的控制以及一些运算。独立按键完成开始暂停等功能,单片机控制的出租车计价系统的硬件组成框图如图2-1所示:电源电路时钟电路复位电路LM324电路单片机LCD显示独立键盘继电器电路光电传感器单片机如图2-1 第二节 系统工作原理本系统的工作流程图如图2-2所示,有电源给单片机模块供电。单片机产生的数字信号送给LCD12864显示,和单片机产生高低电平信号传给继电器使电机工作,让光电传感器产生高低电平信号通过LM324放大电路放大后传给单片机进行相关的运算。M光电信号LM324放大电路电源单片机键盘电路LCD显示模块如图2-1 第三节 系统功能的确定2.3.1 基本功能(1)显示:单程

10、价、起步价、可以显示里程、总金额、等待时间、速度。(2)计费功能:起步公里数为3公里,价格为8元;若实际运行大于3公里,按单程价格为2元/公里,往返则价格为1.5元/公里,等待计费1.5远/min。(3)按键功能:单程/往返分别由“单程” 按键和“往返” 按键设定;按“暂停” 键,计价器可暂停计价;按“清除” 键,计价器能将记录数据(里程、等待时间与金额等)自动清0;按“查询”键,能自动显示总等待时间;按“返回”键,仍然显示里程和金额。2.3.2 扩展功能停车计费功能:用单片机控制电机转动,并用光电传感器检测转盘转动模拟车速,车速与转盘转速成正比。车速5公里/小时的时间累积为总等待时间,每1分

11、钟等待时间相当于里程数增加1公里。2.3.3系统操作说明(1)按键S1:单程按键。按下该键,里程随脉冲数成正比累加,在里程大于3公里后,金额数按单程价格为2元/公里进行累加。(2)按键S2:往返按键。按下该键,里程随脉冲数成正比累加,在里程大于3公里后,金额数按单程价格为1.5元/公里进行累加。(3)按键S3:暂停按键。到达目的地后,按“暂停” 键,计价器可暂停计价。(4)按键S4:清除按键。按“清除” 键,计价器能将记录数据(里程、等待时间与价格等)自动清0。(5)按键S5:查询按键。按“查询”键,能自动显示总等待时间。(6)按键S6:返回按键。按下该键,回到显示里程数、金额状态 泸州职业技

12、术学院 系统组成及功能第三章 系统硬件设计第一节 芯片的选择本设计选用AT89S52芯片,它是一种低功耗、高性能CMOS 8位微控制器,具有8K(0000H1FFFH)在线系统可编程Flash存储器。片上Flash允许程序存储器在线编程,也适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供灵活、高效的解决方案。AT89S52具有以下标准功能:8K(0000H1FFFH)Flash,256字节(00HFFH)数据存储器(RAM),64K(0000HFFFFH)程序存储器(ROM),32位I/O口线,看门狗定时器,2个数据指针

13、,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口内晶振及时钟电路。其中,数据存储器(RAM)用于存放各种运算的中间结果,作缓存和数据暂存,以及设置特征标志等。AT89S52的片内数据存储器用位寻址方式,最大寻址范围为256字节(00HFFH)。按使用情况不同可分成低128字节(00H7FH)和高128字节(80HFFH)。其中低128字节为真正的RAM存储器,高128字节为特殊功能寄存器(SFR)区,如累加器ACC、程序状态字PSW、数据指针DPTR、程序计数器PC等。整个片内RAM区分布如图3-1所示。AT89S52的引脚图如图3-2所示:图3-2 AT89S52引脚图第三节

14、 功能电路分析3.3.1 时钟电路实验板的时钟振荡源电路如图3-3所示。其中JT 为11.0592MHz 的晶振,改变两电容CB的值即可对此晶振频率进行调节。该电路提供单片机工作所需的振荡频率,计算定时器初值即需此晶振频率,在通信时也需知道晶振频率,以对波特率进行计算。3.3.2 复位电路如图3-4所示为实验板的复位电路,当RESET 信号为低电平时,实验板为工作状态,当RESET信号为高电平时,实验板为复位或下载程序状态。由于AT89S52具有ISP 的功能,即可以通过并口线直接将程序下载到单片机内,因此, AT89S52 具有两种状态,下载程序状态和运行状态。该复位电路能实现上电自动复位,

15、也能手动复位,一般复位时RESET应保持20毫秒以上高电平,此复位时间由接地电容控制。3.3.3 键盘电路如图3-5所示为独立式按键电路,每个按键占用一根I/O口线,每根I/O口线上按键的工作状态不会影响其它按键的工作状态。这种按键的软件程序简单,但占用I/O口线较多。(一跟口线接一个按键),适用于键盘数较少的系统中。图 3-5 键电路图图 3-6 按键实物图3.3.4 LCD12864显示通过用12864显示出租车的单程价、起步价、可以显示里程、总金额、等待时间、速度等。现在的LCD价格便宜且适合我们做单片机的显示屏。应用也十分广泛。电路连接如图3-7所示。 图 3-7显示电路图 3-7 L

16、CD12864实物图 泸州职业技术学院 系统软件设计泸州职业技术学院 系统软件设计第四章 系统软件设计第一节 主程序设计在主程序模块中,需要完成对各接口芯片的初始化、出租车起价和单价的初始化、中断向量的设计以及开中断、循环等待等工作。另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计价等不同的操作。主程序流程图如图4.1 所示。当按下S1时,就启动计价,将根据里程寄存器中的内容计算和判断出行驶里程是否已超过起价公里数。若已超过,则根据里程值、每公里的单价数和起价数来计算出当前的累计价

17、格,并将结果存于价格寄存器中,然后将时间和当前累计价格送显示电路显示出来。当到达目的地的时候,由于霍尔开关没有送来脉冲信号,就停止计价,显示当前所应该付的金额和对应的单价,到下次启动计价时,系统自动对显示清零,并重新进行 初始化过程。开始初始化键盘扫描程序是否有按键扫描键值清楚键4?单程键1?往返键2?暂停键3?查询键5?返回键6?单程函数调用往返函数调用T0暂停计时显示全部清零显示等待时间显示里程、金额YYYYYYNNNNNYN如图4-1 主程序流程图第二节 定时中断服务程序 在定时中断服务程序中,每1/40s 产生一次中断,当产生40 次中断的时候,也就到了一秒,送数据到相应的显示缓冲单元

18、,并调用显示子程序实时显示。其程序流程如图4-2 所示。开始中断初始化脉冲计算是否到四十次测量速度返回YN图4-2 定时中断服务程序第三节 键盘服务程序键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦有按键按下,便转向相应的子程序处理,处理结束再返回。六个按键分别对应六个简单的子程序。如果按键S1被按下,则调用第一个子程序:begin_signal标志置1,将s_or_d标志置0;表示单程开始。 如果按键S2被按下,则调用第一个子程序:begin_signal标志置1,将s_or_d标志置1; 表示往返开始。如果按键S3被按下,则调用第一个子程序:begin_si

19、gnal标志置0; 表示暂停。如果按键S4被按下,则调用第一个子程序:pulse_counter标志置0,将t置0; 表示将显示数据清空。如果按键S5被按下,则调用第一个子程序:dispflag标志置1; 表示进入查询界面。如果按键S6被按下,则调用第一个子程序:dispflag标志置0; 表示退出查询界面。 泸州职业技术学院 硬件调试泸州职业技术学院 系统测试第五章 系统测试第一节 硬件调试第一步:目测,检测外部的各元件电路是否有断点。一般先检查有焊接点的线路,因为这些地方是最容易出现断点的可用带放大镜的台灯检查更佳,如图5-1为目测实图。 如图5-1 目测实物图第二步用万用表检测。先用万用

20、表复核目测中有疑问的连接点,在检测各种电源线与底线是否有短路现象。将万用表打在欧姆挡,然后将表笔接在被测线路之间,看实数是否有变化,有则表明导通。如图5-2为万用表测试实物图。 如图5-2 第二节 软件调试软件调试是通过对用户程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。查看程序是否有逻辑错误。如图5-1程序窗口。如图5-1 程序输入窗口如图5-2为程序编译窗口。 如图5-2 程序编译窗口如果信息栏显示没有错误,表明没有语法错误,然后可以生成“*.HEX”文件下载到芯片里,与硬件联合调试。泸州职业技术学院 致谢泸州职业技术学院 结束语结束语经过这些天有关于出租

21、车计价器的课程设计,使我对单片机的应用有了更深的了解。在课程设计的过程中,还是碰到了许多的问题。比如,对于数码管动态扫描显示和键盘的延时防抖的综合编程不能较好地解决;对于代码的前后顺序及调用掌握得还不够好;对于一些相关的应用软件没能熟练掌握。通过这几天晚上的苦想和反复调试,以及参考网上的程序,最终还是没能把问题解决。通过这次课程设计,我最大的收获就是自己的动手能力和独立解决问题的能力得到了很大的提高,也充分体会到了自己设计东西的乐趣、学会查阅资料和对别人的东西融会变通的重要性,也明白了很多知识光靠趴在书本上学是学不到其中的精髓的,必须亲自去试着实践,亲自去经历才能对它们真正的掌握,凡事都要自己

22、去动下手,去实践一下,遇到困难,永远不要沮丧气馁。在动手的过程中,不仅能增强实践能力,而且在理论上可以有更深的认识;这次设计给了我极大的鼓舞和信心,相信在以后的学习中可以通过不断的摸索和实践来提高其他方面的知识。通过本次课程设计,又使我学到了许多书本上无法学到的知识,也使也深该体会到单片机技术应用领域的广泛,不仅使我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的泸州职业技术学院 致谢致谢首先要感谢我的家人,是他们让我能上大学;在大学里,先要学会学习才能学的更好,是老师教了我怎样学习,到现在能完成毕业设计,都少不了老师的功劳;在整个设计过程中,从硬件电路图到软件编程,应用

23、了相当多的知识,包含了大学三年所学的知识,在此向各位任课老师表示感谢。在设计过程中,指导老师李庭贵老师给予了我很大帮助,李老师对设计中出现的问题作了及时讲解和耐心指导,使我的设计得以顺利完成。在此,特向李庭贵老师、何兵老师、等表示感谢;同时,很多同学也给我提供了很多帮助,也向帮助我的同学表示感谢。泸州职业技术学院 附录A附录A 泸州职业技术学院 附录B:程序清单 附录B 程序清单 #include #define uint unsigned int #define uchar unsigned char#define rate 15/脉冲数与里程数的比例 sbit P20=P20; sbit

24、P21=P21; sbit P22=P22; /接 74 LS 138 控制 数码管 sbit pulse_in=P10;bit pulse=1;bit dispflag;uchar num,temp;bit begin_signal;/ 开始标志 bit s_or_d;/单程 还是往返 标志 uint times; / 定时次数 uint pulse_counter;uint record;uint s_temple;uint s,m; /里程数 s 和 金额 m uint t; /等待时间 char baiwei,shiwei,gewei,xiaoshu; char keynum; /键盘

25、 的键值 uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40; /0f and -的字型码(共阴) /声明 区 void delay(uint x); void init();void divide(uint counter);void select(bit a,bit b,bit c);void debouncer(void);uchar keyscan(void);void delay(uint x)/延时 x ms .uint i,j;f

26、or(i=0;ix;i+)for(j=0;j=150;j+);void init() / 定时器初始化 TMOD=0x01;TH0=(65536-25000)/256;/ timer=1/40sTL0=(65536-25000)%256;EA=1;ET0=1;TR0=1;void divide(uint counter)if(dispflag=0) P0=0x00;counter=counter*10/rate;xiaoshu=counter%10;gewei=(counter/10)%10;shiwei=(counter/100)%10;baiwei=(counter/1000)%10;if

27、(counter=30)m=80;elseif(s_or_d=0)m=80+2*(counter-30)+t/300;else m=80+1.5*(counter-30)+t/300;select(1,1,0);/显示里程数目 P0=tablexiaoshu;delay(2); select(0,1,0);P0=tablegewei|0x80;delay(2);select(1,0,0);P0=tableshiwei;delay(2);select(0,0,0);P0=tablebaiwei;delay(2);xiaoshu=m%10;gewei=(m/10)%10;shiwei=(m/100

28、)%10;baiwei=(m/1000)%10;select(1,1,1); /显示 金额数目 P0=tablexiaoshu;delay(2); select(0,1,1);P0=tablegewei|0x80;delay(2);select(1,0,1);P0=tableshiwei;delay(2);select(0,0,1);P0=tablebaiwei;delay(2); else P0=0x00;xiaoshu=t%10;gewei=(t/10)%10;shiwei=(t/100)%10;baiwei=(t/1000)%10;select(1,1,0);/显示 等待时间 P0=ta

29、blexiaoshu;delay(2); select(0,1,0);P0=tablegewei;delay(2);select(1,0,0);P0=tableshiwei;delay(2);select(0,0,0);P0=tablebaiwei;delay(2); void timer0() interrupt 1TH0=(65536-25000)/256;TL0=(65536-25000)%256;if(begin_signal=1)if(pulse_in!=pulse)delay(10);if(pulse_in!=pulse)pulse=pulse;pulse_counter+;if

30、(times=39)/1 s timer completedtimes=0;if(pulse_counter-record)5)/如果 每秒 脉冲小于 5 , 则等待时间 增加 t+;record=pulse_counter;times+;/s_temple=pulse_counter/2;/divide(s_temple);void select(bit a,bit b,bit c)P20=a;P21=b;P22=c;void debouncer(void)/ 防抖动 程序 uint i;for(i=0;i4800;i+);uchar keyscan() P3=0x7f; temp=P3;

31、temp=temp&0x0f;while(temp!=0x0f) delay(10); temp=P3;temp=temp&0x0f; while(temp!=0x0f) temp=P3;switch(temp)case 0x7e:num=1;break;case 0x7d:num=2;break;case 0x7b:num=3;break;case 0x77:num=4;break;while(temp!=0x0f)temp=P3;temp=temp&0x0f; P3=0xbf; temp=P3; temp=temp&0x0f;while(temp!=0x0f)delay(10);temp=

32、P3;temp=temp&0x0f;while(temp!=0x0f)temp=P3; switch(temp)case 0xbe:num=5;break;case 0xbd:num=6;break;case 0xbb:num=7;break;case 0xb7:num=8;break;while(temp!=0x0f)temp=P3;temp=temp&0x0f; P3=0xdf; temp=P3; temp=temp&0x0f;while(temp!=0x0f)delay(10);temp=P3;temp=temp&0x0f;while(temp!=0x0f)temp=P3; switch

33、(temp)case 0xde:num=9;break;case 0xdd:num=10;break;case 0xdb:num=11;break;case 0xd7:num=12;break;while(temp!=0x0f)temp=P3;temp=temp&0x0f; P3=0xef; temp=P3; temp=temp&0x0f;while(temp!=0x0f)delay(10);temp=P3;temp=temp&0x0f;while(temp!=0x0f)temp=P3; switch(temp)case 0xee:num=13;break;case 0xed:num=14;b

34、reak;case 0xeb:num=15; break;case 0xe7:num=16;break;while(temp!=0x0f)temp=P3;temp=temp&0x0f;return num;void singleway(void)/ 单程 开始 函数 begin_signal=1;s_or_d=0;void doubleway(void)/往返 开始 函数 begin_signal=1;s_or_d=1;void pause(void)/暂停 函数 begin_signal=0;void clear(void)/ 清除 函数 pulse_counter=0;t=0;void c

35、heck(void)/ 查询 函数 dispflag=1;void check2(void)/ 查询 函数 dispflag=0;void sentence(void)/ 判定键盘值 if(keynum!=0)switch(keynum)case 1:singleway();break;case 2:doubleway();break;case 3:pause();break;case 4:clear();break;case 5:check();break;case 6:check2();break;main()init();while (1)divide(pulse_counter);ke

36、ynum=keyscan();sentence(); 泸州职业技术学院 参考文献参考文献1 胡汉才.单片机原理及接口技术M.北京:清华大学出版社,1996.2 胡健.单片机原理及接口技术M.北京:机械工业出版社,2004.3 胡健.单片机实用教程M.北京:兵器工业出版社,2001.4 周行慈.单片机应用程序设计基础M.北京:北京航空航天大学出版社,1991.5 李广弟.单片机基础M.修订本,北京:北京航空航天大学出版社,2001.6 李朝青.单片机原理及接口技术M,简明修订版.北京:北京航空航天大学出版社,1999.7 李叶紫.MCS-51单片机应用教程M.北京:清华大学出版社,2004.8 朱定华.单片机原理及接口技术M.北京:电子工业出版社,2001.9 AT89S52芯片资料(译文),Atmel公司.10 实验板资料,学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下进行的研究工作所取得的成果。尽我所知,除文中已经特别注明引用的内容和致谢的地方外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明并表示感谢。本人完全意识到本声明的法律结果由本人承担。学位论文作者(本人签名): 年 月 日学位论文出版授权书本人及导师完全同意中国博士学位论

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1