版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于单片机的出租车计价器设计摘 要随着城市改革开放的进一步深化,出租车行业迅速发展,出租车计价器的市场需求量也大大增加。从加强出租车行业管理及服务质量并且节约成本出发,本设计以at89c52 单片机为中心、附加a44e 霍尔传感器测距,实现对出租车计价统计,采用at24c02 实现在系统掉电的时候保存单价和系统时间等信息,输出采用8段数码显示管。本电路设计的计价器不但能实现基本的计价,而且还能根据白天、黑夜、中途等待来调节单价,同时在不计价的时候还能作为时钟为司机同志提供方便。关键词:出租车计价器 at89c52 单价调节 软硬件设计taximeter based on single-chip
2、 designabstractalong with the urban reform open further deepening,the rental car profession are expanding rapidly,and the rental car mileage fare meters market demand is also greatly increasing. in order to strengthen the rental car trade management and the grade of service,and saves the cost to emb
3、ark,the single-chip circuitry to at89c52 as the center, an additional hall sensor a44e ranging, to realize taximeter statistics, using at24c02 realize when the system power-down unit prices and save information such as system time, the output using 8 digital display tube. the circuit design of the m
4、eter will not only realize the basic valuation, but also according to the daytime, night, halfway to wait to adjust the unit price, while not denominated as a time clock can also provide convenience for the drivers comrades.key word: rental car mileage fare meter、at89c52 、unit price adjustment、softw
5、are and hardware design目录摘 要iabstractii第一章 引言11.1 概述1第二章 总体方案设计32.1方案论证与比较32.2单片机系统总体设计42.3芯片简介52.3.1 at89c5252.3.2 at24c02112.3.3 74hc164122.3.4 ds130213第三章 硬件电路设计163.1 主程序/cpu模块163.2 电源部分设计173.3 路程测量部分173.4 数据显示部分193.5 时钟部分213.6 掉电存储单元at24c02的设计213.7 按键单元设计22第四章 系统软件设计234.1 主程序设计234.2 定时中断服务程序244.
6、3 里程计数中断服务程序254.4 中途等待中断服务程序254.5 显示子程序服务程序264.6 系统调试27总结29参考文献30附录a(硬件原理图)32附录b(源程序)33致谢51第一章 引言1.1 概述凡坐过出租车的人都知道,只要汽车一开动,随着行驶里程的增加,就会看到汽车前面的计价器里程数字显示的读数从零逐渐增大,而当行驶到某一值时(如5km)计费数字显示开始从起步价(如6元)增加。当出租车到达某地需要在那里等候时,司机只要按一下“计时”键,每等候一定时间,计费显示就增加一个该收的等候费用。汽车继续行驶时,停止计算等候费,继续增加里程计费。到达目的地,便可按显示的数字收费。汽车计价器是乘
7、客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此,汽车计价器的研究也是十分有一个应用价值的。随着生活水平的提高,人们已不再满足于衣食住的享受,出行的舒适已受到越来越多人的关注。于是,出租车行业以低价高质的服务给人们带来了出行的享受。但是总存在着买卖纠纷困扰着行业的发展。而在出租车行业中解决这一矛盾的最好方法就是改良计价器,用更加精良的计价器来为乘客提供更加方便快捷的服务。我国在70年代开始出现出租车,但那时的计费系统大都是国外进口不但不够准确,价格还十分昂贵。随着改
8、革开放日益深入,出租车行业的发展势头已十分突出,国内各机械厂家纷纷推出国产计价器。出租车计价器的功能从刚开始的只显示路程(需要司机自己定价,计算后四舍五入),到能够自主计费,以及现在的能够打发票和语音提示、按时间自主变动单价等功能。随着城市旅游业的发展,出租车行业已成为城市的窗口,象征着一个城市的文明程度。出租车计价器是出租车营运收费的专用智能仪表,目前市面所使用的计价器大都功能较少,这给出租车行业的服务质量及管理带来一定影响,而功能齐全的计价器大都采用双cpu结构,这就提高了计价器的生产成本。现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。而部分小城市尚未普及,但随
9、着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。16第二章 总体方案设计2.1方案论证与比较出租车计价器是出租车营运收费的专用智能化仪表,随着电子技术的发展,出租车计价器技术也在不断进步和提高,国内出租车计价器已经经历了4个阶段的发展。从传统的全部由机械元器件组成的机械式,到半电子式即用电子线路代替部分机械元器件的出租车计价器。出租车计价器计费是否正确、出租车司机是否超速才是乘客最关心的问题,而计价器营运数据的管理是否方便才是出租车司机最关注的。方案一:采用数字电路控制。其原理方框图如图 2.1所示。采用传感器件
10、,输出脉冲信号,经过放大整形作为移位寄存器的脉冲,实现计价。 图2.1 数字电路方案考虑到这种电路过于简单,性能不够稳定,而且不能调节单价,也不能根据天气调节计费标准,电路不够实用。整体电路的规模较大,用到的器件多,造成故障率高,难调试,对于模式的切换需要用到机械开关,机械开关时间久了会造成接触不良,功能不易实现。方案二:采用单片机控制。利用单片机丰富的 i/ o端口,及其控制的灵活性,实现基本的里程计价功能和价格调节、时钟显示功能。其原理如图2.2所示。 图2.2单片机控制方案通过比较以上两种方案,单片机方案有较大的活动空间,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现
11、设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以采用后一种方案。在过去,出租车采用机械式的计价器,用齿轮比的方式来计算出租车所跑的里程数,并由里程数来换算车费;由于机械的齿轮体积比较大,计算不是很准确,而且容易磨损,所以选用用了传感器的方式,利用传感器接收车的跑动信息,从而计算里程数和车费,这样计价就会非常准确。完成此装置所需期间简单,成本也非常低,技术上也容易实现2.2单片机系统总体设计单片机采集并判断空车灯信号及路程检测传感器信号,当出租车启动时,单片机检测到霍尔传感器的脉冲信号并进行里程计
12、算。当无乘客时,单片机调用实时时间芯片 ds1302程序和74hc164串口显示驱动程序,用led进行时钟显示;当空车灯掰下乘客上车时:通过ds1302获取时间信息分辨白天/晚上,然后调用at24c02程序获取白天/晚上的单价及起始价,便开始计价并显示时间、里程和金额等信息;当空车灯打上乘客下车时:等待出租车再次启动后单次金额与里程等信息清零复位,就此完成一次计价。图2.3 总体设计框图2.3芯片简介本设计采用了4个芯片,分别为at89c52、at24c02、74hc164、ds1302。2.3.1 at89c52图2.4 单片机引脚图at89c52是51系列单片机的一个型号,它是atmel公
13、司生产的。at89c52是一个低电压,高性能cmos 8位单片机,片内含8k bytes的可反复擦写的flash只读程序存储器和256 bytes的随机存取数据存储器(ram),器件采用atmel公司的高密度、非易失性存储技术生产,兼容标准mcs-51指令系统,片内置通用8位中央处理器和flash存储单元,功能强大的at89c52单片机可提供许多较复杂系统控制应用场合。at89c52有40个引脚,32个外部双向输入/输出(i/o)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,at89c52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器
14、和flash存储器结合在一起,特别是可反复擦写的flash存储器可有效地降低开发成本。p0口:p0口是一组8 位漏极开路型双向i/o口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个ttl逻辑门电路,对端口p0写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。在flash 编程时,p0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。p1口:p1是一个带内部上拉电阻的8位双向i/o口,p1的输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路。对端口写
15、“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(iil)。与at89c51不同之处是,p1.0 和p1.1 还可分别作为定时/计数器2 的外部计数输入(p1.0/t2)和输入(p1.1/t2ex),flash 编程和程序校验期间,p1接收低8 位地址。p2口:p2 是一个带有内部上拉电阻的8位双向i/o口,p2的输出缓冲级可驱动(吸收或输出电流)4 个ttl逻辑门电路。对端口p2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输
16、出一个电流(iil)。flash 编程或校验时,p2亦接收高位地址和一些控制信号。p3口:p3口是一组带有内部上拉电阻的8位双向i/o口。p3口输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路。对p3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的p3口将用上拉电阻。p3口除了作为一般的i/o口线外,更重要的用途是它的第二功能p3口还接收一些用于flash 闪速存储器编程和程序校验的控制信号。rst:复位输入。当振荡器工作时,rst引脚出现两个机器周期以上高电平将使单片机复位。ale/prog:当访问外部程序存储器或数据存储器时,ale(地址锁存允许)输出脉冲用
17、于锁存地址的低8位字节。一般情况下,ale 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。对flash 存储器编程期间,该引脚还用于输入编程脉冲(prog)。movx和movc指令才能将ale激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ale禁止位无效。psen:程序储存允许(psen)输出是外部程序存储器的读选通信号,当at89c52 由外部程序存储器取指令(或数据)时,每个机器周期两次psen有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次psen信号。ea/vpp:外部访问允许。欲使cpu仅访问外部程序存储器(地址为00
18、00hffffh),ea端必须保持低电平(接地)。需注意的是:如果加密位lb1被编程,复位时内部会锁存ea端状态。xtal1:振荡器反相放大器的及内部时钟发生器的输入端。xtal2:振荡器反相放大器的输出端。特殊功能寄存器:在at89c52片内存储器中,80h-ffh共128个单元为特殊功能寄存器(sfe)。at89c52除了与at89c51所有的定时/计数器0和定时/计数器1外,还增加了一个定时/计数器2。定时/计数器2的控制和状态位位于t2con,t2mod,寄存器对(rcao2h、rcap2l)是定时器2在16位捕获方式或16位自动重装载方式下的捕获/自动重装载寄存器。数据存储器:at8
19、9c52有256个字节的内部ram,80h-ffh 高128个字节与特殊功能寄存器(sfr)地址是重叠的,也就是高128字节的ram 和特殊功能寄存器的地址是相同的,但物理上它们是分开的。当一条指令访问7fh 以上的内部地址单元时,指令中使用的寻址方式是不同的,也即寻址方式决定是访问高128字节ram 还是访问特殊功能寄存器。如果指令是直接寻址方式则为访问特殊功能寄存器。定时器0和定时器1:at89c52的定时器0和定时器1的工作方式与at89c51相同。定时器2:定时器2是一个16位定时/计数器。它既可当定时器使用,也可作为外部事件计数器使用,其工作方式由特殊功能寄存器t2con的c/t2
20、位选择。定时器2有三种工作方式:捕获方式,自动重装载(向上或向下计数)方式和波特率发生器方式,工作方式由t2con的控制位来选择。捕获方式:在捕获方式下,通过t2con控制位exen2来选择两种方式。如果exen2=0,定时器2是一个16位定时器或计数器。自动重装载(向上或向下计数器)方式:当定时器2工作于16位自动重装载方式时,能对其编程为向上或向下计数方式,这个功能可通过特殊功能寄存器t2con。波特率发生器:当t2con中的tclk和rclk置位时,定时/计数器2作为波特率发生器使用。如果定时/计数器2作为发送器或接收器,其发送和接收的波特率可以是不同的,定时器1用于其它功能,若rclk
21、和tclk置位,则定时器2作于波特率发生器方式。10可编程时钟输出:定时器2可通过编程从p1.0输出一个占空比为50%的时钟信号。p1.0引脚除了是一个标准的i/o口外,还可以通过编程使其作为定时/计数器2的外部时钟输入和输出占空比50%的时钟脉冲。当时钟振荡频率为16mhz时,输出时钟频率范围为61hz4mhz。uart:at89c52的uart工作方式与at89c51工作方式相同。中断:at89c52共有6个中断向量:两个外中断(int0和int1),3个定时器中断(定时器0、1、2)和串行口中断。这些中断源可通过分别设置专用寄存器ie的置位或清0来控制每一个中断的允许或禁止。ie也有一个
22、总禁止位ea,它能控制所有中断的允许或禁止。时钟振荡器:at89c52中有一个用于构成内部振荡器的高增益反相放大器,引脚xtal1和xtal2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。空闲节电模式:在空闲工作模式状态,cpu自身处于睡眠状态而所有片内的外设仍保持激活状态,这种方式由软件产生。此时,同时将片内ram和所有特殊功能寄存器的内容冻结。空闲模式可由任何允许的中断请求或硬件复位终止。掉电模式:在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内ram和特殊功能寄存器的内容在终止掉电模式前被冻结。退出掉电模
23、式的唯一方法是硬件复位,复位后将重新定义全部特殊功能寄存器,但不改变ram中的内容,在vcc恢复到正常工作电平前,复位应无效,且必须保持一定时间以使振荡器重启动并稳定工作。11程序存储器的加密:at89c52有3个程序加密位,可对芯片上的3个加密位lb1、lb2、lb3 进行编程(p)或不编程(u)来得到。当加密位lb1被编程时,在复位期间,ea 端的逻辑电平被采样并锁存,如果单片机上电后一直没有复位,则锁存起的初始值是一个随机数,且这个随机数会一直保存到真正复位为止。为使单片机能正常工作,被锁存的ea电平值必须与该引脚当前的逻辑电平一致。此外,加密位只能通过整片擦除的方法清除。flash存储
24、器的编程:at89c52单片机内部有8k字节的flash perom,这个flash 存储阵列出厂时已处于擦除状态(即所有存储单元的内容均为ffh),用户随时可对其进行编程。编程接口可接收高电压(+12v)或低电压(vcc)的允许编程信号。低电压编程模式适合于用户在线编程系统,而高电压编程模式可与通用eprom编程器兼容。数据查询:at89c52单片机用data palling表示一个写周期结束为特征,在一个写周期中,如需读取最后写入的一个字节,则读出的数据的最高位(p0.7)是原来写入字节最高位的反码。写周期完成后,所输出的数据是有效的数据,即可进入下一个字节的写周期,写周期开始后,data
25、 palling可能随时有效。9ready/busy:字节编程的进度可通过“rdy/bsy输出信号监测,编程期间,ale变为高电平“h”后,p3.4(rdy/bsy)端电平被拉低,表示正在编程状态(忙状态)。编程完成后,p3.4变为高电平表示准备就绪状态。程序校验:如果加密位lb1、lb2没有进行编程,则代码数据可通过地址和数据线读回原编写的数据。加密位不可直接校验,加密位的校验可通过对存储器的校验和写入状态来验证。芯片擦除:利用控制信号的正确组合(表6)并保持ale/prog引脚10ms的低电平脉冲宽度即可将perom 阵列(4k字节)和三个加密位整片擦除,代码阵列在片擦除操作中将任何非空单
26、元写入“1”,这步骤需再编程之前进行。32.3.2 at24c02at24c02是由atmel公司提供的,i2c总线串行eeprom,其容量为1kb,工作电压在1.8v5.5v之间,生产工艺是cmos工艺,其引脚如图2.5所示。图2.5 芯片引脚图各引脚功能如下:a2a0:这3个引脚是器件地址选择引脚。将这3个引脚配置成不同的编码值,在同一串行总线上最多可扩充8片同一容量或不同容量的24系列串行eeprom芯片。sda:串行数据输入输出口,是一个双向的漏极开路结构的引脚,容量扩展时可以将多片24系列的sda引脚直接相连。 scl:串行移位时钟控制端。写入时上升沿起作用,读出时下降沿起作用。wp
27、:硬件写保护控制引脚。当其为低电平时,正常写操作,高电平时,对eeprom部分存储区域提供硬件写保护功能,即对被保护区域只能读不能写。vss:接地。vcc:接+5v电压。at24c02中带有的片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。2.3.3 74hc164图2.6 74hc164引脚图74hct16是高速硅门cmos器件,与低功耗肖特基型ttl(lsttl)器件的引脚兼容。74hc164、74hct164是8位边沿触发式移位寄存器,串行输入数据,然后并行
28、输出。数据通过两个输入端(dsa 或 dsb)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。时钟 (cp)每次由低变高时,数据右移一位,输入到q0,q0是两个数据输入端(dsa 和 dsb)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。主复位(mr)输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。特性:(1)门控串行数据输入;(2)异步中央复位;(3)符合jedec标准 no. 7a; (4)静电放电(esd) 保护: hbm eia/jesd22-
29、a114-b超过2000 v; mm eia/jesd22-a115-a超过200 v; (5)多种封装形式;(6)额定从-40 c至+85 c和-40 c至+125 c 。引脚说明如表2.1表2.1 引脚功能表符号引脚说明dsa1数据输入dsb1数据输入q0q336输出gnd7地 (0 v)cp8时钟输入(低电平到高电平边沿触发)/m/r9中央复位输入(低电平有效)q4q71013输出vcc14正电源2.3.4 ds1302ds1302是美国dalla公司推出的一种高性能、低功耗、带ram的实时时钟电路,它可以对年、月、日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5v5.5v。采
30、用三线接口与cp进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或ram数据。ds1302内部有一个318的用于临时性存放数据的ram寄存器。ds1302是ds1202的升级产品,与ds120兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。 ds1302的引脚排列,其中vcc1为后备电源,vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。ds1302由vcc1或vcc2两者中的较大者供电。当vcc2大于vcc10.2v时,vcc2给ds1302供电。当vcc2小于vcc1时,ds1302由vcc1供电。x1和x2是振荡源,外接32.7
31、68khz晶振。rst是复位/片选线,通过把rst输入驱动置高电平来启动所有的数据传送。rst输入有两种功能:首先,rst接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,rst提供终止单字节或多字节数据的传送手段。当rst为高电平时,所有的数据传送被初始化,允许对ds1302进行操作。如果在传送过程中rst置为低电平,则会终止此次数据传送,i/o引脚变为高阻态。上电运行时,在vcc2.5v之前,rst必须保持低电平。只有在sclk为低电平时,才能将rst置为高电平。i/o为串行数据输入输出端(双向)。sclk始终是输入端。如图2.7为ds1302的引脚功能图。图 2.7 ds1302 引
32、脚功能图ds1302控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入ds1302中,位6如果为0,则表示存取时钟数据,为1表示存取ram数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。 在控制指令字输入后的下一个sclk时钟的上升沿时,数据被写入ds1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个sclk脉冲的下降沿读出ds1302的数据,读出数据时从低位0位到高位7。 此外,ds1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与ram相关的寄存器等。
33、时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。ds1302与ram相关的寄存器分为两类:一类是单个ram单元,共31个,每个单元组态为一个8位的字节,其命令控制字为c0hfdh,其中奇数为读操作,偶数为写操作;另一类为突发方式下的ram寄存器,此方式下可一次性读写所有的ram的31个字节,命令控制字为feh(写)、ffh(读)。 第三章 硬件电路设计3.1 主程序/cpu模块图3.1 at89c52模块该模块主要包括系统初始化、里程的识别和费率的计算及各种功能模块的的组织和管理等。主程序模块在系统中起着重要的作用。at89c52是一个低电压,高性能cmos 8位单片机,片内含8
34、k bytes的可反复擦写的flash只读程序存储器和256 bytes的随机存取数据存储器(ram),器件采用atmel公司的高密度、非易失性存储技术生产,兼容标准mcs-51指令系统,片内置通用8位中央处理器和flash存储单元,功能强大的at89c52单片机可为您提供许多较复杂系统控制应用场合。at89c52有40个引脚,32个外部双向输入/输出(i/o)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,at89c52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和flash存储器结合在一起,特别是可反复擦写的flash存储器可有效
35、地降低开发成本。9主要功能特性:(1)兼容mcs51指令系统,8k可反复擦写(1000次)flash rom;(2)32个双向i/o口,256x8bit内部ram;(3)3个16位可编程定时/计数器中断,时钟频率0-24mhz;(4)2个串行中断,可编程uart串行通道; (5)2个外部中断源,共6个中断源;(6)2个读写中断口,3级加密位;(7)低功耗空闲和掉电模式,软件设置睡眠和唤醒功能 。3.2 电源部分设计由于计价器的工作环境比较差,它要求有抗振动、抗高低温、抗潮湿、抗电磁干扰等能力,特别是电源方面的干扰,如出租车启动时,发动机打火、电瓶充电等造成输入计价器的+12v电源不稳定。因此采
36、用+12v电瓶电源经过滤波和电源稳压管理芯片 78l05后得到+ 5 v的稳定电压输出,保证整个系统能够正常工作。电路如图3.2所示。图3.2 电源电路3.3 路程测量部分里程计算是通过安装在车轮上的霍尔传感器a44e检测到的信号,送到单片机,经处理计算,送给显示单元的。其原理如图 3.3所示。 图 3.3a44e传感器工作原理图在霍尔电势发生器的两端加上电压vcc后,根据霍耳效应原理,当霍耳片处在磁场中时,霍尔传感器的输出端输出低电平。当车轮转动一圈时小磁铁提供一个磁场,则霍尔传感器输出一次低电平完成一次数据采集。车轮每转一圈,霍尔开关就检测并输出信号,引起单片机的中断,对脉计数。通过计算将
37、脉冲增加体现在金额和里程上。由于a44e属于开关型的霍尔器件,其工作电压范围比较宽(4.518v),其输出的信号符合ttl电平标准,可以直接接到单片机的i/o端口上,而且其最高检测频率可达到1mhz。汽车联轴器按圆周间隔嵌入磁钢,用霍尔传感器集成芯片a44e检测并输出脉冲,霍尔传感器集成芯片a44e有信号转换、电压放大、整形输出等功能。出租车中需要一个能准确获得车轮转动即路程计量信号的装置,以得到标准的脉冲信号送入单片机的p3.3引脚,利用单片机的t1的计数功能完成1000次的计数后产生一中断来完成路程的测量。(设车轮周长为1m,则霍尔传感器每产生1000个脉冲便表示车已行程1km。我们选择了
38、p3.3口作为信号的输入端,内部采用外部中断1,车轮每转一圈(我们设车轮的周长是1米),霍尔开关就检测并输出信号,引起单片机的中断,对脉计数,当计数达到1000次时,也就是1公里,单片机就控制将金额自动的增加,其计算公式:当前单价公里数=金额。费用计算功能:费用计算包括三部分:起步费、行使费和中途等待费用。(1) 起步费用白天6元晚上7元;(2) 行使费用1.6/公里;(3) 中途等待费用0.1/分钟。3.4 数据显示部分由于设计要求有单价(2位)、总金额(4位)显示输出,加上我们另外扩展了时钟显示(包含时分秒的显示),采用 lcd液晶段码显示,在距离屏幕1米之外就无法看清数据,不能满足要求,
39、而且在白天其对比度也不能够满足要求,因此我们采用6位led数码管来显示。本设计的数据显示采用74hc164来驱动(共阳)的方法。74hc164是比较典型的移位寄存器,该移位寄存器有一个数据输入端口、一个时钟信号端口和八个输出端口。这种方法只需要2个i/o端口,而且在锁存器件这2个端口还可以干别的事情。数码管显示是各种仪器设备所不可缺少得重要组成部分,按照显示方法得不同可分为静态显示和动态显示两种这里我们所设计得电路显示属于静态显示,静态数码管显示的优点在于编写程序相对比较简单一旦将欲显示的数据发送出去只要当前显示的数据没有变化就无须理睬它。图3.9 显示电路原理图从单片机串口输出的信号先送到左
40、边的移位寄存器(74hc164),由于移位脉冲的作用,使数据向右移,达到显示的目的。 移位寄存器74hc164还兼作数码管的驱动,插头1(header1)接数据和脉冲输出端,插头2(header2)接电源。3.5 时钟部分计价器在出租车空车行驶时需要显示实时时钟,因为它的时钟是作为白天/晚上单价自动转换的一个基准,而且计价器的时钟显示能为司机和乘客提供方便,所以选择一个好的时钟芯片对计价器很重要。ds1302是美国dallas公司推出的一种高性能、低功耗的实时时钟芯片,采用spi三线接口与cpu进行同步通信;时钟可提供秒、分、时、日、星期、月和年;通过设ds1302的控制/状态寄存器选择日历,
41、时钟方式经过初始校准后即可工作使用;工作电压宽达2.55.5v,采用双电源供电(主电源和备用电源),并设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力,在没有主电源的情况下启用备用电源能保存时间信息及数据。如图3.10所示。图3.10 时钟显示电路原理图3.6 掉电存储单元at24c02的设计掉电存储单元的作用是在电源断开的时候,存储当前设定的单价信息。at24c02是atmel公司的2kb字节的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5v,额定电流为1ma,芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的dip封装,使用方便。其电路如图3.
42、11所示。图3.11掉电存储电路由于at24c02的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线scl(移位脉冲)和sda(数据/地址)与单片机传送数据。每当设定一次单价,系统就自动调用存储程序,将单价信息保存在芯片内;当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用。3.7 按键单元设计图3.12 按键电路电路共采用了五个按键:s1、s2、s3、s4,其功能分别是:s1查询按键,s2功能设定/确认按键,s3/白天晚上切换按键,s4/中途等待开关。第四章 系统软件设计4.1 主程序设计在主程序模块中,需要完成对各接口芯片的初始化
43、、出租车起价和单价的初始化、中断向量的设计以及开中断、循环等待等工作。另外,在主程序模块中还需要设置启动/ 清除标志寄存器、里程寄存器和价格寄存器,并对它们进行初始化。然后,主程序将根据各标志寄存器的内容,分别完成启动、清除、计程和计价等不同的操作。当空车信号灯打下时,表示有乘客上车,并启动计价,将根据里程寄存器中的内容计算和判断出行驶里程是否已超过起价公里数。若已超过,则根据里程值、每公里的单价和起价来计算出当前的累计价格,并将结果存于价格寄存器中,然后将当前时间和累计价格送到led 显示电路显示出来。当中途塞车(等待或低速行驶)时,在一定时间内没有检测到传感器的脉冲信号就启动t0定时器进行
44、计时,当超过规定的等待时间后,计价器就根据等待价格进行当前金额的累加与显示,并在计价器上显示等待时间;当到达目的地的时候,由于霍尔开关没有送来脉冲信号,就停止计价,显示当前所应该付的金额和对应的单价,到下次启动计价时,系统自动对显示清零,并重新进行初始化过程。司机把空车灯打上,就停止计价,显示当前所应该付的金额和对应的单价,等乘客下车后,启动出租车,计价器检测到传感器的脉冲信号,系统自动对显示清零,并重新进行初始化过程,完成1次计价。16图4.1 主程序流程图计价1:起步价+里程每公里价格(1.6元)计价2:起步价+里程1.6元+等待时间等待价格(0.1元/分钟) 计价3;起步价 计价4:起步
45、价+等待时间等待价格(0.1元/分钟) 4.2 定时中断服务程序在定时中断服务程序中,每10ms产生一次中断,当产生100次中断的时候,也就到了一秒,按秒累积60次后恰好为1min,这样就可完成定时1min的功能。4.3 里程计数中断服务程序每当霍尔传感器输出一个低电平信号就使单片机中断一次,里程计数器t1对里程脉冲计满1000次时,就完成当前行驶里程数的累加操作,并将结果存入里程寄存器中。其程序流程如图4.2 所示.图4.2 里程计数流程图4.4 中途等待中断服务程序当中途等待按键s4按下时,就启动t0开始计时,每当计时到达1min,等待时间累加器值就自加,并将结果存入时间寄存器中。当中途等
46、待结束的时候,即再按一下s4键就自动切换到正常的计价。其程序流程如图4.3所示。图4.3 中途等待流程图4.5 显示子程序服务程序显示是检验程序结果最直接也是最简单的硬件设计,采用移位寄存器驱动6位led方式,实行静态显示。静态显示的优点在于,编写程序相对比较简单,一旦将欲显示的数据发送出去,只要当前显示的数据没有变化,就无须理睬它。十进制数显也采用软件方式将bcd码转换成七段码。转换过程:显示的bcd码通过计算、查表、求出存放显示段码单元地址,从该地址单位中取出送显示端口输出。17图4.4 静态显示流程图4.6 系统调试在调试前,先对电路板进行细致的检查,通过万用表的测量,观察有无短路或断路
47、情况。加电后如果发现有些芯片迅速发热,应立即断电检查电路。电源电路板应有良好的稳压特性,保证系统各芯片的正常工作,为此,应仔细测量电源板的各电压输出,检验是否满足系统设计要求。硬件调试离不开软件的配合,通常需要做一些简单的测试程序来确定电路的工作情况,以此判断问题所在。各模块焊接完成后及时用万用表进行测量,测量应连接的点是否正确短接。显示模块,可用欧姆表(内部含电源)进行测试,将表笔正极接数码管共阳端,负表笔依次接abcdefgh,观察数码管是否正常显示,如不正常,检查焊接情况。上电后,测量各芯片引脚电压,与理论值相比较,如不同,检查硬件电路。总结由于本设计使用的是以单片机作为核心的控制元件和
48、灵敏的霍尔开关型器件,使本出租车计价器具有功能强、性能可靠、电路简单、成本低的特点,加上经过优化的程序,使其有很高的智能化水平。但是在我们设计和调试的过程中,也发现了一些问题,譬如计价的金额位数有限,实际的里程可能会很远,会超出我们的显示范围。计价器的设计还不够人性化,比如加上语音的提示功能,可能会更有生命力。参考文献1 何立民.单片机应用技术选编m.北京:北京航空航天大学出版社,19992 求实科技.单片机典型模块设计实例导航j.北京:人民邮电出版社,20043 陈小忠.单片机接口技术实用子程序m.北京:人民邮电出版社,20054 赵晶主.电路设计与制版 protel99 高级应用j.北京:
49、人民邮电出版社,20005 全国大学生电子设计竞赛组委会.全国大学生电子设计竞赛获奖作品精选m .北京:北京理工大学出版社,20006 杨恢先,黄辉先.单片机原理及应用m.长沙:国防科技大学出版社,20037 孙育才 单片微型计算机及其应用j.江苏:东南大学出版社8 宋青,权伟龙,齐新元.开关型霍尔传感器的原理与工程实现j.物理实验,20039 彭树生,庄志洪,赵惠昌.pic 单片机原理及应用m. 北京:机械工业出版社,200110 余永权.atmel89系列单片机应用技术j.北京:北京航空航天大学出版社,200211 窦振中,汪立森.pic 系列单片机应用设计与实例m.北京:北京航空航天大学
50、出版社,200012 苏凯、刘国庆.陈国平编著,mcs-51系列单片机系统原理与设计j.北京:冶金工业出版社,200313 潘新民,王艳芳编著.微型计算机控制技术j.北京:电子工业出版社,200314 涂时亮,张友德编著.单片微机控制技术j.上海:复旦大学出版社,199415 张毅坤,陈善久,裘雪红编著.单片微型机及应用m.西安:西安电子科技大学出版社,199816 基于单片机的多功能出租车计价器设计.肖卫初、陈伟宏、杨明 j.湖南城市学院出版社,200517 基于单片机的出租车计价器编码传感器的设计. 张小虎、刘洁 j.自动化技术与应用,2005,24(10):1-318 何希才,新型实用电
51、子电路400例,北京:电子工业出版社,199819 徐爱钧,8051单片机实践教程,北京:电子工业出版社,2006年20 王世远,徐强,i/v(电流/电压)变换电路j,动态分折与测试技术,1994年21 温景国,武新华,单片机测控系统中的信号变换问题j,太原理工大学学报,1993年第三期22 吴勤勤控制仪表及装置m,化学工业出版社,2007年1月23 :80/tech/tech/tech/0734-2.htm附录a(硬件原理图)附录b(源程序)/*/ / 起始价: 白天6 元,晚上7元 ;单价: 1.6元/公里 ; / 普通出租车,车轮周长为1m,则转1000圈为一公里, / /*/#incl
52、ude#define uint unsigned int#define uchar unsigned char#define write24c02 0 xa0 /10100000,器件地址,写操作#define read24c02 0 xa1 /10100001,器件地址,读操作void i2c_start(void); /函数功能:产生启动信号 void i2c_stop(void); /函数功能:产生停止信号void i2c_send_ack(void); /函数功能:发送ack(确认)信号bit testack(); /函数功能:检查at24c02的ack信号void i2c_write
53、_byte(uchar); /函数功能:向at24c02写入一个字节uchar i2c_read_byte(void); /函数功能:从at24c02读出一个字节void at24c02_write(uchar,uchar *,uchar); /函数功能:向at24c02连续写入若干字节void at24c02_read(uchar,uchar *,uchar); /函数功能:从at24c02连续读出若干字节void minut();void hou();sbit dat=p01; /模拟串口数据发送端sbit clk=p02;/模拟时钟控制端sbit sda=p14;sbit scl=p13
54、; unsigned char tab=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;unsigned char table18=0 x3f,0 x3f,0 xbf,0 x3f,0 x3f,0 xbf,0 x3f,0 x3f; /00-00-00unsigned char cc8=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f;int top=0;unsigned char second;unsigned char tcount;unsigned char minute;u
55、nsigned char hour;unsigned int gl=0; /公里数(百米)unsigned char dj=16; /单价(角)unsigned int ze=0; /总额(角)void sendbyte(uchar byte) uchar num,c; num=tabbyte; for(c=0;c8;c+) clk=0; dat=num&0 x80; /(0 x80即十进制的128,二进制的10000000 按位发送) clk=1; num0;t-) for(j=6245;j0;j-);void display() /显示/unsigned char h; while(1)
56、for(h=0;h0; i-)t_io = acc0; /*相当于汇编中的 rrc t_clk = 1; t_clk = 0;acc =acc 1; / oe=1; /* * 名称: uchar uc_rtoutputbyte* 说明: * 功能: 从ds1302读取1byte数据* 调用: * 输入: * 返回值: acc*/uchar uc_rtoutputbyte(void) uchar i;/oe=0;for(i=8; i0; i-)acc = acc1; /*相当于汇编中的 rrcacc7 = t_io;t_clk = 1; t_clk = 0; /oe=1; return(acc)
57、; /* * 名称: v_w1302* 说明: 先写地址,后写命令/数据* 功能: 往ds1302写入数据* 调用: v_rtinputbyte() * 输入: ucaddr: ds1302地址,ucda: 要写的数据* 返回值: 无*/void v_w1302(uchar ucaddr,uchar ucda)/oe=0;t_rst = 0;t_clk = 0;t_rst = 1;v_wtinputbyte(ucaddr); /* 地址,命令 */v_wtinputbyte(ucda); /* 写1byte数据*/t_clk = 1;t_rst =0;/oe=1; /* * 名称: uc_r1
58、302* 说明: 先写地址,后读命令/数据* 功能: 读取ds1302某地址的数据* 调用: v_rtinputbyte(), uc_rtoutputbyte()* 输入: ucaddr: ds1302地址* 返回值: ucda :读取的数据*/uchar uc_r1302(uchar ucaddr)uchar ucda;/oe=0;t_rst = 0;t_clk = 0;t_rst = 1;v_wtinputbyte(ucaddr); /* 地址,命令 */ucda = uc_rtoutputbyte(); /* 读1byte数据 */t_clk = 1;t_rst =0;/ oe=1;re
59、turn(ucda);/* * 名称: v_burstw1302t* 说明: 先写地址,后写数据(时钟多字节方式)* 功能: 往ds1302写入时钟数据(多字节方式)* 调用: v_rtinputbyte() * 输入: psecda: 时钟数据地址 格式为: 秒 分 时 日 月 星期 年 控制* 8byte (bcd码) 1b 1b 1b 1b 1b 1b 1b 1b* 返回值: 无*/*void v_burstw1302t(uchar *psecda)uchar i;v_w1302(0 x8e,0 x00); /* 控制命令,wp=0,写操作?t_rst = 0;t_clk = 0;t_r
60、st = 1;v_wtinputbyte(0 xbe); /* 0 xbe:时钟多字节写命令 for (i=8;i0;i-) /*8byte = 7byte 时钟数据 + 1byte 控制v_wtinputbyte(*psecda);/* 写1byte数据psecda+;t_clk = 1;t_rst =0; */ /* * 名称: v_burstr1302t* 说明: 先写地址,后读命令/数据(时钟多字节方式)* 功能: 读取ds1302时钟数据* 调用: v_rtinputbyte(),uc_rtoutputbyte()* 输入: psecda: 时钟数据地址 格式为: 秒 分 时 日 月 星期 年 * 7byte (bcd码)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 居住小区道路建设物业合同
- 商场电梯安全使用合同
- 农村基础设施招投标开标流程
- 书法用品租赁合同
- 屋顶修复快速施工合同
- 专题01 一元二次方程(5大基础题+4大提升题)(解析版)-2024-2025学年九年级数学上学期期中真题分类汇编
- 拆除工程爆破拆除
- 电视台内部贴壁纸施工合同
- 家电企业区域销售经理招聘协议
- 城市桥梁建设基础设施施工合同
- 开展修旧利废活动方案
- 交流高压架空输电线路跨越石油天然气管道的相关规定
- 初三全一册单词表汉语部分
- 中国画PPT精选课件
- 《幼儿教师口语训练》课程实训手册
- 35kV-SF6气体绝缘金属封闭式高压开关柜技术规范书
- 大学小组成员介绍动态PPT
- 纺织服装制造行业纳税评估模型案例
- 关于“钓鱼执法”现象的法律思考
- 广告牌拆除施工方案
- 英语-2020年3月高三第一次在线大联考(北京卷)(考试版)
评论
0/150
提交评论