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

上传人:b****5 文档编号:3660884 上传时间:2022-11-24 格式:DOCX 页数:30 大小:609.20KB
下载 相关 举报
基于PIC单片机的出租车计费系统毕业设计论文.docx_第1页
第1页 / 共30页
基于PIC单片机的出租车计费系统毕业设计论文.docx_第2页
第2页 / 共30页
基于PIC单片机的出租车计费系统毕业设计论文.docx_第3页
第3页 / 共30页
基于PIC单片机的出租车计费系统毕业设计论文.docx_第4页
第4页 / 共30页
基于PIC单片机的出租车计费系统毕业设计论文.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

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

《基于PIC单片机的出租车计费系统毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于PIC单片机的出租车计费系统毕业设计论文.docx(30页珍藏版)》请在冰豆网上搜索。

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

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

基于PIC单片机的出租车计费系统

摘要

随着经济的发展,带动汽车行业快速发展,出租车日益普遍,了解在出租车上应用的计费系统,对我们日常生活也有帮助。

而使用单片机实现该系统,是深化单片机应用的良好途径。

本系统由单片机PIC16F877A和一些外围原件组成,具有操作简单,显示明了,功能强大的特点。

整个系统只有两个按键,一个“启动/停止”,一个“复位”;

使用TG12864E液晶模组作为显示器,可以显示数字、字母、中文、图片等,使系统信息一目了然;

本系统除了里程统计和费用计算以外,还具有万年历和语音播报功能。

万年历由时钟芯片PCF8563实时提供时钟信号,再由单片机调用显示;

语音播报由语音芯片ISD1420提供语音信息,语音信息放在不同的地址里,由单片机从这些地址中调用合适的语音进行播放。

本方案充分发挥人性化的特点,利用ISD1420的语音功能,配合TG12864液晶模组,模拟实现带语音提示的出租车计价系统。

比较真实地模拟出租车的空车、载客、到站及对各状况的费率的计算、统计、显示和语音播报等功能。

本系统涉及到的理论知识有:

PIC单片机知识、LCD液晶显示器的工作原理和使用方法、可擦、写的语音芯片的工作原理及应用、实时时钟芯片的工作原理及应用、出租车计费系统的原理和实现方法、PROTEUS仿真原理及实际应用。

本系统提高同学们用C语言编写程序的能力、单片机应用系统设计综合能力的训练、培养同学们分析问题和解决问题的能力、对同学们的招聘以及参加工作均有帮助。

 该系统稍加改进,可以成为一套真正的实用的计费系统。

关键词:

时钟芯片PCF8563语音芯片ISD1420TG12864液晶模组LCD液晶显示器

 

目录

摘要……………………………………………………………………1

第一章系统总体介绍………………………………………………2

1.系统组成及功能框图………………………………………………3

2.里程计量及费用计算功能…………………………………………3

3.语音播放功能………………………………………………………4

4.中文菜单显示功能…………………………………………………4

5.实时时钟功能………………………………………………………5

6.按键功能……………………………………………………………5

7.系统电路设计原理图………………………………………………6

第二章硬件设计………………………………………………………7

1.主程序/CPU模块……………………………………………………7

2.语音播放模块………………………………………………………8

3.液晶显示驱动模块…………………………………………………9

4.脉冲发生器模块……………………………………………………11

5.时钟模块……………………………………………………………12

6.按键扫描模块………………………………………………………14

第三章系统程序设计…………………………………………………12

1.系统主程序流程框图………………………………………………15

2.里程和费率计算程序流程图……………………………………………18

3.键盘处理程序流程图…………………………………………………………19

结束语……………………………………………………………………19

致谢………………………………………………………………………21

参考文献…………………………………………………………………21

附件………………………………………………………………………21

 

第一章系统总体介绍

1.系统组成

此出租车计费系统以单片机为系统核心,利用PIC16F877单片机配合TG12864液晶模组及ISD1420语音模块等,实现基本的出租车计价器功能。

本系统是由PIC单片机、液晶显示模块、计数脉冲发生器、系统实时时钟及语音等模块组成。

系统框图如图

(1)所示:

 

2.系统各部分功能:

⑴.里程计量功能

a)单片机对传感器输出脉冲进行计数,并将脉冲数换算成公里数;

b)每一个脉冲代表轮胎旋转一周,设轮胎的直径为520mm,轮胎的周长为:

(即每转一圈的距离)

520x3.14159=1634mm=1.634m

c)每公里的脉冲数:

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收费,这时行驶费用为:

RunPrice=StartPrice+2.6×(RunMilege-StartMilege)+1

其中:

StartPrice为起步价=7元

StartMilege为起步里程=2.3Km

RunMilege为行使里程(总行使里程)

RunPrice为行使费用(总行使金额)

②.当行使里程超过35Km后,要加空驶费,即每公里升至3.50元,这时行驶费用为:

RunPrice=StartPrice+3.5×(RunMilege-StartMilege)+1

c)燃油附加费--每车次加收一元。

⑶.语音播放功能

①.当初次按下“start/stop”键,出租车开始启动,系统播放“您好!

欢迎乘坐本公司出租汽车,谢谢!

”播送完毕,计费器开始计费。

②.按下“SpeedUp”键,出租车加速行使,最高速为100Km。

③.按下“SpeedDown”键,出租车减速行使,最低速为0Km。

④.在行使状态下,按下“start/stop”键,表示出租车到站,结束行使。

这时候,系统播放“您好!

行使里程XXX公里,应付XXX元,请检查您的随身物品,欢迎再次乘坐,再见!

”的提示音。

⑤.按下“Reset”键,进入空车状态。

⑷.中文菜单显示功能

①.在空车状态下(启动前),LCD屏幕上显示如下的中文信息:

 

②.在空车状态下,按下“start/stop”键,系统播放“您好!

欢迎乘坐本公司出租汽车,谢谢!

”的提示音,同时在LCD屏幕上显示如下的中文信息:

 

③.播完提示音后,进入行使状态,LCD屏幕显示以下信息:

 

④.在行使状态,按下“SpeedUp”键,里程显示的公里数增加的速度会不断的变快,金额数值也在作相应的变化。

按下“SpeedDown”键,里程显示的公里数增加的速度会不断的变慢。

⑤.在行使状态,按下“start/stop”键,表示出租车到站,结束行程。

这时屏幕显示以下信息:

 

同时,系统播放“您好!

行使里程xxx.xx公里,应付xxx.xx元,请检查您的随身物品,欢迎再次乘坐,再见!

”的提示音。

⑸.实时时钟功能

本系统采用两种方法实现日历时钟:

(1)用实时时钟芯片-FC8563作为时钟电路,产生年/月/日/时/分/秒等信号,供系统调用。

(2)用单片机中断的方法产生年/月/日/时/分/秒等信号。

(3)两种方法由同学自行选择。

⑹.本系统设置4个按键,各个按键的功能如下:

(1)“start/stop”键—开始进入行使/结束行使(到站)。

(2)“SpeedUp”键—行使加速按键。

按下次按键,可使出租车的速度由0Km上升到100Km。

(3)“SpeedDown”键--行使减速按键。

按下次按键,可使出租车的速度由100K下降到0Km。

(4)“Reset”键--进入空车状态。

⑺电路设计原理图

第二章硬件设计:

⒈主程序/CPU模块

⑴主程序/CPU电路图及说明

该模块主要包括系统初始化、PWM计数脉冲的产生、里程的识别和费率的计算及各功能模块的的组织和管理等。

主程序模块在系统中起着重要的作用。

PIC16F877主要性能:

·具有高性能RISCCPU。

·具有25条单字指令。

·除程序分支指令为两个周期外,其余均为单周期指令。

·运行速度:

DC-20MHZ时钟输入

DC-200ns指令周期

·8K*14个FLASH程序存储器

368*8个数据存储器(RAM)字节

256*8EEPROM数据存储器字节

·引脚输出和PIC16C73B/74B/76/77兼容

·中断能力(达到14个中断源)

·8级深度的硬件堆栈

·直接,间接和相对寻址方式

·上电复位(POR)

·上电定时器(PWRT)和振荡启动定时器(OST)

·监视定时器(WDT),它带有片内可靠运行的RC振荡器

·可编程的全码保护

·低功耗睡眠方式

·可选择的振荡器

·低功耗、高速CMOSFLASH/EEPROM工艺

·全静态设计

·要线串行编程(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位,最大分辩率方200ns

PWM最大分辩率为是10位

·10位多通道模/数转换器

·带有SPI(主模式)和I2C(主/从)模式的SSP

·带有9位地址探测的通用同步异步接收/发送器(USART/SCI)

·带有RD,WR和CS控制(只40/44引脚)8位字宽的并行从端口

·带有降压复位的降压检测电路

⑵语音播放模块

①语音播放模块电路图及说明:

语音播放模块播放提示音,行驶里程、费用等。

ISD1420系列单片录放时间8至20秒,音质好。

芯片采用CMOS技术,内含震荡器、话筒前置放大、自动增益控制、防混淆滤波器、平滑滤波器、扬声器驱动及EEPROM阵列。

最小的录放系统仅需麦克风、喇叭、两个按钮、电源及少数电阻电容。

在录放操作结束后,芯片自动进入低功耗节电模式、功耗仅0.5uA。

ISD1420系列有唯一的录音控制和边缘/电平触发两种放音控制。

不分段时外围线路最简,也可按最小段长为单位任意组合分段,芯片提供若干操作模式,大大提高了控制的灵活性。

芯片采用多电平直接模拟量存储专利技术,每个采样直接存储在片内单个EEPROM单元中,因此能够非常真实、自然地再现语音、音乐、音调各效果,避免了一般固体录音电路因量化和压缩造成的量化噪声和“金属声”。

采样频率从5.3,6.4到8.0KHz,对音质仅有轻微影响。

片内信息可保存100年(无需后备电源),EEPROM单片可反复录音十万次。

⑶液晶显示驱动模块

①.液晶显示驱动模块电路图及说明:

TG12864E是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×64全点阵液晶

显示器组成。

可完成图形显示,也可以8×4个(16×16点阵)汉字。

主要技术参数和性能:

·电源:

VDD:

+2.7~+5V;模块内自带-10V负压,用于LCD的驱动电压。

·显示内容:

128(列)×64(行)点

·全屏幕点阵

·七种指令

·与CPU接口采用8位数据总线并行输入输出和8条控制线

·占空比1/64

·工作温度:

-10℃~+60℃,储存温度:

-20℃~+70℃,可选择宽温:

-20℃~+70℃

②.外形尺寸图:

③.模块主要硬件构成说明:

④.模块的外部接口:

⑤.TG12864EL串口接线方式:

 

⑷脉冲发生器模块

①脉冲性生器模块电路图及说明:

(如下图)

②NE555定时器具有定时精度高、工作速度快、可靠性好、电源电压范围宽(3-18V)、输出电流大(可高达200mA)等优点,可组成各种波形的脉冲振荡电路、定时延时电路、是一种电路结构简单、使用方便灵活、用途广泛的多功能中规模集成电路。

只需在外部配接适当的阻容元件,便可组成施密特触发器、单稳态触发器和多谐振荡器等多种应用电路,在这个电路中是多谐振荡器,它电路简单、性能稳定,波形标准。

该模块完成传感器脉冲计量,然后转换为公里数,并根据规则计算对应的费用。

同时,监测行驶速度,统计低速时间,计算低速等待费用,提供液晶显示更新函数,以便主函数可以控制更新用户界面以及行驶里程、费用等信息的显示。

该模块包括PWM管理程序、里程计量程序、时间管理程序、费用管理程序、用户界面控制程序等部分。

⑸时钟模块

①时钟模块电路图及说明:

②PCF8563是低功耗的CMOS实时时钟/日历芯片,它提供一个可编程时钟输出,一个

中断输出和掉电检测器,所有的地址和数据通过I2C总线接口串行传递。

最大总线速度为400Kbits/s,每次读写数据后,内嵌的字地址寄存器会自动产生增量。

③特性:

*低工作电流:

典型值为0.25μA(VDD=3.0V,Tamb=25℃时)。

*世纪标志

*大工作电压范围:

1.0~5.5

*低休眠电流;典型值为0.25μA(VDD=3.0V,Tamb=25℃)

*400KHz的I2C总线接口(VDD=1.8~5.5V时)。

*可编程时钟输出频率为:

32.768KHz,1024Hz,32Hz,1Hz。

*报警和定时器。

*掉电检测器。

*内部集成的振荡器电容。

*片内电源复位功能。

*I2C总线从地址:

读,0A3H;写,0A2H。

*开漏中断引脚。

④管脚配置

⑤功能描述:

PCF8563有16个8位寄存器:

一个可自动增量的地址寄存器,一个内置32.768KHz的

振荡器(带有一个内部集成的电容),一个分频器(用于给实时时钟RTC提供源时钟),一个可编程时钟输出,一个定时器,一个报警器,一个掉电检测器和一个400KHzI2C

总线接口。

所有16个寄存器设计成可寻址的8位并行寄存器,但不是所有位都有用。

前两个寄存器(内存地址00H,01H)用于控制寄存器和状态寄存器,内存地址02H~08H用于时钟计数器(秒~年计数器),地址09H~0CH用于报警寄存器(定义报警条件),地址0DH控制CLKOUT管脚的输出频率,地址0EH和0FH分别用于定时器控制寄存器和定时器寄存器。

秒、分钟、小时、日、月、年、分钟报警、小时报警、日报警寄存器,编码格式为BCD,星期和星期报警寄存器不以BCD格式编码。

当一个RTC寄存器被读时,所有计数器的内容被锁存,因此,在传送条件下,可以禁止对时钟/日历芯片的错读。

PCF8563硬件时钟描写模块:

最大总线速度为400Kbits/s,每次读写数据后,内嵌的字地址寄存器会自动

产生增量。

*400KHz的I2C总线接口(VDD=1.8~5.5V时)

*可编程时钟输出频率为:

32.768KHz,1024Hz,32Hz,1Hz。

*报警和定时器。

*开漏中断引脚。

*I2C总线从地址:

读0A3H;写0A2H。

地址寄存器名称

00H控制/状态寄存器

01H控制/状态寄存器

0DHCLKOUT频率寄存器

0EH定时器控制寄存器

0FH定时器倒计数数值寄存器

地址寄存器名称Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0

02h秒VL00~59BCD码格式数

03h分钟-00~59BCD码格式数

04h小时--00~59BCD码格式数

05h日--01~31BCD码格式数

06h星期-----0~6

07h月/世纪C--01~12BCD码格式数

08h年00~99BCD码格式数

09h分钟报警AE00~59BCD码格式数

0Ah小时报警AE-00~23BCD码格式数

0BH日报警AE-01~31BCD码格式数

0CH星期报警AE----0~6

操作举例

*进入EXT_CLK测试模式;设置控制/状态寄存器1的位7(TEST=1)。

*设置控制/状态寄存器1的位5(STOP=1)。

*清除控制/状态寄存器1的位5(STOP=0)。

*设置时间寄存器(秒、分钟、小时、日、星期、月/世纪和年)为期望值。

*提供32个时钟脉冲给CLKOUT。

*读时间寄存器观察第一次变化。

*提供64个时钟脉冲给CLKOUT。

*读时间寄存器观察第二次变化;需要读时间寄存器的附加增量时,重复步骤7和8。

⑹按键扫描模块:

①按键扫描模块电路图及说明:

整个系统只有两个按键,一个“启动/停止”,一个“复位”;本模块功能:

扫描按键功能,返回扫描结果。

第三章系统程序设计

本系统程序由C语言编写,编译软件是MPLABIDE和一个外挂的PIC的C语言编译软件PICC。

1.系统主程序流程框图(含程序):

/**********************************************************

//主程序开始

//**********************************************************

voidmain()

{

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);

//*********************************************************

//显示一幅个人信息

//*********************************************************

disp_log1();

delay(200);

write_inst(0x01);

//*********************************************************

//主程序循环开始

//*********************************************************

while

(1)

{

if(mode==0)//模式0:

显示空车状态

{

INTE=0;

count=0;

kongche();

}

elseif(mode==1)//模式1:

{

if(!

flag)//标志位为"0"时

{

INTE=0;//禁止中断产生

write_inst(0x01);

yingke();//显示欢迎界面

play(17,50);//播放“您好”

play(18,5);//播放“欢迎”

play(25,100);//播放“乘坐本公司出租汽车”

delay(200);

flag=1;

write_inst(0x01);

}

else//标志位为"1"时

{

INTE=1;//允许产生中断

price();//里程和费率计算

zaike();//进入载客界面

}

}

elseif(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"

write_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.里程和费率计算程序流程图(含程序):

//*********************************************************

//费率计算函数

//*********************************************************

voidprice()

{

if(RunMilege<=2300)

//TotalPrice=700+100;

TotalPrice=800;

if((RunMilege>2300)&&(RunMilege<=35000))

//TotalPrice=700+(RunMilege-2300)*0.26+100;

TotalPrice=800+(RunMilege-2300)*0.26;

if(RunMilege>35000)

//TotalPrice=700+(

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

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1