欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于单片机控制的出租车计价器.doc

    • 资源ID:63963799       资源大小:624.50KB        全文页数:28页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于单片机控制的出租车计价器.doc

    毕业设计(论文) 题 目 基于单片机控制的出租车计价器 专 业 应用电子技术 班 次 09222 姓 名 宋 颢 明 指导老师 易 兴 兵 成都电子机械高等专科学校 二0一二年五月 成都工业学院 电气与电子工程系基于单片机控制的出租车计价器 摘要:随着出租车行业的发展,出租车已经是城市交通的重要组成部分,具有良好性能的计价器对出租车司机和乘客来说都是很有必要的。本设计以ATC89C52单片机为核心器件采用A44E霍尔传感器测距(软件仿真用步进电机模拟霍尔传感器),实现对出租车计费方式、计费单价、里程统计以及总的收费,采用液晶LCD1602对出租车的里程、单价和收费进行显示。 关键词:单片机、霍尔传感器、步进电机、液晶显示、程序 - -目 录第1章 出租车计价器概述 2 1.1 出租车计价器概述、主要功能 2 1.2 系统的任务及要求 2 1.3 设计方案与比较 2第2章 计价器硬件设计 3 2.1 系统硬件构成及功能 3 2.2 AT89C52单片机的简单介绍 3 2.3 霍尔传感器测距原理 6 2.4 LCD1602液晶显示 8 2.5 ULN2003 10 2.6 步进电机工作原理13 2.7 电路板制作 16 第3章 系统软件设计18 3.1 软件设计流程18 3.2 系统代码19 第4章 系统调试24参考文献 25 第1章 出租车计价器概述1.1 出租车计价器概述 本毕业设计充分利用单片机技术来实现一台多功能的出租车计价器,系统稳定可靠,电路简单实用,成本低。 计价器显示的营运金额是营运里程与价格的函数(等候时间一般折算成一定比例的里程来计算)。出租车计价器通过传感器与行驶车辆连接。出租汽车的实际里程通过传感器的脉冲信号在计价器里折算成一定的计价营运里程。目前市场上出租车计价器功能主要有具有数据的复位功能、数据输出功能、计时计价功能等等,针对这一点我们来设计一款多功能出租车计价器,在原有功能的基础上增加单价输出、单价调整、路程输出等功能。 系统主要功能本毕业设计所设计的出租车计价器的主要功能有:数据的复位、数据清零、数据输出、计时计价、单价输出、路程输出功能。 输出采用LCD1602液晶显示。1.2 系统的任务及要求(1) .有里程显示、计费方式、单价显示、收费显示。里程显示三位数,精确到一公里;单价显示精确到0.1元;收费显示三位,精确到0.1元。(2).具有手动清零功能。(里程、单价、收费清零)(3).汽车正常运行计费,候时计费关断;候时计费,运行计费判断。(4).能进行仿真。(5).用protel画出原理图及PCB板。1.3 设计方案与比较 方案一:采用数字电路控制。采用传感器件,输出脉冲信号,经过放大整形作为移位寄存器的脉冲,实现计价,但是考虑到这种电路过于简单,性能不够稳定,电路不够实用。方案二:采用单片机控制。利用单片机丰富的 I/O 端口,及其控制的灵活性,实现基本的里程计价功能和价格调节、时 钟显示功能。通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能 而且能在很大的程度上扩展功能, 而且还可以方便的对系统进行升级, 所以我们采用后一种方案。 第2章 计价器硬件设计 2.1 系统的硬件的构成及功能 计价器硬件设计本系统的硬件设计主要包括单片机AT89C52、液晶显示部件、A44E霍尔传感器电路、里程、单价及收费的设计。在硬件设计过程中,充分利用各部件的功能,实现多功能的出租车计价器设计。 计价器的单片机控制方案图如图1所示。它由以下几个部件组成:单片机AT89C52、总金额及单价显示部件、键盘控制部件、里程计算单元、显示驱动电路等。 利用单片机丰富的IO端口,及控制的灵活性,实现基本的里程计价、单价以及计费的功能。还可以在原来功能的基础上对其功能进行扩展。下面是总体框图。 键盘 控制 AT89C52 单片机 总金额 显示 单价 显示显示驱动 里程计算单元 图1 :计价器的单片机控制方案2.2 AT89C52单片机简单介绍 AT89C52是一个低电压,高性能COMS8位单片机,片内含8k bytes的可反复擦写的Flash,只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。主要功能特性1、 兼容MCS51指令系统; 2、8k可反复擦写(大于1000次)Flash ROM; 3、32个双向I/O口; 4、256x8bit内部RAM; 5、3个16位可编程定时/计数器中断; 6、 时钟频率0-24MHz; 7、2个串行中断,可编程UART串行通道; 8、2个外部中断源,共8个中断源; 9、2个读写中断口线,3级加密位;10、 低功耗空闲和掉电模式,软件设置睡眠和唤醒功能; 11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应 不同产品的需求。 引脚功能及管脚电压AT89C52为8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。 震荡电路RST(9 脚)为复位输入端口,外接电阻电容组成的复位电路。复位电路 VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。AT89C52管脚分布如图: PDIP封装的AT89C52引脚 P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能,见下表: 口线 第二功能 P3.0RXD(串行输入线) P3.1TXD(串行输出线) P3.2INT0(外中断0输入线) P3.3INT1(外中断1输入线) P3.4T0(定时器0外部输入线) P3.5T1(定时器1外部输入线) P3.6WR(片外RAM写选通信号) P3.7TD(片外RAM读选通信号)工作方式寄存器TMODGATEC/TM1M0GATEC/TM1M0M1M0工作模式控制位 M1 M0 模式 说明00013位计数/定时器01116位计数/定时器102自动重装8位计数/定时器113T0分成2个独立的8位计数器,T1停止计数C/T=0,选择定时器工作方式;C/T=1,选择计数器工作方式。控制寄存器TCONTF1TR1TF0TR0 IE1IT1IE0IT0 TF1/TF0:定时器T1/T0溢出标志。当T1/T0计满溢出时由硬件自动置1,并申请中断,CPU响应中断后由硬件自动清0,在查询方式时也可由软件清0。TR0/TR1:定时器T0/T1的运行控制位。IE1:INT1的中断请求标志,IE0:INT0的中断请求标志。IT0:INT0的中断触发方式选择,IT1:INT1的中断触发方式选择。本系统中定时器采用定时器1的模式1(n=16)t=(2nTX初值)×机器周期=(2nTX初值)12/fosc TX初值=2n tfosc/12中断AT89C52 共有6 个中断向量:两个外中断(INT0 和INT1),3 个定时器中断(定时器0、1、2)和串行口中断。这些中断源可通过分别设置专用寄存器IE 的置位或清0 来控制每一个中断的允许或禁止。IE 也有一个总禁止位EA,它能控制所有中断的允许或禁止。在AT89C51 中IE.5 也是保留位。程序员不应将“1”写入这些位,它们是将来AT89 系列产品作为扩展用的。2.3 霍尔传感器测距原理2.3.1、原理简介当一块通有电流的金属或半导体薄片垂直地放在磁场中时, 薄片的两端就会产生电位差, 这种现象就称为霍尔效应。两端具有的电位差值称为霍尔电势 U,其表达式为 U=K·I·B/d 其中 K 为霍尔系数,I 为薄片中通过的电流,B 为外加磁场(洛伦慈力 Lorrentz)的磁 感应强度,d 是薄片的厚度。 由此可见,霍尔效应的灵敏度高低与外加磁场的磁感应强度成正比的关系。 霍尔开关就属于这种有源磁电转换器件, 它是在霍尔效应原理的基础上,利用集成封装 和组装工艺制作而成, 它可方便的把磁输入信号转换成实际应用中的电信号, 同时又具备工业场合实际应用易操作和可靠性的要求。 霍尔开关的输入端是以磁感应强度 B 来表征的,当 B 值达到一定的程度(如B1)时, 霍尔开关内部的触发器翻转, 霍尔开关的输出电平状态也随之翻转。 输出端一般采用晶体管 输出,和接近开关类似有 NPN、PNP、常开型、常闭型、锁存型(双极性)、双信号输出 之分。 霍尔开关具有无触电、低功耗、长使用寿命、响应频率高等特点,内部采用环氧树脂封 灌成一体化, 所以能在各类恶劣环境下可靠的工作。 霍尔开关可应用于接近开关、压力开关、 里程表等,作为一种新型的电器配件。2.3.2内部原理图2.3.3 输入/输出的转移特性 2.3.4 转速测量 上图是一个霍尔开关组成的转速测量器,永磁铁可以安装在车轮的钢圈上,霍尔开关可以固定在不转动的轴架上,适当调整霍尔开关磁感应面与永磁铁的距离,并将霍尔传感器输出送至单片机,这样就可以对运动的物体测速了。霍尔开关所需的工作电源由外部提供,物体转动一周,霍尔开关就感应一次永久磁铁的磁场。此时霍尔开关从输出端送出一个脉冲电压。单片机得到一个脉冲电压就计数一个,计数的个数就是轮子转的圈数。 距离= 圈数 × 轮子的周长按照这个公式就可以测两车子行驶的行程。2.4 LCD1602液晶显示2.4.1接口信号说明2.4.2 1602LCD的RAM地址映射及标准字库表 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,下图是1602的内部显示地址。 1602LCD内部显示地址2.4.3 LCD1602的一般初始化(复位)过程延时15mS 写指令38H(不检测忙信号)延时5mS 写指令38H(不检测忙信号) 延时5mS写指令38H(不检测忙信号)以后每次写指令、读/写数据操作均需要检测忙信号写指令38H:显示模式设置;写指令08H:显示关闭写指令01H:显示清屏;写指令06H:显示光标移动设置写指令0CH:显示开及光标设置下图是LCD1602的实物图下面即是LCD1602的操作时序2.5 ULN2003 ULN2000是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。ULN2003A电路是美国Texas Instruments公司和Sprague公司开发的高压大电流达林顿晶体管阵列电路,文中介绍了它的电路构成、特征参数及典型应用。 功率电子电路大多要求具有大电流输出能力,以便于驱动各种类型的负载。功率驱动电路是功率电子设备输出电路的一个重要组成部分。 输入回路的电阻有差别,ULN2003是2.7k,ULN2004是10.5k。灵敏度也有差别,简单讲2003适于5v的TTL,2004适宜6-15v的CMOS。驱动灌入电流:500mA。在大型仪器仪表系统中,经常要用到伺服电机、步进电机、各种电磁阀、泵等驱动电压高且功率较大的器件。ULN2000、ULN2800高压大电流达林顿晶体管阵列系列产品就属于这类可控大功率器件,由于这类器件功能强、应用范围语广。因此,许多公司都生产高压大电流达林顿晶体管阵列产品,从而形成了各种系列产品,ULN2000、ULN2800系列就是美国Texas Instruments公司、美国Sprague公司开发的高压大电流达林顿晶体管阵列产品。在上述系列产品中,ULN2000系列能够同时驱动7组高压大电流负载,ULN2800系列则能够同时驱动8组高压大电流负载。美国Texas Instruments公司、美国Sprague公司生产的ULN2003A由7组达林顿晶体管阵列和相应的电阻网络以及钳位二极管网络构成,具有同时驱动7组负载的能力,为单片双极型大功率高速集成电路。以下介绍该电路的构成、性能特征、电参数以及典型应用。2000、2800高压大电流达林顿晶体管阵列系列中的其它产品的性能特性与应用可参考ULN2003A。 ULN2003A电路具有以下特点: 电流增益高(大于1000); 带负载能力强(输出电流大于500mA); 温度范围宽(-4085); 工作电压高(大于50V)。ULN2003电路主要用于如下领域: 伺服电机; 步进电机; 电磁阀; 可控照明灯。 引出端功能符号引出端序号符号功能引出端序号符号同意功能11B输入9COM公共端22B输入107C输出33B输入116C输出44B输入125C输出55B输入134C输出66B输入143C输出77B输入152C输出8E发射极161C输出ULN2003A的极限参数项目符号数值单位最大输入电压Vi(max)30V集电极-发射极电压Vo(max)50V最大基极输入电流IB(MAX)25mA输出电流Io500mA贮存温度Ts-65150结温Tj175引线耐焊接温度TD3002.6 步进电机工作原理2.6.1 电机工作原理 该步进电机为一四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。图1是该四相反应式步进电机工作原理示意图。开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。 当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁极对齐。而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组磁极产生错齿。依次类推,A、B、C、D四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。 四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。图1 四相步进电机步进示意图单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图2.a、b、c所示: 2.6.2 单片机驱动步进电机的方法 驱动电压12V,步进角为 7.5度 . 一圈 360 度 , 需要 48 个脉冲完成 该步进电机有6根引线,排列次序如下:1:红色、2:红色、3:橙色、4:棕色、5:黄色、6:黑色。 采用单片机驱动ULN2003的方法进行驱动。 ULN2003的驱动直接用单片机系统的5V电压,可能力矩不是很大,大家可自行加大驱动电压到12V。下面是系统仿真结果效果图2.7 电路制版部分2.7.1.电路原理图的设计 电路原理图的设计主要是protel 99 se的原理图设计系统(Advanced Schematic)来绘制一张电路原理图。在这一过程中,要充分利用protel 99 se所提供的各种原理图绘图工具、各种编辑功能,来实现我们的目的,即得到一张正确、精美的电路原理图。2.7.2.产生网络表 网络表是电路原理图设计(SCH)与印制电路板设计(PCB)之间的一座桥梁,它是电路板自动的灵魂。网络表可以从电路原理图中获得,也可从印制电路板中提取出来。 2.7.3.印制电路板的设计 印制电路板的设计主要是针对protel 99 se的另外一个重要的部分PCB而言的,在这个过程中,我们借助protel 99 se提供的强大功能实现电路板的版面设计,完成高难度的等工作。 原理图设计流程 第3章 系统的软件设计 3 .1 软件设计流程 主程序中通过循环判断等待计价和车轮技术进行总体价格的实现,在停车等待中,调用定时器中断子程序,每分钟计费1.8元;在车子行驶过程中,调用轮子计数子程序,车轮每转500圈为一公里(假设轮子周长为2米)。软件就这样模拟出租车进行计价的。 开 始 液晶初始化 等待计价等待计价处理是 车轮计数否否 计数加1是 不到500 是否到500否 处理数据 液晶显示 结 束3.2 系统代码 MAIN.C#include <reg52.h>#include "lcd1602.h"#include"jifei.h"#include"motor.h"sbit button=P13;uint flag,circle, second;uchar show1=" 000km 1.9$/km "uchar show2=" Total 08.0$ "void init_break() IT0=1;EX0=1;IT1=1;EX1=1;TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;ET0=1;EA=1; void main() lcd_init();init_break();while(1) if(button=0) clear(); write_com(0x80); display(show1); /显示第一行数据 write_com(0xc0); display(show2); /显示第二行数据 jifei(); /计费 dispose(); /数据处理 void int0()interrupt 0 circle+;void timer0()interrupt 1 TH0=(65536-50000)/256; /定时50ms TL0=(65536-50000)%256; second+;void int1()interrupt 2 flag+;JIFEI.C#include<reg52.h>#include"lcd1602.h"#include "jifei.h"#include"motor.h"uint mile,minute,total;extern uint flag;extern uint second;extern uint circle;extern uchar show1;extern uchar show2;extern uchar show3;void clear() /停车,计费、路程、单价清零 show11 =0+'0' show12 =0+'0'show13=0+'0'show18 =0+'0'show110=0+'0'write_com(0x80); /第一行地址display(show1); /显示第一行数据show29 =0+'0'show210=0+'0'show212=0+'0'write_com(0xc0); /第二行地址 display(show2); /显示第二行数据P2=0xff;while(1);void jifei()uchar a;if(circle=501)mile+;circle=0; switch(flag)case 0: motor(); break; case1:TR0=1; P2=0xff; show113='m'show114='i'show115='n'minute=(second/1200); break; case 2:show113='k'show114='m'show115=' ' TR0=0;flag=0;second=0;break; if(mile>=2) a=mile-2;total=(19*a)+(19*minute)+80;elsetotal=80;void dispose() /数据处理函数 uchar a,b,c;a=mile/100; b=mile%100/10;c=mile%100%10;show11=a+'0' show12=b+'0' show13=c+'0'a=total/100;b=total%100/10;c=total%100%10; show29=a+'0' show210=b+'0'show212=c+'0'MOTOR.C#include<reg52.h>#include"LCD1602.H"#include "motor.h"sbit speedadd=P14;sbit speedslow=P15;uint speed=20000;uchar motor_table=0x01,0x02,0x04,0x08;void delay1(uint j)while(j-); void motor() uchar i;for(i=0;i<4;i+) P2=motor_tablei;delay1(speed); if(speedadd=0) speed=speed-500;/加速 if(speedslow=0) speed=speed+500; /减速 LCD1602.C#include<reg52.h>#include"lcd1602.h"void delay(uchar i) uchar j,m;for(j=0;j<=i;j+)for(m=0;m<100;m+); void write_com(uchar com) rs=0;rw=0;P0=com;delay(5);en=1;delay(5);en=0; void write_data(uchar date) rs=1;rw=0;P0=date;delay(5);en=1;delay(5);en=0; void lcd_init() en=0;write_com(0x38);write_com(0x06);write_com(0x0c); write_com(0x01); void display(uchar *s) uchar i;for(i=0;*s!=0;i+) write_data(*s);s+; JIEFEI.H#ifndef _JIFEI_H_#define _JIFEI_H_void clear();void int0();void jifei();void dispose();#endifMOTOR.H#ifndef _MOTOR_H_#define _MOTOR_H_void motor();#endifLCD1602.H#ifndef _LCD1602_H_#define _LCD1602_H_#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit rs =P10;sbit rw =P11;sbit en =P12;void lcd_init();void write_com(uchar com);void display(uchar *s);#endif 第4章 系统调试 根据系统设计方案,本系统的调试共分为三大部分:硬件调试,软件调试和软硬件联调。由于在系统软件设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试。本款出租车计价器比目前市场现在的增加了功能,其中包括单价输出、路程输出。另外,多功能出租车计价器还具有性能可靠、电路简单、成本低、实用性强等特点,加上经过优化的程序,使其有很高的智能化水平。 通过本次毕业设计,我又学到了许多书本上无法学到的知识,同时也体会到单片机技术应用领域的广泛,不仅使我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程 产生了更大的兴趣。 在本次毕业设计过程中,我也认识到借用网络和图书馆来搜集资料的重要性,其中包括:ULN2003其引脚说明,为为本次毕业设计提供了一定的资料。在以后的工作中,在学好单片机的同时,会向嵌入式方向进一步发展。参考文献 1马忠梅、籍顺心、张凯、马岩.单片机的C语言程序设计(第4版).北京航空 航天大学出版社.2007年 2曾一江、刘虹、李寿强.单片机微机原理与接口技术.科学出版社.2006年3龚华生、杨小琼、龚杨政、龚杨梅.元器件自学通.电子工业出版社.2005年4童诗白 华成英.模拟电子技术基础(第四版).高等教育出版社.2006年5谭浩强.C语言程序设计(第四版).清华大学出版社.2010年

    注意事项

    本文(基于单片机控制的出租车计价器.doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开