版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于AT89C52单片机的出租车计费器设计报告摘要随着城市建设日益加快,人们生活速率的加快,出租车作为一种快捷的交通工具越来越得到广泛的使用。现在各大中城市出租车行业都已普及自动计价器,所以关于出租车计费器模块的研究有很好的发展前景。出租车计费器是单片机的一种典型应用。基于单片机的计费器是由单片机和外部电路组成。包括检测模块,控制模块,人机模块。里程检测模块脉冲代替轮转实现,控制模块包括AT89C52单片机,人机模块包括独立的按键模块和LED动态显示。系统性能指标1.设定价格;2.显示当前单价、行驶里程和总金额;3.里程精确到0.1公里。关键词:AT89C52,脉冲,I2C总线,动态显示目录第1章系统工作原理 错误!未定义书签。 功能要求 错误!未定义书签。 基本原理 错误!未定义书签。第2章硬件设计 错误!未定义书签。2.1单片机最小系统单元 错误!未定义书签。2.2霍尔传感器单元 错误!未定义书签。2.3掉电存储单元 错误!未定义书签。2.4键盘调整单元 错误!未定义书签。2.5显示单元 错误!未定义书签。第3章软件设计 错误!未定义书签。3.1系统主程序 错误!未定义书签。3.2里程计数中断程序 错误!未定义书签。3.3中途等待中断程序 错误!未定义书签。3.4计算程序 错误!未定义书签。3.5显示程序 错误!未定义书签。3.6键盘程序 错误!未定义书签。第4章调试改进过程及运行结果分析 错误!未定义书签。4.1动态扫描的调试和分析 错误!未定义书签。4.2AT24C02的编程与调试 错误!未定义书签。4.3按键查询功能的实现 错误!未定义书签。4.4计算程序的分析与设计 错误!未定义书签。4.5结果分析与性能改进 错误!未定义书签。4.6计价器系统的仿真 错误!未定义书签。结论 错误!未定义书签。谢辞 错误!未定义书签。参考文献 错误!未定义书签。附录A系统原理图 错误!未定义书签。附录B仿真图PCB板 错误!未定义书签。附录C系统源程序 错误!未定义书签。前言单片机是一种可通过编程控制的微处理器,虽其自身不能单独用在某项工程或产品上,但当其与外围数字器件和模拟器件结合时便可发挥强大的功能,现在单片机已广泛应用于众多领域。举例如下:1.工业自动化。如数据采集、测控技术。2.智能仪器仪表。如数字示波器、数字信号源、感应电流表等。3.消费类电子产品。如空调机、微波炉、IC卡、汽车电子设备等。4.通信方面。如调制解调器、程控交换技术等。5.武器装备。如飞机、军舰、导弹、鱼雷制导、智能武器等。作为与自动化技术和电子密切相关的理工科学生,掌握单片机是最简单也最基础的要求。为了进一步丰富和巩固单片机知识,也为了能更好的联系实际应用,本次毕业设计选择了基于单片机STC89C52控制的出租车计价器,并力求能做出实物。鉴于电子技术、计算机技术以及各种更先进的仿真软件的出现,使用高级语言如C代替汇编语言进行编程和控制已成为现实,也成为一种发展趋势。单片机C语言编程相对于MC51汇编语言编程有如下优点:1.对单片机的指令系统不需要有很深的理解就可以编程操作单片机。2.寄存器分配、不同存储器的寻址及数据类型等细节完全由编辑器自动处理。3.程序有规范的结构,可分为不同的函数,可使程序结构化。4.库中包括许多标准子程序,具有较强的处理能力,使用方便。5.具有方便的模块化编程技术,使已编好的程序便于移植,可极大缩短开发时间,增加程序的可读性和可维护性。事实上,当今许多硬件的开发都已开始用C语言编程,如各种单片机、DSP、ARM等,用C语言进行工业控制也已成为一种趋势,为了更好的适应当今社会形势,为了更好的面对挑战、把握机遇,此次课程设计使用了C语言编程完成。也希望能在进一步熟悉单片机控制的同时,对数字电子技术、模拟电子技术、计算控制技术以及常用外围芯片有更深层次的了解,提高自己的综合能力,检验自己专业技术。综上,基于单片机AT89C52的出租车计费器不仅可方便的用软件代替硬件,降低成本,具备一般计价器的计算里程和显示总金额的功能,还具备了掉电保持,白天、夜晚单价切换的功能,并且还可很方便的扩展为速度测试仪,具有很好市场前景。功能要求功能按键,显示公里数和费用系统工作符合一般出租车计价器要求扩展要求:夜班加价功能系统工作原理功能要求出租车计价器是根据乘客乘坐汽车行驶距离和等候时间的多少进行计价的,并在行驶中同步显示本次消费、运行里程、运行单价以及等待时间等信息。从起步开始,当汽车行驶里程未满3公里时,均按起步价计算。超过3公里后,实现每1公里单价收费,中间遇到暂停时,计程数不再增加,开始计时收费,计程收费和计时收费的和便构成了一位乘客的车费。同时,白天和夜晚价格不同,可以进行切换。白天单价、夜晚单价、等待单价和起步价格都可通过独立键盘进行调节。(默认起步价为5元/3公里,里程单价白天为元/公里,夜晚为2元/公里,等待计时单价为1元/1分钟)为提高计时、计价精度,确保乘客对自己消费的知情权,出租车计价器应做到里程数精确到0.1公里,同时为减少司机朋友来回调整单价以及停车后需重设单价的麻烦,计价器应具有掉电保持功能,即当重新启动后维持原有数值(包括总金额、等待时间、行驶里程、单价)不变,直至强制按下清零键,计价器显示起步价(刚起步时对应总金额)、运行单价,为下一次计价做准备。计价器系统主要由五部分组成:分别为脉冲信号检测单元、AT89C52单片机、外扩串行EEPROM-AT24C02、独立按键和LED显示。脉冲检测单元主要用于检测汽车行使的里程数,出租车车轮每旋转一周,脉冲计数器就增加1,并把该脉冲交由单片机进行处理,单片机则根据程序设定,通过计算脉冲个数换算出已行驶里程(里程=脉冲个数*出租车车轮周长),然后再根据从EEPROM-AT24C02中读取的单价等相关数据进行总的消费金额的计算:当里程小于3公里时,总金额=起步价+等待时间*等待单价;当里程大于3公里时,总金额=起步价+(里程-3)*运行单价+等待时间*等待单价,计算好的金额、等待时间、里程和单价等数据信息都可实时地显示在数码管上。其中,等待时间可根据霍尔传感器A44E是否有脉冲输出加以判断,如可设定等待时基为5s,即假如A44E在5s后仍无脉冲输出便认为进入等待时间,并由单片机AT89C52内部计时器对其进行计时。独立按键系统可以调整单价等相关数据,当按下某按键,会给单片机相应端口一低电平信号,单片机会通过循环扫描检测到此信号,并根据预先设置好的程序做出相应的处理;调整好的数据存储到EEPROM中,掉电后可以使该数据不丢失,下次得电后直接从EEPROM-AT24C02中读到单片机,并通过数码管实时显示。系统结构图如图1-1所示。图1-1系统结构图第二章硬件设计主控机系统采用STC公司生产的AT89C52单片机,它含有512字节数据存储器RAM,内置8K的电可擦除FLASHROM,可重复编程,大小满足主控机软件系统设计,所以不必再扩展程序存储器。芯片外围电路最高可接入40MHZ的晶振(AT单片机数值一般为24MHZ)。复位电路和晶振电路,以及P0口接入的10K的上拉电阻便构成了STC89C52单片机工作所需的最简外围电路。单片机最小系统电路图如图2-1所示。(图????只截一部分就行了)图2-1单片机最小系统AT89C52单片机的复位端接74LS14,它是一个史密特触发输入的芯片,高电平有效,具有稳定波形的作用。RST端若由低电平上升到高电平并持续2个周期,系统将实现一次复位操作;在该复位电路中,按一下复位开关,利用电容冲放电的所产生的延时,就会在RST端产生一段时间的高电平,进而进行复位操作。外接12M的晶振和两个30pF电容组成系统的内部时钟电路,其中电容主要起到滤波、微调以及利用其充放电过程帮助单片机晶振启振的作用[1]。对于单片机的P0口,可以作为地址/数据总线使用,也可以作为一般的I/O口使用。但当其作为I/O使用时,由于输出属于开漏电路,无上拉电阻故也无法进行高低电平的操作,此时必须接上拉电阻,一般阻值选为10K。但P0口不能同时作为地址/数据总线和I/O使用。本设计利用P0口的I/O功能[2]。我们编辑的程序中的脉冲是低电平有效的脉冲,每按一次键,产生一个脉冲,程序中的脉冲计数器加1。为简化里程计数,每一个脉冲相当与0.1公里。里程数=脉冲数×AT24C02的作用是在电源断开的时候,存储当前设定的总金额,等待时间,运行里程以及单价等信息。该芯片内的资料可在掉电情况下长期保存。AT24C02采用8脚DIP封装,使用方便,其引脚配置如图2-3所示。图2-2AT24C02引脚配置每当设定一次单价,系统就调用存储程序,将单价信息保存在芯片内;当系统重新上电时,自动调用读存储器程序,将存储器内的里程及费用等信息读入缓存单元中,供主程序使用哪个。事实上,AT24C02为典型的支持I2C总线的器件,对其进行编程时需遵守I2C总线的时序要求,以及I2C委员会对各种I2C芯片的地址分配规则。现把I2C总线与AT24C02的通讯时序、通讯规则简要介绍如下:1.I2C总线节点的寻址字节主机产生起始条件后,发送的第一个字节为寻址字节。该字节的头七位为从机地址,对于AT24C02来说高四位为1010,它是I2C总线器件的固有地址,紧接着是A1、A2、A3通过接地或者高电平决定外围器件的地址数据,第八位是读写控制为,当为0是表示主节点向从节点发送数据,当为1时表示要接收数据。2.I2C总线数据传输的格式(1)主控器的写数据格式:首先由主机发送起始信号—当SCL为高电平时,SDA由高到低有跳变;然后发一个寻址字节,当收到应答信号后发送数据,其中应答信号为当SCL为高时SDA传送0,并持续4.7us以上;当主机产生停止信号时,数据传送结束,停止信号是当SCL为高电平时SDA有一个由低到高的跳变。(2)主控器的读数据格式:与写数据的不同之处在于数据发送结束和停止位之间加一个非应答位,表示数据发送结束,格式为当SCL为高时SDA传送1,并持续4.7us以上。3.要特别注意的是SDA和SCL都是双向传输线,平时均处于高电平备用状态,只有当需要关闭时才使其钳制在低电平,且仅在SCL为高电平时数据才能传送,而当SCL为低电平时才允许数据发生变化。当单价等信息需要进行修改时,需要用到按键系统。我们根据计费器功能,设置了5个按键,分别用来实现:清零、切换、增大、减小和功能等作用。原理如图2-3所示。2-3按键系统接线图图中,键盘从上至下依次为:S0:接P1.0口,对上一次的计费进行清零,为下次载客做准备;S1:接P1.1口,通过对功能键S3按下次数的计数,实现单价数据的增大;S2:接P1.2口,通过对功能键S3按下次数的计数,实现单价数据的减小;S3:接P1.3口,按1次,进入调整白天单价;按2次,进入调整夜晚单价;按3次,进入调整等待单价;按4次,进入调整起步价;按5次,返回。S4:实现白天单价和夜晚单价的切换。需要注意的时,当按键按下和释放的瞬间都有抖动现象,一般来说,抖动的时间长短与键盘的机械特性有关,大约为5-10ms[5]。所以在实际编程时一定要注意键盘的去抖动。键盘去抖动有专用的延时电路,也有专门的延时芯片,也可以用软件去抖,考虑到电路的难易程度,从简化硬件的角度,本次设计采用软件去抖动,用一个短延时程序,进行键盘去抖操作。2.5显示单元显示单元由两个4位8段共阳数码管组成,电路连接时,公共端接高电平,因此我们需要点亮哪个发光二极管只需给哪个二极管阴极送低电平,并采用动态扫描进行显示[6]2.5,用于显示里程,由于需精确到小数位,故最多只能显示9.9公里,但经过添加溢出指示,可计到20公里,在现实中已基本够用;后面两个数码管分别接P2.6和P2.7,用于显示单价。由于溢出指示是采用发光二极管是否点亮表示,故必须选好参数以确保发光二极管正常工作。根据元件手册(也可用万用表测量)查得,发光二极管点亮时压降为1.7V,点亮电流为3-20mA,取导通电流为5mA,所以限流电阻可选择为(5-1.7)/5=660,故可选择限流电阻值510Ω。由于数码管内部二极管点亮时需要5mA以上的电流,而单片机的输出电流还不到1mA,所以数码管与单片机连接时需加驱动电路,可以使用上拉电阻的方法,也可以使用专门的驱动芯片,考虑到复用单片机I/O接口,节省单片机I/O资源,此次设计采用74HC573锁存器,其输出电流较大,电路接口简单且可直接驱动数码管显示。74HC573的引脚分布图2-6如下。图2-474HC573的引脚分布:为三态允许输入端(低电平有效),也可称作输出允许端;1D-8D为数据输入端;1Q-8Q为数据输出端;LE为锁存允许端。74HC573所对应真值表2-1如表。表2-174HC573真值表INPUTOUTPUTLEDQLHLLLXHXXHQ0Z其中:H—高电平;L—低电平;X—任意电平;Z—高阻态,既不是高电平也不是低电平,其电平状态由与它相连接的其它电气状态决定;Q0—上次的电平状态。由真值表可以看出,当为高电平时,无论LE与D端为何电平状态,其输出均为高阻态,此时芯片处于不可控状态。做设计时必须使其处于可控状态,即应该接低电平。当为低电平时,若LE为H,则D与Q同时为H或者L,数据实现直通传送;而当LE为L时,无论D为何状态Q都保持上一次的数据状态,数据被锁存住,利用此特性即可实现对数码管的控制。本次设计中:段选信号LE接P1.5,对应图中标号P1.5;位选信号LE接P1.6,对应图中标号P1.6。控制显示时先给P1.5高电平,使通道打开,接着送字码,然后把P1.5电平拉低,使字码保持住;之后打开P1.6(送高电平),紧接着送位码,控制要显示的位,然后把P1.6拉低,数据被保持。最后延时5ms;依次循环扫描;利用数码管点亮后的余晖和人眼视觉暂留效应即可实现动态显示。数码管动态显示电路如图2-5所示。图2-5数码管动态显示电路第3章软件设计3.1系统主程序在主程序模块中,需要完成对各参量和接口的初始化、出租车起步价和单价的初始化以及中断、计算、循环等工作。另外,在主程序模块中还需要设置启动/清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计价等不同的操作。当出租车运行后,就启动计价器,根据里程寄存器中的内容计算和判断行驶里程是否已超过起步价公里数。若已超过,则根据里程值、每公里的单价值和起步价来计算出当前的总金额,并将结果存于总金额寄存器中;中途等待时,无脉冲输入,不产生中断,当时间超过等待设定值时,开始进行计时,并把等待金额加到总金额里,然后将总金额、里程、等待时间和单价送数码管显示出来。程序流程如图3-1所示。图3-1主程序流程图3.2里程计数中断程序每当按一次键输出一个低电平信号,单片机定时器0(工作在计数模式)就对其计数一次,相应的变量设为inter就自加1,当里程计数器inter对里程脉冲计满500次时,对其自身进行清零操作,为下一次计数做准备,同时进入里程计数中断服务程序中,里程变量加1,总金额根据此时所设单价做出相应的变化。里程中断子程序如图3-2所示。图3-2里程中断服务子程序中途等待中断程序在中途等待中断程序中,定时器1每50ms计一次数,每计够100次(5sec),便将当前里程值送入某个缓存变量,与前一个5秒的值进行比较,如果两者相同,则表明霍尔传感器没有输出信号,认为出租车停了下来,进入等待计时,计时中间变量dd自加1,计够12次为一分钟,dd自清零,同时根据所设的等待单价刷新总金额。计数初值可有以下公式获得:X=(65536-t)*11.0592*10^6/12;TH=X/256;TL=X%256;其中:X表示计数初值,TH、TL分别为16位计数器高8位和低8位应装入的初值。用定时器作为基准,可使测试的等待时间更为精确(可以精确到uS级);且每隔5秒比较一次,能有效减小误判率,避免把汽车低速行驶误认为静止等待处理。中途等待子程序流程图如图3-3所示。图3-3中途等待中断子程序流程图3.4费用计算程序计算程序根据里程数分别进入不同的计算公式。如果里程大于3公里,则执行公式:总金额=起步价+(里程-3)*单价+等待时间*等待单价;否则,执行公式:总金额=起步价+等待时间*等待单价。程序流程图如图3-4所示。图3-4计算程序流程图3.5显示程序(改一下,用的事2个四位显示器)由于8位数码管所有段选皆有8位的P0口进行控制,因此,在每一瞬间,8位LED会显示同一个数字。要想每位显示不同的字符,就必须采用动态扫描的方法轮流点亮各位LED,即在每一时刻只使某一位显示字符。在此瞬间,段选控制I/O口输出相应字符段选码(字符码),而位选则控制I/O口在该显示的位送入选通电平,以保证该位显示显示相应字符。如此循环操作,使每位分时显示该位应该显示的字符[7]。在本次设计中显示程序利用延时程序,每隔5ms刷新一次,相应的数码管点亮,显示一位数据,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 突破自我 2026年秋季高一地理湘教版上学期期末测试卷(含答案)
- 2027年江苏省语文初三华师大版冲刺提分卷(含答案)
- 仿真考场 2027年山东省英语中考人教版全真模拟卷(含答案)
- 2027年新疆维吾尔自治区语文九年级沪教版预测模拟卷(含答案)
- 精准预测 2027年陕西省英语九年级沪教版命题预测卷(含答案)
- 快速提分 2026-2027学年第一学期初一历史人教版上学期期末测试卷(含答案)
- 命题风向标 2027届青海省语文初三沪教版考前最后冲刺卷(含答案)
- 2026 广东省水利岗事业编面试高频题集 含答案含解析
- 2026 事业编综合岗面试高频题含答案
- 2026年员工奖惩统一管理总条例
- 2026年全国行政执法人员执法资格考试必考题库与答案
- 2025年中国干粉砂浆市场调查研究报告
- 重庆数字资源集团招聘考试真题2025
- 城镇土地使用税房产税纳税申报表
- T∕CPCPA 0017-2026 托育机构婴幼儿回应性照护服务规范
- 2026云南保山电力股份有限公司校园招聘50人备考题库及参考答案详解1套
- 2025-2026学年苏教版(2024)小学科学一年级上册期末综合测试卷及答案
- 施工单位商务汇报体系
- Python程序设计基础及实践(慕课版 第2版)课件 郭炜 1. Python初探 -7. 组合数据类型(3)字典和集合
- 15189认可培训课件
- 6S目视化管理手册
评论
0/150
提交评论