基于单片机控制的汽车计价器c语言编写.docx
- 文档编号:11620897
- 上传时间:2023-03-28
- 格式:DOCX
- 页数:24
- 大小:1.21MB
基于单片机控制的汽车计价器c语言编写.docx
《基于单片机控制的汽车计价器c语言编写.docx》由会员分享,可在线阅读,更多相关《基于单片机控制的汽车计价器c语言编写.docx(24页珍藏版)》请在冰豆网上搜索。
基于单片机控制的汽车计价器c语言编写
题目:
基于单片机控制的汽车计价器(c语言编写)
时间:
2010-12-30
学号
专业:
班级:
指导教师:
摘要
智能仪器仪表技术是一门集电子技术、单片机技术,自动化仪表、自动控制技术、计算机应用等一体的跨学科的专业技术。
自20世纪90年代初以来,这项技术已逐步引入到国内工科专业中的电子信息、通讯、自动化、计算机应用等信息类专业中。
随着微电子技术和计算机技术的飞速发展,测控仪器仪表的智能化、总线化、网络化发展已在各个相关行业呈现出广阔的发展前景,同时也日益成为工程界和科技界人士所关注的重要问题之一。
因此,了解和熟悉智能仪器仪表的特点功能,发展趋向及其应用前景是十分重要和必要的。
出租车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。
它关系着交易双方的利益。
具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。
因此,汽车计价器的研究也是十分有一个应用价值的。
而采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试,对于模式的切换需要用到机械开关,机械开关时间久了会造成接触不良,功能不易实现。
而采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。
针对计费模式的切换,通过软件编程就可以轻易而举的实现。
避免了机械开关带来的不稳定因素。
关键字:
单片机;出租车计价器;智能仪器;控制
目录
第一章前言4
第二章总体设计方案5
2.1功能要求5
2.2方案选择5
2.2.1数字电路控制5
2.2.2单片机控制6
第三章硬件设计7
3.1AT89S52结构及其功能介绍7
3.1.1AT89S52结构7
3.1.2功能特性描述7
3.2LED硬件介绍11
3.2.1LED功能介绍11
3.2.2LED与单片机接口电路13
3.3整体电路设计图15
第四章软件设计16
4.1主程序设计16
4.2子程序模块设计17
4.2.1键盘扫描程序设计17
4.2.2显示子程序18
4.2.3计算子程序19
4.2.4中断子程序20
第五章总结21
参考文献22
附录A硬件原理图23
附录B源程序24
第一章前言
步入21世纪,出租车已经广泛地出现在我们周围。
随着人们生活水平的不断提高,出租车的使用频率也越来越高,出租车行业也以高质量的服务给人们带来了出行的享受。
但是由于行业的特殊性,出租车行业总存在着买纠纷,困扰着行业的发展。
而在出租车行业中解决这一矛盾的最好方法就是改良计价器,用更加精良的计价器来为乘客提供更加方便快捷的服务。
30年前,我国出现了出租车,但是由于当时的经济水平,出租车并没有普遍在我们生活中出现。
随着改革开放的深入,出租车行业的发展势头已十分突出。
如今出租车在我国的交通运输中承担着重要的角色,出租车计价器是出租车上必不可少的重要仪器,它是负责出租车营运收费的专用智能化仪表。
随着城市旅游业的发展,出租车行业已成为城市的窗口,象征着一个城市的文明程度。
我们都知道,只要出租车开动,随着行驶里程的增加,就会看到汽车前面的计价器里程数字显示的读数从零逐渐增大,而当行驶到某一值时(如4KM)计费数字显示开始从起步价(如6元)增加。
当出租车到达某地需要在那里等候时,司机只要按一下“计时”键,每等候一定时间,计费显示就增加一个该收的等候费用。
汽车继续行驶时,停止计算等候费,继续增加里程计费。
到达目的地,便可按显示的数字收费。
采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试,对于模式的切换需要用到机械开关,机械开关时间久了会造成接触不良,功能不易实现。
为此我们采用了单片机进行设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。
第二章总体设计方案
2.1功能要求
利用单片机的软件编写功能,实现够累计显示总里程数,设定和修改每公里单价起价(如6元),并设定某公里数(如4公里)以后,开始计价。
可以显示总价钱和总公里数的切换可以暂停计价或清零。
再突然掉电后从新开机可以保存掉电以前的数据以保证数据完整。
2.2方案选择
2.2.1数字电路控制
选择数字电路控制系统,其原理方框图如图2-1所示。
采用传感器件,输出脉冲信号,经过放大整形作为移位寄存器的脉冲,实现计价,但是考虑到这种电路过于简单,性能不够稳定,故障率高,难调试,而且电路不够实用。
所以不选择这种方案。
图2-1数字电路方案
2.2.2单片机控制
充分利用单片机丰富的IO端口,及其控制的灵活性,实现基本的里程计价功能,途中等待等不同功能。
通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用后一种方案。
第三章硬件设计
3.1AT89S52结构及其功能介绍
3.1.1AT89S52结构
与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:
0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。
3.1AT89S52引脚图
3.1.2功能特性描述
At89s52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
8位微控制器8K字节在系统可编程FlashAT89S52
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。
在flash编程和校验时,P1口接收低8位地址字节。
引脚号第二功能:
P1.0T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5MOSI(在系统编程用)
P1.6MISO(在系统编程用)
P1.7SCK(在系统编程用)
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。
端口引脚
第二功能
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(外部数据存储器读选通)
AT89C52P3口的第二功能
在flash编程和校验时,P3口也接收一些控制信号。
端口引脚第二功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2INTO(外中断0)
P3.3INT1(外中断1)
P3.4TO(定时/计数器0)
P3.5T1(定时/计数器1)
P3.6WR(外部数据存储器写选通)
P3.7RD(外部数据存储器读选通)
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。
RST——复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
ALE/PROG——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。
FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
3.2LED硬件介绍
3.2.1LED功能介绍
LED是取自LightEmittingDiode三个字的缩写,中文译为“发光二极管”,顾名思义:
发光二极管是一种可以将电能转化为光能的电子器件,具有二极管的特性,基本结构为一块电致发光的半导体芯片,封装在环氧树脂中,通过针脚支架作为正负电极并起到支撑作用。
LED的核心部分是由P型半导体和N型半导体组成的芯片。
LED就是由电子材料,封装材料,辅助材料联结而成的一个发光的闭路电子元件。
LED的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极使整个晶片被环氧树脂封装起来。
半导体晶片由两部分组成,一部分是P型半导体,在它里面空穴占主导地位,另一端是N型半导体,在这边主要是电子。
但这两种半导体连接起来的时候,它们之间就形成一个“P-N结”。
当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED发光的原理。
而光的波长也就是光的颜色,是由形成P-N结的材料决定的。
它是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。
由于具有容易控制、低压直流驱动、组合后色彩表现丰富、使用寿命长等优点,广泛应用于城市各工程中、大屏幕显示系统。
LED可以作为显示屏,在计算机控制下,显示色彩变化万千的视频和图片。
LED是一种电流发光器件,有电流流过它,就发光,无电流流过它,则不发光,流过其中电流大小决定了其发光强度。
发光二极管发光材料的不同,决定了其流过电流后的发光颜色和强度,现已批量生产的有红、绿、兰、黄四种发光二极管。
每种颜色LED按其亮度又分为普亮、高亮和超高度三种。
红、绿、兰为三基色,由此三种颜色可调出自然界中任意颜色。
LED电气特征:
1、LED工作电压一般在2-3.6V之间。
2、LED的工作电流会随着供应电压的变化及环境温度的变化而产生较大的波动,所以LED一般要求工作在恒流驱动状态。
3、LED具有单向道通的特性。
LED优点:
1)光效率高:
光谱几乎全部集中于可见光频率,效率可以达到50%以上。
而光效差不多的白炽灯可见光效率仅为10%-20%。
2)光线质量高:
由于光谱中没有紫外线和红外线,故没有热量,没有辐射,属于典型的绿色照明光源。
3)能耗小:
单体功率一般在0.05-1w,通过集群方式可以量体裁衣地满足不同的需要,浪费很少。
以其作为光源,在同样亮度下耗电量仅为普通白炽灯的1/8-10。
4)寿命长:
光通量衰减到70%的标准寿命是10万小时。
一个半导体灯正常情况下可以使用50年,即使长命百岁的人,一生最多也就用2只灯。
5)可靠耐用:
没有钨丝、玻壳等容易损坏的部件,非正常报废率很小,维护费用极为低廉。
6)应用灵活:
体积小,可以平面封装,易开发成轻薄短小的产品,做成点、线、面各种形式的具体应用产品。
7)安全:
单位工作电压大致在1.5-5v之间。
图3.1LED和LCD的显示板
图3.2LED动、静态显示
3.2.2LED与单片机接口电路
LED与单片机的接口电路:
3.3整体电路设计图
第四章软件设计
本系统的软件设计主要可分为主程序模块、里程计数中断服务程序、金额计算子程序,显示子程序、键盘扫描子程序五大模块。
在主程序中对各子程序模块按照相应的条件进行调用即可实现基本的功能要求。
下面对各部分模块作介绍。
4.1主程序设计
主程序中通过循环判断是否等待计价和车轮计数进行总体计价的实现。
在等计
价中,调用等待计价子程序,每4秒调用计数子程序对计数器加1,在车轮计数中,
车轮每转过1周调用计数子程序对计数器加1。
通过计数器中的累加值,判断数值
并调用显示。
4.1主程序流程图
4.2子程序模块设计
4.2.1键盘扫描程序设计
键盘扫描子程序不断对S0,S1,S2,S3四个键扫描。
当S0按下时,进行复位动作;S3按一下显示单价,此时按下S1单价加,按下S2单价减;S3按两下显示起步价,此时此时按下S1起步价加,按下S2起步价减;S3按三下显示车轮半径,此时此时按下S1半径加,按下S2半径减;再按一下S3,又回到里程和总金额的显示。
程序流程图如图4.2.1所示。
4.2.1键盘扫描程序流程图
4.2.2显示子程序
它包括对所显示数据的显示位置的确定及要显示数据的处理;此模块一直被执行,以便对要显示的数据不断地更新。
4.2.2显示子程序流程图
4.2.3计算子程序
将根据当前所行里程是否大于3公里来计算总金额。
如果当前里程小于3公里,总金额等于起步价;如果当前里程大于3公里,总金额就等于起步价再加上单价乘以3公里以外的里程数。
4.2.3计算子程序流程图
4.2.4中断子程序
每当霍尔传感器输出一个低电平信号就使单片机中断一次,圈数计数器对里程脉冲计一次时,使微机进入里程计数中断服务程序中。
在该程序中,需要完成当前行驶里程数的累加操作,并将结果存入里程寄存器中。
4.2.4中断子程序流程图
第五章总结
漫长而短暂的几周课程设计终于落下帷幕,说是漫长是因为本次课程设计是我们在大学以来历时最长,设计内容最多的一次。
我们从选定题目,在老师的帮助下分析题目,又通过网络、图书馆以及同学们的互相沟通以及老师的讲解各种手段获取中间所需的知识,先不说我们从中得到的知识是不能用数字所描述的,就这种共同钻研一起想办法获取知识的过程就是我们一生中重要的历练。
我们在设计中得到知识,也看到自己的渺小,越是到后来越是觉得自己知道还是冰山一角,这仅仅是一个不能通入生产概念上的小产品却弄的我们焦头烂额。
现在正是我们找工作马上步入社会的关键时候,但是面对一个简单的单片机应用程序我们感到的是无助,我们感觉自己的知识储备还是远远的不够,在学校和这个课程设计的时间也是远远的不够用的,所以说这个课程设计又是短暂的。
在几周的设计中我们加深了对单片机应用以及C51语言的学习和熟悉,但这也仅仅是一方面,我们了解了行业对产品的要求,不仅仅是实现更多的功能体现强大的作用就可以,要使一个单片机投入生产变成人们接受的产品需要功能与成本相结合,体现产品的便捷、安全、经济、实用是一个成熟产品的必要条件。
几周中老师不仅仅对我们这个简单的课题进行讲解,还结合自己的经历对行业的发展与现今行业内对我们的要求进行了推心置腹的交谈。
几周中我们获得的经验不仅是对我们下学期毕业设计的一个预热,他对我们这一生也是一个重要的一页。
感谢老师以及所有在设计中对我教导、帮助、批评的所有人。
我想有了这次经历,我面对以后的生活学习一定会用最好的方法勇敢面对。
参考文献
[1]张友德赵志英涂时亮编单片微型机原理、应用与实验上海:
复旦大学出版社2005.12全书
[2]江太辉•MCS—51系列单片机原理与应用.广州:
华南理工出版社,2004
[3]周航慈•单片机程序设计基础.北京:
北京航空航天大学出版社,2003
[4]李道华•传感器电路分析与设计.武汉:
武汉大学出版社,2003
[5]沙占友·智能化集成温度传感器原理与应用.北京机械工业出版社,2002
[6]高云华,刘保彬,Proteus仿真软件在单片机教学中的应用[J].中国科技信息,2010,(01):
199-200
[7]杨继生,刘芬,霍尔传感器A44E在车轮测速中的应用研究[J].电子测量技术,2009,(10).
[8]宋庆军,智能车速里程表的单片机实现[J].机电产品开发与创新,2006,(04).
[9]路国庆,脉冲检测方法的霍尔传感器在里程表中的应用[J],机械设计与制造2009,(01).
[10]冯建勤,新型车速里程表与出租车计价器检定系统的研制[J],郑州轻工业学院学报(自然科学版),2009,(05).
[11]浅谈智能仪器及其发展趋势王平硅谷—2010年4期
[12]王迎旭.单片机原理与应用[J].北京.机械工业出版社.20042.7
[13]徐科军.自动检测和仪表中的共性技术[J].清华大学出版.2002
附录A硬件原理图
附录B源程序
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitDAT=P1^0;
sbitCLK=P1^1;
sbitK1=P1^4;//清零
sbitK2=P1^5;//+
sbitK3=P1^6;//-
sbitK4=P1^7;//功能键
uintqs,licheng_,zongjine_,danjia_,aa;//用来显
floatlicheng,danjia,zongjine,qibu;
ucharcodetab[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x00};//0-9,-,全灭(共阳字段表)
ucharcodetab_[]={0xfd,0x61,0xdb,0xf3,0x67,0xb7,0xbf,0xe1,0xff,0xf7,0xef,0x01};
voiddelay(uintt)
{
uinti,j;
for(i=0;i for(j=0;j<110;j++); } voidsendbyte(ucharbyte) { ucharnum,c; num=tab[byte]; for(c=0;c<8;c++) { CLK=0; DAT=num&0x01;//(0x80即十进制的128,二进制的10000000按位发送) CLK=1; num>>=1; } } voidsendbyte_(ucharbyte) { ucharnum,c; num=tab_[byte]; for(c=0;c<8;c++) { CLK=0; DAT=num&0x01;//(0x80即十进制的128,二进制的10000000按位发送) CLK=1; num>>=1; } } voiddisplay_licheng(void) {unsignedchari,t[4]; licheng_=licheng*10; t[0]=licheng_/1000%10; t[1]=licheng_/100%10; t[2]=licheng_/10%10; t[3]=licheng_%10; for(i=0;i<4;i++) { if(i==2) sendbyte_(t[i]); else sendbyte(t[i]); } delay(100); } voiddisplay_zongjine(void) { unsignedchari,t[4]; zongjine_=zongjine*10; t[0]=zongjine_/1000%10; t[1]=zongjine_/100%10; t[2]=zongjine_/10%10; t[3]=zongjine_%10; for(i=0;i<4;i++) { if(i==2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 控制 汽车 计价器 语言 编写