




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于51单片机的出租车计价器摘要这款计价器设计应用场景是用于出租车运营,要求有计程计价的性能。计价器由STC89C52单片机为主体,通过单片机丰富的借口连接,以复位电路,时钟电路,键盘电路等外围芯片为辅助,组成一个整体进行工作。复位电路的意义是重启单片机,任何一款能正常使用的计价器都必备的功能,必要时也能摆脱操作错误的窘境,通过复位电路的功能可以重新进行工作。作为计时部分的12MHz晶体时钟电路的用途,是为计价器提供具有高的精度的系统时钟源。使用了Proteus等仿真软件,对计价器的软硬件部分模拟运行,用于调试。通过连接上电源,字符型液晶1602可以显示三种收费:最低起步距离内的起步价,超出最低里程后,按公里数以及中途等候时间向,乘客收费。根据应用场景的不同,可以使用按键在里程收费,起步价,等候时间三种模式之间切换。仿照出租车在载客运营的行为模式,暂停与结束。与至相关的运行时间和暂停时间等信息可以在1602液晶上查看到,总成本和总距离可以通过计算得出来。STC89C52控制器单片机为主体,P0端口与LCD模块1602的显示芯片连接,P1端口为键盘模块的连接端口,按键负责输入。关键词:AT89S52;1602液晶;出租车计价器;DS1302;K24C021刖言自国家实行改革开放以来,生活质量得到了极大的改善,出行的方式也多样化起来。汽车是我们出行的工具,同时,出租车的队伍也跟随着一起壮大了起来,与之相关的出租车计价器的地位愈发重要,因为计价器的作用是保证司机与乘客之间公平交易的媒介。通过几十年的发展,如今我们国家的出租车保有量超140万辆,出租车乘坐渗透入人民生活的方方面面。而计程车行业能否健康发展,取决于它所使用的仪器是否公正。出租车计价器是依靠电磁感应等方式,把车轮转动的次数纪录下来,判断运营行驶的距离,并衡量出价格的一种仪器。出租车计价器是相关运营行业立身诚信的根本,计价器如果不准确,将会损害经营者或乘客的利益。国家制定了相关法律法规,为保障司机与乘客的权益,将出租车计价器列为国家六类重点计量器具之一。只有公正的标准才能保证出租车的运营。国内外出租车计价器的研究现状:长久以来,国内使用的出租车计价器只有单一的计量距离功能。世界上大部分计价器产自台湾。而我国的出租车计价器企业主要集中分布在北上广和沈阳这几个城市。而接着第二代计价器登上历史的舞台。与传统的单一功能相比,新一代的计价器可谓进步颇多,运用了齿轮传动的机械结构搭建主体,用于量程。还简单的配备的了计算功能用于核算乘客的应付车资。随着电子线路的制作越来越精巧,印刷线路板的诞生,计价器也迎来了第三代模式。如今的计价器也是属于这个类型。精密的线路使得更多的功能可以集成在计价器的核心里,在保证了原有的功能,在具备显示功能。精度高,可靠性好。随着集成电路的日益精密,单片机和各种电子芯片的功能也是日新月异。使得计价器精度更高同时性能也比之前的更稳定,并产生了诸多的附加功能。例如:LCD显示功能、时钟功能、信息存储功能等。新一代的计价器有很多拓展空间,可以根据用户的需求进行添加。2设计任务2.1出租车计价器原理设计一款基于STC89C52单片机的出租车计价器。2.2出租车计价器细节设计2.2.1实际运营的收费标准白班,夜班和途中等待(等待时间3分钟起开始收费)2.2.2计价器复位功能设计2.2.3IO口分配的简易要求利用霍尔开关A44E型号的电磁感应原理,测算车轮的转动次数从而测出距离白天/晚上收费标准根据时间计算2.2.4数据输出(采用LCD1602)单价输出:两位路程输出:两位总金额输出:三位2.2.5按键等待时钟调节白天/晚上转换2.2.6发挥部分要求具备计价功能。要求时钟显示功能一直存在。要求性能稳定,计价准确。2.3系统主要功能本次依靠单片机设计的出租车计价器可以实现以下功能:数据结束或异常时的复位,昼/夜运营的价格转换,数据传输,里程与价格的计算,最终价格输出数据信息。信息显示通过1602液晶显示屏展现。该电路的设计,不仅实现了基本的仪表定价,还能同时使用于白班与夜班的情景中,中途等待也能公平计费,同时还能作为一个常规的时钟显示时间,方便司机与乘客。2.4方案论证与比较方案一:采用自动化电子设计技术,在EDA软件平台上把计价器问题由上往下分层数个层次。依其系统框图如图2.1所示:分为分频,控制,计量,译码和动态扫描显示等模块。方案二:使用传统的单片机方案。单片机采用51单片机系列里的STC89C52,作主要核心,由其他芯片组成子部件用作显示模块,计程模块,时钟模块等。利用单片机丰富的IO口进行连接,不仅可以实现出租车计价器的上述功能,还有很多拓展的空间,方便对系统进行升级如图2所示:键盘控制AT89C52测速电路图2.2方案二3出租车计价器硬件设计硬件是一个电子器具能否顺利运行的重要保障,它是软件的物质基础和载体。本系统的硬件设计主要包含K24C02记忆存储模块,用于存储数据;DS1302时钟模块,为计价器计时;A44E霍尔传感器电路,丈量里程;数据显示部件,把信息显示在液晶屏上;里程计算及计价单元的设计,把单价与里程进行运算;以及最重要的单片机STC89C52。充分发挥各部分硬件部件的功能特点,组成此多用途的出租车计价器设计。合理搭配使用,尽量兼顾性能与性价比。3.1系统的硬件构成及功能硬件大体上可分为7个模块,方案图如图3T。包含了以下部件:STC89C52,每公里价格与总价显示部件,键盘操作部分,里程计算部分,1302时钟显示模块,K24C02存储器存储模块。通过正确的链接单片机上的多种IO端口,达到可以显示里程计算功能,调价功能以及时间展示功能。不仅能达到所要求的功能,而且具有充足的拓展余地,还能非常便利地提升系统功能。后面“多功能出租车计价器总体电路图”有更为详细的内容。键盘控制液晶显示部分测速电路STC89C52单片机24C02记忆存
借DS1302时钟显
示模块24C02记忆存
键盘控制液晶显示部分测速电路STC89C52单片机24C02记忆存
借DS1302时钟显
示模块24C02记忆存
储图3.1单片机控制方案图3.2STC89C52单片机说明STC89C52是一种耗能不高、性能高CMOS8位微控制器。属于增强型的51单片机并具有可编程Flash存储器。作为一款内含8位CPU的单芯片,在系统可编程Flash,具有很强的拓展空间,计价器一直处于发展状态,以后更新升级也比较方便。这款单片机有这些部件:看门狗定时器、8k字节Flash、32位I/O口线、MAX810复位电路、内置512字节RAM、4KB的EEPROM以及三个16位定时器/计数器和一个6向量2级中断结构,还有全双工串行口。另外STC89C52可降至0Hz静态分析逻辑进行操作。闲暇模式下,CPU停止,允许RAM,定时器/计数器,
串行口,中断工作。掉电保护管理方式下,RAM内容被保存,振荡器被冻结,计价器的STC89C52所有工作停止,直到下一个中断或硬件系统复位为止。最大操作频率35MHz时,6T/12T可选的。22£522£56g9]Q112]3Pl]5J617]S1920P1.0V;C€40PL.lPO.O39PL.2PO.l3SPL1P0.2.37PL.4P0.336PL.5P0.435PL.6P0.534PL.7PO.d33FST^ZPTPO732P;3.0/RXDKWPPsiP3l/TXDAIE齐30P3.2/INT0虫/SEjM292SP3.3/INT1PJ.7P3.4/T0P:-.627P3vripj526pji.eZVkP2.425P3.7丽P:324XTAL1P3.223XTAL2P2.122vcsPIO21图3.289C52引脚图引脚功能说明VCC:电源GND:接地P0口:这个端口有8位漏极开路,是个双向的I/O口。一般为信息输入的端口,总共能驱动8位X8的TTL的逻辑电平。把P0端口设置为“1”时,引脚可以用作高阻抗数据输入。当访问别处的RAM或外部的程序时,P0端口的用处就是8位地址/数据复用。P1口:作为8为位双向I/。口,P1口输出缓冲器能驱动的逻辑电平有4个,且拥有内部上拉电阻。把P1端口设置为“1”时,端口位会被内部上拉电阻拉高,此时我们可以利用它作为输入口设计使用。当P1口被用于数据的输入功能时,会输出ILL的电流,因为外部拉低了引脚,影响了内部电阻。而P1.0可作定时器/计数器2的外部计数输入,P1.2可作时器/计数器2的触发输入。在闪存编程和验证,P1端口接收的低位地址位。表3.189C52引脚说明引脚号第二功能P1.0T2(定时器/计数器T2的外部计数输入),时钟输出P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5MOSI(在系统编程用)P1.6MISO(在系统编程用)P1.7SCK(在系统编程用)P2口:为8为位双向I/O口,其内部含有一个上拉电阻,P2输出缓冲器可以驱动4个TTL逻辑电平,把P2端口设置为“1”时,可以把这个端口用作输入口,因为内部端口被上拉电阻拉高。如果有数据输入时,引脚被外部拉低后由于端口内部电阻的存在,输出电流(IIL)。P2口在有需要的时候也能送出高八位地址,如用16位地址读取外部ROM或访问外部程序RAM时,P2口凭借其内部上拉输入信号“1”。P2端口会在使用8位地址对外部RAM访问时,输出P2锁存器的信息。在闪存编程和校验过程中,一些控制信号和高8位地址字节也能被该端口接收。P3口:作为8为位双向I/。口,其内部含有一个上拉电阻,P2输出缓冲器可以驱动4个TTL逻辑电平,把P3端口设置为“1”时,可以把这个端口用作输入口,因为内部端口被上拉电阻拉高。如果有数据输入时,引脚被外部拉低后由于端口内部电阻的存在,输出电流(IIL)。P3口作为这款单片机的特别功能使用,可查看下面表格更多内容。在闪存编程和验证,控制信号还能被P3口接收。表3.289CS52引脚说明引脚号第二功能P3.0RXD(串行输入)P3.1TXD(串行输出)P3.2INTO(外部中断0)P3.3INT1(外部中断1)P3.4T0(定时器0外部输入)P3.5T1定时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器写选通RST:使单片机作出复位动作的引脚。当晶体振动工作时,想要用高电平将终止当前功能,使单片机复位,需要第一个脚持续2个机器周期即24个时钟周期。在WDT完成计时后,复位引脚会输出高电平,共计96个晶振周期。想要使复位功能无效可以借助一直独特的AUXR寄存器。其DISRTO位能令复位功能暂停使用。不过寄存器AUXR在正常的默认模式下是设定复位电路有效的。ALE/PROG:该引脚是专门负责发送地址锁存信号的端口。当单片机与外部的ROM有访问需求时,地址锁存信号发出low8位的控制信号。在编程时,输入脉冲也可以由该引脚发出。在没有访问外部ROM需求时,此引脚按1/6的固定频率,向外发射电子脉冲,定时器和时钟就是依照此原理来进行工作的处。需要注意的是,ALE脉冲会被跳过,如果单片机出于访问外部ROM的时候。根据应用需求,我们可以将位于8EH的特殊功能寄存器最前面的位置写一,可以无效化ALE的操作。此处为“1”时,只有查表指令或外部数据存储器的传送指令时,ALE的执行才有效。若非如此,会把地址锁存控制信号轻微拉高。当微控制器系统在一个外部环境中执行管理模式时,ALE的使能标志对其无效。PSEN:该引脚是通选信号,用于允许输出外部程序ROM的时候。该单片机的外部ROM执行外部代码时,此引脚会被激活,每一个机器周期PSEN会生效两次。其他情况下PSEN为待激活状态,如访问外部RAM时。EA/VPP:访问外部ROM的控制信号。必须接地,以保证由0000H到FFFFH的使能可以读取ROM内的指令。当接到VCC的时候,可以执行内部程序指令。VPP的电压能在闪存编辑期间接收到12伏。XTAL1:输入振荡器、逆变器、放大器和内部时钟发生器电路。XTAL2:输出振荡器、逆变器、放大器。3.3A44E霍尔传感器检测单元图3.3传感器测距示意图里程计算是车辙上安装的传感器通过电磁感应原理,将车辙的圆周运动转换成电信号输出到单片机里,换算成对应的公里数和价格最后显现在屏幕上。通过A44E转换成数字信号符合TTL电平标准,因为它的工作电压比较大,在4.5~18V。属于开关型霍尔元件。其端口可以与STC89C52直接相连,1MHZ是目前能达到的最高频率检测。这个集成霍耳开关由霍尔器,稳压片,差分放大器,OC输出门和施密特触发器五部分组成。依照霍尔原理可知,霍尔电势发生器的两端通过稳压器的连接,与输入端输入的电压接通后,当霍尔片在磁场中,目前应用在垂直于磁场方向,然后大厅电位差HV输出将生成的方向垂直于两个方向,和HV信号将被放大的放大器和施密特触发器整形,所以它变成了一个方波和传播0C门的输出。当存在的磁场强度满足要求时,达到了工作点(0PB),触发器相对于大地输出的电压为高电压,导通了三极管,而0C门处,低电压输出,霍尔开关此时被打开。当存在的磁场强度满足要求时,达到释放点(即rPB)时,低电压从触发器处输出,使得高电压从0C门处输出,霍尔开关此时被关闭。经过这样一开一关,完成了霍尔开关的一个工作周期。为了使程序设计比较容易一点,我把信号的输入端定在了P3.2,内部为外部中断0,为方便计算,我假定出租车轮毂旋转一圈周长为1米,当车轮完成一次转动,霍尔开关就经过一个周期,发出脉冲,使得SCT89C52发生中断,然后纪录下来的,当中断了一千次时,就代表了出租车行驶了一公里,计价器上的价格就会更新跳动一次,金额等于当前每公里单价乘于行驶的公里数。GNDVCCGNDVCCOUT图3.4传感器电路图3.4数据显示单元设计在单片机设计中,有多种多样的信息显示器件,其中最为广泛应用的就是字符型液晶模块。为了满足占体小,节能低耗,又得保证显示的内容足够丰富,我选用了1602型LCD显示模块。这个显示模块能显示上下两行,每行8个字符,有DO〜D7共计8位的数据总线。这款模块还有RS,R/W,EN三个控制端口,在5V电压下可以正常工作,附带背光情况下使用,可以调节字符对比度的功能。用于显示出租车运行中的相关信息。接口信号说明:1602型LCD的接口信号说明如表3.3所示。表3.31602型LCD的接口信号说明第1脚VSS电源地第9脚D2双向数据线第2脚VDD+5V电源第10脚D3双向数据线第3脚VEE液晶显示偏压信号第11脚D4双向数据线第4脚RS数据/命令选择端第12脚D5双向数据线第5脚R/W读/写选择端第13脚D6双向数据线第6脚E使能端第14脚D7双向数据线第7脚DO双向数据线第15脚BLA背光源正极第8脚D1双向数据线第16脚BLK背光源负极表3.41602型LCD的主要技术参数显示容量16x2个字符芯片工作电压4.5〜5.5V工作电流2.0mA(5.0V)模块最佳工作电压5.0V字符尺寸2.95x4.35(WXH)mm表3.5基本操作程序
读状态令RS=L,RW=L,E=HD0~D7=状态字读数据令RS=H,RW=H,E=H无写指令令RS=L,RW=L,D0~D7=指令码,E=高脉冲D0~D7=数据写数据令RS=H,RW=L,D0~D7=数据,E=高脉冲无指令内容输出图3.5单片机与LCD1602的连接图3.5时钟电路设计美国TheDallasGroupofAmerica公司推出了一款名为DS1302的时钟芯片。其特点是性能高、功耗低、工作时功率小于1mW。内含一个31字节的静态RAM的实时时钟电路,这款芯片能在时分秒,年月日等单位进行计时,每月的天数和平润年区别都可以自定调整,芯片DS1302能在2.5V~5.5V间正常使用。DS1302内部有两类与RAM相关的寄存器。用于时钟电路的程序存储。一类是由31个RAM单元,,独立组成的,每一个单元有8个字节的RAM寄存器,掉电丢失,用于暂时储放信息。另一类突发方式寄存器能必要时候将多个字节的RAM数据和时钟信号通过CPU与三线接口同步通信
的方式,一次传送出来。作为一款升级版时钟芯片,DS1302不仅与前版本芯片兼容,而且米用了备用源VCC1、主电源VCC2双电源引脚,同时VCC1具备小电流充电能力。通过串行接口进行数据传输。振荡源接口出的外接处,连接32.768kHz的晶振。3.5.1DS1302引脚说明LI”LI”8xia2736igndIZ45nnnn图3.6DS1302引脚主电源引脚为VCC2,备用电源引脚为VCC1。主电源正常工作时电容就处在充电状态,当主电源断开后,这个电容能短时间内继续给DS1032供能。主流引脚比备用电源引脚高时,DS1302由主流引脚供电,反之,由备用引脚供电。DS1302开始运行,直到主输入引脚大于两伏特前,引脚RST都必须保持低电平。想要将RST置为高电平,只有在通信时钟引脚为低电平才行。I/O引脚是连接单片机STCC52,负责数据串行数据双向传输的。SCLK是单向输入引脚,为通信时钟的输入端。具体的引脚说明如表3.6o表3.6DS1302引脚功能说明引脚号名称功能1VCC1备份电源输入2X132.768KHZ输入3X232.768KHZ输出4GND地5RST控制移位寄存器/复位这款时钟芯片采用串行外接设备接口的驱动方式,编程时须留意时钟芯片的读写时序。它不仅可以通过控制字的写入来向寄存器输入信息,还能从正确的寄存器里获取到相应的数据信息。只有熟悉并掌握了DS1302时钟芯片的控制字,才能发挥它的通信用途。该时钟芯片的控制字的详细信息在表3.6处。为了实现时钟芯片的不同时间类型的显示,需要将各种数据写入寄存器,想要传送不同的信息内容,制定其正确的工作方式,只需认真学习了解控制字就能实现。因为数据的每次传输都从控制字开始。DS1302的一条指令有0~7共计8位字节,第7位字节必须固定唯1,因为当它为0时,写进去DS1302的指令就是无效的。第6位:是RAM/CK。当第六位是0时表示我们使用的是寻址内部寄存器CK功能,存取时钟数据,要使用寻址内部存储器RAM的功能则把第六位设为1。A4、A3、A2、ALA0分别表示第五位到第一位,都是负责定义AM片内寄存器的地址。当第6位为0时执行CK时钟功能时,定义一个时钟和其他数据寄存器的地址。A4至A0=0至6,第二,分钟,小时,日期,月份,星期,寄存器顺序。如果A4至A0=7,则写入芯片保护开关的地址。当A4至A0=8时,选择慢充电参数的寄存器。当A4至A0=31时,选择寄存器进行字节处理模式。当第6位为1时,则执行寄存器RAM地址定义,A4至A0=0至30,根据每个子地址的RAM,该地址对应于用于多字节模式选择的31RAM模式。4.第0位是最低位:当最低位取0,DS1302可以进行写操作,当最低位取1,则行使读操作。当数据需要进行交换传输时,信号CE引脚应该低到高,当CE被驱动到逻辑1状态时,逻辑0一定在SCLK,串行数据的输入出现在SCLK的上升沿,不管是读或写周期周期或传输系统是否是单字节或多字节,40字节的要被存取的必须由控制字来指定,在八个时钟周期命令字的开头(具有地址和控制的8位数据装配在移位寄存器后信息),在读操作中的时钟输出的附加数据,在输入数据的写入操作中,所有的数据更改时钟下降沿。所有的读入和写出均无法直接操作,想要进行信息的传输交换,都是依靠发送字节命令的方式。对于单字节操作,包括命令字节在内,各两个字节,需要16个时钟,多字节的操作的时钟/日历模式,每一个字节是7,它需要72个时钟,以及用于操作的多字节RAM模式,32每字节,最多256个时钟相比较,这里只单个字节序列,向其中操作类似的多字节模式,不同之处以及与具有多于一个字。—^ULrLrLrLTLrLnRrLrLrLrLrLrL
《耻A&AlHASAdR启"H口1典I皿D406^57rLrLnrLrLFmrLrLrmLFLrLrurm 图3.8DS1302单字节读写时序3.5.3DS1302片内寄存器说明通过使用控制字对时钟芯片的选择工作区对应的寄存器,开始进行相应的指令操作时,须得了解芯片中各类寄存器的功能定义。表3.9片内各寄存器各位的功能定义表在读寄存器写寄存器BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0范围这款时钟芯片十个功能的寄存器81H80HCH10秒秒00〜5983H82H10分分00〜5985H84H12/24010时时1〜12AM/PM0〜2387H86H0010日日1〜3189H88H0010月月1〜128BH8AH00000周日1〜78DH8CH10年年00〜998FFH8EHWP0000000—中,里面7个寄存器是与时钟/日历有关的,S1H/80H表示秒钟,83H/82H表示分钟,85H/84H表示小时(有12进制和24进制),87H/86H表示日期,89H/88H表示月份,8BH/8AH表示星期,8DH/8CH表示年份。寄存器三85H/84H的最高位bit7决定了时钟芯片的小时是12进制还是24进制,当bit7为1是12小时制,bit7为0是24小时制。在bit7=1(12小时制)时,第5位0表示上午am,1表示下午pm。在bit7=0(24小时制)时,第位5是24个小时里的十位数,低4位是小时里的个位数。
图3.8单片机与时钟芯片DS1302连接图这种硬件连接线路方式简洁明了,不容易受外界因素的影响。如图,时钟芯片DS1302的RST端径直项链在单片机的p2.2引脚上,联通电源,单片机的引脚P2.2会为时钟芯片输出一个高电平。串行时钟接口则连接单片机P2.0的引脚,时钟数据的I/O端口连接单片机引脚p2.1。时钟芯片使用VCC1+VCC2主备供电,这么做的好处是保证了电源的稳定性。平时由大电源供电,当大电源失效之后,由图中+3V的小电源对计价器输出电压。连接时需额外注意XI和X2的的,前者接晶振的输入端,后者接输出端。3.6键盘调整电路按键部分采用7个独立按键图3.9键盘调整按键电路K1:第一次按下开始计价,第二次按下停止计价,第三次按下计价数据清零,并返回时间显示页面。K3:暂停出租车(直流电机)的转动。K4:启动出租车(直流电机)的转动。K5:时间日期设置键。K6:里程单价和起步价的设置键。K7:在设置状态下,是增大键;在不设置的状态下按下显示当天的总价。K8:在设置状态下,是减小键;在显示当天总价的时候,按下使当天的总价清零。3.7K24C02的电路设计记忆存储模块我们选用EEPROM中的K24C02电可擦除可编程只读存储器,K24C02包含每个8位,共计256个的字节存储空间。K24C02的工作电压为1.8—6.0伏特,可以在多种场景多种方式下应用。时钟及数据传输:数据传送通常取决于SCL端口所接的能发出串行时钟信号的主器件。外围器件通常会把端口SDA的电压拉高。只有当接串行时钟的SCL端口处于低电位时,用于器件所有数据的发送或接收的SDA管脚才能发生变动(参见图2-10);当串行时钟端口SCL为高时,SDA端口如果出现变化,这个变化将视为一条特殊的命令,表示启动或停止,下文有阐述。起始条件:当串行端口的SCL表现为高位电压时,SDA端口出现了电压从高位变化到低位,则此变化会被定义为起始命令。如果我们想要进行读取或写入,都必须要凭借该命令进行(参见图2T1)。停止条件:当串行端口的SCL表现为高位电压时,SDA端口出现了电压从低位变化到高位,则此变化会被定义为停止命令,再一次读的动作完成后,这个动作将会发出命令使得EEROM不再应答主器件的请求,进入等待模式。(参见图2-11)。应答:每8位bit,根据字节的定义,组成一个地址和数据字节用于输入或输出。每当接收了一组由8位构成的信息后,将会输出一个返回信号,在第九个时钟周期,用于表示应答。主控器件如果要继续接受数据,当它在第一到第八时钟周期内接到一组数据后,应答向EEPROM作出应答,这个信号在第九周期。只有收到的这个应答的请求,EEPROM才会向主控器件发送下一组8位的数据。等待模式:K24C02如果想暂停使用又不想关闭它,可以使其进入等待模式,在此模式下功耗将会被压缩到极低。想进入等待模式有两种方法,一个是上电:一个是内部没有任何操作时收到停止位。器件复位:当出现异常情况导致协议中断,电源断开或系统发生复位后,想要将器件复位需要按照下面3步进行操作:先把9个时钟连续输入进去,在此期间位置SCL和SDA同时都为高位,在每个时钟周期中,然后建立一个起始条件即可。數卖受化图3.10图3.11K24C02断电存储部分电路如下:VCCU1GND图图3.11K24C02断电存储部分电路如下:VCCU1GND图3.124系统的软件设计本系统的软件设计主要分为8个部分,对于转换公里数为价格的主程序模块,定时中断程序,里程技术中断程序,客人中途要求我们等待时的中途等待中断服务程序显示子程序服务程序,控制键盘逻辑关系的键盘服务程序,用于计时,显示时间的DS1302时钟程序以及K24C02的数据断电保护程序。下面对各部分模块作介绍。4.1系统主程序设计我们的主程序模块需要在计价器开始工作时初始化计价器里的各个芯片,重新开始计算里程和金额,并通过里程寄存器来进行运算分析,当前的行驶里程何时会超过规定的起价公里数。在起步价的里程内,车资按照起步价算。当行程超出了起步价里程,则根据超出的里程以及每公里的单价数进行运算,再加上起步价,即为当前出租车应收的车资,并将结果保存在寄存器里,最后通过显示屏公示出来。开始总路程加1显示金额至单怆图4.1主程序流程图4.2里程计数中断服务程序给出租车计价器设置一个计数上限,规定:当计价器完成了1000次里程价格计算时,单片机就不再继续运行,中断当前工作,使得计价器停止服务。为了完成这一操作,需要把对计价器内里程价格计算的操作累加计数,并把结果存入里程和总额寄存器中。。4.3中途等待中断服务程序当出租车服务已经开始后,乘客因个人原因需要出租车司机原地等待的,就要应用到这个中途等待的功能。司机按下休息键,车子原地等候乘客期间,进行等候计费模式。每次计时满3分钟,就对当前车费加上每3分钟等待的金额。4.4显示子程序出租车计价器的显示模块我应用了1602液晶显示器,这个显示器可以写两行X40字符,共计80个字符,并且自带字符库。关于程序的编辑,一般是先写命令,然把字符显示设置好,数据放在最后才写。每次我们都需要判断显示器是否正忙,再去写命令或数据。4.5DS1302时钟程序DS1302程序操作流程图如下:根据上述点流程图,设计DS1302时钟程序:(程序参考系统源程序)4.6K24C02数据断电保护程序K24C02器件基本操作如下:数据传送通常取决于SCL端口所接的能发出串行时钟信号的主器件。外围器件通常会把端口SDA的电压拉高。只有当接串行时钟的SCL端口处于低电位时,用于器件所有数据的发送或接收的SDA管脚才能发生变动(参见图2-10);当串行时钟端口SCL为高时,SDA端口如果出现变化,这个变化将视为一条特殊的命令,表示启动或停止,下文有阐述。⑴起始条件:当串行端口的SCL表现为高位电压时,SDA端口出现了电压从高位变化到低位,则此变化会被定义为起始命令。如果我们想要进行读取或写入,都必须要凭借该命令进行。⑵停止条件:当串行端口的SCL表现为高位电压时,SDA端口出现了电压从低位变化到高位,则此变化会被定义为停止命令,再一次读的动作完成后,这个动作将会发出命令使得EEROM不再应答主器件的请求,进入等待模式。应答:每8位bit,根据字节的定义,组成一个地址和数据字节用于输入或输出。每当接收了一组由8位构成的信息后,将会输出一个返回信号,在第九个时钟周期,用于表示应答。主控器件如果要继续接受数据,当它在第一到第八时钟周期内接到一组数据后,应答向EEPROM作出应答,这个信号在第九周期。只有收到的这个应答的请求,EEPROM才会向主控器件发送下一组8位的数据。等待模式:K24C02如果想暂停使用又不想关闭它,可以使其进入等待模式,在此模式下功耗将会被压缩到极低。想进入等待模式有两种方法,一个是上电:一个是内部没有任何操作时收到停止位。器件复位:当出现异常情况导致协议中断,电源断开或系统发生复位后,想要将器件复位需要按照下面3步进行操作:先把9个时钟连续输入进去,在此期间位置SCL和SDA同时都为高位,在每个时钟周期中,然后建立一个起始条件即可。其源程序参考系统源程序。4.7键盘服务程序为了使得计价器具有可操控性,对系统时间,应收单价,昼夜切换等功能或显示进行调节,加入一个键盘模块。令出租车计价器具备实际使用意义,方便司机操控,乘客读取信息。开始保护现场帀:置计数初值开始保护现场帀:置计数初值pi数据送M.示緩冲单元调用显示子程序恢受现场图4.3定时中断服务程序5系统安装与调试5.1程序的查错手段我们在设计一款单片机的应用系统时,一般不会直接使用实物进行制作。必须借助软件和开发系统来验证自己的想法,进行数字化模拟实验,仿真,对我们设计的硬件和软件全面勘查,测试,验证其可行性并避免浪费实物。软件和开发系统的种类有多种,但通常都是用以下几种手段可供仿真与查错。5.1.1单步执行简单的单步执行可以帮助我们对程序采用逐条逐条检查的方式,每一步检查一条指令,通过这种分步且细致的检查来验证程序是否与我们设计的要求一致,能否实现我们想要的功能。而宏单步执行操作则可以把一段程序执行检查,一步就能执行整个循环程序段。5.1.2断点设置全速运行当我们对自己的程序已经大体排查完毕之后,如果还对程序的某些地方不太确定抱有疑虑,不必一段一段的进行检测,只需要对有疑问的地方设置一个断电,开始运行程序,断电设置操作就能过以全速或者非全速的方式,从开头一直运行到目的地。运行有三种结果,一个是程序写的正确,至少无逻辑和语法上的硬伤,那程序就会一直顺利运行到目的断点处,并且自动返回监控状态。一个是程序确实出现了错误,那么检测运行就会从开头一直运行到错误的地方停止。如果程序陷入了死循环或者程序运行时发生跑飞,那么检测运行就会一直进行下去直到有人为干预停止。断点设置全速运行可以很方便的就我们的疑问点进行测试,能过快速排查出问题是否存在,并快速响应。5.1.3显示器窗口检查5.1.4实时跟踪记录除上述之外,还有以下功能:符号化调试。通常,我们的程序会以标号与符号地址等展现出来,以自动控制进行数据变换和调整,偏移量为手段,以实现程序计算和内容写入的自主。达到快速跟踪记录,确定目标的目的。5.2源程序的检测源程序是出租车计价器里非常重要的一部分,但程序也是依附在硬件上才能发挥出作用来的。因此我们如果想要对源程序进行检测和调试的话,就必须先排除硬件上的问题,保证硬件基本上是正确的。在此基础上,我们对源程序调试前,主要的要求是要先对其进行检测。5.2.1程序系统检查以程序设计初画的流程图为对照进行检查。第一步先把不同功能分区模块和功能,中断服务程序,和子模块等相对独立的部分认真检查。第二步,按照功能的划分,如时钟模块,显示模块,划分成对应几段程序,逐一检查。最后是以整个系统为整体分析检查。程序的检查是有侧重的,逻辑功能的符合要求与否,结构与算法是不是足够完善,有关的参量和初始值正不正确,都是重点。难点在于关键性的指令是否选择合理,这个比较难判断,尤其是在模拟的情况也并不是能完全百分百反应实物的效果,有些难以调试正确的隐患。需要花费一定的时间和精力去仔细检查。5.2.2硬件系统检查硬件系统是毕业设计的关键点,保证没有重大的疏漏如线路故障或电源短路,在连接各种芯片的器件前,先接通电源进行上电检查,看各个节点处电势是否合理,连接有无问题,逻辑电平及信号是否正确。在排除了以上可能存在的隐患后,将芯片和器件按照设计好的位置接好,使用proteus等软件对仿真程序进行检查。如果有故障存在,仿真软件的监控程序就无法正常工作。这种办法可以帮助我们快速排查硬件系统的一般性故障。。有故障是纯软件上的,只需在软件上调试好故障点就能排除;有些是软件和硬件上不相匹配,需要通过软件的调试对硬件稍作调整才能解决。5.3源程序的调试源程序在检测完毕后需要进行调试,以确保功能合理数据正确。调试一般有以下步骤。5.3.1分调首先调试的对象是子程序,它们相对独立,分别使用仿真软件对其进行调试直到符合基本的设计要求。中断服务程序则用模拟的方法初调,接着按照出租车计价器的系统逻辑,分设为几个大部的功能程序段,按照应用系统运行的逻辑顺序逐级进行调试。基于出租车计价器的实际应用预设一些数据,通过仿真软件对程序段进行仿真运行。观察仿真运行的结果或故障影响。发现问题存在,需要问题的根源。大胆假设,小心求证,利用仿真的系统环境来验证自己的故障原因分析,逐步缩小问题的范围,确定问题的原因并加以改善。分析故障原因。5.3.2联调在前面我们通过分调已经基本上完成了各个独立模块的调试,而联调在此基础上的任务与分调不同,它的调试将证明不同程序模块之间,能否各司其职的同时又顾及大局不会冲突,因此,联调的存在也是必要的。此调试的要点是调试主程序与子程序之间能否依照设计正确连接,信息交换是否通畅。通过执行顺序依次对整个软件系统逐个相连进行调试。5.4proteus界面介绍|預览岗口|I时彖迭择技耐图形帯辑窗口8Alnl-P|預览岗口|I时彖迭择技耐图形帯辑窗口8Alnl-PCOlo-tt1—■」1l・1nL・丨|Real 1 ~—|」I/+UQC#皿取节冷打象方位呻割按即仿■真巷程控制技钮状态栏图5.1Proteus窗口界面图5.5Protues的简单使用5.5.1新建原理图启点击proteus软件的图标,启动仿真软件。选择File下面的New选项,会跳出新建原理图的界面。定下我们要展示的纸面格式,示意图如图5-2所示:EMIMewDgnEMISelectatemplatetoactthedefaultfcrthenewde^ian:DEFAULTL-snd^c=apeLand A3L-sndsc-apeA4sIandicapeL
AHPortraitA3L-sndscapeAOLandscapeUSBLandscapeUSCPortraitA4PortraitUSAPnrtraitAO
DEFAULTL-snd^c=apeLand A3L-sndsc-apeA4sIandicapeL
AHPortraitA3L-sndscapeAOLandscapeUSBLandscapeUSCPortraitA4PortraitUSAPnrtraitAO
區]
PortraitUSB富PortraitAl宣FizirkraitUSIZPortraitA2C:XFrooramFilesXLabccnterElectionicsXFroteus7Professional\TEMFLATESXLandscapeUSB.DTF旦K ]ICancel图5.2新建原理图示意图
5.5.2寻找元件打开protues,选择P字母开头的pickdevices选择元件按钮,会出现软件里自带的仿真元件库,里面可以选择我们需要的元件,出现如图4.3所示窗口,通过关键词搜索出目标元件,并连接。BIIz|PickDevicesBIIz|PickDevicesDEVICESmPickl>e¥ICE9mPickl>e¥ICE9
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论