出租车计费器设计论文
毕业设计用纸
中文摘要
随着经济的发展,带动汽车行业快速发展,出租车日益普遍,了解在出租车上应用的计费系统,对我们日常生活也有帮助。而使用单片机实现该系统,是深化单片机应用的良好途径。
本方案充分发挥人性化的特点,利用ISD1420的语音功能,配合TG12864液晶模组,模拟实现带语音提示的出租车计价系统。比较真实地模拟出租车的空车、载客、到站及对各状况的费率的计算、统计、显示和语音播报等功能。
本系统提高同学们用C语言编写程序的能力、单片机应用系统设计综合能力的训练、培养同学们分析问题和解决问题的能力、对同学们的招聘以及参加工作均有帮助。
关键词:时钟芯片PCF8563 语音芯片ISD1420 TG12864液晶模组 LCD液晶显示器
第 1 页 共 24 页
毕业设计用纸
ABSTRACT
N With economic development, promotes rapid development of the automotive industry, the taxi increasingly common understanding in a taxi on the application of the accounting system, on our daily lives also helped. MCU and the use of the system, deepen the SCM application is a good way.
The programmed give full play to the characteristics of human nature, the use of ISD1420 voice, with TG12864 LCD modules, with analog voice prompt realization of the taxi pricing system. Comparison of a true simulation of empty taxis, passenger departure and arrival of the situation and the rate calculation, the statistics show, and voice broadcast capabilities.
The system improve the students use the C programming language capability, microcontroller integrated application system design capacity of training, training students to analyze issues and problem-solving abilities, the students of recruitment and participation in the work are helping.
Key words: clock chip PCF8563 voice chip ISD1420 TG12864 LCD module LCD liquid crystal display
第 2 页 共 24 页
毕业设计用纸
目录
中文摘要 ........................................................................................................................... 1 ABSTRACT ...................................................................................................................... 2 第一章 系统总体介绍 ..................................................................................................... 4 1.1系统组成及功能框图 ................................................................................................. 4 1.2系统各部分功能:........................................................................................................ 4
1.2.1.里程计量功能 .............................................................................................. 4 1.2.2.费用计算功能(参照广州市出租车收费标准) ...................................... 4 1.2.3.语音播放功能 .............................................................................................. 5 1.2.4.中文菜单显示功能 ...................................................................................... 5 1.2.5.实时时钟功能 .............................................................................................. 6 1.2.6.本系统设置4个按键,各个按键的功能如下: ...................................... 6 1.2.7.系统电路设计原理图 .................................................................................... 7 第二章硬件设计: ........................................................................................................... 8 2.1.主程序/CPU模块 ....................................................................................................... 8
2.1.1主程序/CPU电路图及说明 ............................................................................ 8 2.2语音播放模块 ............................................................................................................ 9 2.3液晶显示驱动模块 .................................................................................................. 10 2. 4脉冲发生器模块 .................................................................................................... 13 2. 5时钟模块 ................................................................................................................ 14 2. 6按键扫描模块: ...................................................................................................... 16 第三章 系统程序设计 ............................................................................................... 17 3.1系统主程序流程框图(含程序) .......................................................................... 17 3.2里程和费率计算程序流程图(含程序): ............................................................ 20 3.3键盘处理程序流程图 .............................................................................................. 21 参考文献 ......................................................................................................................... 23 致谢 ................................................................................................................................. 24
第 3 页 共 24 页
毕业设计用纸
第一章 系统总体介绍
1.1系统组成及功能框图
此出租车计费系统以单片机为系统核心,利用PIC16F877单片机配合TG12864液晶模组及ISD1420语音模块等,实现基本的出租车计价器功能。
本系统是由PIC单片机、液晶显示模块、计数脉冲发生器、 系统实时时钟及语音等模块组成。系统框图如图(1)所示:
图(1) 系统功能框图
1.2系统各部分功能:
1.2.1.里程计量功能
a)
单片机对传感器输出脉冲进行计数,并将脉冲数换算成公里数;
b) 每一个脉冲代表轮胎旋转一周,设轮胎的直径为520mm,轮胎的周长为:(即每转一圈的距离)
c)
520x3.14159=1634mm=1.634m 每公里的脉冲数:
每公里脉冲(PulsePerKM=1000m/1.634m=612(个脉冲)
1.2.2.费用计算功能(参照广州市出租车收费标准)
费用计算包括三部分:起步费、行使费和燃油附加费: a)
起步费用—
价7元计费。即行使费用为:
第 4 页 共 24 页
当行驶里程在2.3Km(含2.3Km)以内按起步
毕业设计用纸
行驶费用 =起步价 + 1 = 8(元) 行使费用--
行使费用分短途与长途两种情况:
①.当行驶里程(RunMilege)超出2.3Km时并且小于35Km时,按2.6元/Km收费,这时行驶费用为:
行驶费用=起步价+2.6×(行驶里程-起步里程)+1 其中:起步价=7元 起步里程=2.3Km
行使里程(总行使里程) 行使费用(总行使金额)
②.当行使里程超过35Km后,要加空驶费,即每公里升至3.50元, 这时行驶费用为: 行驶费用=起步价+3.5×(行驶里程-起步里程)+1 c) 燃油附加费--每车次加收一元。
1.2.3.语音播放功能
①.当初次按下“start/stop”键,出租车开始启动,系统播放“您好!欢迎乘坐本公司出租汽车,谢谢!”播送完毕,计费器开始计费。
②.按下“SpeedUp”键,出租车加速行使,最高速为100Km。 ③.按下“SpeedDown”键,出租车减速行使,最低速为0Km。
④.在行使状态下,按下“start/stop”键,表示出租车到站,结束行使。这时候,系统播放“您好!行使里程XXX 公里,应付XXX元,请检查您的随身物品,欢迎再次乘坐,再见!”的提示音。
⑤.按下“Reset”键,进入空车状态。
1.2.4.中文菜单显示功能
①.在空车状态下(启动前),LCD屏幕上显示如下的中文信息:
②.在空车状态下,按下“start/迎乘坐本公司出租汽车,谢谢!”的示如下的中文信息:
stop”键,系统播放“您好!欢提示音,同时在LCD屏幕上显
③.播完提示音后,进入行使状态,LCD屏幕显示以下信息:
第 5 页 共 24 页
毕业设计用纸
④.在行使状态,按下“SpeedUp”速度会不断的变快,金额数值也在“SpeedDown”键,里程显示的公里
键,里程显示的公里数增加的作相应的变化。按下数增加的速度会不 断的变慢。
⑤.在行使状态,按下“start/stop”键,表示出租车到站,结束行程。这时屏幕显示以下信息:
同时,系统播放“您好!行使
元,请检查您的随身物品,欢迎再次乘坐,再见!”的提示音。
里程xxx.xx公里,应付xxx.xx
1.2.5.实时时钟功能
本系统采用两种方法实现日历时钟:
(1)用实时时钟芯片-FC8563作为时钟电路,产生年/月/ 日/时/分/秒等信号,供系统调用。
(2)用单片机中断的方法产生年/月/日/时/分/秒等信号。
(3)两种方法由同学自行选择。
1.2.6.本系统设置4个按键,各个按键的功能如下:
(1)“start/stop”键—开始进入行使/结束行使(到站)。
(2)“SpeedUp”键—行使加速按键。按下次按键,可使出租车的速度由0Km上升到100Km。 (3)“SpeedDown”键--行使减速按键。按下次按键,可使出租车的速度由100K下降到0Km。 (4)“Reset”键--进入空车状态。
第 6 页 共 24 页
1.2.7.系统电路设计原理图
毕业设计用纸
毕业设计用纸
第二章硬件设计:
2.1.主程序/CPU模块
2.1.1主程序/CPU电路图及说明
该模块主要包括系统初始化、PWM计数脉冲的产生、里程的识别和费率的计算及各功能模块的
的组织和管理等。主程序模块在系统中起着重要的作用。
PIC16F877主要性能: ·具有高性能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振荡器 ·可编程的全码保护 ·低功耗睡眠方式
第 8 页 共 24 页
毕业设计用纸
·可选择的振荡器
·低功耗、高速CMOS FLASH/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位字宽的并行从端口 ·带有降压复位的降压检测电路
2.2语音播放模块
① 语音播放模块电路图及说明:
第 9 页 共 24 页
毕业设计用纸
语音播放模块播放提示音,行驶里程、费用等。
ISD1420系列单片录放时间8至20秒,音质好。芯片采用CMOS技术,内含震荡器、话筒前置放大、自动增益控制、防混淆滤波器、平滑滤波器、扬声器驱动及EEPROM阵列。最小的录放系统仅需麦克风、喇叭、两个按钮、电源及少数电阻电容。在录放操作结束后,芯片自动进入低功耗节电模式、功耗仅0.5uA。ISD1420系列有唯一的录音控制和边缘/电平触发两种放音控制。不分段时外围线路最简,也可按最小段长为单位任意组合分段,芯片提供若干操作模式,大大提高了控制的
灵活性。芯片采用多电平直接模拟量存储专利技术,每个采样直接存储在片内单个EEPROM单元中,因此能够非常真实、自然地再现语音、音乐、音调各效果,避免了一般固体录音电路因量化和压缩造成的量化噪声和“金属声”。采样频率从5.3,6.4到8.0KHz,对音质仅有轻微影响。片内信息可保存100年(无需后备电源),EEPROM单片可反复录音十万次。
2.3液晶显示驱动模块
①.液晶显示驱动模块电路图及说明:
TG12864E 是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×64 全点阵液晶
显示器组成。可完成图形显示,也可以8×4 个(16×16 点阵)汉字。
主要技术参数和性能:
·电源:VDD:+2.7~ +5V; 模块内自带-10V负压,用于LCD的驱动电压。
第 10 页 共 24 页
毕业设计用纸
· 显示内容:128(列)×64(行)点 ·全屏幕点阵 · 七种指令
· 与CPU接口采用8 位数据总线并行输入输出和8 条控制线 · 占空比1/64
· 工作温度:-10℃~+60℃,储存温度:-20℃~+70℃,可选择宽温:-20℃~+70℃ ②.外形尺寸图:
③.模块主要硬件构成说明
:
第 11 页 共 24 页
毕业设计用纸
④. 模块的外部接口:
⑤.TG12864EL 串口接线方式:
第 12 页 共 24 页
毕业设计用纸
2. 4脉冲发生器模块
① 脉冲性生器模块电路图及说明:(如下图)
② NE555定时器具有定时精度高、工作速度快、可靠性好、电源电压范围宽(3-18V)、输出电流大(可高达200mA)等优点,可组成各种波形的脉冲振荡电路、定时延时电路、是一种电路结构简单、使用方便灵活、用途广泛的多功能中规模集成电路。只需在外部配接适当的阻容元件,便可组成施密特触发器、单稳态触发器和多谐振荡器等多种应用电路,在这个电路中是多谐振荡器,它电路简单、性能稳定,波形标准。
该模块完成传感器脉冲计量,然后转换为公里数,并根据规则计算对应的费用。同时,监测行驶速度,统计低速时间,计算低速等待费用,提供液晶显示更新函数,以便主函数可以控制更新用户界面以及行驶里程、费用等信息的显示。该模块包括PWM管理程序、里程计量程序、时间管理程序、费用管理程序、用户界面控制程序等部分。
第 13 页 共 24 页
毕业设计用纸
2. 5时钟模块
① 时钟模块电路图及说明:
②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。 * 开漏中断引脚。 ④管脚配置
⑤功能描述
:
第 14 页 共 24 页
毕业设计用纸
PCF8563 有16 个8位寄存器:一个可自动增量的地址寄存器,一个内置32.768KHz 的 振荡器(带有一个内部集成的电容),一个分频器(用于给实时时钟RTC 提供源时钟),一个可编程时钟输出,一个定时器,一个报警器,一个掉电检测器和一个400KHz I2C
总线接口。
所有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 控制/状态寄存器
0DH CLKOUT 频率寄存器 0EH 定时器控制寄存器
0FH 定时器倒计数数值寄存器
地址 寄存器名称 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 02h 秒 VL 00~59BCD 码格式数 03h 分钟 - 00~59BCD 码格式数 04h 小时 - - 00~59BCD 码格式数 05h 日 - - 01~31BCD 码格式数
06h 星期 - - - - - 0~6
07h 月/世纪 C - - 01~12 BCD 码格式数 08h 年 00~99 BCD 码格式数 09h 分钟报警 AE 00~59 BCD 码格式数 0Ah 小时报警 AE - 00~23 BCD 码格式数
0BH 日报警 AE - 01~31 BCD 码格式数
0CH 星期报警 AE - - - - 0~6 操作举例
*进入EXT_CLK 测试模式;设置控制/状态寄存器1的位7(TEST=1)。 *设置控制/状态寄存器1的位5(STOP=1)。 *清除控制/状态寄存器1的位5(STOP=0)。
*设置时间寄存器(秒、分钟、小时、日、星期、月/世纪和年)为期望值。 *提供32 个时钟脉冲给CLKOUT。 *读时间寄存器观察第一次变化。
第 15 页 共 24 页
毕业设计用纸
*提供64 个时钟脉冲给CLKOUT。
*读时间寄存器观察第二次变化;需要读时间寄存器的附加增量时,重复步骤7和8。
2. 6按键扫描模块:
① 按键扫描模块电路图及说明:
整个系统只有两个按键,一个“启动/停止”,一个“复位”;本模块功能:扫描按键功能,返回扫描结果。
\
第 16 页 共 24 页
毕业设计用纸
第三章 系统程序设计
本系统程序由C语言编写,编译软件是MPLAB IDE 和一个外挂的PIC的C语言编译软件PICC 。
3.1系统主程序流程框图(含程序)
第 17 页 共 24 页
毕业设计用纸
/********************************************************** // 主程序开始
//********************************************************** void main() {
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: 显示空车状态
第 18 页 共 24 页
毕业设计用纸
{
INTE = 0; count = 0; kongche(); }
else if(mode==1) //模式1: {
if(!flag) //标志位为
INTE = 0;
//禁止中断产生
write_inst(0x01);
yingke(); //显示欢迎界面 play(17,50); //播放“您好”
play(18,5); //播放“欢迎” play(25,100); //播放“乘坐本公司出租汽车”
delay(200); flag = 1;
write_inst(0x01); }
else
//标志位为
INTE = 1;
//允许产生中断
price(); //里程和费率计算 zaike(); //进入载客界面
}
}
else if(mode==2) //模式2: {
INTE = 0;
//禁止中断产生 if(!play_fg1) //标志位为
daozhan();
//进入到站界面
play(21,60); //播放“车已到站” delay(50);
playsound_km(RunMil); //播放
playsound_mn(Pricet); //播放
write_inst(0x01); }
jieshu(); //进入结束界面 if(!play_fg2) //标志位为
{
第 19 页 共 24 页
毕业设计用纸
play(24,100);
//播放“请检查您的随身物品”
play(18,5); //播放“欢迎” play(20,5); //播放“再次”
play(25,100); //播放“乘坐本公司出租汽车” play(19,5); //播放“再见” play_fg2 = 1; } }
scankey(); } }
//键盘扫描模块 //置标志位为
Milege:里程 Price:费率3.2里程和费率计算程序流程图(含程序):
//********************************************************* //
费率计算函数
//********************************************************* void price()
第 20 页 共 24 页
毕业设计用纸
{
if(RunMilege
//TotalPrice=700+100;
TotalPrice=800;
if((RunMilege>2300)&&(RunMilege
//TotalPrice=700+(RunMilege-2300)*0.26+100;
TotalPrice=800+(RunMilege-2300)*0.26;
if(RunMilege>35000)
//TotalPrice=700+(35000-2300)*0.26+(RunMilege-35000)*0.35+100;
TotalPrice=1112+(RunMilege-35000)*0.35;
Price=(ulong)TotalPrice;
}
3.3键盘处理程序流程图
第 21 页 共 24 页
毕业设计用纸
键盘扫描子程序模块
//*********************************************************
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)
{
flag = 0;
play_fg1 = 0;
play_fg2 = 0;
mode = 0x00;
write_inst(0x01);
count = 0;
}
}
}
第 22 页 共 24 页
毕业设计用纸
参考文献
(1)《PIC单片机基础教程》
--丁跃军等编著 北航大学出版社
(2)《PIC单片机原理》
--李学海编著 北航大学出版社
(3)《基于PROTEUS的电路及单片机系统设计与仿真》
--周润景、张丽娜编著 北航大学出版社
(4)凌阳大学计划—《出租车计费系统》-电子文档资料
(5)《PIC单片机C语言基础教程》
第 23 页 共 24 页
毕业设计用纸
致谢
光阴荏苒,逝者如斯,我们送走了2008,迎来全面建设小康社会开始的又一年。新世纪的征程已带着几许寄托、几许期盼缓缓开启,而我也即将辞别母校,步入社会,我们将以崭新的心态来迎接挑战,敢于拼搏、敢于进取、必于创新,一步步向新的奋斗目标迈进!为此,我怀着几分真情、几分自信、几分承诺、还有几分坚强送上我这份感谢,以感谢贵校的培育之恩!
随着年龄的增长,我对教师的含义理解的越来越深。自小学到现在,我遇到了多少位教师,从他们身上,我汲取的不仅是丰富的知识更是蕴涵人生的哲理,一点一滴都铭记在心。是啊,如果没有老师,祖国的花朵就会枯萎,是他们用自己的满腔热血谱写着桃李满天下的进行曲,培养了一批又一批的栋梁之材。是老师——不是亲人而甚过亲人般的关注着我们的成长,引领我们走向光明之道;是老师——不是朋友而胜似朋友般的聆听我们的心声。
如今,在老师的关怀、鼓励下我每天快乐的成长,尽管不知自己的人生道路会怎么样,但可以肯定,我,会努力!
千言万语汇成一句话,感谢母校,感谢恩师,道一声你们辛苦了!在这里诚挚的祝福献给你们!愿母校青春长在,学业蒸蒸日上!愿老师永远健康快乐!
装
订
线第 24 页 共 24 页