您好,欢迎来到星星旅游。
搜索
您的当前位置:首页出租车计费器设计论文

出租车计费器设计论文

来源:星星旅游


中文摘要

随着经济的发展,带动汽车行业快速发展,出租车日益普遍,了解在出租车上应用的计费系统,对我们日常生活也有帮助。而使用单片机实现该系统,是深化单片机应用的良好途径。

本方案充分发挥人性化的特点,利用ISD1420的语音功能,配合TG128液晶模组,模拟实现带语音提示的出租车计价系统。比较真实地模拟出租车的空车、载客、到站及对各状况的费率的计算、统计、显示和语音播报等功能。

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

关键词:时钟芯片PCF8563 语音芯片ISD1420 TG128液晶模组 LCD液晶显示器

第一章 系统总体介绍

1.1系统组成及功能框图

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

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

液晶显示模块脉冲发生器

(128x点阵)(NE555)

PIC键盘语音模块

单片机(按键)(ISD1420)

电源实时时钟(FC8563)图(1) 系统功能框图第 1 页 共 21 页

1.2系统各部分功能:

1.2.1.里程计量功能

a) b) 距离) c)

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

每一个脉冲代表轮胎旋转一周,设轮胎的直径为520mm,轮胎的周长为:(即每转一圈的 520x3.14159=1634mm=1.634m 每公里的脉冲数: 每公里脉冲(PulsePerKM=1000m/1.634m=612(个脉冲)

1.2.2.费用计算功能(参照广州市出租车收费标准)

费用计算包括三部分:起步费、行使费和燃油附加费: a) 起步费用—

当行驶里程在2.3Km(含2.3Km)以内按起步 价7元计费。即行使费用为: 行驶费用 =起步价 + 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”键,进入空车状态。

第 2 页 共 21 页

1.2.4.中文菜单显示功能

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

 2007年xx月xx日

xx时xx分xx秒

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

< 空 车 >迎乘坐本公司出租汽车,谢谢!”的提示音,同时在LCD屏幕上显示如下的中文信息: 您好!

欢迎乘坐本公司出

租汽车,谢谢!

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

 2007年xx月xx日

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

< 空 车 >“SpeedDown”键,里程显示的公里数增加的速度会不 断的变慢。 ⑤.在行使状态,按下“start/stop”键,表示出租车到站,结束行程。这时屏幕显示以下信息:

起步价:7.0元

总里程:xxx.xx公里

总金额:xxx.xx元

同时,系统播放“您好!行使里程xxx.xx公里,应付xxx.xx元,请检查您的随身物品,欢迎再次乘坐,再见!”的提示音。

1.2.5.实时时钟功能

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

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

(2)用单片机中断的方法产生年/月/日/时/分/秒等信号。 (3)两种方法由同学自行选择。

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

第 3 页 共 21 页

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

(2)“SpeedUp”键—行使加速按键。按下次按键,可使出租车的速度由0Km上升到100Km。 (3)“SpeedDown”键--行使减速按键。按下次按键,可使出租车的速度由100K下降到0Km。 (4)“Reset”键--进入空车状态。

第 4 页 共 21 页

123434113215VCCVCCVCCDD14148R2R3R410K10K10KU4PCF85638VCCX2D2Y232KX1C410414148BT13.3V2VCCK3212C1510434K012C1410434VCCVCCPSBVCCK112U1PIC16FB77AJ3TG128D34K41234K2123334353738RD0RD1RD2RD3RD4RD5RD6RD7V0NCNC36574INTSCLSDACLKOUTGNDBPBELL31618DB0DB1DB2DB3DB4DB5DB6DB7vccRB0/INTRB1RB2RB4RB5R147KRA1/AN1RA2/AN2RA3/AN3RA4/TOCK1VCC11920LEDK_GNDLEDA_+5VGND192021222728293071011121314C31043456D/IR/WERST45617J1MCLRPVCCGND仿真插座123456J4JMP2123RB7RB6RB3ABCLKEOMPLRECPEVCC140393610242526C1610484MCLRRB7/PGDRB6/PGCRB3/PGMRE0/AN5RE1/AN6RE2/AN7RC5/SDORC6/TXRC7/RXC122P13OSC1CGNDGNDY1RA0/AN02J2JMP1RC0RA5/AN4RC3/SCLRC4/SDARC1RC215718231617U5NE555QDISPOT1470KVCCU3ISD1420C8104R1110KVccdVcca2816SPKR101KR539KC14R1.2.7.系统电路设计原理图

1231231C222PVCCVCCOSC237VCCC6104THRTRIGC51uFGNDC7R6R7R80.001uF100K100K100K62CVolt5POT25KU274HC1电源插座三脚插针L1LED1C17104149VCCMR喇叭+GNDABCLKEOMR125.1KC9104C10104R1310K19C12104R14470KC134.7uF1287VssdVssaSP+SP-ANA IN21ABCLKGND1BQ0Q1Q2Q3Q4Q5Q6Q71213141520C11220uF345610111213A0A1A2A3A4A5A6A7C20V1C21100uF78051043VoutMICVinC18C19100uF1104D34007J7JACKB34ANA OUT1817MIC REFMICRECLEDXCLKAGCK51PL2PLRECPE34K61REC2A01A12A23A34A45A56A69A710782327242211A0A1A2A3A4A5A6A7NCNCPLAYLRECPLAYENCNC2麦克风34R91K2526J6USBK71PE2VCCS1J5RT110KSW DIP-81234A123456RB3RB6RB7GNDPVCCMCLR1234567161514131211109A0A1A2A3A4A5A6A7A0A1A2A3A4A5A6A712345678Title出租车计费器SizeA4Date:File:13-May-2007Sheet of E:\\study\\pic\\graduation design\\PIC单片机的出D租ra车wn计 B费y器:电原理图\\CHUZUC~11.DDBNumberRevision第 5 页 共 21 页

2A134

第二章硬件设计:

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振荡器 ·可编程的全码保护 ·低功耗睡眠方式

第 6 页 共 21 页

·可选择的振荡器

·低功耗、高速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语音播放模块

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

第 7 页 共 21 页

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

ISD1420系列单片录放时间8至20秒,音质好。芯片采用CMOS技术,内含震荡器、话筒前置放大、自动增益控制、防混淆滤波器、平滑滤波器、扬声器驱动及EEPROM阵列。最小的录放系统仅需麦克风、喇叭、两个按钮、电源及少数电阻电容。在录放操作结束后,芯片自动进入低功耗节电模式、功耗仅0.5uA。ISD1420系列有唯一的录音控制和边缘/电平触发两种放音控制。不分段时外围线路最简,也可按最小段长为单位任意组合分段,芯片提供若干操作模式,大大提高了控制的

灵活性。芯片采用多电平直接模拟量存储专利技术,每个采样直接存储在片内单个EEPROM单元中,因此能够非常真实、自然地再现语音、音乐、音调各效果,避免了一般固体录音电路因量化和压缩造成的量化噪声和“金属声”。采样频率从5.3,6.4到8.0KHz,对音质仅有轻微影响。片内信息可保存100年(无需后备电源),EEPROM单片可反复录音十万次。

2.3液晶显示驱动模块

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

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

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

主要技术参数和性能:

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

第 8 页 共 21 页

· 显示内容:128(列)×(行)点 ·全屏幕点阵 · 七种指令

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

· 工作温度:-10℃~+60℃,储存温度:-20℃~+70℃,可选择宽温:-20℃~+70℃ ②.外形尺寸图:

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

第 9 页 共 21 页

④. 模块的外部接口:

⑤.TG128EL 串口接线方式:

第 10 页 共 21 页

2. 4脉冲发生器模块

① 脉冲性生器模块电路图及说明:(如下图)

② NE555定时器具有定时精度高、工作速度快、可靠性好、电源电压范围宽(3-18V)、输出电流大(可高达200mA)等优点,可组成各种波形的脉冲振荡电路、定时延时电路、是一种电路结构简单、使用方便灵活、用途广泛的多功能中规模集成电路。只需在外部配接适当的阻容元件,便可组成施密特触发器、单稳态触发器和多谐振荡器等多种应用电路,在这个电路中是多谐振荡器,它电路简单、性能稳定,波形标准。

该模块完成传感器脉冲计量,然后转换为公里数,并根据规则计算对应的费用。同时,监测行驶速度,统计低速时间,计算低速等待费用,提供液晶显示更新函数,以便主函数可以控制更新用户界面以及行驶里程、费用等信息的显示。该模块包括PWM管理程序、里程计量程序、时间管理程序、费用管理程序、用户界面控制程序等部分。

第 11 页 共 21 页

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。 * 开漏中断引脚。 ④管脚配置

⑤功能描述:

第 12 页 共 21 页

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。 *读时间寄存器观察第一次变化。

第 13 页 共 21 页

*提供 个时钟脉冲给CLKOUT。

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

2. 6按键扫描模块:

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

整个系统只有两个按键,一个“启动/停止”,一个“复位”;本模块功能:扫描按键功能,返回扫描结果。

\\

第 14 页 共 21 页

第三章 系统程序设计

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

3.1系统主程序流程框图(含程序)

开始单片机I/O口初始化外部中断初始化显示模块初始化时钟模块初始化各变量、标志清零显示模式设为图形方式显示一幅个性化图片显示模式转为文本方式显示一幅个人信息=0工作模式MODE=?=2进入模式2工作状态Play_g1=?=0显示到站菜单显示里程及金额播报行使里程及应付金额数=1进入模式0工作状态执行空车工作模式进入模式1工作状态Flag=?=1显示迎客中文界面播放语音信息=0进入载客工作状态脉冲计数及里程计算费率计算=1显示结束中文界面Play_g2=?键盘扫描模块=0播报“请检查您的随身物品”、“欢迎再次乘坐本公司出租汽车,再见”=1第 15 页 共 21 页

/********************************************************** // 主程序开始

//********************************************************** 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: 显示空车状态

第 16 页 共 21 页

{

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(200); 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\" write_inst(0x01); }

jieshu(); //进入结束界面 if(!play_fg2) //标志位为\"0\"时 {

第 17 页 共 21 页

play(24,100); //播放“请检查您的随身物品” play(18,5); //播放“欢迎” play(20,5); //播放“再次”

play(25,100); //播放“乘坐本公司出租汽车” play(19,5); //播放“再见” play_fg2 = 1; //置标志位为\"1\" } }

scankey(); //键盘扫描模块 } }

Milege:里程 Price:费率开始是是Milege<=2.3Km否(Milege>2.3Km)&&(Milege<=35Km)否(Milege>35Km)Milege=7.00+1.00Price=8.00+(Milege-2.3)*2.6;Price=8.00+(35-2.3)*2.6+(Milege-35)*3.5+1.00;是开始3.2里程和费率计算程序流程图(含程序):

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

费率计算函数

//********************************************************* void price()

第 18 页 共 21 页

{

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+(35000-2300)*0.26+(RunMilege-35000)*0.35+100; TotalPrice=1112+(RunMilege-35000)*0.35; Price=(ulong)TotalPrice; }

3.3键盘处理程序流程图

开始

K2 被按下?是工作方式= 0 ?是工作方式= 1工作方式= 2否

否工作方式= 1 ?是否

K4 被按下?是工作方式= 2 ?是工作方式= 0

否否

返回

第 19 页 共 21 页

键盘扫描子程序模块

//********************************************************* 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; } } }

第 20 页 共 21 页

装 第 21 页 共 21 页

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- stra.cn 版权所有 赣ICP备2024042791号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务