简易出租车里程计费器
出租车自动计费器的设计原理及优化方案

出租车自动计费器的设计原理及优化方案引言:出租车自动计费器是现代出租车运营中必不可少的一个装置,它能够准确地计算乘客应付的费用,并提供便利的支付方式。
本文将通过介绍出租车自动计费器的设计原理以及优化方案,帮助读者更好地了解该装置并思考如何提高其功能和效率。
一、出租车自动计费器的设计原理1. 准确测量里程出租车自动计费器通常利用车辆上安装的里程传感器测量车辆行驶的里程,包括实时行驶距离和行驶时间。
2. 考虑计费标准出租车自动计费器会根据城市或地区的计费标准计算乘客的费用。
计费标准通常包括起步价、里程费和时间费等多个维度。
3. 考虑附加费用出租车自动计费器还会考虑一些额外的费用,如过路费、停车费和燃油附加费等。
这些附加费用通常会根据车辆行驶路径和实际发生的情况自动计算。
4. 提供支付方式现代出租车计费器通常支持多种支付方式,如现金支付、刷卡和移动支付等。
根据乘客的选择,计费器能够提供相应的支付方式,并记录支付信息。
二、出租车自动计费器的优化方案1. 提升计费的准确性为了提高计费的准确性,可以在出租车自动计费器中使用更为精准的里程传感器,并结合卫星定位系统(GPS)来实时监测车辆的位置和行驶路径。
这样可以避免计费器在复杂道路环境下的误差,并提供更准确的里程计算。
2. 优化计费标准考虑到不同地区和不同时间段的交通状况和需求,可以针对性地优化出租车计费标准。
例如,可以根据交通拥堵情况来调整时间费的计算标准,或者根据车辆类型和燃油消耗来调整里程费的计算标准,使得计费更加公平和合理。
3. 加强附加费用的计算和记录出租车自动计费器可以与城市交通管理部门的数据库相连接,实时获取过路费和停车费等附加费用的信息,并根据车辆行驶路径和实际发生情况自动计算。
同时,计费器应具备记录附加费用信息的功能,方便车主和乘客核查相关费用。
4. 引入更多支付方式随着电子支付的普及,出租车自动计费器可以引入更多的支付方式,如支付宝、微信等移动支付,并且支持二维码扫描或NFC技术进行支付。
课程设计-简单出租车计费器课程系统设计

摘要随着出租车行业的发展,对出租车计费器的要求也越来越高。
该系统主要是使用Multisim10进行设计,运用计数器、加法器等进行电路设计与仿真。
论文内容介绍了出租车计费器系统的组成及工作原理,简述了用数字电子器件构成该数字系统的设计思想和实现过程。
Along with the development of the taxi industry, the requirements of the message accounting device becoming higher than ever before. The system is mainly used Multisim10 design, using the counter, adding machines of circuit design and simulation. The essay introduces the message accounting device taxi system composition and working principle, the paper with digital electronic components of the digital system design idea and the implementation process.关键词:Multisim10 计数器出租车计费器目录Cotent第1章设计指标 (3)1.1设计目的和意义 (3)1.1.1目的 (3)1.1.2意义 (3)第2章总体框图 (3)2.1总体框图 (3)第3章各单元电路设计 (4)3.1里程计费电路设计 (4)3.2等候时间计费电路 (5)3.3计数、锁存、显示电路 (5)3.4时钟电路 (7)3.5置位电路和脉冲产生电路的设计 (7)第4章器件选择及部分功能简介 (9)4.1器件选择 (9)4.2部分功能简介 (9)4.2.1 555定时器 (9)4.2.2 74LS160 (11)第5章总结 (11)5.1结论 (11)5.2优点与不足 (12)5.3心得与体会 (12)第6章参考文献 (12)第1章设计指标1.1设计目的和意义1.1.1目的1. 自动计费器具有行车里程计费、等候时间计费和起步费三部分,三项计费统一用4位数码管显示,最大金额为99.99元。
出租车计费器

电子课程设计——出租车计费器学院:电子信息工程学院专业、班级:姓名:学号:指导老师:2014年12月出租车计费器设计任务与要求设计一个出租车计费器,能按路程计费,具体要求如下:1、实现计费功能:计费标准为:按行驶里程计费,起步价为6.00元,并在3km后按1.20元/km计费,当计费达到或超过20元时,每公里加收50%的车费,车停止和暂停时不计费。
2、设计动态扫描电路,将车费和里程显示出来。
方案一一、总体框图方案一总体框图如图1-1所示。
路程信号采集模块里程显示模块计费显示模块图1-1 方案一总体框图1、路程信号采集模块此模块的主要功能为传感器采集出租车的行车信息,在此次的设计中,出租车行驶的公里数用脉冲来替代,出租车每行驶0.1公里,路程信号采集模块检测到一个脉冲。
2、里程显示模块此模块的功能主要为显示出租车行驶的里程数,在此次的设计中,采用数码管进行显示。
此模块中运用十进制计数器74LS160组成的组合电路对路程信号采集模块采集到的脉冲进行累计,并将累加结果作为出租车当前行驶里程数并通过数码管显示出来。
3、计费显示模块此模块的功能主要为显示出租车当前行驶里程下对应的车费,通过数码管显示出来。
在这一模块中,仍然采用十进制的计数器对价钱进行累加,根据设计要求,由于不同的行驶里程下所对应的计价方式不同,考虑到计价的准确性,此处采用累计与里程数脉冲频率成一定比例的脉冲的数量作为车费通过数码管显示出来。
例如,显示里程数的脉冲频率为100HZ,在行驶至三公里以后,计费部分的脉冲换为120HZ,这样相当于出租车每行驶一公里,价钱累加1.2元,当计价超过或达到20元时,计费部分的脉冲换做180HZ,这样相当于出租车每行驶一公里,价钱累加1.8元。
二、选择器件器件逻辑符号分别如图1-2、1-3、1-4、1-5、1-6、1-7所示,器件对应真值表与特性表分别如表1-1、1-2、2-3、1-4、1-5、1-6所示。
EDA简易出租车计价器设计

程后自动归零。
(4) 译码显示模块
Page 4
该模块经过8选1选择器将计费数据(4位BCD码)、
计时数据(2位BCD码)、计程数据(2位BCD码)动态
显示输出。其中计费数据jifei4~jifei1送入显示译码模块进
行译码,最后送至以百元、十元、元、角为单位对应的数
码管上显示,最大显示为999.9元;计时数据送入显示译
码模块进行译码,最后送至以分为单位对应的数码管上显
示,最大显示为59分;计程数据送入显示译码模块进行译
码,最后送至以公里为单位的数码管上显示,最大显示为
99公里。其系统组成框图如图2.1所示。
Page 5
时钟信 分频器 计费
号
显
等待信
号
控
计时
公里脉
制
示
冲
器
计费/
计程
复位
Page 6
3 出租车计费器的层次化设计方案
(1) 分频模块 分频模块对频率为240Hz的输入脉冲进行分频,产生频率为16Hz、 15Hz、1Hz的3种频率。该模块产生频率信号用于计费,每个1Hz脉 冲为0.1元计费控制,15Hz为1.5元的计费控制,16Hz信号1.6元计费 控制。 (2) 控制模块 计价器控制模块主要完成对计价器状态的控制。
Page 3
(3) 计量模块
计量模块完成计价、计时和计程功能。
计价部分:行程在3公里内,而且等待累计时间小于2分钟,起步费为
10元;3公里外以每公里按1.6元计费,等待累计时间超过2分钟按每分钟1.5
元计费。
计时部分:计算乘客的等待累计时间。计时器的量程为59分钟,满量
程后自动归零。
计程部分:计算乘客所行驶的公里数。计程器的量程为99千米, 满量
任务书及报告模板--出租车简易计费器设计VHDL语言

课程设计报告书题目出租车简易计费器设计课程设计任务书课题题目摘要----------------jifei---------------library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jifei isport ( clk,rst,en,en1:in std_logic;lc0,lc1,lc2,lc3:out std_logic_vector(3 downto 0);jj0,jj1,jj2,jj3:out std_logic_vector(3 downto 0));end jifei;architecture lab10_4 of jifei issignal Q00:std_logic_VECTOR(3 DOWNTO 0);--jifei0 signal Q01:std_logic_VECTOR(3 DOWNTO 0);--jifei1 signal Q02:std_logic_VECTOR(3 DOWNTO 0);--jifei2 signal Q03:std_logic_VECTOR(3 DOWNTO 0);--jifei3 signal Q1:integer range 0 to 10000;--JIZONGLUCHENG signal Q10:std_logic_VECTOR(3 DOWNTO 0);--lc0 signal Q11:std_logic_VECTOR(3 DOWNTO 0);--lc1 signal Q12:std_logic_VECTOR(3 DOWNTO 0);--lc2 signal Q13:std_logic_VECTOR(3 DOWNTO 0);--lc3 signal Q2:integer range 0 to 10000;--jidengdaishijianbeginprocess ( clk, rst)beginif clk'event and clk='1' thenif en='1' thenif en1='1' then --JILUCHENGQ1<=Q1+1;if Q10= "1001" THENQ10<="0000" ;IF Q11="1001" THENQ11<="0000";if Q12= "1001" THENQ12<="0000" ;IF Q13="1001"THENQ13<="0000";ELSEQ13<=Q13+1;END IF;ELSEQ12<=Q12+1;END IF;ELSEQ11<=Q11+1;END IF;ELSEQ10<=Q10+1;END IF; --JILUCHENGJIESUIF Q1<=3 THEN --JISUANLUCHENGFEIYONGQ00<="0101";ELSEif Q00= "1001" THENQ00<="0000" ;IF Q01="1001" THENQ01<="0000";if Q02= "1001" THENQ02<="0000" ;IF Q03="1001"THENQ03<="0000";ELSEQ03<=Q03+1;END IF;ELSEQ02<=Q02+1;END IF;ELSEQ01<=Q01+1;END IF;ELSEQ00<=Q00+1;END IF; --LUCHENG FEIYONG JISUANJIESUEND IF;ELSEQ2<=Q2+1;IF Q2>5 THEN --JISUANDENGDAISHIJANDFEIYONGif Q00= "1001" THENQ00<="0000" ;IF Q01="1001" THENQ01<="0000";if Q02= "1001" THENQ02<="0000" ;IF Q03="1001"THENQ03<="0000";ELSEQ03<=Q03+1;END IF;ELSEQ02<=Q02+1;END IF;ELSEQ01<=Q01+1;END IF;ELSEQ00<=Q00+1;END IF;END IF;END IF;END IF;END IF;IF RST='0' THENQ00<="0000";Q01<="0000";Q02<="0000";Q03<="0000";Q1<=0;Q2<=0;Q10<="0000";Q11<="0000";Q12<="0000";Q13<="0000";END IF;LC0<=Q10;LC1<=Q11;LC2<=Q12;LC3<=Q13;JJ0<=Q00;JJ1<=Q01;JJ2<=Q02;JJ3<=Q03;end process;end lab10_4;首行空两个中文字符;文字采用小四、宋体;行间距:多倍行距1.3;字数:200-400字左右关键词课题相关关键词,以分号间隔目录课程设计任务书............................................. 错误!未定义书签。
出租车计价器程序

出租车计价器程序出租车计价器程序是一种计算出租车费用的工具,它可以帮助乘客和司机准确地计算乘车费用。
该程序能够根据乘车里程和时长等因素,自动计算出乘车费用,并在出租车上显示给乘客。
这种程序的使用方便快捷,能够有效避免因计算错误而产生的纠纷。
下面我将介绍一下出租车计价器程序的一些功能和使用方法。
首先,出租车计价器程序可以根据乘车起步价和每公里价格来计算乘车费用。
乘客只需在程序中输入乘车里程和时长,程序就会自动根据这些参数进行计算,并显示出相应的费用。
这样既可以保证计价的准确性,也可以让乘客了解到自己所需支付的费用。
同时,该程序还能够根据不同的时间段和地区设置不同的计价规则,从而更准确地反映出车费的实际情况。
其次,出租车计价器程序还具有一些附加功能,如计算等候费和额外费用等。
在实际乘车过程中,可能会因为路况拥堵或乘客要求临时停车等原因产生等候费用。
该程序可以通过自动计时和定位等功能,准确地计算出等候费用,并显示给乘客。
此外,如果乘客有特殊需求,如携带大量行李或乘坐的是高级车型等,出租车计价器程序还可以根据这些要求计算出额外费用,从而更全面地反映出实际乘车费用。
出租车计价器程序还可以记录乘客的乘车历史和付款记录。
通过记录每一次乘车信息,程序可以帮助乘客掌握自己的乘车情况,方便对账和管理个人财务。
同时,出租车计价器程序还可以提供电子支付的功能,乘客可以通过程序直接进行付款,避免了现金交易的麻烦和安全隐患。
除了以上功能,出租车计价器程序还可以提供一些实用的辅助功能。
比如,程序可以提供实时的交通信息和路线规划,让乘客能够选择最佳的行驶路线。
同时,程序还可以提供天气预报和景点推荐等信息,为乘客提供更好的出行体验。
这些功能的提供不仅可以增加乘客的满意度,还能够提高司机的服务质量。
总的来说,出租车计价器程序是一种十分实用的工具,它可以帮助乘客和司机准确地计算乘车费用,避免了因计算错误而产生的纠纷。
该程序具有计算准确、功能丰富和使用方便等优点,并且能够提供一些附加的实用功能。
简易出租车计价器设计

简易出租车计价器设计一、任务设计并制作出租车行驶里程及计价的装置。
二、要求1.基本要求(1)里程部分:能测量光电码盘输出的计数脉冲信号,并折算成相应里程数,传给显示单元,误差≤1%;计价部分:起步价10元,当汽车里程行驶未满10m时,均按起步价计算,超过10m后,单价为1.8/m元来计算车费。
(2)能够显示行驶距离、车费等,每项要求至少4位有效数字。
2.发挥部分在完成基本要求任务的基础上,增加如下功能:(1)起步价可调,调整范围±5元,步进为1元;(2)起步价对应初始里程数可调,调整范围±10m,步进为1元;;(3)每米单价数可调,调整范围±5.0元,步进为0.1元,步进可调;(4)可以记忆5个历史测量数据,能够调用查看;断电重新开机以后存储的数据不丢失;(5)票据打印部分;(6)其他创新。
三、说明(1)建议使用MSP-EXP430G2开发板,不做强行要求,光电码盘及其输出可用信号发生器代替。
(2)设计报告正文中应包括系统总体框图、单元模块电路原理图、主要程序流程图、主要的测试数据。
完整的电路原理图、源程序和测试结果可用附件给出。
电子温度计设计一、任务设计制作一个电子温度计。
二、要求1、基本要求(1)温度测量范围:0℃~100℃;(2)显示精度:测量温度与实际温度间误差小于2.0℃;(3)显示位数:要求有效位数共4位,其中小数点后1位;2、发挥部分在完成基本要求任务的基础上,增加如下功能:(1)当测量到温度超过35℃上限或低于15℃下限时,声光报警;(2)可更改报警的上下限温度值,步进1℃;(3)测量温度高于上限值10℃以上,低于下限值10℃以上,温度显示闪烁,要求亮灭间隔1s,间隔可调;(4)其他创新;三、说明(1)建议使用MSP-EXP430G2开发板,不做强行要求,温度传感器必须采用PT100,否则不予评测。
(2)设计报告正文中应包括系统总体框图、核心电路原理图、主要程序流程图、主要的测试结果。
出租车自动计价器设计简介

■
cha3,cha2,cha1,cha0:out std_logic_vector (3 down to 0) ;
-- 费用数据
■
km1,km0:out std_logic_vector (3 down to 0) ;
--公里数据
■
min1,min0: out std_logic_vector (3 down to 0)) ;
end if ;
■
e l s e m0<=m0+1;
■
end if ;
■
i f m1&m0>"0000001"then en1<="1" ; --此IF语句得到en1使能信号
■
else en1<="0" ;
■
end if ;
■
else w<=w+1;en1<="0" ;
■
end if ;
--分频器
■ signal q_ 1:integer range 0 to 239;
--分频器
■ signal w : integer range 0 to 59;
--秒计数器
■ signal c3,c2,c1,c0:std_logic_vector (3 down to 0) ;--制费用计数器
■ signal k1,k0:std_logic_vector (3 downto 0) ; --公里计数器
系统组成
■ FPGA
时钟信号
分频器
计费
等待信号 公里脉冲
计费/复位
控制器
计时
译码
显示
计程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
测控08级综合课程设计题目:简易出租车里程计费器摘要:本系统以STC89C52RC单片机为控制核心,辅以键盘调节、12864显示、蜂鸣器报警、车速模拟、车速检测及信息存储电路,实现了出租车计价器的行车里程和车速的实时检测与显示、计价金额显示以及价格预置等功能,满足了题目中基本部分及发挥部分的要求。
在此基础上,还增加了断电保护、蜂鸣器警示、行驶里程等功能。
该系统功能齐全,实用性强。
经测试,计价器的各项显示指标均满足题目要求。
关键词:出租车里程计费器;STC89C52RC+;MOC70T2;;掉电保护;Abstract: This system uses STC89C52 microcontroller as control core. With the keyboard control circuit, digital display circuit, beep alarm circuit, speed measureement circuit, speed detection circuit and information storage circuit,this system realizes function of the meter taxi driving mileage ,display and detection of real-time speed, valuation display and price set in advance, it meets all essential and additional requirement. Additional function such as power-off protection , beep alarm the print of mileage and consumption is added. This system is fully functioned and easy to implement. The measurement results show that all indicators of this taxi meter meet the requirement.Key words: Taxi Meter; STC89C52; Price Set in Advance; Power-off Protection目录第一章出租车里程计费器的设计要求与设计方案 (1)1.1 出租车计价器系统组成 (1)图1-1 系统功能图 (1)1.2 系统主要功能 (1)1.3 方案论证与比较 (1)第二章出租车里程计费器的硬件设计 (2)2.1 出租车的硬件框图 (2)2.2 主控制器STC89C52RC+ (2)2.3 按键扫描模块 (2)2.4 显示模块 (3)2.5 掉电保护 (3)2.6 车速模拟和检测模块 (4)第三章出车里程计费器的软件设计 (5)3.1 系统主程序流程图 (5)3.2 里程和费率计算程序流程图 (5)第四章设计体会与小结 (6)参考文献 (6)附录 (7)一.源程序 (7)二.12864驱动程序 (12)第一章出租车里程计费器的设计要求与设计方案1.1出租车计价器系统组成此出租车计费系统以单片机为系统核心,利用STC89C52RC单片机配合12864液晶屏的显示模块及键盘模块等,实现基本的出租车计价器功能。
本系统是由STC89C52RC+单片机、12864液晶显示模块、模拟出租车、复位电路及键盘等模块组成。
系统框图如图1-1所示:图1-1 系统功能图1.2系统主要功能本课程设计所设计的出租车计价器的主要功能有:里程计量及费用计算功能、车速测量、按键功能。
1.3方案论证与比较1.3.1方案一:采用数字电路控制。
采用传感器件,输出脉冲信号过放大整形作为移位寄存器的脉冲,实现计价,但是考虑到这种电路过于简单,性能不稳定,而且不能调节单价,也不能根据需要调节计费标准,电路不够实用。
1.3.2方案二:采用单片机控制。
利用单片机丰富的I/O端口,及其控制的灵活性,实现基本的里程计价功能,车速测量和价格调节、液晶显示功能。
通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用后一种方案。
1第二章出租车里程计费器的硬件设计2.1出租车的硬件框图图2-2 单片机控制方案2.2主控制器STC89C52RC+STC89C52RC是一种带8K FLASH程序存储器,512B SRAM,4K EEPROM,高性能CMOS 8位微处理器,俗称单片机。
主要特性:与MCS-51兼容、8K字节可编程闪烁存储器、512字节的SRAM 最高工作频率:80MHz、4K字节EEPROM、32可编程I/O线、三个16位定时器/计数器、8个中断源、内置硬件看门狗、在线可编程和在系统可编程、可编程串行通道、低功耗的闲置和掉电模式、片内振荡器和时钟电路。
2.3按键扫描模块(1)按键扫描模块电路图及说明:整个系统有四个按键,四个功能调整按键;本模块功能:扫描按键功能,返回扫描。
图2-32.4显示模块本设计是用12864液晶屏来实现计价的显示。
原理图如图2-4所示。
图2-4 12864液晶屏显示模块2.5掉电保护掉电保护功能采用了STC89C52RC+单片机内部EEPROM来实现。
掉电存储单元的作用是在电源断开的时候,存储当前设定的单价信息。
STC89C52内部自带了4K大小的EEPROM,地址是从2000H~2FFFH。
写操作主要是编程和擦除。
2.6车速模拟和检测模块以电机为驱动,将电机的转子与码盘连接在一起,用码盘的转动模拟出租车车轮的转动,码盘的转速即为出租车的车速。
采用MOC70T2凹槽光电开关作为车速检测器。
MOC70T2凹槽光电开关灵敏度高、实用性强、安装方便。
MOC70T2凹槽光电开关检测码盘转动的圈数,将检测得到的信号送至单片机外部中断引脚,单片机运用算法处理接收到的信号,从而得到出租车的实时车速。
MOC70T2凹槽光电开关的电路图如图2-6所示。
图2-6 车速模拟和检测模块第三章出车里程计费器的软件设计3.1系统主程序流程图3.2里程和费率计算程序流程图第四章设计体会与小结经过这次出租车计价器的课程设计,我收益非浅,从中我学到了很多东西.课程设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。
通过这次设计使我明白了自己原来知识还比较欠缺。
自己要学习的东西还太多,以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。
通过这次课程设计,我才明白学习是一个长期积累的过程,另外,还学会了在网络上查找有关本设计的各硬件的资源,其中包括:STC89C52单片机及其引脚说明,为本次课程设计提供了一定的资料。
在这次课程设计中也使我们的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法对我们更好的理解知识,所以在这里非常感谢帮助我的同学。
总之,不管学会的还是学不会的的确觉得困难比较多,真是万事开头难,不知道如何入手。
最后终于做完了有种如释重负的感觉。
此外,还得出一个结论:知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。
经过这次的课程设计,也为我们以后毕业设计的制作奠定了一定的基础。
参考文献1.丁跃军.单片机基础教程.北京:北航大学出版社,20042.张鑫、华臻、陈书谦.《单片机原理及应用》[M].电子工业出版社,20053.李群芳,肖看.单片机原理接口与应用.北京:清华大学出版社,20054.朱承高.电工及电子技术手册[M].北京:高等教育出版社,19905.高峰.单片微型应用系统设计及实用技术.北京:机械工业出版社,20046.廖常初.现场总线概述[J].电工技术,19997.丁元杰、吴大伟.《单片微机实题集与实验指导书》[M].机械工业出版社,2004附录一.源程#include<reg52.h>#include"12864.h"#include"eeprom.h"sbit beep=P2^0;uchar Trg,Cont;uchar StartPrice,PerPrice;uchar DisplayC;uchar code num[]="0123456789"; uchar flag,f;uint speed_count,speed_c;uchar c;uint speed;uchar beep_count;unsigned long Val;void ScanKey(void);void delay5s(void);void main(void){uint distance;uint TotalPrice;uchar price[]="元";beep=1;lcd_init();display(0,0," Welcom to you !");display(1,0,"出租车里程计费器");display(2,0," Designed by");display(3,0," 唐杰王家佳");delay5s();lcd_init();StartPrice=byte_read(0x2000);PerPrice=byte_read(0x2200);EX0=1;EA=1;IT0=1;RCAP2L=TL2=0x3C;RCAP2H=TH2=0xB0;ET2=1;TMOD = 0x01;TH0 = 0x0B1;TL0 = 0x0E0;TR0 = 1;TR2=1;while(1){ScanKey();if(f==0){display(0,0,"起步价:");if(flag==0){lcd_wdat(num[StartPrice/10]);lcd_wdat('.');lcd_wdat(num[StartPrice%10]);}if(flag==1){if(DisplayC<30){lcd_wdat(num[StartPrice/10]);lcd_wdat('.');lcd_wdat(num[StartPrice%10]);}if((30<DisplayC)&&(DisplayC<40)){lcd_wdat(' ');lcd_wdat(' ');lcd_wdat(' ');}}display(0,5,"元");display(1,0,"每公里:");if(flag==0){lcd_wdat(num[PerPrice/10]);lcd_wdat('.');lcd_wdat(num[PerPrice%10]);}if(flag==2){display(0,0,"起步价:");lcd_wdat(num[StartPrice/10]);lcd_wdat(num[StartPrice%10]);display(1,0,"每公里:");if(DisplayC<30){lcd_wdat(num[PerPrice/10]);lcd_wdat('.');lcd_wdat(num[PerPrice%10]);}if((30<DisplayC)&&(DisplayC<40)){lcd_wdat(' ');lcd_wdat(' ');lcd_wdat(' ');}}if(DisplayC>40)DisplayC=0;display(1,5,"元");}else if(f==1){speed=speed_c*36;display(1,0,"速度:");if(speed/1000!=0)lcd_wdat(num[speed/1000]);lcd_wdat(num[speed%1000/100]);lcd_wdat(num[speed%100/10]);lcd_wdat('k');lcd_wdat('m');lcd_wdat('/');lcd_wdat('h');}display(2,0,"行驶里程:");lcd_wdat(num[distance/1000]);lcd_wdat(num[distance%1000/100]);lcd_wdat(num[distance%100/10]);lcd_wdat('.');lcd_wdat(num[distance%10]);display(2,7,"km");distance=Val/100;TotalPrice=distance*PerPrice/10+StartPrice;display(3,0,"总费用:");if(TotalPrice/1000!=0)lcd_wdat(num[TotalPrice/1000]);else lcd_wdat(' ');if(TotalPrice%1000/100!=0)lcd_wdat(num[TotalPrice%1000/100]);lcd_wdat(num[TotalPrice%100/10]);lcd_wdat('.');lcd_wdat(num[TotalPrice%10]);lcd_wdat(price[0]);lcd_wdat(price[1]);}}void ScanKey(void){unsigned char ReadData;static char Ctemp;if(TF0==1){TF0=0;TH0 = 0x0B1;TL0 = 0x0E0;beep_count++;if(beep_count>=5){beep_count=0;beep=1;}DisplayC++;ReadData=P3^0xFF;Trg=ReadData&(ReadData^Cont);Cont=ReadData;if(f==0){if((Cont&(1<<7))&&(flag==0)){Ctemp++;if(Ctemp>=50){Ctemp=0;flag=1;beep=0;}}if((Trg&(1<<7))&&(flag!=0)){flag++;beep=0;}if(flag>=3){flag=0;sector_erase(0x2000);byte_program(0x2000,StartPrice);sector_erase(0x2200);byte_program(0x2200,PerPrice);}if((Trg&(1<<6))&&(flag==1)){StartPrice--;beep=0;}if((Trg&(1<<6))&&(flag==2)){PerPrice--;beep=0;}if((Trg&(1<<5))&&(flag==1)){StartPrice++;beep=0;}if((Trg&(1<<5))&&(flag==2)){PerPrice++;beep=0;}}if((Trg&(1<<4))&&(flag==0)){lcd_init();beep=0;f=!f;}}}void Count() interrupt 0{Val+=2;speed_count++;}void Timer2() interrupt 5{TF2=0;c++;if(c>=40){c=0;speed_c=speed_count;speed_count=0;}}void delay5s(void) //误差 0us{unsigned char a,b,c;for(c=165;c>0;c--)for(b=100;b>0;b--)for(a=150;a>0;a--);}二.12864驱动程序#ifndef _12864_H_#define _12864_H_#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int/*TS12864A-3 端口定义*/#define LCD_data P0 //数据口sbit LCD_RS = P1^0; //寄存器选择输入sbit LCD_RW = P1^1; //液晶读/写控制sbit LCD_E = P1^2; //液晶并行使能控制sbit LCD_PSB = P2^7; //串/并方式控制#define delayNOP(); {_nop_();_nop_();_nop_();};void delay(int ms){while(ms--){uchar i;for(i=0;i<250;i++) //0.5ms{_nop_();_nop_();// _nop_();// _nop_();}}}/*写指令数据到LCD RS=L,RW=L,E=脉冲,D0-D7=指令码。