基于单片机的出租车计费器的论文正文大学学位论文.docx
- 文档编号:11800472
- 上传时间:2023-04-02
- 格式:DOCX
- 页数:25
- 大小:203.35KB
基于单片机的出租车计费器的论文正文大学学位论文.docx
《基于单片机的出租车计费器的论文正文大学学位论文.docx》由会员分享,可在线阅读,更多相关《基于单片机的出租车计费器的论文正文大学学位论文.docx(25页珍藏版)》请在冰豆网上搜索。
基于单片机的出租车计费器的论文正文大学学位论文
基于单片机出租车计费器的设计
题目基于单片机的出租车计价器
学生
指导教师王旭辉
年级2012级
专业电子信息工程
二级学院信息工程学院
邯郸学院信息工程学院
2015年1月
目录
摘要2
ABSTRACT3
1课程设计任务书4
1.1课程设计任务4
1.2课程设计方案4
2硬件电路设计6
2.1振荡电路6
2.2复位电路设计6
2.3键盘接口电路7
2.4显示电路7
2.4.11602LCD的基本参数及引脚功能7
2.4.2显示模块采用1602液晶显示接口电路9
2.5单片机各引脚功能说明9
3软件设计11
3.1单片机资源使用11
3.2单片机软件模块设计12
3.2.1中断子函数12
3.2.2判键子函数12
3.2.3显示子程序13
3.3总程序流程框图14
总结15
参考文献16
致谢17
附录1元件件清单18
附录2原理图19
附录3程序清单20
基于单片机的出租车计价器
1引言
随着现代经济飞速的发展,人民生活水平的提高,越来越多的居民为了方便的出行,大都会选择乘坐出租车出行,而且随着科学技术的前进,各种各样的打车软件相继出现,例如滴滴打车软件等,都更加方便了生活,人们为了高效率的活动也更倾向于打车,于是了解出租车必备设备计价器成了人们的兴趣,这可以使我们了解其原理,避免出现被多要费用等情况的出现。
本课题采用STC89C52单片机进行设计,其中用按键来实现轮胎转圈行驶的里程数、显示模式的切换、时钟的调整、等待时间的增加等功能,使用DS1302进行计时,LCD1602液晶显示屏显示,使用芯片at24C02进行内容存储,使用Keil编程软件编写程序,实现了路程清零、里程数增加及路程和费用的显示、时间的加减调整、显示内容的切换等功能。
主要研究步骤如下:
(1)熟悉STC89C52rc单片机及其最小系统与开发环境;
(2)将所需器件按照原理图进行焊接
(3)在Keil中编写程序
(4)将程序下载到单片机中,进行测试和调试。
2背景
2.1选题背景
我国在70年代开始出现出租车,但那时的计费系统大都是国外进口,不但不准确,而且价格还十分昂贵。
随着改革开放日益深入,出租车行业的发展势头已经十分突出,国内各机械厂家纷纷推出国产计价器。
出租车计价器的功能从刚开始的只显示路程(需要司机自己定价,计算后四舍五入),到能够自主计费。
随着城市旅游业的发展,出租车行业已成为城市的窗口,象征着一个城市的文明程度。
现在各大中城市出租车行业都已经普及自动计价器,所以计价器技术的发展已成定局。
随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,而计价器的普及也是毫无疑问,所以未来汽车计价器的市场十分有潜力。
2.2选题目的及意义
出租车时城市交通的重要组成部分,行业健康和发展也获得越来越多的关注。
出租车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。
它关系着交易双方的利益。
具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。
因此,出租车计价器的研究的研究也是十分有应用价值的。
3设计要求
基于单片机出租车模拟计价器,采用at24c02存储芯片+LCD1602液晶显示等设计而成。
用24c02来存储单价,通过按键来模拟增加里程,模拟出租车向前开。
通过液晶显示器显示当前的行驶状态、行驶公里、行驶时间时间(时、分、秒)、费用、单价、等信息。
可以设置每公里单价,以及夜间单价和白天单价的不同模式,设置后掉电无需重新设置,设置有等待/继续计时模式。
计费分行走的里程*单价+等待的时间*价格。
3.1系统功能
(1)k1:
开启显示屏,模式选择。
模式一:
无人状态下,显示时间和单价;模式二:
等待时间显示,模式三:
显示时分秒和年月日。
(2)k2:
调整时钟
(3)k3:
在模式二中表示等待时间开始和暂停;在模式三中表示调整位的自减。
(4)k4:
在模式三中表示调整位的自加。
(5)k5:
在模式一中表示里程自加,每按下一次表示里程加0.1K。
(6)k6:
乘客下车后里程清零。
4课程方案论证
4.1方案一:
采用数字电子技术,利用555定时芯片构成多谐振荡器,或采用外围的晶振电路作为时钟脉冲信号,采用计数芯片对脉冲尽心脉冲的计数和分频,最后通过译码电路对数据进行译码,将译码所得的数据送给数码管显示,一下是该方案的流程框图,方案一如图4.1所示:
图4.1方案一
4.2方案二
采用EDA技术,根据层次化设计理论,该设计问题自顶向下可分为分频模块,控制模块计量模块、译码和动态扫描显示模块,其系统框图如图4.2所示:
图4.2方案二
4.3方案三
采用MCU技术,通过单片机作为主控器,利用1602字符液晶作为显示电路,采用外部晶振作为时钟脉冲,通过按键可以方便调节,一下是方案三的系统流程图,本方案主要是必须对于数字电路比较熟悉,成本又高。
方案图如图4.3所示:
图4.3方案三
图4.3方案三
4.4方案选择
通过各个方案的比较本次采用方案三,不但控制简单,而且成本低廉,设计电路简单。
5硬件电路设计
5.1振荡电路
单片机内部有一个高增益、反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。
通过这两个引脚在芯片外并接石英晶体振荡器和两只电容(电容和一般取30pF)。
这样就构成一个稳定的自激振荡器。
振荡电路脉冲经过二分频后作为系统的时钟信号,再在二分频的基础上三分频产生ALE信号,此时得到的信号时机器周期信号。
振荡电路如图5.1所示:
图5.1振荡电路
5.2复位电路设计
复位操作有两种基本形式:
一种是上电复位,另一种是按键复位。
按键复位具有上电复位功能外,若要复位,只要按图中的RESET键,电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平。
上电复位电路要求接通电源后,通过外部电容充电来实现单片机自动复位操作。
上电瞬间RESET引脚获得高电平,随着电容的充电,RERST引脚的高电平将逐渐下降。
RERST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。
按键复位电路图如图2.2所示。
图5.2复位电路
5.3键盘接口电路
(1)独立式键盘:
独立式键盘中,每个按键占用一根I/O口线,每个按键电路相对独立。
I/O口通过按键与地相连,I/O口有上拉电阻,无键按下时,引脚端为高电平,有键按下时,引脚电平被拉低。
I/O口内部有上拉电阻时,外部可不接上拉电阻。
键盘接口电路如图2.3所示:
图5.3键盘接口电路
5.4显示电路
5.4.11602LCD的基本参数及引脚功能
1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如图10所示。
图10LM016L结构图
LCD1602主要技术参数:
容量:
16×2个字符
芯片工作电压:
4.5—5.5V
工作电流:
2.0mA(5.0V)
模块最佳工作电压:
5.0V
字符尺寸:
2.95×4.35(W×H)mm
引脚功能说明:
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表1所示:
表1引脚接口说明表
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
数据
3
VL
液晶显示偏压
11
D4
数据
4
RS
数据/命令选择
12
D5
数据
5
R/W
读/写选择
13
D6
数据
6
E
使能信号
14
D7
数据
7
D0
数据
15
BLA
背光源正极
8
D1
数据
16
BLK
背光源负极
第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
背光源正极。
第16脚:
背光源负极。
5.4.2显示模块采用1602液晶显示接口电路
图5.4显示电路
5.5单片机各引脚功能说明
下面对STC89C52各引脚的功能进行较为详细的介绍:
1)电源引脚Vcc和Vss
Vcc(40脚):
电源端为+5VVss(20脚):
接地端。
2)时钟电路引脚XTAL1和XTAL2
XTAL2(18脚):
接外部晶体和微调电容的一端。
在单片机内部它是振荡电路反向放大器的输出端,振荡电路的频率就是晶体固有频率。
若需采用外部时针电路时,该引脚输入外时钟脉冲。
要检查89C52的振荡电路是否正常工作,可用示波器查看XTAL2端是否有脉冲信号输出。
XTAL1(19脚):
接外部晶体和微调电容的另一端。
在片内,它是振荡电路反向放大器的输入端。
在采用外部时钟时,该引脚必须接地。
3)控制信号脚RSTALEPSEN和EA。
RST(9脚):
RST是复位信号输入端,高电平有效。
在此输入端保持两个机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。
ALE/PROG(30引脚):
地址锁存允许信号端。
当STC89C52上电正常工作后,ALE引脚不断向外输出正脉冲信号。
此频率为振荡器频率fosc的1/6,当CPU访问片外存储器时,ALE输出信号作为锁存低8位地址的控制信号。
在CPU访问片外数据存储时,每取值一次(一个机器周期)会丢失一个脉冲。
平时不访问片外存储时,ALE端也以1/6的振荡频率固定输出正脉冲,因而ALE信号可以用作对外输出时钟或定时信号。
如果你想看一下STC89C52芯片的好坏,可用示波器查看ALE端是否有脉冲信号输出,如有脉冲信号输出,则STC89C52基本上是好的。
ALE的负载驱动能力为8个LS型TTL(低功耗高速TTL)。
PSEN(29脚);程序存储允许输出信号引脚,在访问片外程序存储器时,此端定时输出负脉冲作为读片外存储器的选通信号。
此引脚接ERROM的OE端。
PSEN端有效,即允许读出ERROM/ROM中的指令码。
CPU在从外部ERROM/ROM取指令期间,每个周期PSEN两次有效。
不过,在访问片外RAM时,要少产生两次PSEN负脉冲信号。
要检查一个STC89C52小系统上电后CPU能否正常到ERROM/ROM中读取指令码,也可用于示波器看PSEN端有无脉冲输出。
如有,说明基本上工作正常。
EA/VPP(31脚):
外部程序存储器地址允许输入端/固化编程电压输入端。
当EA引脚接高电平时,CPU只访问片内ERROM/ROM并执行内部程序存储器中的指令。
但在PC(程序计数器)的值超过OFFFH(对8751/8051为4k)时,将自动转向执行片外存储器的程序。
当出入信号EA引脚接低电平(接地)时,CPU只访问外部ERROM/ROM并执行外部程序存储器中的指令,而不管是否有片内程序存储器。
对于无芯片内的ROM的8031或8032,须外扩ERROM,此时必须将EA引脚接地。
如果使用有片内ROM的STC89C52,外扩ERROM也是可以的,但也要使EA接地。
4)I/O(输入/输出端口,P0,P1,P2,P3)
P0口:
P0口是一个漏极开路的8位准双向I/O端口。
P1口:
8位准双向I/O端口。
P2口:
即可以做地址总线输出地址高8位,也可以做普通I/O用,(此时为准双向口)。
P3口:
双功能口,即可以做普通I/O口用(此时为准向口,也可以按每位定义实现第二功能操作)。
见表1。
引脚
第二功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
INT0(外部中断0)
P3.3
INT1(外部中断1)
P3.4
T0(定时器0外部中断)
P3.5
T1(定时器1外部中断)
P3.6
WR(外部存储器写选通)
P3.7
RD(外部存储器读写通)
表1P3口的第二功能表
6软件设计
6.1单片机资源使用
在本次设计中像电路键盘用到了P2口,其中P2.0到P2.5口作为键盘的输
入,显示电路用到了P1和P3口,P1口为液晶的数据口。
6.2单片机软件模块设计
6.2.1中断子函数
对于中断程序,只要定时器计数满就会产生中断50ms中断一次,共计20次,秒钟加1,秒钟计满再分钟加,当分钟加到99时全部清零。
以下是中断子函数的流程图如图6.1所示:
图3.1中断子程序流程图
图6.1
6.2.2判键子函数
对于独立式键盘判键,首先看有键按下不,如果有键按下则延时一会儿,在判断是否真的有键按下,如果确实有键按下,在判键释放,最后执行键功能程序。
判键子函数的流程框图如图6.2所示:
图6.2判键子程序流程图
6.2.3显示子程序
1602液晶是字符型液晶,它的内部自带字符库,它可以写两行的字符,同时每行可以写40个字符,在写显示程序的时候,我们先写命令,再设定字符显示,最后写数据,在每写一次命令或数据都需要判断液晶是否忙。
液晶显示程序流程图如图6.3所示:
3.3显示子程序流程图
图6.3
6.3总程序流程框图
整体程序的流程框图如图6.4所示:
图3.4整体程序的流程框图
总结
图6.4
7测试
8结论
出租车计费器系统的设计已经全部完成,能按预期的效果进行模拟汽车启动,停止,暂停等功能,并能够通过LCD显示车费数目。
本款出租车计价器包括单价输出、单价调整、显示当前的系统时间等功能。
另外,多功能出租车计价器还具有性能可靠、电路简单、成本低、实用性强等特点,加上经过优化的程序,使其有很高的智能化水平。
几个月来,经过自己努力,基本上完成了设计要求的内容,在系统可行性分析、原理图设计等方面都作了许多实际工作,取得了一些成绩,同时也遇到了一些问题,存在一些不足。
经过这几个月的学习和工作,我觉得自己不论是在理论知识方面还是在动手能力方面都有了不小的进步,自己从中受益匪浅。
这次设计很好的把以前学到的理论知识应用于实践,使我认识到理论知识与实践之间有一定的差距,只有通过不断的努力学习和实践才能很好的把理论知识应用到实践当中,也只有通过不断的实践才能对理论知识的理解。
通过这次设计不仅学会了如何去查找相关资料,更重要的是通过查找资料和翻阅书籍学到了不少知识,扩大了知识面,提高了知识水平。
经过单元设计和系统设计巩固了以前所学的专业知识,自己真正认识到理论联系实际的重要性,为以后的学习和工作提供了很多有价值的经验。
通过这次设计不仅增强了自己的动脑能力和动手能力,也提高了我思考问题、分析问题、解决问题的能力,更重要的是学会用工程化的思想来解决问题。
这在以前的学习过程中是不曾学到的。
在短短的三个月时间内完成设计内容,在很大程度上得益于老师的帮助。
这次设计是我认真认识到完整、严谨、科学分析问题、解决问题的思想是多么的重要,只有拥有了科学的态度才能设计出有用的产品。
另外通过本次设计,是我认识到自己理论知识的应用能力有很大的欠缺,需要在以后的学习中进一步提高。
参考文献
[1]李广弟,朱月秀,冷祖祁.单片机基础[M].第3版.北京航空航天大学出版社,2007年1月
[2]李华.MCS-51系列单片机实用接口技术[M].北京航空航天大学出版社,1996
[3]马忠梅,张凯,马岩,单片机的C语言应用程序设计,[M],北京:
北京航空航天大学出版社,2003.11;
[4]胡辉,单片机原理及应用设计—21世纪高等院校规划教材[M],水利水电出版社,2005.7;
[5]刘守义,单片机应用技术[M],西安:
西安电子科技大学出版社,1996.8;
附录:
致谢
本论文是在何淑珍老师的悉心指导下完成的,何老师的渊博学识和丰富经验给我留下了深刻的印象。
从何老师那里我学到的不仅是专业知识与实际问题科学解决的方法,更为重要的是勤奋和严谨治学的精神以及对学生的认真负责,老师的谆谆教诲使我受益匪浅,在此向何老师表示衷心的感谢并致以崇高的敬意!
感谢家人给予我学业上和生活上的支持与照顾。
同时感谢给予我帮助的各位老师、同学以及朋友们!
附录1元件件清单
表5.1元器件清单
名称
规格
数量
备注
电阻
200
1个
1K
1个
10K
5个
100
2个
电容
20pF
2个
10μF
2个
极性电容
发光二极管
3个
按键
7个
直流电机
1个
晶振
12MHz
1个
芯片
STC89C52
1块
1602液晶
1块
内带字符库
附录2原理图
附录3程序清单
#include
#defineucharunsignedchar//无符号字符型宏定义变量范围0~255
#defineuintunsignedint//无符号整型宏定义变量范围0~65535
ucharmiao,fen=0,shi;
ucharflag_bai_hei;//白天的晚上的标志位
ucharvalue;
uintbai_3l_price=60;//白天3千米内的单价6元
uintbai_3w_price=18;//白天3千米外的单价/千米1.8元
uintbai_wait_price=5;//白天等待时的单价/分钟0.5元
uintwan_3l_price=70;//晚上3千米内的单价/千米7元
uintwan_3w_price=22;//晚上3千米外的单价/千米2.2元
uintwan_wait_price=10;//晚上等待时的单价/分钟1元
uintdistance=0;//行使的距离
uintzong_jia;//总的价
bitflag_300ms=0;
bitflag_1s;
bitflag_time_en=0;
#include"lcd1602.h"
/***********************1ms延时函数*****************************/
voiddelay_1ms(uintq)
{
uinti,j;
for(i=0;i for(j=0;j<120;j++); } #include"iic.h" voidwrite_iic_data() { write_24c02(0,flag_bai_hei); write_24c02(1,bai_3l_price%256);//保存数据 write_24c02(2,bai_3l_price/256);//保存数据 write_24c02(3,bai_3w_price%256);//保存数据 write_24c02(4,bai_3w_price/256);//保存数据 write_24c02(5,bai_wait_price%256);//保存数据 write_24c02(6,bai_wait_price/256);//保存数据 write_24c02(7,wan_3l_price%256);//保存数据 write_24c02(8,wan_3l_price/256);//保存数据 write_24c02(9,wan_3w_price%256);//保存数据 write_24c02(10,wan_3w_price/256);//保存数据 write_24c02(11,wan_wait_price%256);//保存数据 write_24c02(12,wan_wait_price/256);//保存数据 } /****************自动初始化保存的数据*******************/ voidzidong_chushifa_iic() { value=read_24c02(200); value=read_24c02(200); if(value! =0x91)//新的单片机初始单片机内问EEPOM { value=0x91; write_iic_data(); write_24c02(200,value);//保存数据 } delay_1ms(300); } /****************读出来保存的数据**********************/ voidread_iic_data() { flag_bai_hei=read_24c02(0); bai_3l_price=read_24c02 (2); bai_3l_price=bai_3l_price*256+read_24c02 (1); bai_3w_price=read_24c02(4); bai_3w_price=bai_3w_price*256+read_24c02(3); bai_wait_price=read_24c02(6); bai_wait_price=bai_wait_price*256+read_24c02(5); wan_3l_price=read_24c02(8); wan_3l_price=wan_3l_price*256+read_24c02(7); wan_3w_price=read_24c02(10); wan_3w_price=wan_3w_price*256+read_24c02(9); wan_wait_price=read_24c02(12); wan_wait_price=wan_wait_price*256+read_24c02(11); } /****************独立按键处理函数************************/ #definekey_ioP2 ucharkey_can; voidkey() { staticucharkey_new=0,key_old=0,key_value=0; key_io|=0x3f; if(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 出租车 计费 论文 正文 大学 学位
![提示](https://static.bdocx.com/images/bang_tan.gif)