出租车计价器代码
出租车计价器 代码

case 4:P3=0xdf;P0=table[licheng%10];break;
case 5:P3=0xbf;P0=table[danjia/10]+0x80;break;
case 6:P3=0x7f;P0=table[danjia%10];break;
zongjine=400;
licheng=0;
danjia=qibu;
}
if(key3num==5) //退出功能键
{
key3num=0;
}
if(key3==0)
{
delay(5);
}
if(key3num==2) //调夜晚单价
{
if(key1==0)
{
delay(5);
if(key1==0)
{
danjia2++;
if(danjia2==100)
danjia2=0;
while(!key1);
delay(5);
sbit key0=P1^0; //清零
sbit key1=P1^1; //切换/+
sbit key2=P1^2; //-
sbit key3=P1^3; //功能键
}
}
if(key2==0)
{
delay(5);
if(key2==0)
{
danjia1--;
if(danjia1==-1)
danjia1=99;
while(!key2);
delay(5);
出租车计价器代码VHDL

SIGNAL I:INTEGER RANGE 0 TO 5 :=0; --当状态从go/wait转到idle时,希望将价格等持续显示5秒。
ELSIF (SA='1' AND SB='0') THEN STATE<=GO;
W2<="0000"; W1<="0000"; W0<="0000"; K2<="0000"; K1<="0000"; K0<="0000"; I<=0; FIN<='1'; CLK3S<='0';COUNT3S<=0; --此刻进入go状态已经一秒。
ELSE
STATE<=GO;
W2<=W2; W1<=W1; W0<=W0; K2<=K2; K1<=K1; K0<=K0;I<=I+1;
END IF;
ELSIF (SA='1' AND SB='0') THEN STATE<= GO;
END IF;
END IF;
END PROCESS U1;
U2:PROCESS(CLK1HZ) --有限状态机设计模块
BEGIN
IF RST='1' THEN W2<="0000"; W1<="0000"; W0<="0000"; K2<="0000"; K1<="0000"; K0<="0000"; I<=0; FIN<='0';
出租车计价器故障代码---5p

出租车计价器故障代码---5p
最近,出租车司机朋友们正在经历着混乱和困惑。
原因是出租车计价器突然出现5p故障代码。
这意味着,出租车司机们在完成一次行程后,收到的费用会受到一定的影响。
首先,在解决5p故障的过程中,出租车司机们很多情况下需要进行重置。
尤其是在抵达乘客目的地之后,大多数故障代码都要求出租车司机们进行重置操作。
然而,在某些情况下,当乘客要求司机们读取费用信息时,计价器仍然会出现5p故障代码。
此外,在出现5p故障后,还可以通过更换计价器来解决问题。
当司机们检查到计价器不能正常工作时,他们可以从许多供应商处购买新的计价器。
购买新的计价器可以解决司机们出现的5p故障问题,但同时要花费相当多的金钱才能重新购买。
最后,出租车司机们可以通过向专业的出租车计价器维修商寻求帮助来解决5p故障的问题。
在5p故障出现时,司机们可以直接联系出租车计价器维修商,专业的技术人员可以根据故障的具体原因,对出租车计价器进行必要的维护和修复,尽快恢复计价器的正常工作状态。
以上就是关于出租车计价器出现5p故障代码出现时,司机可以采取的措施。
司机们应该根据计价器的实际情况,选择最合适的解决方案,以尽可能地降低费用,为乘客提供更安全和便利的服务。
出租车计价器(单片机c语言)

分类号编号毕业设计题目:基于单片机的出租车计价器的设计——电子设计系别信息工程学院专业电子信息工程姓名学号2010年6月1 日学院毕业设计任务书设计题目:基于单片机的出租车计价器的设计——硬件部分专业:电子信息工程班级学号:姓名:指导教师:设计期限:2011年3月1日开始2011年6月1日结束院、系:北京信息工程学院2011年3 月1 日一、设计目的通过毕业设计使学生了解和掌握单片机应用技术;了解和掌握C语言的程序设计同硬件电路的结合;熟练运用proteus,keilC等软件的操作;了解和掌握单片机硬件电路的焊接和调试;了解和掌握掉电存储芯片AT24C02、霍尔传感器A44E、数码管、驱动芯片74LS245等外部接口芯片器件的应用。
二、主要设计内容实现出租车行驶里程和总金额的显示,预设起步价和起步公里数;实现清零、复位和掉电保护功能;实现对单价的调整。
三、重点研究问题(1)按下启动按键,显示起步里程与起步价。
(2)按模拟传感器信号的按键,显示行驶里程与总金额。
(3)按键控制清零、复位、掉电保护、调整预设单价。
(4)在软件中实现起步价,单价。
四、主要技术指标(1)数码管显示起步里程、单价,总里程、总金额。
(2)用按键控制清零、复位、掉电保护、调整预设单价。
五、设计成果要求(1)源程序通过编译、运行(2)软件烧录单片机硬件进行调试,运行(3)实现所述功能(4)电路板焊接、检测(5)最终提交软硬件、设计说明书、外文翻译、毕业设计说明书等六、其它参考文献:[1] 谭浩强.C程序设计(第二版).清华大学出版社.2003[2]潘永雄.新编单片机原理与应用.西安电子科技大学出版社.2003设计开题报告2011年3 月15日摘要现在各大中城市出租车行业都已普及自动计价器,所以计价器技术的发展已成定局。
而部分小城市尚未普及,但随着城市建设日益加快,象征着城市面貌的出租车行业也将加速发展,计价器的普及也是毫无疑问的,所以未来汽车计价器的市场还是十分有潜力的。
出租车计价器程序

float f; //里程数(Km)为简化运算以下全部取整数浮点数
int g; //千米数
uchar j; //千米个位
uchar k; //千米十位
uchar h; //总费用
uchar hge;//总费用个位
uchar hshi;//总费用十位
delay(5);
command(0x38);
delay(5);
command(0x38);
command(0x08); //显示关闭
command(0x01); //显示清屏
command(0x06); //显示光标移动设置
delay(5);
command(0x0C); //显示开及光标设置
}
//**********写数据至LCD************************
#define shuju P0//LCD1602 P0输出显示数据
//********位定义*****************************
sbit rs=P2^1; //LCD1602忙碌检测
sbit rw=P1^5; //LCD1602读写控制
sbit en=P1^6; //LCD1602使能端
}
//*******独立按键检测**********************
void key(void)
{
if(key1==0)
{
delay(15);
if(key1==0)//按键消抖
{
TR0=1;//打开定时器
flag=0;//标志位设置
flag1=1;
}
}
if(key2==0)
出租车计价器

出租车计价器课程设计一.设计任务设计并制作一台出租车计价器。
调试时采用10赫兹脉冲信号模拟,每个脉冲代表汽车行进10米。
基本要求:(1) 不同情况具有不同的收费标准白天 1元/公里 晚上 2元/公里 途中等待(>30秒开始收费) 1元/30秒(2) 数据输出(6位LED数码管显示)单价(元)输出2 位 路程(公里)输出2 位 总金额(元)输出2 位(3) 按键(4个)启动计价开关 数据复位(清零) 白天/晚上转换 途中等待转换二、硬件电路设计及描述1.硬件电路原理图(如图1所示)图1硬件电路原理图如图1所示6个数码管显示分别显示单位(元),里程,总金额。
采用动态显示方式,由P0口接6个数码管的八段,P2口分别接6个数码管的公共端,P0口输出数码管的字段码,P2口输出数码管的字位码。
接于P3.0,P3.1,P3.2的三个按键S1—S3为调整按键,S1为启动计价键,S2为白天晚上转换键,S3为数据复位(清零)键,SW1为途中等待转换键。
三、软件设计流程及描述1.出租车计价器的程序设计P3.0为启动按键(通过键盘扫描形式)P3.1为白天黑夜转换按键(通过键盘扫描形式)P3.2 为复位清零按键(以外部中断0的形式实现)定时器0 用于等待时间的定时,工作在方式1定时器1 用于计数用于计数,工作在方式2(1) 存储单元分配71H单元:脉冲计数单元;72H单元:总金额十位显示单元;73H单元:总金额个位显示单元;74H单元:里程十位显示单元;75H单元:里程个位显示单元;76H单元:单价个位显示单元;77单元:单价十位显示单元。
55H:50ms计数单元。
(2) 主程序设计主程序流程图如图2所示,由于用到了外部中断0,所以,按中断系统的编程结构在0000H处放置一条长跳转指令LJMP START跳转到主程序入口,在外部中断0的中断入口地址0003H处放置一条长跳转指令LJMP EXT0跳转到外部中断0服务程序处。
出租车计价器(单片机c语言)

P1.1:接功能键。
P1.3:接清零键。
P0口接数码管段选端,P2口接驱动芯片。
P3.4(T0):接模拟开关按键,替代了出租车计价器中的霍尔传感器。
P3.1、P3.0口接掉电保护电路。
2.3
按下计价按键时,显示起步价和起步里程范围,这些在程序中设置;当等于或超过两公里后,按计算总价的公式为:总价=起步价+单价*(总里程-起步里程)+1进行计价。本设计中,起步价为4元,起步里程为2公里,当然这些数据可以在程序中改写,以满足不同时期价格调整的需要。下图是通过在Keil C中编译通过,并生成Hex文件,在PROTEUS中仿真通过的整体硬件原理图:
图2.11时钟电路
2.4.6
按键控制电路中,单片机的P1.0管脚接启动/停止按键,通过软件编程,当按下按键计数器开始工作,开始计价;当弹起按键时,计数器停止工作,停止计价,启动/停止按键带自锁功能。按下启动按键,开关处于导通状态,这时给P1.0送低电平信号,这时TR0=1,计数器开始工作,调用计价子程序开始计价。清零按键接单片机的P1.3管脚,按下清零按键,P1.3为低电平,调用清零子程序,用于将显示数据清零,在程序中给各位赋0代码(0x3f),以达到清零的目的,方便下次计价。另外为功能键,控制价格调整,这个按键是在没有按下启动/停止按键时有作用,计价过程中无效。
能够保证系统可靠的复位,在初始化程序中应安排一定的复位延迟时间。
图2.8复位电路
2.4.4
掉电保护电路中采用了存储芯片AT24C02。
AT24C02是一个CMOS标准的EEPROM存储器,是AT24CXX系列(AT24C01/02/04/08/16)成员之一,这些EEPROM存储器的特点是功耗小、成本低、电源范围宽,静态电源电流约30uA~110uA,具有标准的I2C总线接口,是应用广泛的小容量存储器之一。
EDA编程出租车计价器

目录1课程设计目的22设计任务与要求22.1设计任务22.2设计要求23系统组成24模块设计34.1秒分频模块34.2控制模块34.3计量模块34.3.1计价部分44.3.2计时部分44.3.3计程部分44.4译码显示模块45程序调试运行45.1顶层原理图45.2仿真结果56硬件验证66.1引脚锁定66.2硬件验证情况77、课程设计总结77.1、收获77.2、心得体会8参考文献9附录10出租车自动计价器的设计1课程设计目的为培养学生树立正确的设计思想和实事求是的工作作风,学习运用所学基础知识理论、专业知识、基本技能去分析和解决工程技术实际问题,提高学生的综合素质,使学生成为工程应用型合格人才,故进行《EDA技术及应用》的课程设计。
帮助学生全面熟悉、掌握VHDL语言基本知识,掌握利用VHDL语言对常用的的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。
2设计任务与要求2.1设计任务本课题要求设计车租车自动计价器,能基本实现自动计价的功能。
2.2设计要求本出租车计价器的计费系统:行程3公里内,且等待累计时间2分钟内,起步费为10元;3公里外以每公里1.6元计费,等待累计时间2分钟外以每分钟1.5元计费。
并能显示行驶公里数、等待累计时间、总费用。
设计的主要技术指标如下:①、计价范围:0~999.9元计价分辨率:0.1元②、计程范围:0~99公里计程分辨率:1公里③、计时范围:0~59分计时分辨率:1分3系统组成出租车自动计价器的系统方框图如图1所示:它有分频模块、控制模块、计时模块、计费模块及显示等模块组成。
图1.出租车自动计价器的系统方框图4模块设计4.1秒分频模块秒分频模块对频率为240Hz的输入脉冲进行分频,得到的频率为16Hz,15Hz和1Hz 的三种频率。
单片机课程设计 出租车计价器

摘要出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。
而采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试。
而采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。
本设计的是一个基于单片机AT89S52的出租车自动计费设计,附有复位电路,时钟电路,键盘电路等。
复位电路是单片机的初始化操作,除了正常的初始化外,为摆脱困境,通过复位电路可以重新开始。
时钟电路采用12MHz的晶振,作为系统的时钟源,具有较高的准确性。
在上电时LED数码管显示最初的起步价,里程收费,等待时间收费三种收费。
按暂停键,计价器可暂停计价,按查询键,在LED数码管上可以显示运行时等待的时间。
通过计算可以得出总共的费用和总的路程。
在这里主要是以AT89S52单片机为核心控制器,P0口、P2 口接两片四合一数码管,P1口接按键,通过按键输入。
关键词:单片机 AT89S52;LED数码管;出租车计费器;目录1 概述 (1)1.1 课题简介 (1)1.2 功能要求 (1)2 系统总体方案及硬件设计 (2)2.1 系统工作原理及总体方案 (2)2.2 单片机最小系统单元 (3)2.3 霍尔传感器检测单元 (3)2.4 键盘调整单元 (5)2.5 显示单元 (5)3 软件设计 (7)3.1系统主程序 (7)3.2 按键扫描程序 (8)3.3 中断程序 (9)3.4 计算程序 (10)3.5 显示程序 (10)4 实验仿真 (12)4.1 Proteus介绍 (12)4.2 调试与测试 (12)4.3 里程计价测试 (12)5 课程设计体会 (14)参考文献 (15)附1:系统原理图 (16)附2:源程序代码 (16)1 概述1.1 课题简介出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。
MD6000计价器限制条件的查询和设置

MD6000型出租汽车税控计价器限制条件的查询和设置一、限制条件的查询1、在空车状态下,连续按上键至金额屏显示“CH-04”,按下键进入刷卡时间限制查询:金额屏前两位显示“G1”,后两位显示“- -”或“ON ”,(其中“- -”表示刷卡时间限制无效,“ON ”表示刷卡时间限制有效);单价屏、计程屏和计时屏显示刷卡限制时间。
如图1:表示刷卡时间限制有效,刷卡限制时间是2009年8月20日14点0分。
2、在刷卡时间限制查询状态下按上键,可以进入运营次数限制查询:金额屏前两位显示“G2”,后两位显示“- -”或“ON ”,(其中“- -”表示运营次数限制无效,“ON ”表示运营次数限制有效);计时屏显示运营限制次数,单价屏显示计价器内已有运营次数。
如图2:表示运营次数限制有效,运营限制次数为999条,计价器内已有运营次数为120条。
3、在运营次数限制查询状态下按上键,可以进入工作时间限制查询:金额屏前两位显示“G3”,后两位显示“- -”或“ON ”,(其中“- -”表示工作时间限制无效,“ON ”表示工作时间限制有效);计时屏显示运营限制的工作时间,单价屏显示司机目前的工作时间。
如图3:表示工作时间限制无效,运营限制工作时间为10小时0分,司机目前的工作时间为2小时15分。
4、在工作时间限制查询状态下按上键,可以进入里程限制查询:金额屏前两位显示“G4”,后两位显示“- -”或“ON ”,(其中“- -”表示里程限制无效,“ON ”表示里程限制有效);单价屏显示限制里程,计程屏显示提示里程,计时屏显示剩余里程。
如图4:表示里程限制有效,限制里程为5500公里,提示里程为1000公里,剩余里程为3400公里。
图1 图2 图3 图4二、限制条件的设置1、刷卡时间限制、运营次数限制和工作时间限制是通过一卡通管理软件设置,在公司例会刷卡时由司机卡自动下载至计价器。
2、里程限制是用专用的里程限制卡来设置,同一张里程限制卡可以设置同公司所有计价器,具体操作方法如下:在以上4种限制条件查询状态下,将里程限制卡插入计价器,可以显示卡上里程限制条件:金额屏前两位显示“G4”,后两位闪烁显示“- -”或“ON ”,(其中“- -”表示里程限制无效,“ON ”表示里程限制有效);单价屏闪烁显示限制里程,计程屏闪烁显示提示里程。
ZT单片机课程设计--出租车计价器

ZT单片机课程设计--出租车计价器D一.设计任务及思路1.出租车计价器需要的主要外部设备有公里计数器,以及显示、定时装置,通过线路连接构成一个完整的系统。
2.公里计数器设想:利用光电或者霍尔效应原理对车轮转过360°角位移产生一个脉冲信号送给单片机作为一定距离的计数值。
3.显示器:用LED显示,动态扫描显示,不断输出即时价格已及时间。
4.定时装置(本设计中未引入):记录在停车或某些情况下的时间,用于辅助计价。
二、里程计数器的原理(光电式)在与车轴同步的轴上装有一隔光盘,上仅有以窄缝可以通光。
在隔光盘两侧分别装有与车体固定的光源和感光元件。
当隔光盘随轴转动时,光源发出的光被隔光盘隔离,只有在窄缝处感光元件接收到光信号,对后续电路产生一个脉冲。
这就是对里程转换为计数值的基本原理。
其产生的脉冲信号则作为单片机计数器的输入信号,当单片机中计数器计到某一数量即为车行驶一公里,并对价格进行增加。
在没有实际对这样计数装置试用,只能对其原理进行分析,在之下的程序设计中只取其脉冲信号作为单片机输入信号(P3.4)。
三、LED显示电路对设计总体分析下,只需对其价格进行显示,选用四个LED数码管分别显示价格的百位、十位、个位以及十分位(单位:元)。
显示方式采用动态扫描的方式,数据输出为P0口,位选为P2口,共阴极(如图)。
四、计价器的计价要求1.计价方式:起价(两公里)白天8元,晚上10元;由一开关进行选择。
每公里一元,即每一百米加价一角。
2.转数与公里数:汽车轮胎周长近似为1.5米,故一百米需要转过67圈,计67个数产生一个溢出中断。
五、电路原理图及引脚P0.7-P0.0 数码管输出数据P2.7-P2.4 数码管位选P1.0 显示小数点(长亮)P1.2 计价器工作开关P1.3 白天/夜间切换P3.4 计数脉冲输入出租车计价器电路原理六、流程图N 开始开始计价昼夜选择显示零 显示零Y显示夜间起价显示白天起价夜 昼显示价格 主程序流T1中断够67次N Y R4=0 ? NYR4+1价格寄存器加一 调整BCD 码 放入数据显示区返回中断程序七、源程序ORG 0000H ;起始地址AJMP STARTORG 001BH ;计数中断地址LJMP CNT1ORG 0030H ;主程序地址START: MOV PSW, #00HMOV IE, #88H ;IE=10001000BMOV TMOD, #60H ;TMOD=01100000B,T1工作方式2MOV TH1, #0BDH ;自动重装MOV TL1, #0BDH ;计67个数SETB TR1 ;计数器启动CLR P1.0 ;点亮小数点dpMOV R4, #0FFH ;置数-1MOV R0, #20H ;指向数据区首地址MOV R1, #04H ;数字个数LP1: MOV @R0, #00H ;把00放入显示数据区INC R0 ;指针加一DJNZ R1, LP1 ;继续置数OFF: SETB P1.2JNB P1.2, ON ;计价器开始跳转至ONACALL DISP ;调用显示子程序AJMP OFFON: SETB P1.3JB P1.3, DAY ;判断白天or夜间行车NIGHT: MOV R2, #00H ;价格后两位压缩BCD码MOV R3, #01H ;价格高两位压缩BCD码MOV 21H, #01H ;显示数据区放入起价BCD码CALL DISP ;显示夜间起价AJMP LP2DAY: MOV R2, #80H ;价格后两位压缩BCD码MOV R3, #00H ;价格高两位压缩BCD码MOV 22H, #08H ;显示数据区放入起价BCD码LP2: CALL DISP ;显示白天起价AJMP LP2CNT1: MOV 35H, R5MOV 36H, R6MOV 32H, R0MOV 31H, AMOV 30H, R4 ;保护中断前寄存器内容CJNE R4, #00H, INCC ;两公里内计数值加1 CLP0: MOV A, R2ADD A, #01H ;后两位计价加一DA A ;十进制调整MOV R2, AMOV A, R3ADDC A, #00H ;前两位计价加进位DA A ;十进制调整MOV R3, ACLP2: MOV A, R2MOV B, #10HDIV AB ;将压缩BCD码拆成BCD码MOV 23H, BMOV 22H, A ;按高低位存入显示数据区MOV A, R3MOV B, #10HDIV AB ;将压缩BCD码拆成BCD码MOV 21H, BMOV 20H, A ;按高低位存入显示数据区CALL DISP ;显示价格AJMP RETCINCC: INC R4 ;两公里内计数器加一RETC: MOV A, 31HMOV R0, 32HMOV R5, 35HMOV R6, 36H ;恢复中断前数据内容RETI ;中断结束DISP: MOV R5, #04H ;显示子程序,显示个数MOV R0, #20H ;指向数据区首地址MOV R6, #80H ;位选MOV DPTR, #TAB ;指针指向显示列表DLP0: MOV A, @R0MOVC A, @A+DPTR ;取出对应的显示代码MOV P0, A ;输出数据MOV A, R6MOV P2, A ;输出位选RR A ;右移位选MOV R6, AINC R0 ;指向下一地址DJNZ R5, DLP0 ;循环RET ;结束TAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, DB 7FH, 67H ;显示代码列表END八、调试利用KeilC51软件对其进行编译、仿真,得出比较满意的效果。
ZFJ-2000 型出租汽车税控计价器

ZFJ-2000 型出租汽车税控计价器技术说明书江苏阿波罗电子科技有限公司目录一、概述 (2)二、主要技术指标 (2)三、主要功能 (2)四、结构原理及安装简图 (3)五、操作说明 (4)六、数据查询 (4)七、计量管理 (7)八、公司管理 (9)九、传感器安装要点 (10)十、简单故障排除 (10)十一、打印机的使用及维护注意事项 (11)十二、保修规则 (11)十三、随机配件 (11)十四、售后服务承诺 (11)附录一、传感器与车型配置对照表 (12)附录二、计价器调试仪使用说明 (13)一、概述ZFJ-2000型出租汽车税控计价器是国内最新技术产品,具有自动计费、票据打印、数据存储等多种功能。
是出租车行业加强管理的理想工具,也是国家强制推行的计量器具之一。
执行标准: Q/321088LQC001-2007 《电子式出租汽车税控计价器》二、主要技术指标1.租金显示范围:0~999.9元租金分辨力:0.01元2.计程显示范围:0~999.99km计程显示分辨力:0.1km计程误差:-1.0%~+0.5%3.计时显示范围:59min59s(<1h)99h59min(>1h)计时误差:-1.0%~+0.5%计时显示分辨力:1s(<1h)4.永久时钟误差:±5min/30d5.切换速度误差:12km/h±0.5km/h6.工作电压:直流(9~16)V7.工作环境温度:-15℃~+50℃8.工作环境相对湿度:20%RH~90%RH(50℃)9.功耗:不大于6W(不包括打印、空车灯)10.主机体积:(160×138×51)mm11.主机重量:≤1.2kg三、主要功能1.存储功能:能记录存储400次营业的起始日期、时间,结束时间,营业里程,等候时间,最终单价,营业金额;能记录存储当班总营运数据和12个月总营运数据;能累计总行驶里程,总营业里程,总计时时间,总营业金额,总营业次数。
基于单片机的出租车计价器设计(附源程序)

基于单片机的出租车计价器设计(附源程序)基于单片机的出租车计价器设计(附源程序)摘要本设计的是一个基于单片机AT89S52的出租车自动计费设计,附有复位电路,时钟电路,键盘电路等。
复位电路是单片机的初始化操作,除了正常的初始化外,为摆脱困境,通过复位电路可以重新开始。
时钟电路采用12MHz的晶振,作为系统的时钟源,具有较高的准确性。
在上电时字符型液晶1602显示最初的起步价,里程收费,等待时间收费三种收费,通过按键可以调整起步价,里程收费,等待时间收费。
通过按键模拟出租车的运行,暂停,停止。
在1602液晶上可以显示运行的时间,运行时暂停的时间,通过计算可以得出总共的费用和总的路程。
在这里主要是以AT89S52单片机为核心控制器,P0口接1602液晶显示模块,P1口接按键的,通过按键输入。
关键字AT89S52;1602液晶;出租车计费器ABSTRACTThe design is based on a monolithic integrated circuit AT89S52 taxi billing design, with reset circuit, clocking circuit, keyboard circuit. Reset circuit is initialized, besides the normal operation of the initial dilemma, as a foreigner, through the reset circuit can start again. 12MHz adopts the clock circuit, as a system of crystal oscillator, higher clock source.The characters in the crystal that the initial 1602, charges, fees mileage waiting time, three buttons can be adjusted by charging fees, just waiting time, mileage. Through the simulation of the taxi, buttons, stop. Suspension In the liquid crystal display can run 1602, operation time, when suspension can be obtained by the computation of the total cost.here is mainly for the core controller, AT89S52 SCM P0 mouth after 1602 LCD module, P1 mouth after the keys, through the keystroke.1 课程设计任务书1.1 课程设计任务设计一个出租车自动计费器,计费包括起步价、行车里程计费、等待时间计费三部分,用1602液晶显示总金额,运行时间,暂停时间,最大值为99.9元,起步价为5.0元,3Km之内起步价计费,超过3Km,设速度为100m/s,10s增加1.3元(即1KM增加1.3元),等待时间单价为每分钟1.5元,用液晶显示总里程,同时用液晶显示等待时间和运行花费时间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
出租车计价器代码#include<reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();_nop_();}; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; sbit exter=P3^3; //外部中断sbit key0=P1^0; //清零sbit key1=P1^1; //切换/+sbit key2=P1^2; //-sbit key3=P1^3; //功能键sbit SCL=P2^2;uint inter,aa,bb,temp,temp1,numwei;uint zongjine,licheng,dengdai;uint zongjine1,licheng1;uint key3num,qiehuantemp,delaytemp;uchar danjia1,danjia2,danjia3,danjia,qibu;void delay(uint x) //延时时基为1ms{int i,j;for(i=x;i>0;i--)for(j=340;j>0;j--);}void display() //数码管显示{//数码管动态显示switch(numwei){case 0:P3=0xfe;P0=table[zongjine/100];break;case 1:P3=0xfd;P0=table[zongjine%100/10]+0x80;break;case 2:P3=0xfb;P0=table[zongjine%100%10];break;case 3:P3=0xef;P0=table[licheng/10];break;case 4:P3=0xdf;P0=table[licheng%10];break;case 5:P3=0xbf;P0=table[danjia/10]+0x80;break;case 6:P3=0x7f;P0=table[danjia%10];break;}if(numwei==7)numwei=0;}void keyscan() //键盘扫描{if(key3==0) //功能键调节{delay(5);if(key3==0){key3num++;if(key3num==5) key3num=0;while(!key3);delay(5);while(!key3);while(key3num){if(key3num==1) //调白天单价{if(key1==0){delay(5);if(key1==0){danjia1++;if(danjia1==100)danjia1=0;while(!key1);delay(5);while(!key1);}}if(key2==0){delay(5);if(key2==0){danjia1--;if(danjia1==-1)while(!key2);delay(5);while(!key2);}}zongjine=100;licheng=0;danjia=danjia1;}if(key3num==2) //调夜晚单价{if(key1==0){delay(5);if(key1==0){danjia2++;if(danjia2==100)danjia2=0;while(!key1);delay(5);while(!key1);}}if(key2==0){delay(5);if(key2==0){danjia2--;if(danjia2==-1)danjia2=99;while(!key2);delay(5);while(!key2);}}zongjine=200;danjia=danjia2;}if(key3num==3) //调等待单价{if(key1==0){delay(5);if(key1==0){danjia3++;if(danjia3==100)danjia3=0;while(!key1);delay(5);while(!key1);}}if(key2==0){delay(5);if(key2==0){danjia3--;if(danjia3==-1)danjia3=99;while(!key2);delay(5);while(!key2);}}zongjine=300;licheng=0;danjia=danjia3;}if(key3num==4) //调起步价{if(key1==0){delay(5);if(key1==0){if(qibu==100)qibu=0;while(!key1);delay(5);while(!key1);}}if(key2==0){delay(5);if(key2==0){qibu--;if(qibu==-1)qibu=99;while(!key2);delay(5);while(!key2);}}zongjine=400;licheng=0;danjia=qibu;}if(key3num==5) //退出功能键{key3num=0;}if(key3==0){delay(5);if(key3==0){key3num++;while(!key3);delay(5);while(!key3);}}}}}}void init(){zongjine=0;licheng=0;danjia=0;bb=0; //判断是否等待的时基个数inter=0;EA=1; //开总中断EX1=1; //开外部中断1IT1=1; //触发方式下降沿TMOD=0x01;TH0=(65536-3000)/256;TL0=(65536-3000)%256;ET0=1; //开定时器T0中断TR0=1; //开定时器T0P3=0x08;P0=table[0];}void jisuan(){if(licheng>3)zongjine1=qibu+(licheng-3)*danjia+dengdai*danjia3; //金额计算elsezongjine1=qibu+dengdai*danjia3; //起步公里内金额计算}void qiehuan(){if(key1==0) //白天夜晚切换{delay(5); //键盘防抖if(key1==0)qiehuantemp=!qiehuantemp;while(!key1);delay(5);while(!key1);}if(qiehuantemp==0)danjia=danjia2;if(qiehuantemp==1)danjia=danjia1;}void main(){init();qiehuantemp=1;key3num=0;while(1){if(key3num==0){zongjine=zongjine1,danjia=danjia,EX1=1;}else EX1=0;qiehuan(); //切换白天夜晚单价jisuan(); //计算总金额keyscan();if(key0==0) //清零键init();}}void inter1() interrupt 2 //脉冲中断{inter++;if(inter==50){inter=0;licheng++;if(licheng==100) licheng=0;}}void timer0() interrupt 1{TH0=(65536-3000)/256;TL0=(65536-3000)%256;display();bb++;temp1=licheng; //测试是否进入等待if(bb==10000) //10s无反应进入等待计费{bb=0;if(temp&&temp1) dengdai++;temp=licheng;}}。