收藏 分销(赏)

基于单片机的出租车计费系统的设计--毕业设计.doc

上传人:仙人****88 文档编号:7220310 上传时间:2024-12-28 格式:DOC 页数:41 大小:1.32MB 下载积分:10 金币
下载 相关 举报
基于单片机的出租车计费系统的设计--毕业设计.doc_第1页
第1页 / 共41页
基于单片机的出租车计费系统的设计--毕业设计.doc_第2页
第2页 / 共41页


点击查看更多>>
资源描述
目录 摘要 1 Abstract 1 第一章绪论 2 第二章系统分析 2 2.1 出租车计价器的功能要求 2 2.1.1 出租车计价器的基本功能 2 2.1.2 出租车计价器的设计参数 2 2.2 出租车计价器的设计框图 3 第三章硬件系统设计 4 3.1 单片机最小系统设计 4 3.1.1 系统主控芯片AT89C51简介 4 3.1.2 电源电路的设计 6 3.1.3 复位电路的设计 7 3.1.4 晶振电路的设计 7 3.2 测速电路的设计 8 3.2.1 A44E霍尔传感器简介 8 3.2.2 A44E速度测量的原理 8 3.3 显示电路的设计 9 3.3.1 LCD1602液晶显示屏简介 9 3.3.2 LCD1602液晶显示的原理 9 3.4 时钟电路的设计 10 3.5 掉电存储电路的设计 11 3.6 键盘电路的设计 12 第四章软件系统设计 12 4.1 AT24C02子程序设计 12 4.1.1 AT24C02的写入过程 12 4.1.2 AT24C02的读出过程 13 4.2 LCD1602显示子程序的设计 14 38 4.2.1 LCD1602的写操作 14 4.2.2 LCD1602的初始化 15 4.3 时钟子程序的设计 17 4.3.1 DS1302的控制字节 17 4.3.2 DS1302的数据输入输出 18 4.3.3 DS1302的寄存器 29 4.4 测速子程序的设计 20 4.5 计费子程序的设计 21 4.6 按键处理子程序的设计 21 第五章系统仿真 22 总结 24 参考文献 25 附录1 整体电路图 26 附录2 程序清单 27 39 基于单片机的出租车计费系统的设计 摘要:出租车因其方便、快捷已逐步成为人们生活中必不可少的代步工具,然而出租车计费系统的可靠性和准确性一直受到乘客们的普遍关心,计价器运营数据的管理是否方便则是出租车司机最关注的问题。因此,设计出一种即能准确计价又能方便司机操作的计价器尤为重要。本文介绍了一种以AT89C51单片机为核心设计的一款多功能出租车计价器,该计价器能实现按时间和里程综合计费,能显示时间、里程、车价等相关信息。系统采用A44E霍尔传感器通过对轮胎转数的计数,实现对出租车里程和速度的测量,最终得出计费信息并通过液晶屏显示。 关键词:AT89C51;液晶屏;掉电存储;霍尔传感器 中图分类号:TP393 Abstract: A taxi because of its convenient ,quick and has gradually become essential in people’s life instead of walking tool, however, taxi billing system reliability and accuracy has been widespread concern by the passengers, the meter will it be convenient for operation data management the most concern is a taxi drive. Therefore, design an accurate valuation and can be convenient for driver operation of the meter is especially important. In this paper, a single-chip microcomputer AT89C51 as the core design of a multifunction mete taxi, the meter can be realized by time and integrated computation ca mileage, can display time, rang, price and related information. System uses A44E hall sensor based on the tie turn, counting the number of implementation of taxi mileage and speed measurement, finally concludes that the billing information and through the LCD display. Key words:AT89C51; LCD; Power off storage; hall sensor 第一章 绪论 出租车计价器是出租车营运收费的专用智能化仪表,随着电子技术的发展,出租车计价器技术也在不断进步和提高。我国的第一家生产计价器企业是重庆市起重机厂,最早的计价器全部采用机械齿轮结构,只能完成简单的计程功能,可以说早期的计价器就是一个里程表。随着科学技术的发展,产生了第二代计价器。它采用了手摇计算机与机械结构相结合的方式,实现了半机械半电子化。此时它在计程的同时还可以完成计价的工作。大规模集成电路的发展又产生了第三代计价器,也就是全电子化的计价器。它的功能也在不断完善。当单片机出现并应用于计价器后,现代出租车计价器的模型也就基本具备了,它可以完成计程,计价,显示等基本工作。单片机以及外围芯片的不断发展促进了计价器的发展。 计价器是出租汽车的经营者和乘坐出租汽车的消费者之间用于公平贸易结算的工具,因而计价器计价准确与否,直接关系到经营者和消费者的经济利益。依据国家有关法律、法规,出租汽车计价器是列入国家首批强制检定的工作计量器具之一,也是近年来国家质量技术监督部门强化管理的六类重点计量器具之一。现在出租车是城市交通的重要组成部分,行业健康和发展也获得越来越多的关注。汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。 第二章系统分析 2.1 出租车计价器的功能要求 设计出租车计价器之前应首先了解出租车计价器的基本功能和设计参数。 2.1.1 出租车计价器的基本功能 本课题所设计的出租车计价器主要功能有:白间/夜间计费方式自动转换、时间输出、金额输出、里程输出、掉电存储等功能。当空车牌按下后,计价器开始工作,由路程传感器开始采集信号,然后传送到单片机,单片机进行信号的计算处理,并最终将计算结果通过液晶显示屏显示。 2.1.2 出租车计价器的设计参数 1)显示参数 四屏显示:同时显示时钟、里程、金额和等待时间。 (1) 时钟显示:显示方式:“XX:XX:XX”,精确到1秒; (2) 里程显示:显示方式:“XXX”,单位为km,精确到1km; (3) 金额显示:显示方式:“XXXX.X”,单位为元,精确到0.1元; (4) 等待时间显示:显示方式:“XXX”,单位为分,精确到1分。 2)计费参数 费用的计算是按行驶里程收费。 (1) 当里程≤3km时,按起步价7.5元计; (2) 当里程在3km~6km之间时,1.5元/km(夜间1.7/km); (3) 当里程>6km时,2.2元/km(夜间2.5/km); (4) 当时速<12km/h时,进入等待状态,等待时间累积5分钟加收1元; (5) 每次乘车加收0.5元燃油附加费。 2.2 出租车计价器的设计框图 了解了出租车计价器的基本功能和设计参数后,还需要从总体上把握系统的设计从而可以进行分部设计,这样不但能过加快系统设计速度,而且大大降低了系统设计时的难度和错误。 本文设计的出租车计价器从总体上可分为硬件部分和软件部分。 硬件部分:包括时钟电路模块、液晶显示电路模块、测速电路模块、掉电存储电路模块、复位电路模块、独立键盘模块及电源电路模块。其硬件结构框图如图2.1所示。 图2.1 硬件系统结构框图 软件部分:包括AT24C02子程序、测速子程序、计费子程序、LCD1602显示子程序、按键处理子程序。软件系统结构框图如图2.2所示。 N 图2.2 软件系统结构框图 第三章 硬件系统设计 3.1 单片机最小系统设计 3.1.1 系统主控芯片AT89C51简介 AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4k bytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大。AT89C51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域。 主要性能参数[1]: ·与MCS-51产品指令系统完全兼容 ·4k字节可重擦写Flash闪速存储器 ·1000次擦写周期 ·全静态操作:0Hz-24MHz ·三级加密程序存储器 ·128×8字节内部RAM ·32个可编程I/O口线 ·2个16位定时/计数器 图3.1 AT89C51引脚图 ·6个中断源 ·可编程串行UART通道 ·低功耗空闲和掉电模式 本设计选用的单片机为DIP双列直插封装方式,其引脚图如图3.1所示。各个引脚的功能如下: ·VCC:电源(+5V) ·GND:地 ·P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。 在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。 ·P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。Flash编程和程序校验期间,P1接收低8位地址。 ·P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。 在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX @DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX @RI指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中R2寄存器的内容),在整个访问期间不改变。 Flash编程或校验时,P2亦接收高位地址和其它控制信号。 ·P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。 P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如表3-1所示: 表3-1 AT89C51单片机P3端口第二功能 3.1.2 电源电路的设计 本设计选用的单片机和其他芯片的工作电压为+5v,而我们众所周知汽车的车载电源一般为+12V为了使系统获得一个稳定的直流的+5v电源,系统选用LM7805 三端稳压器先把车载电源的+12v转换为+5v然后为系统提供动力。电源电路如图3.2所示。 图 3.2 电源电路 图中D9为发光二极管,当开启系统后D9发光用来指示系统电源已正常打开。由于LM7805的使用,使得电路的设计变得简单稳定有较好的抗干扰能力。 3.1.3 复位电路的设计 为了确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分。单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初始状态开始工作。AT89C51单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期以上,CPU就可以响应并将系统复位[2]。 由于外界充满了各种不确定的因素,系统不可能一直都保证稳定的工作。当系统受到外界干扰程序“跑飞”后,为了使系统能够恢复正常的工作,本系统采用上电复位和手动按钮复位两种相结合的方式。复位电路如图3.3所示。 AT89C51 图3.3 复位电路图 1)手动按钮复位的工作原理: 当人为按下按钮S1时,VCC的+5V电平就会直接加到RST端。由于人的动作会有延迟,且延迟最小也达数十毫秒,完全能够满足复位的时间要求。 2)上电复位的工作原理: 上电复位的工作过程是在加电后,复位电路通过电容加给RST端一个短暂的高电平信号,此高电平信号随着VCC对电容的充电过程而逐渐回落,因而RST端可以获得一段持续的高电平从而使系统复位。 3.1.4 晶振电路的设计 在单片机系统中,晶振(晶体振荡器)的作用非常大,它结合单片机内部电路产生单片机所需的时钟频率,晶振提供的时钟频率越高它的运行速度就越快。晶振电路如图3.4所示。 图3.4 晶振电路图 图中的C5、C6称为负载电容一般选为30pf,有起振的作用。 3.2 测速电路的设计 3.2.1 A44E霍尔传感器简介 A44E芯片属于开关型的霍尔器件,其工作电压范围比较宽(4. 5~18V) ,其输出的信号符合TTL电平标准,可以直接接到单片机的I/ O端口上,而且其最高检测频率可达到1MHz。A44E霍尔开关集成电路应用霍尔效应原理,采用半导体集成技术制造的磁敏电路,它是由电压调整器、霍尔电压发生器、差分放大器、史密特触发器,温度补偿电路和集电极开路的输出级组成的磁敏传感电路,其输入为磁感应强度,输出是一个数字电压信号。 A44E芯片的引脚功能如下(引脚图如图3.5所示)。 他是一个3端器件,外形与三极管相似,只要接上电源、地,即可工作,输出通常是集电极开路(OC)门输出,工作电压范围宽,使用非常方便。 图3.5 A44E引脚图 引脚1是电源VCC ,引脚2是地GND,引脚3是输出OUT。霍尔器件的工作电压不得超过规定的VCC ,大部分霍尔开关均为OC输出。因此,输出应接负载电阻,其数值取决于负载电流的大小,不得超负载使用。 3.2.2 A44E速度测量的原理 把一块小永久磁铁固定在车轮的辐条上,A44E在车轮辐条附近车轮每转一周,磁铁经过A44E一次。A44E的第3脚就输出一个脉冲信号作为单片机AT89S52的外中断信号,从P3.2口输入。单片机测量脉冲信号的个数和脉冲周期。根据脉冲信号的个数计算出里程,根据脉冲信号的周期计算出速度[3]。测速的原理图及A44E与单片机的硬件电路如图3.6所示。 单片机 图3.6 A44E测速原理及A44E与单片机的硬件电路图 3.3 显示的电路设计 3.3.1 LCD1602液晶显示屏简介 液晶显示模块,是一种专门用于显示字母、数字、符号等点阵式LCD,目前有16*1、16*2、20*2和40*2行等的模块。既考虑到信息的充分显示又考虑到系统合理的成本本系统选择的是16*2行的1602LCD模块[4]。 1602LCD采用标准的14脚(无背光)或 16脚(带背光)接口,各引脚功能如下。 ·VSS 为地电源。 ·VDD接5V正电源。 ·VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影” ,使用时可以通过一个10K 的电位器调整对比度。 ·RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 ·R/W 为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W 共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。 ·E 端为使能端,当E 端由高电平跳变成低电平时,液晶模块执行命令。 ·D0~D7为8 位双向数据线。 ·BLA背光源正极。 ·BLK背光源负极。 3.3.2 LCD1602液晶显示的原理 本设计选用的LCD1602液晶显示屏芯片型号为HD44780,它内置了DDRAM、CGROM和CGRAM。 DDRAM就是显示数据RAM,用来寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下。 也就是说想要在LCD1602屏幕的第一行显示一个“A”字,就要向DDRAM的00和地址写入“A”字符即可。但具体的写入还要按LCD模块的指令格式来就行,这个将在软件设计部分作详细介绍。液晶显示电路的电路图如图3.7所示。 图 3.7 液晶显示电路 3.4 时钟电路的设计 本次设计所选用的时钟芯片为DS1302,该芯片 是DALLAS 公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31 字节静态RAM,通过简单的串行接口与单片机进行通信实时时钟/日历电路。提供秒分时日期月年的信息,每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM 指示决定采用24 或12 小时格式.DS1302 与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线:1 RES 复位,2 I/O 数据线,3 SCLK串行时钟.时钟/RAM 的读/写数据以一个字节或多达31个字节的字符组方式通信.DS1302 工作时功耗很低,保持数据和时钟信息时功率小于1mW。DS1302 是由DS1202 改进而来,增加了以下的特性.双电源管脚用于主电源和备份电源供应Vcc1,为可编程涓流充电电源附加七个字节存储器.它广泛应用于电话传真便携式仪器以及电池供电的仪器仪表等产品领域。 DS1302 的引脚图如图3.8所示。引脚功能下[5]: ·X1 X2 32.768KHz 晶振管脚 ·GND 地 ·RST 复位脚 ·I/O 数据输入/输出引脚 图3.8 DS1302引脚图 ·SCLK 串行时钟 ·VCC1,VCC2 电源供电管脚 时钟电路的电路图如图3.9所示。 图3.9 时钟电路图 3.5 掉电存储电路的设计 掉电存储系统电路如图3.10所示。掉电存储电路的作用是在电源断开的时候,存储设定的价单信息。本设计采用的是ATMEL公司的2KB字节的AT24C02电可擦处存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V),芯片内的资料可以在断电的情况下保存40 年以上,其芯片引脚功能如下: ·A2—A0地址引脚 ·SDA、SCL I2C总线接口 ·WP写保护引脚,WP接VSS时,禁止写入高位地址,WP接VDD时,允许写入任何地址 ·GND接地端 ·VCC电源端 图3.10掉电存储系统电路图 图中R1、R6 是上拉电阻,其作用是减少AT24C02 的静态功耗,由于AT24C02 的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线SCL(移位脉冲)和SDA(数据/地址)与单片机传送数据。每当设定一次单价,系统就自动调用存储程序,将单价信息保存在芯片内;当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用,这样就确保了信息的掉电不丢失。 3.6 键盘电路的设计 本设计当中涉及的按键数目较少,因此选用的是独立按键,对应的电路图如图3.11所示。 图3.11 独立键盘电路图 图中K1为设置键,K2,K3为调整键。 第四章 软件系统设计 4.1 AT24C02子程序设计 AT24C02芯片地址的固定部分为1010,A2、A1、A0、引脚接高、低电平后得到确定的3位编码。形成的七位编码即为该器件的地址码,本设计的A2、A1、A0引脚全部接地,因此对应的芯片地址为1010000。 4.1.1 AT24C02的写入过程 单片机写进行写操作时,首先发送该器件的7位地址码和写方向位“0”(共8位,即一个字节),发送完后释放SDA线并在SCL线上产生第9个时钟信号。被选中的存储器件在确认是自己的地址后,在SDA线上产生一个应答信号作为响应,单片机收到应答后就可以传送数据了。对应的写入程序如下。 void x24c02_write(char address, int info) { x24c02_start(); x24c02_writex(0xa0); x24c02_clock(); x24c02_writex(address); x24c02_clock(); x24c02_writex(info); x24c02_clock(); x24c02_stop(); x24c02_delay(50); } 4.1.2AT24C02的读出过程 单片机先发送该器件的7位地址码和写方向位“0”,发送完后释放SDA线并在SCL线上产生第9个时钟信号。被选中的存储器器件在确认是自己的地址后,在SDA线上产生一个应答信号作为回应。 然后再发送一个字节的要读出器件的存储区的首地址,收到应答后,单片机要重复一次起始信号并发出器件地址和读方向位(“1”),收到器件应答后就可以读出数据字节,每读出一个字节,单片机都要回复应答信号。当最后一个字节数据读完后,单片机应返回以“非应答”,并发出终止信号以结束读出操作[6]。对应的读程序如下。 int x24c02_read(char address) { int i; x24c02_start(); x24c02_writex(0xa0); x24c02_clock(); x24c02_writex(address); x24c02_clock(); x24c02_start(); x24c02_writex(0xa1); x24c02_clock(); i=x24c02_readx(); x24c02_stop(); x24c02_delay(10); return(i); } 4.2 LCD1602显示子程序的设计 4.2.1 LCD1602的写操作 LCD1602写操作时序图如图4.1所示。当RS=0为向LCD1602控制器中写指令操作,当RS=1时为向LCD1602控制器中写数据操作[7]。对应的写指令和写数据操作程序如下。 图4.1 LCD1602写操作时序图 void lcd_wcmd(unsigned char cmd) //写指令 { delay(); RS = 0; RW = 0; EN = 0; _nop_(); _nop_(); P0 = cmd; _nop_(); _nop_(); _nop_(); _nop_(); EN = 1; _nop_(); _nop_(); _nop_(); _nop_(); EN = 0; } void lcd_wdat(unsigned char dat) // 写程序 { delay(); RS = 1; RW = 0; EN = 0; P0 = dat; _nop_(); _nop_(); _nop_(); _nop_(); EN = 1; _nop_(); _nop_(); _nop_(); _nop_(); EN = 0; } 4.2.2 LCD1602的初始化 1602液晶模块内部的控制器共有11条控制指令,如表4-1所示。 表4-1 1602液晶模块内部的控制器控制指令 指令1:清显示,指令码01H,光标复位到地址00H位置。 指令2:光标复位,光标返回到地址00H。 指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。 指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。 指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。 指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。 指令7:字符发生器RAM地址设置。 指令8:DDRAM地址设置。 指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令10:写数据。 指令11:读数据。 有了控制指令表我们需要液晶屏完成怎样的工作只需向液晶屏控制器写入相应的指令即可。一般液晶屏的初始工程如下。 void lcd_init() { lcd_wcmd(0x38); delay_ms(1); lcd_wcmd(0x0c); delay_ms(1); lcd_wcmd(0x06); delay_ms(1); lcd_wcmd(0x01); delay_ms(1); } 4.3 时钟子程序的设计 4.3.1 DS1302的控制字节 DS1302的控制字如表4-2所示。控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出[8]。 表4-2 DS1302的控制字 4.3.2 DS1302的数据输入输出 在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。读写时序图如图4.2所示。 图4.2 DS1302读写时序图 1) DS1302读程序 unsigned char DS1302OutputByte(void)//实时时钟读取一字节 { unsigned char i; for(i=8; i>0; i--) { ACC = ACC >>1; //相当于汇编中的 RRC ACC7 = DS1302_IO; DS1302_CLK = 1; DS1302_CLK = 0; } return(ACC); } 2) DS1302写程序 void Write1302(unsigned char ucAddr, unsigned char ucDa) //ucAddr: DS1302地址, ucData: 要写的数据 { DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr); // 地址,命令 DS1302InputByte(ucDa); // 写1Byte数据 DS1302_CLK = 1; DS1302_RST = 0; } 4.3.3 DS1302的寄存器 DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表4-3。 此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。 表4-3 DS1302日历、时间寄存器及其控制字 从DS1302日历、时间寄存中读出时钟的程序如下。 void DS1302_GetTime(SYSTEMTIME *Time) { unsigned char ReadValue; ReadValue = Read1302(DS1302_SECOND); Time->Second = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_MINUTE); Time->Minute = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_HOUR); Time->Hour = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_DAY); Time->Day = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_WEEK); Time->Week = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_MONTH); Time->Month = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); ReadValue = Read1302(DS1302_YEAR); Time->Year = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); } 4.4 测速子程序的设计 假设车轮的周长为1m,车轮每转1周A44E霍尔传感器的第3引脚就会产生一次电平变化,从而引起单片机外部中断0产生中断,通过对中断次数的计算就可以计算出汽车行驶的路程。如单片机中断次数为100次则汽车行驶的里程便为100m。 有了里程的计算方法只需将里程除以对应的时间便可计算出速度。本设计每100次中断读取一次行驶时间,例如100次中断所需的时间为20秒这速度便为100/2=50m/s。 出租车里程和速度计算流程图4.3如下。 图4.3 里程和速度计算流程图 4.5 计费子程序的设计 计费子程序流程图如图4.4所示。流程图中TAXIPRICR.day3表示白间3~6公里内的每公里计费价格,TAXIPRICR.day6表示白间大于6公里后每公里的计费价格, TAXIPRICR.night3表示夜间3~6公里内的每公里计费价格,TAXIPRICR.day6表示夜间大于6公里后每公里的计费价格。 图4.4 计费子程序流程图 4.6 按键处理子程序的设计 键盘采用查询的方式,放在主程序中,没有按键按下时,单片机循环主程序,一旦有按键按下,变转向响应的按键处理子程序,处理结束后返回主程序。 出租车的各项收费价格应有出租车公司统一设定,司机不得自行更改。所以该计价器只设置时钟调整调整功能。按键处理子程序流程图如图4.5所示所示。 图4.5 按键处理子程序流程图 第五章系统仿真 在电子线路的设计中,如果一开始就匆匆的把硬件电路制作出来,在以后出现错误的时候我们很难去修改,不得不重新制板。而如果能够首先在计算机上进行模拟仿真来测试系统的可行性,这样就可以在研发过程中大大降低研发成本。Proteus ISIS就是这么一款优秀的用于单片机的仿真软件。 Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件具有如下特点:①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。②支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。本章介绍Proteus ISIS软件的工作环境和一些基本操作[9]。 5.1 Proteus ISIS工作界面 Proteus ISIS的工作界面是一种标准的Windows界面,如图5.1所示。包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口[10]。 图5.1 Proteus ISIS的工作界面 在Proteus的原件库中没有霍尔传感器A44E,为了进行仿真这里采用一个方波发生器作为替代,空车牌用一个开关进行代替。本次设计的仿真图如图5.2所示。 图5.2 系统仿真图 1) 载入程序 双击绘图区中的单片机,打开如下窗口。 在“Program File:” 选项中,添加程序编译后的hex文件。 2) 启动仿真 点击中左边第一个按键便可以启动系统。这样就可以观察程序或硬件在设计中是否出现问题。 参考文献: [1]胡汉才.单片机原理及其接口技术(第三版)[M].清华大学出版社,2011. [2]戴佳, 陈斌, 苗龙. 51单片机应用系统开发典型实例[M]. 中国电力出版社,2005 [3]张金涛.基于出租车计价器电路[D].镇江技师学院硕士论文,2012
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服