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

上传人:laozhun 文档编号:3975264 上传时间:2023-03-30 格式:DOC 页数:25 大小:952.50KB
返回 下载 相关 举报
毕业设计基于PIC单片机的出租车计费系统设计.doc_第1页
第1页 / 共25页
毕业设计基于PIC单片机的出租车计费系统设计.doc_第2页
第2页 / 共25页
毕业设计基于PIC单片机的出租车计费系统设计.doc_第3页
第3页 / 共25页
毕业设计基于PIC单片机的出租车计费系统设计.doc_第4页
第4页 / 共25页
毕业设计基于PIC单片机的出租车计费系统设计.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《毕业设计基于PIC单片机的出租车计费系统设计.doc》由会员分享,可在线阅读,更多相关《毕业设计基于PIC单片机的出租车计费系统设计.doc(25页珍藏版)》请在三一办公上搜索。

1、基于PIC单片机的出租车计费系统设计摘 要随着经济的发展,带动汽车行业快速发展,出租车日益普遍,了解在出租车上应用的计费系统,对我们日常生活也有帮助。而使用单片机实现该系统,是深化单片机应用的良好途径。本系统由单片机PIC16F877A和一些外围原件组成,具有操作简单,显示明了,功能强大的特点。整个系统只有两个按键,一个“启动/停止”,一个“复位”; 使用TG12864E 液晶模组作为显示器,可以显示数字、字母、中文、图片等,使系统信息一目了然;本系统除了里程统计和费用计算以外,还具有万年历和语音播报功能。万年历由时钟芯片PCF8563实时提供时钟信号,再由单片机调用显示;语音播报由语音芯片I

2、SD1420提供语音信息,语音信息放在不同的地址里,由单片机从这些地址中调用合适的语音进行播放。本方案充分发挥人性化的特点,利用ISD1420的语音功能,配合TG12864液晶模组,模拟实现带语音提示的出租车计价系统。比较真实地模拟出租车的空车、载客、到站及对各状况的费率的计算、统计、显示和语音播报等功能。本系统涉及到的理论知识有: PIC单片机知识、LCD液晶显示器的工作原理和使用方法、可擦、写的语音芯片的工作原理及应用、实时时钟芯片的工作原理及应用、 出租车计费系统的原理和实现方法、 PROTEUS仿真原理及实际应用。本系统提高同学们用C语言编写程序的能力、单片机应用系统设计综合能力的训练

3、、培养同学们分析问题和解决问题的能力、对同学们的招聘以及参加工作均有帮助。该系统稍加改进,可以成为一套真正的实用的计费系统。 关键词:时钟芯片PCF8563 语音芯片ISD1420 TG12864液晶模组 LCD液晶显示器目录摘要1第一章 系统总体介绍 21系统组成及功能框图32里程计量及费用计算功能33语音播放功能44中文菜单显示功能45实时时钟功能56按键功能57系统电路设计原理图6第二章 硬件设计71主程序/CPU模块72语音播放模块 83液晶显示驱动模块 94脉冲发生器模块 115时钟模块 126按键扫描模块 14第三章 系统程序设计 121系统主程序流程框图 152里程和费率计算程序

4、流程图 183键盘处理程序流程图 19结束语19致谢21参考文献21附件21第一章系统总体介绍1.系统组成此出租车计费系统以单片机为系统核心,利用PIC16F877单片机配合TG12864液晶模组及ISD1420语音模块等,实现基本的出租车计价器功能。本系统是由PIC单片机、液晶显示模块、计数脉冲发生器、系统实时时钟及语音等模块组成。系统框图如图(1)所示:2.系统各部分功能:里程计量功能a)单片机对传感器输出脉冲进行计数,并将脉冲数换算成公里数;b)每一个脉冲代表轮胎旋转一周,设轮胎的直径为520mm,轮胎的周长为:(即每转一圈的距离)520x3.14159=1634mm=1.634m c)

5、每公里的脉冲数:PulsePerKM=1000m/1.634m=612(个脉冲) 费用计算功能(参照广州市出租车收费标准)费用计算包括三部分:起步费、行使费和燃油附加费:a)起步费用(StartPrice) 当行驶里程(RunMilege)在2.3Km(含2.3Km)以内按起步价(StartPrice)7元计费。即行使费用(RunPrice)为: RunPrice = StartPrice + 1 = 8(元)b) 行使费用(RunPrice)-行使费用分短途与长途两种情况:.当行驶里程(RunMilege)超出2.3Km时并且小于35Km时,按2.6元/Km收费,这时行驶费用为:RunPri

6、ce=StartPrice+2.6(RunMilege-StartMilege)+1 其中:StartPrice为起步价=7元 StartMilege为起步里程=2.3KmRunMilege为行使里程(总行使里程)RunPrice为行使费用(总行使金额).当行使里程超过35Km后,要加空驶费,即每公里升至3.50元, 这时行驶费用为:RunPrice=StartPrice+3.5(RunMilege-StartMilege)+1c) 燃油附加费-每车次加收一元。语音播放功能.当初次按下“startstop”键,出租车开始启动,系统播放“您好!欢迎乘坐本公司出租汽车,谢谢!”播送完毕,计费器开始

7、计费。.按下“SpeedUp”键,出租车加速行使,最高速为100Km。.按下“SpeedDown”键,出租车减速行使,最低速为0Km。.在行使状态下,按下“startstop”键,表示出租车到站,结束行使。这时候,系统播放“您好!行使里程XXX公里,应付XXX元,请检查您的随身物品,欢迎再次乘坐,再见!”的提示音。.按下“Reset”键,进入空车状态。 中文菜单显示功能.在空车状态下(启动前),LCD屏幕上显示如下的中文信息:.在空车状态下,按下“startstop”键,系统播放“您好!欢迎乘坐本公司出租汽车,谢谢!”的提示音,同时在LCD屏幕上显示如下的中文信息:.播完提示音后,进入行使状态

8、,LCD屏幕显示以下信息:.在行使状态,按下“SpeedUp”键,里程显示的公里数增加的速度会不断的变快,金额数值也在作相应的变化。按下“SpeedDown”键,里程显示的公里数增加的速度会不断的变慢。.在行使状态,按下“startstop”键,表示出租车到站,结束行程。这时屏幕显示以下信息: 同时,系统播放“您好!行使里程xxx.xx公里,应付xxx.xx元,请检查您的随身物品,欢迎再次乘坐,再见!”的提示音。实时时钟功能本系统采用两种方法实现日历时钟:(1)用实时时钟芯片FC8563作为时钟电路,产生年月日时分秒等信号,供系统调用。(2)用单片机中断的方法产生年月日时分秒等信号。(3)两种

9、方法由同学自行选择。本系统设置4个按键,各个按键的功能如下:(1)“startstop”键开始进入行使/结束行使(到站)。(2)“SpeedUp”键行使加速按键。按下次按键,可使出租车的速度由0Km上升到100Km。(3)“SpeedDown”键-行使减速按键。按下次按键,可使出租车的速度由100K下降到0Km。(4)“Reset”键-进入空车状态。电路设计原理图第二章 硬件设计: 主程序/CPU模块 主程序/CPU电路图及说明该模块主要包括系统初始化、PWM计数脉冲的产生、里程的识别和费率的计算及各功能模块的的组织和管理等。主程序模块在系统中起着重要的作用。PIC16F877主要性能:具有高

10、性能RISC CPU。具有25条单字指令。除程序分支指令为两个周期外,其余均为单周期指令。运行速度:DC-20MHZ时钟输入 DC-200ns指令周期8K*14个FLASH程序存储器368*8个数据存储器(RAM)字节256*8EEPROM数据存储器字节引脚输出和PIC16C73B/74B/76/77兼容中断能力(达到14个中断源)8级深度的硬件堆栈直接,间接和相对寻址方式上电复位(POR)上电定时器(PWRT)和振荡启动定时器(OST)监视定时器(WDT),它带有片内可靠运行的RC振荡器可编程的全码保护低功耗睡眠方式可选择的振荡器低功耗、高速CMOS FLASH/EEPROM工艺全静态设计要

11、线串行编程(ICSP)单独5V的内部电路串行编程(ICSP)能力,处理机读/写访问程序存储器运行电压范围2.0V到5.5V高吸入/拉出电流25mA商用,工业用温度范围低功耗:在5V,4MHz时典型值小于2mA在3V,32KHz时典型值小于20uA典型的稳态电流值小于1uA外围特征:Timer0:带有预分频器的8位定时/计数器Timer1:带有预分频的16位定时器/计数器,在使用外部晶体振荡时钟时,在Sleep期间仍能工作。Timer2:带有8位分频寄存器,预分频器和后分频器的8位定时器/计数器2个捕捉器,比较器,PWM模块其中:捕捉器是16位,最大分辩率为12.5ns 比较器是16位,最大分辩

12、率方200ns PWM最大分辩率为是10位10位多通道模/数转换器带有SPI(主模式)和I2C(主/从)模式的SSP带有9位地址探测的通用同步异步接收/发送器(USART/SCI)带有RD,WR和CS控制(只40/44引脚)8位字宽的并行从端口带有降压复位的降压检测电路 语音播放模块 语音播放模块电路图及说明:语音播放模块播放提示音,行驶里程、费用等。ISD1420系列单片录放时间8至20秒,音质好。芯片采用CMOS技术,内含震荡器、话筒前置放大、自动增益控制、防混淆滤波器、平滑滤波器、扬声器驱动及EEPROM阵列。最小的录放系统仅需麦克风、喇叭、两个按钮、电源及少数电阻电容。在录放操作结束后

13、,芯片自动进入低功耗节电模式、功耗仅0.5uA。ISD1420系列有唯一的录音控制和边缘/电平触发两种放音控制。不分段时外围线路最简,也可按最小段长为单位任意组合分段,芯片提供若干操作模式,大大提高了控制的灵活性。芯片采用多电平直接模拟量存储专利技术,每个采样直接存储在片内单个EEPROM单元中,因此能够非常真实、自然地再现语音、音乐、音调各效果,避免了一般固体录音电路因量化和压缩造成的量化噪声和“金属声”。采样频率从5.3,6.4到8.0KHz,对音质仅有轻微影响。片内信息可保存100年(无需后备电源),EEPROM单片可反复录音十万次。 液晶显示驱动模块液晶显示驱动模块电路图及说明:TG1

14、2864E 是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及12864 全点阵液晶显示器组成。可完成图形显示,也可以84 个(1616 点阵)汉字。主要技术参数和性能:电源:VDD:+2.7 +5V; 模块内自带-10V负压,用于LCD的驱动电压。 显示内容:128(列)64(行)点全屏幕点阵 七种指令 与CPU接口采用8 位数据总线并行输入输出和8 条控制线 占空比1/64 工作温度:-10+60,储存温度:-20+70,可选择宽温:-20+70.外形尺寸图:.模块主要硬件构成说明:. 模块的外部接口:.TG12864EL 串口接线方式:脉冲发生器模块 脉冲性生器模块电路图及说明:(如

15、下图) NE555定时器具有定时精度高、工作速度快、可靠性好、电源电压范围宽(3-18V)、输出电流大(可高达200mA)等优点,可组成各种波形的脉冲振荡电路、定时延时电路、是一种电路结构简单、使用方便灵活、用途广泛的多功能中规模集成电路。只需在外部配接适当的阻容元件,便可组成施密特触发器、单稳态触发器和多谐振荡器等多种应用电路,在这个电路中是多谐振荡器,它电路简单、性能稳定,波形标准。该模块完成传感器脉冲计量,然后转换为公里数,并根据规则计算对应的费用。同时,监测行驶速度,统计低速时间,计算低速等待费用,提供液晶显示更新函数,以便主函数可以控制更新用户界面以及行驶里程、费用等信息的显示。该模

16、块包括PWM管理程序、里程计量程序、时间管理程序、费用管理程序、用户界面控制程序等部分。时钟模块 时钟模块电路图及说明:PCF8563 是低功耗的CMOS 实时时钟日历芯片,它提供一个可编程时钟输出,一个中断输出和掉电检测器,所有的地址和数据通过I2C 总线接口串行传递。最大总线速度为400Kbits/s,每次读写数据后,内嵌的字地址寄存器会自动产生增量。 特性:* 低工作电流:典型值为0.25A(VDD=3.0V,Tamb=25时)。* 世纪标志* 大工作电压范围:1.05.5* 低休眠电流;典型值为0.25A(VDD=3.0V,Tamb=25)* 400KHz 的I2C 总线接口(VDD=

17、1.85.5V 时)。* 可编程时钟输出频率为:32.768KHz,1024Hz,32Hz,1Hz。* 报警和定时器。* 掉电检测器。* 内部集成的振荡器电容。* 片内电源复位功能。* I2C 总线从地址:读,0A3H;写,0A2H。* 开漏中断引脚。管脚配置功能描述:PCF8563 有16 个位寄存器:一个可自动增量的地址寄存器,一个内置32.768KHz 的振荡器(带有一个内部集成的电容),一个分频器(用于给实时时钟RTC 提供源时钟),一个可编程时钟输出,一个定时器,一个报警器,一个掉电检测器和一个400KHz I2C总线接口。所有16 个寄存器设计成可寻址的8 位并行寄存器,但不是所有

18、位都有用。前两个寄存器(内存地址00H,01H)用于控制寄存器和状态寄存器,内存地址02H08H 用于时钟计数器(秒年计数器),地址09H0CH 用于报警寄存器(定义报警条件),地址0DH 控制CLKOUT 管脚的输出频率,地址0EH 和0FH 分别用于定时器控制寄存器和定时器寄存器。秒、分钟、小时、日、月、年、分钟报警、小时报警、日报警寄存器,编码格式为BCD,星期和星期报警寄存器不以BCD 格式编码。当一个RTC 寄存器被读时,所有计数器的内容被锁存,因此,在传送条件下, 可以禁止对时钟日历芯片的错读。PCF8563 硬件时钟描写模块:最大总线速度为400Kbits/s,每次读写数据后,内

19、嵌的字地址寄存器会自动产生增量。 *400KHz 的I2C 总线接口(VDD=1.85.5V 时) *可编程时钟输出频率为:32.768KHz,1024Hz,32Hz,1Hz。 *报警和定时器。 *开漏中断引脚。 *I2C 总线从地址:读0A3H;写0A2H。 地址 寄存器名称 00H 控制/状态寄存器 01H 控制/状态寄存器 0DH CLKOUT 频率寄存器 0EH 定时器控制寄存器 0FH 定时器倒计数数值寄存器 地址 寄存器名称 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 02h 秒 VL 0059BCD 码格式数 03h 分钟 - 0059BCD

20、码格式数 04h 小时 - - 0059BCD 码格式数 05h 日 - - 0131BCD 码格式数 06h 星期 - - - - - 06 07h 月/世纪 C - - 0112 BCD 码格式数 08h 年 0099 BCD 码格式数 09h 分钟报警 AE 0059 BCD 码格式数 0Ah 小时报警 AE - 0023 BCD 码格式数 0BH 日报警 AE - 0131 BCD 码格式数 0CH 星期报警 AE - - - - 06 操作举例*进入EXTCLK 测试模式;设置控制状态寄存器的位(TEST=1)。*设置控制状态寄存器的位(STOP=1)。 *清除控制状态寄存器的位(S

21、TOP=0)。*设置时间寄存器(秒、分钟、小时、日、星期、月世纪和年)为期望值。 *提供32 个时钟脉冲给CLKOUT。 *读时间寄存器观察第一次变化。 *提供64 个时钟脉冲给CLKOUT。 *读时间寄存器观察第二次变化;需要读时间寄存器的附加增量时,重复步骤和。按键扫描模块: 按键扫描模块电路图及说明:整个系统只有两个按键,一个“启动/停止”,一个“复位”;本模块功能:扫描按键功能,返回扫描结果。第三章 系统程序设计本系统程序由C语言编写,编译软件是MPLAB IDE 和一个外挂的PIC的C语言编译软件PICC 。 1.系统主程序流程框图(含程序):/*/主程序开始/*void main(

22、) initial(); init(); lcm_init(); InitI2C(); count = 0; RunMilege=0; flag = 0; play_fg1 = 0; play_fg2 = 0;/*/转换为图形方式/* write_inst(0x34); write_inst(0x36); clear_picture_fast(); display_picture1();/显示一幅个性化图片 delay(100);/*/转换为文本方式/* write_inst(0x30); write_inst(0x0c); write_inst(0x01); write_inst(0x06)

23、;/*/显示一幅个人信息/* disp_log1(); delay(200); write_inst(0x01);/*/主程序循环开始/* while(1) if(mode=0)/模式0: 显示空车状态 INTE = 0; count = 0; kongche(); else if(mode=1)/模式1: if(!flag)/标志位为0时 INTE = 0;/禁止中断产生 write_inst(0x01); yingke(); /显示欢迎界面 play(17,50);/播放“您好” play(18,5); /播放“欢迎” play(25,100);/播放“乘坐本公司出租汽车” delay(2

24、00); flag = 1; write_inst(0x01); else/标志位为1时 INTE = 1;/允许产生中断 price();/里程和费率计算 zaike();/进入载客界面 else if(mode=2)/模式2: INTE = 0;/禁止中断产生 if(!play_fg1)/标志位为0时 daozhan();/进入到站界面 play(21,60); /播放“车已到站” delay(50); playsound_km(RunMil);/播放行使里程 delay(50); playsound_mn(Pricet);/播放应付金额 play_fg1 = 1;/置标志位为1 writ

25、e_inst(0x01); jieshu();/进入结束界面 if(!play_fg2)/标志位为0时 play(24,100);/播放“请检查您的随身物品” play(18,5); /播放“欢迎” play(20,5); /播放“再次” play(25,100);/播放“乘坐本公司出租汽车” play(19,5); /播放“再见” play_fg2 = 1;/置标志位为1 scankey();/键盘扫描模块 2.里程和费率计算程序流程图(含程序):/*/费率计算函数/*void price() if(RunMilege2300)&(RunMilege35000) /TotalPrice=70

26、0+(35000-2300)*0.26+(RunMilege-35000)*0.35+100; TotalPrice=1112+(RunMilege-35000)*0.35; Price=(ulong)TotalPrice; 3.键盘处理程序流程图键盘扫描子程序模块/*void scankey() if(k2() bell(); if(mode=0x00) mode = 0x01; write_inst(0x01); else if(mode=0x01) flag = 0; mode = 0x02; write_inst(0x01); if(k4() bell(); if(mode=0x02)

27、 flag = 0; play_fg1 = 0; play_fg2 = 0; mode = 0x00; write_inst(0x01); count = 0; *结束语 通过这次毕业设计,我觉得自己学到了很多东西,特别是在即将毕业走向社会的时候,增加了自己以后在社会上工作的信心。毕业设计是对我们大学三年学习的总考验.这次毕业设计,我有以下一些体会: 大学大部分时间都是在学习理论基础知识,并未真正地去应用和实践。自从入学以来,了解了自己本专业信息之后,我就开始了我的电子信息学习生涯,其中涉及到的知识,是我以前没想过的,也不懂的,所以这次毕业设计,我很辛苦才完成。其中我接触到了更多平时没有接触到

28、的元器等,发现了自己很多不足之。我体会到了所学理论知识的重要性:知识掌握越多,设计得就更加严谨,更加顺利。了解了进行一项相对比较大型的科研设计所必不可少的几个阶段。毕业设计能够从理论设计和工程实践相结合,个人作用和集体协作相结合等全方面的培养学生的全面素质。我经过这次系统的毕业设计,熟悉了对一项课题进行研究,设计和试验的详细过程。这些在我们在将来的工作和学习当中都会有很大的帮助。加深了解了查阅资料和利用工具书的重要性.平时课堂上所学习的知识大多比较陈旧,作为电子信息工程的学生,由于专业涉及知识广,不仅在懂单片机的知识,还要懂模拟电子、数字电子、Protel 99 SE等等方面的知识。一个人不可

29、能什么都学过,什么都懂,因此,当我在设计过程中需要用到一些不曾学过的东西时,就要去有针对性地查找资料,然后加以利用吸收,以提高自己的应用能力,而且还能增长自己见识,补充我的专业知识。毕业设计对以前所学的过的理论知识起到了回顾作用,并对其加以进一步的消化和巩固。实践能力得到了进一步提高,在制作过程中积累了一些经验。毕业设计培养了我们严肃认真和实事求是的学习态度,而且培养了吃苦耐劳的精神以及相对应的工程意识。同学之间的友谊互助也充分的在毕业设计当中充分体现了出来。总之,在踏上大学旅途的最后一步中间虽然存在着许多困难,但我们都走过了,这过程中我学到了不少的新知识,对我个人将来的发展非常有帮助。所谓读

30、万卷书不如走万里路,实践是检验真理的唯一标准,将来的路还很长,还需要我在实践中不断的摸索,跌倒了再爬起来,在困难和逆境中不断成长。致谢首先,在这里,我要感谢我的指导师姚xxx老师,他真的是一位很慈祥,很棒的老师,对学生也很好,他给了我很多的帮助,没有他的指导,我的毕业设计不会这么顺利完成。其次要感谢3号楼智能实验室的陈老师给我们提供了仿真器,让我们可以随时用。我还要感谢毕业设计一起做设计同学。没有姚老师和同学的协助,我这次设计也不会这样顺利。谢谢!参考文献(1)PIC单片机基础教程 -丁跃军等编著 北航大学出版社(2)PIC单片机原理 -李学海编著 北航大学出版社(3)基于PROTEUS的电路

31、及单片机系统设计与仿真 -周润景、张丽娜编著 北航大学出版社(4)凌阳大学计划出租车计费系统电子文档资料(5)PIC单片机C语言基础教程Employment tribunals sort out disagreements between employers and employees.You may need to make a claim to an employment tribunal if: you dont agree with the disciplinary action your employer has taken against you your employer dis

32、misses you and you think that you have been dismissed unfairly.For more information about dismissal and unfair dismissal, seeDismissal.You can make a claim to an employment tribunal, even if you haventappealedagainst the disciplinary action your employer has taken against you. However, if you win yo

33、ur case, the tribunal may reduce any compensation awarded to you as a result of your failure to appeal.Remember that in most cases you must make an application to an employment tribunal within three months of the date when the event you are complaining about happened. If your application is received

34、 after this time limit, the tribunal will not usually accept i.If you are worried about how the time limits apply to you, take advice from one of the organisations listed underFurther help.Employment tribunals are less formal than some other courts, but it is still a legal process and you will need

35、to give evidence under an oath or affirmation.Most people find making a claim to an employment tribunal challenging. If you are thinking about making a claim to an employment tribunal, you should get help straight away from one of the organisations listed underFurther help.If you are being represent

36、ed by a solicitor at the tribunal, they may ask you to sign an agreement where you pay their fee out of your compensation if you win the case. This is known as adamages-based agreement. In England and Wales, your solicitor cant charge you more than 35% of your compensation if you win the case.If you

37、 are thinking about signing up for a damages-based agreement, you should make sure youre clear about the terms of the agreement. It might be best to get advice from an experienced adviser, for example, at a Citizens Advice Bureau. To find your nearest CAB, including those that give advice by e-mail,

38、 click onnearest CAB.For more information about making a claim to an employment tribunal, seeEmployment tribunals.The (lack of) air up there Watch mCayman Islands-based Webb, the head of Fifas anti-racism taskforce, is in London for the Football Associations 150th anniversary celebrations and will attend Citys Premier League match at Chelsea o

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号