首页 基于单片机的出租车计价器

基于单片机的出租车计价器

举报
开通vip

基于单片机的出租车计价器基于单片机的出租车计价器 本科毕业设计 基于单片机的出租车计费系统 学院名称 专业名称 工程学院 自动化 论文提交日期 论文答辩日期 2014年5月7日 2014年5月10日 摘 要 随着出租车行业的发展,出租车已经是城市交通的重要组成部分,出租车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此,汽车计价器的研究具有实际应用价值。 本设计以89C52单片机为中心...

基于单片机的出租车计价器
基于单片机的出租车计价器 本科毕业设计 基于单片机的出租车计费系统 学院名称 专业名称 工程学院 自动化 论文提交日期 论文答辩日期 2014年5月7日 2014年5月10日 摘 要 随着出租车行业的发展,出租车已经是城市交通的重要组成部分,出租车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此,汽车计价器的研究具有实际应用价值。 本设计以89C52单片机为中心,利用霍尔传感器测距,实现对出租车计价统计,输出采用带字库LCD12864液晶显示屏。本电路设计的计价器不但能实现基本的计价,而且还能根据地域的不同来手动调节起步价。另外,本设计还采用AT24C02EEPROM进行起步价的存储,这样免去了每次启动时重新调整起步价的麻烦。为了更好地模拟出租车计价器,在设计中还加有语音芯片这一个部分。 关键词:单片机 显示屏 存储芯片 语音芯片 霍尔传感器 The System Of Taxi Meter Based On Single Chip Microcomputer Lin Xiaoxia (College of Engineering, South China Agricultural University, Guangzhou 510642, China) Abstract: With the development of the taxi industry, taxi has been an important part of urban traffic,the meter taxi passengers and the driver is both sides of the trade rules,it is not only an important symbol of the taxi industry development,but also the most important tools in the taxi.It was about the interests of both parties.A good performance of the meter to the taxi driver friend or passengers is very necessary.Therefore, there is also an application in the study of the auto meter . This design by 89C52 as the center, using hall sensor range, realize the taxi valuation,output with belt word word文档格式规范word作业纸小票打印word模板word简历模板免费word简历 stock 12864 LCD screens.The circuit design of the meter can not only realize the basic valuation, but also can be manually adjusted according to the different geographical fare.In addition, this design adopt AT24C02EEPROM fare in storage, it removes every time they start to adjust the fare of trouble.In order to better simulate the meter taxi, voice chips are also added in the design of this part. Key words: single chip microcomputer display memory chips voice chip Hall element 目 录 1 前言 ........................................................................................................................................ 1 1.1 课题的研究背景和意义 ..................................................................................................... 1 1.2 国内外研究现状、发展动态 ............................................................................................. 1 1.3 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 论证与比较 ................................................................................................................. 2 1.4 显示方案的选择与论证 ..................................................................................................... 3 1.5 键盘方案的选择与论证 ..................................................................................................... 4 2 出租车计价器的硬件设计 .................................................................................................... 4 2.1 AT89C52单片机及其引脚说明 ........................................................................................ 4 2.2 复位电路设计 ..................................................................................................................... 6 2.3 电源电路 ............................................................................................................................. 7 2.4 键盘接口电路 ..................................................................................................................... 8 2.5 显示电路 ............................................................................................................................. 8 2.6 掉电存储电路 ..................................................................................................................... 9 2.6.1 AT24C02引脚图及其引脚功能 ..................................................................................... 9 2.6.2 AT24C02掉电存储单元的设计 ................................................................................... 10 2.7 路程测量电路的设计 ....................................................................................................... 10 2.8 语音播报电路的设计 ....................................................................................................... 12 2.8.1 ISD1730芯片的简介 .................................................................................................... 12 2.8.2 ISD1700系列芯片功能介绍 ........................................................................................ 13 2.8.3 操作模式 ........................................................................................................................ 13 3 软件设计部分 ...................................................................................................................... 14 3.1 主程序 ............................................................................................................................... 14 3.2 里程子程序 ....................................................................................................................... 15 3.3 等待子程序 ....................................................................................................................... 15 3.4 显示子程序 ....................................................................................................................... 16 3.5 存储子程序 ....................................................................................................................... 16 4 结论与展望 .......................................................................................................................... 17 4.1 系统的功能及运行结果 ................................................................................................... 17 4.2 系统的优缺点 ................................................................................................................... 17 4.3 展望 ................................................................................................................................... 18 参考文献 .................................................................................................................................... 19 附录A 实物图 ........................................................................................................................ 20 附录B 源程序 ........................................................................................................................ 21 致谢 ............................................................................................................................................ 32 毕业设计成绩评定表 1 前言 1.1 课题的研究背景和意义 步入21世纪,出租车已经广泛地出现在我们周围。随着人们生活水平的不断提高,出租车的使用频率也越来越高,出租车行业也以高质量的服务给人们带来了出行的享受。但是由于行业的特殊性,出租车行业总存在着买卖纠纷,困扰着行业的发展。而在出租车行业中解决这一矛盾的最好方法就是改良计价器,用更加精良的计价器来为乘客提供更加方便快捷的服务。采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试,对于模式的切换需要用到机械开关,机械开关时间久了会造成接触不良,功能不易实现。为此我们采用了单片机进行设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。为了更加完善现阶段出租车的计费系统功能,我们采用单片微型计算机系统(Micro Control Unit 简写为MCU)设计了一款符合大众化的计费系统。本电路以89C52单片机为中心,附加A44E霍尔传感器测距,实现对出租车计价统计,采用AT24C02实现对系统的掉电保护,而且能够对不同地域、中途等待采取不同的收费 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 ,操作简单方便。 1.2 国内外研究现状、发展动态 出租车行业在我国是八十年代初兴起的一项新兴行业,随着我国国民经济的高速发 i展,出租汽车已成为城市公共交通的重要组成部分。多年来国内普遍使用的计价器只具备单一的计量功能。目前全世界的计价器中有90%为台湾所生产。现今我国生产计价器的企业有上百家,主要是集中在北京,上海,沈阳和广州等地。 我国的第一家生产计价器企业是重庆市起重机厂,最早的计价器全部采用机械齿轮结构,只能完成简单的计程功能,可以说早期的计价器就是一个里程表。 随着科学技术的发展,产生了第二代计价器。它采用了手摇计算机与机械结构相结合的方式,实现了半机械半电子化。此时它在计程的同时还可以完成计价的工作。 大规模集成电路的发展又产生了第三代计价器,也就是全电子化的计价器。它的功能也在不断完善。当单片机出现并应用于计价器后,现代出租车计价器的模型也就基本 1 具备了,它可以完成计程,计价,显示等基本工作。单片机以及外围芯片的不断发展促进了计价器的发展。出租车计价器在最初使用时具备的主要功能是根据行驶里程计价,要求精度高,可靠性好。 1.3 方案论证与比较 方案一:采用数字电子技术,利用555定时芯片构成多谐振荡器,或采用外围的晶振电路作为时钟脉冲信号,采用计数芯片对脉冲尽心脉冲的计数和分频,最后通过译码电路对数据进行译码,将译码所得的数据送给数码管显示,以下是该方案的流程框图,方案一如图1所示: 图1 方案一 方案二:采用EDA技术,根据层次化设计理论,该设计问题自顶向下可分为分频模块,控制模块、计量模块、译码和动态扫描显示模块,其系统框图如图2所示: 图2 方案二 2 方案三:采用MCU技术,通过单片机作为主控器,利用带字库12864LCD作为显示电路,采用外部晶振作为时钟脉冲,通过按键可以方便调节,以下是方案三的系统流程图,本方案主要是必须对于数字电路比较熟悉,成本又不高。方案图如图3所示: 图3 方案三 方案总结:通过各个方案的比较,本次采用方案三,不但控制简单,而且成本低廉,设计电路简单。本电路设计的计价器不但能实现基本的计价,而且还能根据不同地域,来调节起步价。单片机计算总价的公式为:总价=起步价+单价*(总里程-起步里程)。AT89C52 作为一个单片微型计算系统,灵活性高,其强大的控制处理功能和可扩展功能为设计电路提供了很好的选择。 采用单片机进行设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,有较大的活动空间,可以通过软件编程来完成更多的附加功能,方便对系统进行升级和功能扩展。所以我们采用第三方案,用AT89C52单片机实现出租车计价的功能。 1.4 显示方案的选择与论证 方案一:采用LED数码管显示旗帜所在的高度以及升降旗所用的时间。在本系统中需要用到6只LED数码管进行动态显示才可以达到要求。采用LED的优点是亮度高,醒目,价格便宜,寿命长;缺点是只能显示0,9的数字和一些简单的字符,电路复杂,占用资源较多且信息量小。 方案二:用LCD(12864)液晶显示,其优点是能显示更多的字符,工作电流比LED小 3 几个数量级,故其功耗低,且有着良好的人机界面,体积小,功耗极低。 基于上述考虑,所以我们选择方案二。 1.5 键盘方案的选择与论证 方案一:采用独立式键盘,每个按键占用一条I/O线,当按键数量较多时,I/O口利用率不高,但程序编制简单,适用于所需按键较少的场合。 方案二:采用矩阵式键盘,电路连接复杂,但提高了I/O口利用率,软件编程较复杂,适用于需使用大量按键的场合。 由于本设计并不需要使用很多的按键,所以我们选择编程较简单的独立键盘。 2 出租车计价器的硬件设计 2.1 AT89C52单片机及其引脚说明 AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用(程姝丹等,2007)。AT89C52的引脚示意图如下所示。 图4 AT89C52引脚图 4 P0口:P0口是一组8 位漏极开路型双向I/O口, 也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。 P1口:P1是一个带内部上拉电阻的8位双向I/O 口, P1 的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2 的外部计数输入(P1.0/T2)和输入(P1.1/T2EX)。 P2口:P2是一个带有内部上拉电阻的8 位双向I/O 口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。 P3口:P3口是一组带有内部上拉电阻的8位双向I/O 口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。 P3口除了作为一般的I/O 口线外,更重要的用途是它的第二功能。其第二功能如表1所示。 表1 P3引脚的第二功能 引脚号 第二功能 P3.0 RXD(串行输入) P3.1 TXD(串行输出) P3.2 INT0(外部中断0) P3.3 INT1(外部中断1) P3.4 T0(定时器0外部输入) P3.5 T1(定时器1外部输入) 5 P3.6 WR(外部数据存储器写选通) P3.7 RD(外部数据存储器读选通) RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。 ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8 位字节。一般情况下,ALE 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE 脉冲。 PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 EA/VPP:外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000H—FFFFH),EA 端必须保持低电平(接地)。需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA端状态。 如EA端为高电平(接Vcc端),CPU 则执行内部程序存储器中的指令。 XTAL1:振荡器反相放大器及内部时钟发生器的输入端。 XTAL2:振荡器反相放大器的输出端。 2.2 复位电路设计 复位操作有两种基本形式:一种是上电复位,另一种是按键复位。按键复位具有上电复位功能外,若要复位,只要按图中的RESET键,电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平。上电复位电路要求接通电源后,通过外部电容充电来实现单片机自动复位操作。上电瞬间RESET引脚获得高电平,随着电容的充电,RERST引脚的高电平将逐渐下降。RERST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。按键复位电路图如图5所示。 6 图5 复位电路 2.3 电源电路 由于计价器的工作环境比较差,它要求有抗振动、抗高低温、抗潮湿、抗电磁干扰等能力,特别是电源方面的干扰,如出租车启动时,发动机打火、电瓶充电等造成输入计价器的+12V电源不稳定。因此采用电源适配器将220V 交流 第4课唐朝的中外文化交流教案班主任工作中的交流培训班交流发言材料交流低压配电柜检验标准小王子读书交流分享介绍 电转化为+12V直流电,再 +5V的稳定电压输出,保证整个系统能够正常经过滤波和电源稳压管理芯片78L05后得到 工作。其原理图如下所示。 图6 电源电路 实际的出租车里能提供+12V的直流电压,因此可以不使用电源适配器来将220V交流 7 电转化为+12V的电压,在本次设计中,为了调试方便,才使用这个适配器进行转换。 2.4 键盘接口电路 本设计采用的是独立键盘,I/O口通过按键与地相连,I/O口有上拉电阻,无键按下时,引脚端为高电平,有键按下时,引脚电平被拉低。I/O口内部有上拉电阻时,外部可不接上拉电阻。五个独立按键分别与单片机的P1.0、P1.1、P1.2、P1.3、P1.4口相连接,按键S1使显示屏初始化,S2和S3调整起步价,其中S2是加起步价,S3是减起步价,S4和S5分别是等待计时的启动和停止。其原理图如下所示。 图7 按键电路 2.5 显示电路 本系统采用12864字符型液晶显示模块来显示起步价,总里程,等待时间和总金额。 液晶显示模块具有体积小、功耗低、显示内容丰富、超薄轻巧等特点,目前字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件了。LCD12864液晶显示模块可以显示四行,每行16个字符,采用+5V电源供电,外围电路配置简单,价格便宜,具有很高的性价比。 带中文字库的12864是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式 8 和简单、方便的操作指令,可构成全中文人机交互图形界面(冉莉,王民,等,2011)。可以显示8×4行16×16点阵的汉字,也可完成图形显示,低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。 12864与单片机的并行连接方式如下所示。 图8 显示电路 2.6 掉电存储电路 2.6.1 AT24C02引脚图及其引脚功能 AT24C02芯片DIP封装,共有8个引脚,其中:A2~A0为地址引脚;SDA、SCL为I2C总线接口;WP是写保护引脚,WP接VSS时,禁止写入高位地址,WP接VDD时,允许写入任何地址;VCC为电源端;GND为接地端。其芯片引脚配置如图9: 图9 AT24C02芯片引脚配置 9 2.6.2 AT24C02掉电存储单元的设计 掉电存储单元的作用是在电源断开的时候,存储当前设定的起步价价信息。AT24C02是ATMEL公司的2KB字节的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使用方便(庄卫华,黄焱,等,2006)。其电路如图10掉电存储 电路原理 通信电路原理答案变频空调电路原理图变频空调维修电路原理变频空调通讯电路原理运放差分放大电路原理 图所示。 图10 掉电存储电路原理图 图中两个上拉电阻的作用是减少AT24C02的静态功耗,由于AT24C02 的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线SCL(移位脉冲)和SDA(数据/地址)与单片机传送数据。 每当设定一次起步价价,系统就自动调用存储程序,将单价信息保存在芯片内;当系统重新上电的时候,自动调用读存储器程序,将存储器内的起步价等信息读到缓存单元中,供主程序使用。 2.7 路程测量电路的设计 里程计算是通过安装在车轮上的霍尔传感器3144检测到的信号,送到单片机,经处理计算,送给显示单元的。其原理如图11传感器测距示意图所示。 10 图11 传感器测距示意图 霍尔传感器是利用霍尔效应原理制成的一种磁敏传感器。 由于3144属于开关型的霍尔器件,其工作电压范围比较宽(4.5,18V),其输出的信号符合TTL电平标准,可以直接接到单片机的IO端口上,而且其最高检测频率可达到1MHZ。3144集成霍耳开关由稳压器、霍耳电势发生器(即硅霍耳片)、差分放大器、施密特触发器和OC门输出五个基本部分组成。 从输入端输入电压Vcc,经稳压器稳压后加在硅霍尔片的两端,以提供恒定不变的工作电流。在垂直于霍尔片的感应面方向施加磁场,产生霍尔电势Vw,该n信号经差分放大器放大后送至施密特触发器整形。当磁场到达“工作点”时,触发器输出低电压,此状态称为“开”。当施加的磁场到达“释放点”时,触发器输出低电压,使三极管截止,输出端V,输出高电位,此状态称为“关”。这样2次高低电位变换,使霍尔传感器完成了1次开关动作。 在霍尔传感器的输出端接上一个上拉电阻,当感应到有变化的磁场,输出一个下降沿脉冲,其图形如图12所示,我们选择了P3.5口作为信号的输入端,采用定时器1对外部脉冲进行计数(这样可以减少程序设计的麻烦),车轮每转一圈(我们设车轮的周长是1米),霍尔开关就检测并输出信号,引起单片机的中断,对脉冲计数,当计数达到1000次时,也就是1公里,单片机就控制将金额自动的增加,其计算公式:当前单价×(公里数-起步公里)+起步价=总金额。 11 图12 霍尔传感器的感应波形 2.8 语音播报电路的设计 2.8.1 ISD1730芯片的简介 ISD1730是ISD公司最新推出的单片高音质语音录放电路,该芯片提供多项创新功能,包括多信息管理系统,新信息提示(vAlert),双运作模式(独立&嵌入式),以及可定制的信息操作指示音效。芯片内部包含有自动增益控制、麦克风前置扩大器、扬声器驱动线路、振荡器与内存等的全方位整合系统功能。其芯片引脚图如下所示。 图13 ISD1730引脚示意图 12 2.8.2 ISD1700系列芯片功能介绍 ISD1700 系列高质量、全集成、单芯片多信息录放芯片适用于多种系统。录音时间 可选范围为26秒-120秒。通过外部电阻设置采样频率,从4 kHz到12 kHz,使得录音时间和录音 质量间可根据应用而平衡。工作电压范围从2.4 V到5.5 V,因此也适用于电池场合。ISD1700支持独立模式或SPI模式。器件集成优异的消息管理系统,使得芯片能够自动寻址各信息 的地址。该功能使其能够胜任单晶片按键情形。还集成一片上振荡器(由外部电阻控制),带自动增益控制(AGC)的麦克风前置放大器,一个辅助模拟输入,抗混淆滤波器,多级擦除阵列,平滑滤波器,音量控制,PWM之D类喇叭驱动器,电流/ 电压输出。ISD1700同时提供一可选“vAlert” (声音提醒)功能,用于指示有新的信息。器件闪烁一外部LED指示有一 个新消息出现。此外,4 条特殊提示音用于确认操作,如“Start Record”,“Stop Record”,“Erase”,“Forward”,“Global Erase”等。 录音信息存储到片上Flash。数据不经压缩,提供原声品质。音频输入有两个独立通道:差分麦克风输入和单端模拟输入。对于输出,提供有PWM之D类喇叭驱动和独立模拟输出。D类功放能够驱动一个标准的8欧喇叭,独立的模拟输出通道能够配置为单端电流或电压输出,用于驱动外部功放。在独立模式,器件每次完成操作后自动进入掉电模式,以节能。在SPI模式,用户能够通过SPI完全控制器件。包括通过指定起始地址和结束地址来随即访问存储器的任何地方。同时允许访问模拟通道配置寄存器APC。进而灵魂控制音频通道、输入、输出、混合。 2.8.3 操作模式 ISD1700系列能工作在独立模式(按键)或微处理器(SPI)模式: 独立 (按键) 模式:独立模式使用/REC、/PLAY、/FT、/FWD、/ERASE、/VOL、/RESET脚进行触发控制。内部状 态机自动配置音频通道。在该模式,内部状态机完全控制信息管理。这允许用户进行录音、播放、擦除和快进,而无需知道信息确切地址。 SPI 模式:在SPI模式下,通过4线串行接口控制。有些命令兼容独立模式:/REC、/PLAY、/FT、/FWD、/ERASE、/VOL、/RESET。还有修改模拟通道配置的命令,直接访问存储器的命令。能够真正全控制,且具有更多的功能。 13 本设计只需要播放简单的一句结束语,因此选择独立按键模式。 2.8.4 语音部分原理图 图14 语音部分原理图 3 软件设计部分 3.1 主程序 单片机要开始工作首先要对系统初始化,初始化包括:对单片机定时器0和计数器1进行初始化,其中有对TOMD进行初始值的赋值、开启总中断和定时器;对LCD12864进行初始化,其中包括对屏幕进行清屏以及对光标的位置进行设置;对AT24C02EEPROM进行初始化,设置IIC的开始位、停止位以及应答位;对各标志位、各变量进行初始化,对各端口初始化等。初始化后系统进入欢迎界面部分,单片机会不断检测是否有键按下,如果没有则继续检测,如果检测到键1按下,则进入主界面。LCD显示主界面,系统进入初始界面状态,并不断检测是否有键按下,如果没有则继续检测并且停留在主界面,如果有 14 则进入相应的按键子程序。流程图如图15。 N N Y Y N Y N N Y Y 图15 主程序流程图 3.2 里程子程序 里程的统计使用的是计数器1来对外部的霍尔传感器的脉冲进行计数,每一次霍尔传感器感应到磁钢,就输出一个下降沿,此时计数器对其进行计数的累加,当总公里超过起步公里数时,每一公里按照设定的收费标准进行总金额的累加。 3.3 等待子程序 出租车在行驶过程中可能会遇到红灯,此时的计价依据就不是里程,而是等待红灯 15 的时间。在这个设计中,使用定时器0来定时,在显示器上显示等待的时间,并且每当经过5秒,总金额也相应地增加一元,当红灯变为绿灯时,等待时间结束,此时司机按下键5关闭定时器0使其不再计时。 3.4 显示子程序 本程序采用LCD12864进行显示,上电后显示欢迎界面,当按键1按下则显示主界面,其主要显示的内容有起步价,总里程,等待时间和总金额。在程序中还有起步价的调整以及等待时间的显示。其中几个瞬间的显示界面如下所示。 图16 其中一个显示画面 图17 调整起步价后的显示画面 图18 等待计时的画面 3.5 存储子程序 16 为了免去每次上电都调节起步价的麻烦,在本次设计中使用了AT24C02存储器进行起步价的存储。 4 结论与展望 4.1 系统的功能及运行结果 本设计实现了出租车计价器的基本功能,实现了其最重要的里程显示和总金额的显示,也考虑到了地域和等待红灯的情况,为了能更好地模拟现代的出租车,还使用了语音芯片进行播报。在这个设计中有几个重要的按键,其功能如下表所示。 表2 系统按键功能 按键名 功能 键一 显示主界面 键二 起步价加一 键三 起步价减一 键四 开始定时 键五 结束定时 放音键 开始放音 4.2 系统的优缺点 第一,由于本设计使用的是以单片机作为核心的控制元件和灵敏的霍尔开关型器件,使本出租车计价器具有功能强、性能可靠、电路简单、成本低的特点,加上经过优化的程序,使其有很高的智能化水平。 第二,本设计采用的是带字库的12864显示屏来进行显示,简化了程序设计,并且其显示风格比较清晰明朗。 第三,在这个设计中充分考虑到了各个地区的起步价不同这个情况,设计了调整起步价的按键,并且使用E2PROM来进行起步价的存储,省去了每次上电重新调整起步价的麻烦。 17 第四,本设计使用了语音芯片来进行播报,但是最终由于时间的限制,只用其独立按键模式播报了简单的一句话,并没有播报最后的里程和总金额,可能显得大材小用了。另外,显示屏的显示功能也较为单一。 4.3 展望 由于时间和个人知识能力的限制,本次设计还有很大的改进空间。在显示屏显示方面,可以增加多层界面,例如功能设置界面,在语音播报设计上,若有总金额和总里程的播报能显得更加地人性化。另外,本设计也可以增加调整单价的功能,因为不同时间如白天和夜晚的单价是不一样的。通过本次毕业设计,我学到了很多知识,并且认识到了单片机的大作用,这一块小小的芯片竟能发挥巨大的作用并造福人类。我也会在日后继续深入了解更多单片机的知识并学以致用。 18 参 考 文 献 程姝丹,张强,等. 霍尔效应的应用与发展[J].水泥技术,2007,20(04):1-20. 冉莉,王民,等.基于单片机的液晶显示模块硬软件设计开发[J].科技广场, 2011,30(05):21-78. 王卫星.单片机原理与应用开发技术[M].北京:中国水利水电出版社,2009:92-220. 庄卫华,黄焱,等. 一种并口E2PROM存储器及文件系统的设计与实现[J].计算机与现代 化, 2006,40(05):20-39. Yeager Brent.How to troubleshoot your electronic scale[J].. Powder and Bulk Engineering,1995,35(01):10-15. 19 附录A 实物图 20 附录B 源程序 #include #include #define uchar unsigned char #define uint unsigned int #define LCD_data P0 sbit LCD_RS = P2^5; sbit LCD_RW = P2^6; sbit LCD_EN = P2^7; sbit key1 = P1^0; sbit key2= P1^1; sbit key3= P1^2; sbit key4 = P1^3; sbit key5 = P1^4; sbit SDA=P1^7; //IIC引脚 sbit SCL=P1^6; uchar qi,pri; //全局变量 //第一行显示内容 uchar code DIS11 [] = {"起步价"}; uchar code DIS12 [] = {"元"}; //第二行显示内容 uchar code DIS21 [] = {"总里程"}; uchar code DIS22 [] = {"公里"}; //第三行显示内容 uchar code DIS31 [] = {"停车时间"}; uchar code DIS32 [] = {"秒"}; //第四行显示内容 uchar code DIS41 [] = {"总金额"}; uchar code DIS42 [] = {"元"}; //欢迎界面 uchar code DIS_WEL[] = {"欢迎乘坐华农的士"}; //------------ms延时函数------------ void delay(int ms) { while(ms--) { uchar i; for(i=0;i<150;i++) 21 { _nop_(); _nop_(); _nop_(); } } } //------------短延时函数------------ delayNOP() { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); } //--------IIC开始位--------- void start() { SDA = 1; delayNOP(); SCL = 1; delayNOP(); SDA = 0; delayNOP(); } //--------IIC停止位--------- void stop() { SDA = 0; delayNOP(); SCL = 1; delayNOP(); SDA = 1; delayNOP(); } 22 //--------IIC应答位--------- void respons() { uchar i; SCL=1; delayNOP(); while((SDA==1)&&(i<250)) i++; SCL=0; delayNOP(); } //--------从EEPROM读到MCU --------- uchar read_byte() { uchar i,j,k; SCL=0; delayNOP(); SDA=1; delayNOP(); for(i=0;i<8;i++) { SCL=1; delayNOP(); j=SDA; k=(k<<1)|j; SCL=0; delayNOP(); } return k; } //--------从MCU写到EEPROM--------- void write_byte(uchar date) { uchar i,temp; temp=date; SCL=0; delayNOP(); for(i=0;i<8;i++) { temp=temp<<1; 23 SDA=CY; delayNOP(); SCL=1; delayNOP(); SCL=0; delayNOP(); } SDA=1; delayNOP(); } //--------在指定地址addr处写入数据date--------- void write_data(uchar addr, uchar date) { SDA=1; SCL=1; start(); write_byte(0xa0); respons(); write_byte(addr); respons(); write_byte(date); respons(); stop(); } //--------在指定地址addr读取数据 --------- uchar read_data(uchar addr) { uchar date; SDA=1; SCL=1; start(); write_byte(0xa0); respons(); write_byte(addr); respons(); start(); write_byte(0xa1); respons(); date=read_byte(); 24 stop(); return date; } //-----------LCD测忙函数------------ bit lcd_busy() { bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result = (bit)(P0&0x80); LCD_EN = 0; return(result); } //---------LCD写命令---------- void lcd_wcmd(uchar cmd) { while(lcd_busy()); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; } //-----------LCD写数字----------- void lcd_wdat(uchar dat) { while(lcd_busy()); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delayNOP(); LCD_EN = 1; 25 delayNOP(); LCD_EN = 0; } //-----------LCD清屏程序----------- void clr_screen() { lcd_wcmd(0x34); delay(5); lcd_wcmd(0x30); delay(5); lcd_wcmd(0x01); delay(5); } //------------初始化函数------------ void init() { uchar i; lcd_wcmd(0x34); delay(5); lcd_wcmd(0x30); delay(5); lcd_wcmd(0x0C); delay(5); lcd_wcmd(0x01); delay(5); lcd_wcmd(0x90); for(i=0;i<16;i++) { lcd_wdat(DIS_WEL[i]); } delay(10); } //----------LCD显示函数------------- void disp() { uchar i; //显示第一行内容 lcd_wcmd(0x80); 26 for(i=0;i<6;i++) { lcd_wdat(DIS11 [i]); delay(5); } lcd_wcmd(0x85); for(i=0;i<2;i++) { lcd_wdat(DIS12[i]); delay(5); } //显示第二行内容 lcd_wcmd(0x90); for(i=0;i<6;i++) { lcd_wdat(DIS21[i]); delay(5); } lcd_wcmd(0x95); for(i=0;i<4;i++) { lcd_wdat(DIS22[i]); delay(5); } //显示第三行内容 lcd_wcmd(0x88); for(i=0;i<8;i++) { lcd_wdat(DIS31 [i]); delay(5); } lcd_wcmd(0x8e); for(i=0;i<2;i++) { lcd_wdat(DIS32 [i]); delay(5); } //显示第四行内容 lcd_wcmd(0x98); for(i=0;i<6;i++) 27 { lcd_wdat(DIS41 [i]); delay(5); } lcd_wcmd(0x9d); for(i=0;i<2;i++) { lcd_wdat(DIS42 [i]); delay(5); } } //-----------LCD在某个地方显示变化的数字----------- write_lcd(char add,char date) { uchar qian, bai,shi,ge; qian=date/1000; bai=date%1000/100; shi=date%1000%100/10; ge=date%1000%100%10; lcd_wcmd(add); lcd_wdat(0x30+qian); lcd_wdat(0x30+bai); lcd_wdat(0x30+shi); lcd_wdat(0x30+ge); } //---------主函数---------- void main( ) { uchar flag; init(); TMOD=0x61; TH1=255; TL1=255; TH0=(65536-5000)/256; TL0=(65536-5000)%256; EA=1; ET1=1; ET0=1; TR1=1; 28 qi=read_data(1);//从EEPROM中读回起步价 pri=qi; while(1) { if (key4==0) //按下第四个键 开启定时器0中断并且禁止调起步价 { delay(20); if(key4==0) { while(!key4); delay(20); while(!key4);//松手检测 flag=1; TR0=1; } } if (key1==0)//按下第一个键 显示初始化界面 { delay(30); if(key1==0) { while(!key1); delay(30); while(!key1);//松手检测 clr_screen(); disp(); write_lcd(0x83,qi); //这里的地址是显示起步价的地址 write_lcd(0x9B,qi); //这里的地址是显示总价的地址 } } if(flag!=1) { if (key2==0)//按下第二个键 每按一次加一元 { delay(30); if(key2==0) { while(!key2); delay(30); while(!key2); 29 qi++; pri=qi; write_data(1, qi); write_lcd(0x83,qi);//这里的地址是显示起步价的地址 write_lcd(0x9B,qi);//这里的地址是显示总价的地址 } } if (key3==0)//按下第二个键 每按一次加一元 { delay(30); if(key3==0) { while(!key3); delay(30); while(!key3); qi--; pri=qi; write_data(1, qi); write_lcd(0x83,qi);//这里的地址是显示起步价的地址 write_lcd(0x9B,qi);//这里的地址是显示总价的地址 } } } if (key5==0)//按下第5个键 停止定时器0 出租车停止等待 { delay(30); if(key5==0) { while(!key5); delay(30); while(!key5);//松手检测 TR0=0; } } } } ----------定时器中断1 霍尔传感器的中断----------- // void time1()interrupt 3 { char kilo,zd; 30 zd=zd+1;//中断标志位加一 if(zd==1)//当中断产生后,路程加一公里并清中断标志位 { zd=0; kilo=kilo+1; write_lcd(0x93,kilo);//这里的地址是路程显示的首地址 if(kilo>3) { pri++; write_lcd(0x9B,pri); //这里的地址是显示总价的地址 } } } //------------定时器中断0 出租车等待时间中断------------- void time0()interrupt 1 { uchar i,t; TH0=(65536-5000)/256; TL0=(65536-5000)%256; i++; if(i==200)//加到一秒钟 { i=0; t++; write_lcd(0x8C,t); //这里的地址是显示时间的地址 if((t%5==0)&&(t!=0)) { pri++; write_lcd(0x9B,pri); //这里的地址是显示总价的地址 } } } 31 致 谢 首先要感谢张霞老师,本次毕业设计是在张霞老师的亲切关怀和悉心指导下完成的。从课题的选择到设计的最终完成,张老师都始终给予我细心的指导和不懈的支持。 还有与我一起愉快的度过毕业设计的所有同学,正是由于他们的帮助和支持,我才能克服一个又一个的困难和疑惑,才能顺利地完成毕业设计,对他们表示真诚的感谢。 此外,我还要感谢大学四年来一直都很关心我们的班主任,以及关心、帮助、指导和鼓励过我的老师、同学们。 当然,最少不了就是要感谢我的父母,是他们给了我一切,如果没有他们从小到大对我的教育和抚养,就没有我今天的一切,他们给了我世界上最亲切、最温暖的爱。 最后,祝愿所有老师、同学在今后的工作、学习和生活上都能事事顺利。 32 33
本文档为【基于单片机的出租车计价器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_574951
暂无简介~
格式:doc
大小:295KB
软件:Word
页数:43
分类:互联网
上传时间:2017-10-08
浏览量:27