李公昕
(河南省经济管理学校,河南 南阳 473000)
基于AT89C51设计的出租车计价器设计方案
李公昕
(河南省经济管理学校,河南 南阳 473000)
摘要:随着科技的不断进步,出租车上的计价器也在朝着更加精确化和智能化的方向发展。利用AT89C51单片机的接口外接显示、时钟和语音等模块,通过按键可以调整起步价,里程收费,等待时间收费。在1602液晶上可以显示运行的时间,通过计算可以得出总共的费用和总的路程,模拟出租车的运行、暂停、停止及收费等功能模块。
关键词:AT89C51;出租车计价器;设计方案
出租车计价器系统需要“启动/停止”和“复位”两个按键,为了更加人性化,可以在里程统计和费用计算以外,再加上万年历和语音播报功能,方便乘客和驾驶员。系统可利用AT89C51单片机丰富的 I/O端口,及其控制的灵活性,用六个七段数码管作为显示器,实现基本的里程计价功能和价格调节、时钟显示功能。万年历由时钟芯片DS1302实时提供时钟信号,语音播报由语音芯片ISD1420提供语音信息,语音信息放在不同的地址里,利用ISD1420的语音功能,模拟实现带语音提示的出租车计价系统。比较真实地模拟出租车的空车、载客、到站及对各状况的费率的计算、统计、显示和语音播报等功能。由单片机从这些地址中调用合适的语音进行播放。上电后显示最初的起步价,里程计费单价,等待时间计费单价,通过按键可以调节起步价,里程计费单价,等待时间计费单价。同时具有运行,暂停,停止等状态,可以显示运行的时间,同时可以显示暂停的时间,具有累加功能,暂停和运行时间在暂停和运行前一次的状态上计时。出租车停止后能够显示行驶的总费用。
(一)按键扫描模块。整个系统只有五个按键,一个“启动/停止”,四个功能调整按键;本模块功能:扫描按键功能,返回扫描。
(二)显示模块。用六个七段数码管动态扫描来实现的时钟与计价的显示。为实现电源断开的时候,存储当前设定的单价信息功能,采用了24C02电可擦除存储芯片来完成。
每当设定一次单价,系统就自动调用存储程序,将单价信息保存在芯片内;当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用。
(三)脉冲发生器模块。用NE555定时器外部配接适当的阻容元件,组成多谐振荡器,产生振荡脉冲。
(四)时钟模块。DS1302内含有一个实时时钟/日历和31字节静态RAM, 通过简单的同步串行接口与单片机进行通信,实时提供秒分时日日期月年的信息,电源管脚可由电池或大容量电容输入。
(五)语音模块。ISD1420系列有唯一的录音控制和边缘/电平触发两种放音控制,单片录放时间在8至20秒。在录放操结束后,芯片自动进入低功耗节电模式、功耗仅0.5uA。
主程序流程:开始→单片机I/O口初始化→IC总线初始化→显示模块初始化→时钟模块初始化→各标量清零→判断
flag状态:
若flag=0,则进入空车状态,显示时间;
若flag=1,则进入载客状态,播放语音信息→显示总价和里程。
总程序流程图如图二所示。
系统的调试共分为三大部分:硬件调试,软件调试和软硬件联调。测试包括里程计价测试、掉电存储测试测试。
(一)软件调试方案。在“文件新建文件”中,新建C语言源程序文件,编写相应的程序。在“文件新建项目”的菜单中,新建项目并将C语言源程序文件包括在项目文件中。在“项目编译”菜单中将C源文件编译,检查语法错误及逻辑错误。在编译成功后,产生以“*.hex”和“*.bin”后缀的目标文件。通过peotel软件仿真,上电时液晶显示起步价,里程单价,等待单价(以每分钟为单位),按键1可以选择调整起步价,里程价,等待单价,再按键3进入待运行状态,按键4可以运行,暂停,停止同时显示运行的时间,等待的时间和总的金额数,最后按键5可以退出,重新计费。在30s钟内液晶显示起步价,30s后开始计价,等待价每1分钟,才收费一次。
(二)硬件调试方案。在设计平台中,将单片机的P1.0-P1.1分别与2个独立式键盘通过插线连接起来,将P3.0与脉冲输出连接起来。
(三)软硬件联调。将程序文件编译成目标文件后,将下载线安装在实验平台上,运行“MCU下载程序”,选择相应的flash 数据文件,点击“编程”按钮,将程序文件下载到单片机的Flash中。然后,上电重新启动单片机,检查所编写的程序是否达到要求。
参考文献:
[1]李广弟,朱月秀,冷祖祁.单片机基础[M].第3版.北京航空航天大学出版社,2007年1月
[2]李华.MCS-51系列单片机实用接口技术[M].北京航空航天大学出版社,1996
中图分类号:TP368.1
文献标识码:A
文章编号:1671-864X(2016)07-0131-01