出租车计价器的设计.doc
《出租车计价器的设计.doc》由会员分享,可在线阅读,更多相关《出租车计价器的设计.doc(45页珍藏版)》请在咨信网上搜索。
太原工业学院毕业设计(论文) 1 绪论 1.1 课题背景 出租车行业在我国是八十年代初兴起的一项新兴行业,随着我国国民经济的高速发展,出租汽车已成为城市公共交通的重要组成部分。多年来国内普遍使用的计价器只具备单一的计量功能。目前全世界的计价器中有90%为台湾所生产。现今我国生产计价器的企业有上百家,主要是集中在北京,上海,沈阳和广州等地。出租汽车计价器是一种专用的计量仪器,它安装在出租汽车上,能连续累加,并指示出行程中任一时刻乘客应付费用的总数,其金额值是里程和计时时间的函数。 随着我国经济水平的提高以及汽车技术的发展,出租车也呈现出日益高档化的趋势。为了配合高档出租车的内饰风格,提升出租车的整体形象。更重要的目的是提高行业管理水平,减少司机与乘客人员之间的纠纷。因而性能优良的出租车计价器对本行业来说尤为重要。 现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。而部分小城市尚未普及,但随着城市建设的加快,象征着城市面貌的出租车行业也将加速发展,计价器的普及也是毫无疑问的,所以未来计价器的市场还是十分有潜力的。 采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试,对于模式的切换需要用到机械开关,机械开关时间久了会造成接触不良,功能不易实现。为此我们采用了单片机进行设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。 我们知道,只要乘坐的出租车启动,随着行驶里程的增加,就会看到司机旁边的计价器里程数字显示的读数从零逐渐增大,而当行驶到某一值时(如3km)计费数字显示开始从起步价(如8元)增加。当中途需要等待,等待时间超过5分钟时按走一公里的里程来计价。当乘客到站时,按下停止按键,计费数字显示总里程和总金额,它可以很直观的反映乘客使用情况。 1.2 设计目的与要求 1.2.1 设计目的 毕业设计是将理论与实践相结合的教学环节,通过综合运用教材及其他资料,使所学知识得到进一步加深和扩展,同时还培养设计能力和解决实际问题能力,进行基本技能的训练。 本设计的目的: (1)进一步熟练Proteus、KeilC等软件的操作。 (2)以AT89S52单片机为中心、采用A44E霍尔传感器测距,实现对出租车里程统计,进行计价。 (3)本电路设计的计价器不但能实现计价功能,而且还能实现中途等待处理功能。 1.2.2 主要设计内容及基本要求 (1)设计内容:本电路以AT89S52单片机为中心、采用A44E 霍尔传感器测距,设计简单的出租车计价器。在出租车计价器的设计过程中,我们设计了出租车计价器的硬件、软件以及在汽车内的安装设计。其中主要的外围功能电路有:按键控制电路,时钟电路,复位电路,LCD液晶显示电路,霍尔传感器等。 (2)设计要求:通过对以上各功能的设计,制作出的出租车计价器应具有以下功能:设计的计价器不但能实现计价功能,而且还能实现中途等待处理;上电时显示祝福词,通过按下启动按键来开始计价,LCD液晶开始显示消费金额和行驶里程;按下模拟开关按键(相当于霍尔传感器)来产生一个脉冲信号,模拟行驶的里程,LCD液晶数开始显示所走里程和应付的金额,并不断计算;按下停止按键,停止计费,LCD液晶显示所走里程和乘客所需付总金额结束此次服务。 1.3 论文主要工作概述 (1)了解题目的背景; (2)明确系统的方案选择,查阅相关资料明确设计要求; (3)依据设计要求选择合适的控制器; (4)学习相关芯片; (5)设计原理框图; (6)在Proteus制作对应的硬件系统; (7)测试每部分硬件系统的正确性; (8)绘制程序流程图; (9)编译程序并在Keil C中调试; (10)在Proteus环境下进行仿真测试直到成功。 2 系统硬件设计 2.1 方案选择 主控电路的选择 方案一:采用数字电路控制。将传感器输出的脉冲信号,经过放大整形作为移位寄存器的脉冲,实现计价,但是考虑到这种电路过于简单,性能不够稳定,而且不能调节单价,电路不够使用。 方案二:采用单片机控制。利用单片机丰富的I/O端口,以及控制的灵活性,实现基本的里程计价功能和价格调节。这种设计价格便宜,可扩展的功能强大,人机界面丰富[1]。 2.2 系统框图 如图2.1为出租车计价器的整个设计框图,主要由五部分电路组成:主控部分、显示部分、传感器部分、输入部分、其他部分。 AT89S52单片机 复位电路 时钟电路 显示总里程 和总价格 霍尔传感器 (模拟开关) 按键控制 图2.1出租车计价器系统框图 (1) 主控部分 控制器不仅是处理数据的核心部位,而且还是控制各部分如何工作的部件。这一部分我们选用的是AT89S52单片机。 (2) 显示部分 显示器件是直接接触乘客的器件,这一部分的好坏给乘客的印象最深刻,因此这一部分是提升品质的部分。我们选用的是1602液晶。 (3) 传感器部分 传感器部分是公平的源头,如果传感器不稳定直接导致计价的不准。这样很容易引起司机与乘客之间的纠纷。因而传感器的设计选择尤为重要。 (4) 输入部分 输入部分较上面两个部分来说较为简单和次要,输入部分主要是完成计价开始与结束的功能。 (5) 其他部分 其他部分主要是指器件的连接部分中间环节等。 2.3 硬件电路设计 本设计硬件组成主要包括:AT89S52单片机、显示电路、复位电路、时钟电路、按键电路、A44E霍尔传感器。 2.3.1 AT89S52主要性能参数 (1)与MCS-51单片机产品兼容 (2)8K字节在系统可编程Flash闪速存储器 (3)1000次擦写周期 (4)全静态操作:0Hz~24MHz (5)三级加密程序存储器 (6)32个可编程I/O口线 (7)三个16位定时器/计数器 (8)八个中断源 (9)全双工UART串行通道 (10)低功耗空闲和掉电模式 (11)掉电后中断可唤醒 (12)看门狗定时器 (13)双数据指针 (14)掉电标识符 2.3.2 AT89S52 功能特性概述 AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于党规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 (1) AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位 I/O 口线。如图2.2AT89S52引脚图,看门狗定时器,2 个数据指针,三个 16 位定时器/计 图2.2 AT89S52引脚图 数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至 0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结单片机一切工作停止,直到下一个中断或硬件复位为止。 (2) AT89S52的内部组成 AT89S52内部有8个部件组成,即CPU、时钟电路、数据存储器、串行口、并行口(P0~P3)、定时计数器和中断系统,它们均由单一总线连接并被集成在一块半导体芯片上,即组成了单片微型计算机,AT89S52就是MCS-51系列单片机中的一种。如图2.3。 串行接口 中断系统 并行接口 定时/计数器 RAM 时钟电路路 ROM CPU 部分 T0 T1 T2 P0 P1P2P3 T R 图2.3 单片机组成框图 ① CPU中央处理器 中央处理器是AT89S52的核心,它的功能是产生控制信号,把数据从存储器或输入口送到CPU,或将CPU数据写入存储器或送到输出端口。还可以对数据进行逻辑和算术的运算。 ② 时钟电路 AT89S52内部有一个频率最大为33MHz的时钟电路,它为单片机产生时钟序列,但需要外接石英晶体做振荡器和微调电容调整频率。 ③ 内存 内部存储器可分做程序存储器和数据存储器,AT89S52内部集成了8K的ROM和256RAM 。 ④ 定时/计数器 AT89S52有两个16位的定时计数器,每个定时器和计数器都可以设置成定时的方式和计数的方式,但只能用其中的一个功能,以定时或计数结果对计算机进行控制。 ⑤ 并行I/O口 MCS-51有四个8位的并行I/O口,P0,P1,P2,P3,以实现数据的并行输入输出。 ⑥ 串行口 它有一个全双工的串行口,它可以实现计算机间或单片机同其它外设之间的通信,该串行口功能较强,可以作为全双工异步通讯的收发器,也可以作为同步移位器用。 ⑦ 中断控制系统 AT89S52有六个中断源,既外部中断两个,定时计数器中断三个,另外还有一个串行中断,全部的中断分为高和低的两个输出级。 (3) AT89S52管脚介绍 AT89S52的制作工艺为HMOS,采用40管脚双列直插式DIP封装参见图2.2引脚说明如下: VCC:电源。 GND:接地。 P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。 当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。 在 flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。 P1 口:P1 口是一个具有内部上拉电阻的 8 位双向 I/O 口,P1 输出缓冲器能驱动 4 个TTL 逻辑电平。对 P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。 此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表2.1所示。 在flash编程和校验时,P1口接收低8位地址字节。 表2.1 引脚号 第二功能 P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出 P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制) P1.5 MOSI(在系统编程用) P1.6 MISO(在系统编程用) P1.7 SCK (在系统编程用) 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特殊功能(第二功能)使用,如下表2.2所示。 在flash编程和校验时,P3口也接收一些控制信号。 RET:复位输入。晶振工作时,RST脚持续2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出 96 个晶振周期的高电平。特殊寄存器 AUXR(地址 8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。 :地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低 8 位地址的输出脉冲。在flash编程时,此引脚()也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。 如果需要,通过将地址为8EH的SFR的第0位置 “1”,ALE操作将无效。这一位置 “1”,ALE仅在执行 MOVX 或MOVC指令时有效。否则,ALE将被微弱拉高。这个 ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。 表2.2 引脚号 第二功能 P3.0 RXD(串行输入) P3.1 TXD(串行输出) P3.2 (外部中断0) P3.3 (外部中断1) P3.4 T0(定时器0外部输入) P3.5 T1(定时器1外部输入) P3.6 (外部数据存储器写选通) P3.7 (外部数据存储器写选通) :外部程序存储器选通信号()是外部程序存储器选通信号。 当 AT89S52从外部程序存储器执行外部代码时,在每个机器周期被激活两次,而在访问外部数据存储器时,将不被激活。 /VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,必须接GND。 为了执行内部程序指令,应该接VCC。 在flash编程期间,也接收12伏VPP电压。 XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。 芯片擦除: 整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。 此外,AT89S52设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。 经过计算和考虑,51系列的AT89S52即可满足我们所设计的产品。AT89S52不用像8031一样外接存储器,节约了空间,提高了稳写性能,而且其内部资源正好可以满足存储要求,再高级的单片机一般多是用在比较精密麻烦的电器设计上,我们这里所设计的计价器是一个较为简单的控制系统,使用AT89S52就完全可以达到我们设计的要求,如果使用更高性能的单片机就会造成资源的浪费,所以我们选AT89S52作为我们的主机电路核心器件。 2.3.3 霍尔传感器 里程计算是通过安装在车轮上的霍尔传感器检测到的脉冲信号,送到单片机产生中断,单片机再根据程序设定,计算出里程。其原理如图2.4所示。 图2.4 霍尔传感器计数原理框图 霍尔传感器的工作原理 霍尔传感器选用A44E集成传感器如图2.5所示。A44E集成霍尔开关由稳压管A、霍尔电势发生器(即硅霍尔片)B、差分放大器C、施密特触发器D和OC门输出E这五个基本部分组成。在输入端施加输入电压Vcc,经稳压管施加后加在霍尔电势发生 器的两端,根据霍尔效应原理,当霍尔处在磁场中时,在垂直于磁场的方向通以电流,则在于这两者相垂直的方向上将会产生霍尔电势差HV输出,该HV信号经放大器放 大器放大后送至施密特触发器整形,使其成为方波输送到OC门输出。当施加的磁场 图2.5 霍尔传感器A44E结构 达到工作点时,触发器输出高电压(相对于地电位), 使三极管导通,此时OC门输出端输出低电压,通常这种状态为“开”。当施加的磁场达到释放点时,触发器输出低电压,三极管截止,使OC门输出高电压,这种状态为“关”[2]。这样通过两次电压变换,使霍尔开关完成一次开关动作见图2.6。 集成霍尔开关A44E的外形及接线如图2.7,图2.8所示。 系统中选择P3.2口作为信号的输入端,采用外部中断0,车轮每转一圈(设车轮的周长是1米),霍尔开关就检测并输出信号,引起单片机的中断,对脉冲计数,当计数达到1000次时,也就是1公里,单片机就控制将金额增加。 图2.6 霍尔传感器A44E结构 图2.7 外形 OUT +4.5~12V 2K A44E 图2.8 接线 2.3.4 显示电路的设计 (1) 1602简介 1602上的液晶板上排着若干 5×7 点阵的字符显示位,每个显示位可显示1个字符,每行 16位,有两行。其控制器内部有80×8位的RAM缓冲区。模块内部的控制器常用的有11条控制指令,丰富的指令可以完成液晶的时序控制、工作方式设置和数据显示等。 (2) 1602引脚说明: VSS为地电源 VDD接5V正电源 VO为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高。 RS为寄存器选择,高电平选择数据寄存器、低电平选择指令寄存器。 R/W为读写信号线,高电平进行读操作,低电平进行写操作。当RS和RW共同为低电平时(00)可以写入指令或者显示地址;当RS为低电平RW为高电平时(01)可以读入忙信号;当RS为高电平RW为低电平时(10)可以写入数据。 E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 D0-D7为8位双向数据线。 1602液晶能够同时显示16x02即32个字符。(16列2行) 1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。 因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如’A’。 (3) 1602液晶指令 1602通过D0-D7的8位数据端传输数据和指令。 ① 显示模式设置: (初始化) 0011 1000 [0x38] 设置16×2显示,5×7点阵,8位数据接口; ② 显示开关及光标设置:(初始化)详见表2.3 表2.3 指令码 功能 00001DCB D=1开显示 D=0关显示 C=1显示光标 C=0不显示光标 B=1光标闪烁 B=0光标不闪烁 000001NS N=1当读或写一个字符后地址指针加一,且光标加一 N=0当读或写一个字符后地址指针减一,且光标减一 S=1当写一个字符,整屏显示左移(N=1)或右移,以得到光标不移动而屏幕移动的效果 S=0当写一个字符,整屏显示不移动 ③ 数据指针设置: 数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H) ④ 其他设置:详见表2.4 (4)初始化过程(复位过程) 延时15ms 写指令38H(不检测忙信号) 延时15ms 写指令38H(不检测忙信号) 延时15ms 写指令38H(不检测忙信号) (以后每次写指令、读/写数据操作之前均需检测忙信号) 写指令38H:显示模式设置 写指令08H:显示关闭 写指令01H:清屏 写指令06H:显示光标移动设置 写指令0CH:显示开及光标设置 表2.4 地址码 功能 01H 显示清屏,数据指针=0,所有显示=0 02H 显示回车,数据指针=0 (6)读操作时序图见图2.9 图2.9 读操作时序图 (7)写操作时序图见图2.10 图2.10 写操作时序图 2.3.5 复位电路的设计 通过某种方式,使单片机内各寄存器的值变为初始状态的操作称为复位。 单片机的复位是由外部的复位电路电路实现的,复位电路通常采用上电自动复位和按钮复位两种方式。上电自动复位是通过外部复位电路的电容充电来实现的。除了上电复位外还需要按键手动复位。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过RST端经电阻与电源VCC接通而实现的。当需要外部复位时,按下复位按钮即可达到复位目的。单片机的复位速度比外围I/O接口电路快。为了能够保证系统可靠的复位,在初始化程序中应安排一定的复位延时时间。 图2.11 上电复位 2.3.6 时钟电路的设计 MCS-51系列的单片机的各功能部件都是以时钟控制信号为基准,内部电路在时 钟信号的控制下,严格地按时序执行指令进行工作,单片机本身如同一个复杂的同步时序电路,为了保证其各个部分同步工作,电路要在唯一的时钟信号控制下,严格地按照时序进行工作。其实只需在时钟引脚连接上外围的定时控制元件,就可以构成一个稳定的自激振荡器。为更好地保证振荡器稳定可靠地工作,谐振器和电容应尽可能安装的与单片机芯片靠近。 本设计中使用的振荡电路,由12MHZ晶体振荡器和两个约30PF的电容组成,在XTAL1和XTAL2两端跨接晶体[4],电容的大小不会影响振荡频率的高低。在整个系统中为系统各个部分提供基准频率,以防因其工作频率不稳定而造成相关设备的工作频率不稳定,晶振可以在电路中产生振荡电流,发出时钟信号。 G N D XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0/T2 1 P1.1/T2EX 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C52 C2 33p C3 33p X1 CRYSTAL 图2.12 时钟电路 2.3.7 按键电路的设计 按键控制电路中,单片机的P2.7管脚接启动/停止按键,通过软件编程,上电时显示祝福词,通过按下启动按键来开始计价,LCD液晶开始显示消费金额和行驶里程;按下模拟开关按键(相当于霍尔传感器)来产生一个脉冲信号,模拟行驶的里程,LCD液晶数开始显示所走里程和应付的金额,并不断计算;按下停止按键,停止计费,LCD液晶显示所走里程和乘客所需付总金额结束此次服务。 2.3.8 硬件设计说明 单片机是单片机微型计算机的简称,单片机以其卓越的性能,得到广泛的应用,已经深入到各个领域。对单片机的控制,其实就是对I/O口的控制,无论单片机对外界进行何种控制,或接受外部的何种控制,都是通过I/O口进行的。51单片机总共有P0、P1、P2、P3四个8位双向输入输出端口,每个端口都有锁存器、输出驱动器和输入缓冲器。4个I/O端口都能作输入输出口用,其中P0和P2通常用于对外部存储器的访问。 GND GND XTAL2 18 XTAL1 19 ALE 30 EA 31 PSEN 29 RST 9 P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 P1.0/T2 1 P1.1/T2EX 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.7/RD 17 P3.6/WR 16 P3.5/T1 15 P2.7/A15 28 P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27 U1 AT89C52 脉冲信号 开始停止按钮 图2.13 按键电路 (1)单片机的31引脚/EA接高电平,使用内部ROM。 (2)C1,S1和R1是复位电路,形成一阶电路中的RC电路。 (3)C2 ,C3和X1(晶振)构成振荡电路,提供时钟信号。 (4)P2.7接开始停止按钮。 (5)P3.2接霍尔开关输出。 在这次设计中,我用到P0口、P2口和P3口,P0口为8位三态I/O口,此口为地址总线及数据总线分时复用;P2口为8位准双向口,与地址总线高八位复用;P0口和P2口都有一定的驱动能力,P0口得驱动能力较强。并用霍尔传感器产生脉冲信号[8]。 我们还设计了控制按键,能够很好的对出租车计价器控制,如启动/停止按键等。 当按下计价按键时,显示行驶里程和应付金额。我们可以方便地设计起步价格,单价,多少次脉冲加一次里程数,等待时间设置,等待时间加钱多少设置等。这是本次设计的优点,只要能看懂汉字就可以更改各项设置。 本次设计是依据山西省物价局最新出版的《太原市城市客运出租车运价调整》标准:当乘客的行驶里程小于三公里时总价等于起步价;行驶里程等于或大于三公里后,总计与行驶里程的关系式为:总价=起步价+单价×(总里程—起步里程),进行计价。本设计中,起步价为8元,起步里程为3公里,当然这些数据可以在程序中很方便地改写,以满足不同时期价格调整的需要。 3 系统软件设计 3.1 编程工具-C51语言 AT89S52单片机的应用程序设计,使用C51语言进行程序设计虽然相对于汇编语言代码效率有所下降,但可以方便地实现程序设计模块化,代码结构清晰、可读性强,易于维护、更新和移植,适合较大规模的单片机程序设计。近年来,随着C51语言的编译器性能的不断提高,在绝大多数应用环境下,C51程序的执行效率已经非常接近汇编语言,因此,使用C51进行单片机程序设计已经成为单片机程序设计的主流选择之一。 51系列的单片机的程序设计语言主要有两种:一是汇编程序设计;二是C语言编程设计。两种程序设计语言都有各自的优点。用汇编语言编写和高级语言(C语言)比较起来节省空间,这样对于存储空间仅8Kb的芯片来说极之有利的,51系列单片机更能高速的运行。C语言编写的程序,虽然不像汇编那样速度快,但程序简单易行,并且需要较小的存储空间。C语言作为一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。此外,C语言程序还具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。因此,使用C语言进行程序设计已成为软件开发的主流。 本设计就是采用C语言编写的。由于采用模块化操作,使得主程序在修改,执行的时候显得方便易行。 3.2 系统程序设计 3.2.1 主程序模块 主程序流程图如图3.1所示,在主程序模块中,需要完成对各接口芯片的初始化、出租车起价和单价的初始化、中断的设计及开中断、欢迎词显示等工作。 图3.1 主程序流程图 3.2.2 外部中断0服务程序 图3.2 外部中断0流程图 每当传感器输出一个电平信号就使单片机发生一次,当计够100次脉冲,并且路程大于等于开始路程时,将总价格加一定数额完成了计价功能同时记下了行驶里程。 3.2.3 定时器1中断服务程序 在定时中断服务程序中,每50ms产生一次中断,当产生6000次中断的时候,也就是5min后判断一次是否等待,如果等待将加一定的价格。程序流程图如图3.2。 图3.2 定时器1中断服务程序流程图 4 软件调试 软件调试是利用开发工具进行在线仿真调试。先是各个模块、各个子程序分别调试,最后进行整体调试。 4.1程序调试工具-KeilC Keil C 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编和C语言等程序设计,界面友好,易学易用。 下面是Keil C软件的使用方法 进入 Keil C 后,屏幕如下图所示。几秒钟后出现编辑界。 启动Keil C时的屏幕如图4.1所示。 进入Keil C后的编辑界面如图4.2所示。 图4.1 Keil C欢迎界面 简单程序的调试 学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。下面通过我们本次的编程、调试过程同大家一起分享如何使用Keil C软件以及Keil C软件的基本调试技巧方法。 (1)建立一个新工程 单击Project菜单,在弹出的下拉菜单中选中New Project选项如图4.3所示。 图4.2 编辑界面 图4.3 新建工程 (2)然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51如图4.4所示,然后点击保存。 图4.4 保存路径 (3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,Keil C几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel 的89C51来说明,如图4.5所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定。 图4.5 选择单片机 (4)完成上一步骤后,屏幕如图4.6所示。 图4.6 工程树状图 (5)在图4.7中,单击“File”菜单,再在下拉菜单中单击“New”选项。 图4.7 新建文件 新建文件后屏幕如图4.8所示。 图4.8 打开的文件 (6)此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但笔者建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As”选项单击,屏幕如图4.9所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。注意,如果用C语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。然后,单击“保存”按钮。 (7)回到编辑界面后,单击“Target 1”前面的“+”号,然后在“Source Group1”上单击右键,弹出如图4.10菜单 (8)然后单击“Add File to Group ‘Source Group 1’” 屏幕图4.11所示。 (9)选中Test.c,然后单击“Add ”屏幕如图4.12所示。 注意“Source Group 1”文件夹中多了一个子项“Text1.c”,子项的多少与所增加的源程序的多少相同。 图4.9 文件保存 图4.10 添加到工作组 (10)现在,请输入如下的C语言源程序: #include <reg52.h> //包含文件 #include <stdio.h> void main(void) //主函数 { SCON=0x52; TMOD=0x20; TH1=0xf3; TR1=1; //此行及以上3行为PRINTF函数所必须 printf(“Hello I am KEIL. \n”); //打印程序执行的信息 printf(“I will be your friend.\n”); while(1); } 图4.11 添加工作组(副) 图4.12 编译的文件 在输入上述程序时,读者已经看到了事先保存待编辑的文件的好处了吧,即Keil C会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。程序输入完毕后,如图4.13所示。 图4.13 正在编写的程序 (11)在上图中,单击“Project”菜单,再在下拉菜单中单击“Built Target”选项(或者使用快捷键F7),编译成功后,再单击“Project”菜单,在下拉菜单中单击“Start/Stop Debug Session”(或者使用快捷键Ctrl+F5),屏幕如图4.14所示 (12)调试程序:在上图中,单击“Debug”菜单,在下拉菜单中单击“Go”选项,(或者使用快捷键F5),然后再单击“Debug”菜单,在下拉菜单中单击“Stop Running”选项(或者使用快捷键Esc);再单击“View”菜单,再在下拉菜单中单击“Serial Windows #1”选项,就可以看到程序运行后的结果,其结果如图4.15所示 图4.14 仿真过程 图4.15 仿真结果 至此,我们在Keil C上做了一个完整工程的全过程。但这只是纯软件的开发过程,如何使用程序下载器看一看程序运行的结果呢? 10)单击“Project”菜单,再在下拉菜单中单击“” 在图4.16中,单击“Output”中单击“Create HEX File” 选项,使程序编译后产生HEX代码,供下载器软件使用。把程序下载到AT89S51单片机中。 图4.16 生成hex文件 4.2单片机仿真软件在线调试-Proteus 前面详细介绍了Keil C软件的使用,Proteus的使用在此不再赘述。 (1)打开Proteus软件。 (2)选择file菜单下的open design选项,找到所需的元器件,元器件上单击右键选中,再单击左键对其进行命名和赋值,接着在编辑器左边的一栏中,找出并绘制设计所要的各种元器件,按照电路图连接后并保存。 (3)将用KeilC编译产生的hex文件下载到单片机中,双击AT89S52单片机,在对话框中把保存过的hex文件打开,再单击确定。 (4)单击左下角运行按钮,进行软件仿真调试,进行现象的查看,能清楚地观察到芯片上每一个引脚的电平变化,红色代表高电平,蓝色代表低电平;并在1602液晶上显示相应的数据。如果现象不正确,则在KeilC中单步调试程序,并在Proteus 观察现象,哪一步不正确则对该段的程序进行修改,调试直到仿真完全成功为止。 该仿真中霍尔传感器采- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 出租车 计价器 设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文