电子设计资料-出租车计价器-程序
出租车计价器(1)

出租车计价器一、设计要求设计并制作一台出租车计价器。
调试时采用小直流电机模拟车轮的转动,小直流电机转盘下装有一个霍尔传感器,电机转盘每转一圈,霍尔传感器产生一个脉冲,每转一圈代表1公里。
基本要求:(1)收费标准2元/ 公里(2)数据输出(字符型液晶LCD1602显示)单价输出3位路途输出5位总金额输出5位(3)按键(1个)系统复位(清零)、启动计价开关(4)拨码开关(1个)用于切换液晶显示。
二、系统设计(1)分析任务要求,写出系统整体设计思路通过分析,需要实现四个主要的功能模块,分别为脉冲计数模块、定时器计时模块、按键的处理以及LCD液晶显示模块等功能。
定时器计时模块主要完成从出租车启动开始计时,直到系统复位重新计时。
启动键触发定时器开始工作,而定时器的运行可以作为脉冲计数的标志,只要定时器计时在运行,每来一个中断都应该计数。
主程序完成键盘的扫描和按键的处理,查询脉冲产生的中断,并完成脉冲的计数。
每个脉冲代表1公里。
(2)选择单片机型号和所需外围器件型号,设计单片机硬件电路原理图采用MCS51系列单片机At89S52作为主控制器,外围电路器件包括LCD液晶模块、拨码开关、复位电路等。
LCD1602液晶模块用单片机的P0口、P2口直接控制。
P0口用于控制LCD的数据线,P2口用于控制LCD的控制线。
拨码开关使用上拉电路连接,向下拨动时为低电平,向上拨动时为高电平。
(3)分析软件任务要求,写出程序设计思路,分配单片机内部资源,画出程序流程图软件的任务要求包括定时器的设置、按键的扫描、按键的功能处理、脉冲的计数、定时器的计时以及总金额的计算等。
程序设计的思路:主程序采用计数器T0实现脉冲的计数,由于每个脉冲代表1公里,因此,当每产生一个脉冲,计价器按照收费标准计价。
主程序在初始化变量和定时器参数设置之后,进入一个循环结构。
三、实验步骤1、套件模块组成SXB-01:51_CPU Module V1.0SXB-03:DC Motor Module V1.0SXB-13:LCD Module V1.03、运行程序显示:(1)K1为高电平时显示:TIME:00:00:00 (出租车计时)DJ:2。
出租车计价器程序

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)
基于单片机的出租车计价器的设计

基于单片机的出租车计价器的设计一、设计目标:设计一个基于单片机的出租车计价器,能够准确计算乘客的乘车距离和费用,并能显示当前的计价信息。
二、设计原理:1. 距离测量:使用速度传感器和车轮直径来测量出租车行驶的距离。
2. 费用计算:根据距离和预设的计价规则,使用单片机进行费用计算。
3. 显示:使用LCD显示屏显示当前的计价信息和距离。
三、硬件设计:1. 单片机:选择合适的单片机,如ATmega8,作为主控制器。
2. 速度传感器:选择合适的速度传感器,如霍尔传感器,用于测量车轮转速。
3. LCD显示屏:选择合适的LCD显示屏,如16x2字符LCD,用于显示计价信息和距离。
4. 按键开关:设计合适的按键开关,用于启动计价器和调整设置。
四、软件设计:1. 初始化设置:在计价器启动时,进行LCD显示屏和速度传感器的初始化设置。
2. 距离测量:通过速度传感器读取车轮转速,根据车轮直径计算出租车行驶的距离。
3. 费用计算:根据距离和预设的计价规则,使用单片机进行费用计算,并将计算结果显示在LCD上。
4. 设置调整:设计按键开关用于调整计价规则和费率设置。
5. 实时显示:将计价信息和距离实时显示在LCD上,方便乘客查看。
五、测试和验证:进行功能测试和实地验证,确保计价器的准确性和稳定性。
包括距离测量的准确性、费用计算的准确性以及LCD显示的正确性。
六、优化和改进:根据测试结果和用户反馈,对计价器进行优化和改进,提高其性能和用户体验。
总结:基于单片机的出租车计价器是一个实用的设计,能够帮助出租车司机和乘客准确计算乘车距离和费用。
通过合理的硬件设计和软件编程,可以实现距离测量、费用计算和实时显示等功能。
在实际使用中,需要进行充分的测试和验证,以确保计价器的准确性和稳定性。
通过不断优化和改进,可以提高计价器的性能和用户体验,满足用户的需求。
基于单片机的出租车计价器的设计

基于单片机的出租车计价器的设计摘要随着科学技术的发展,电子计算机技术在许多领域得到了广泛的应用,出租车行业也不例外。
本文介绍了一种基于单片机的出租车计价器的设计,该计价器基于单片机AT89C52,实现了出租车行程一口价以及分段式计价的功能,利用程序设计技术实现了对单片机的编程控制,并运用到实际的出租车计价器中。
关键词:出租车计价器;单片机;AT89C52;程序设计1 绪论随着科技的进步,电子技术越来越普及,出租车也不例外,出租车行业的客观情况也发生了根本的变化。
既有出租车公司和创业者将单片机技术应用于出租车行业,以提高出租车行业的秩序,确保出租车行业中的乘客利益,稳定出租车行业的行情,也给其提供了很有希望的发展前景。
2 计价器的设计2.1 单片机原理单片机是由微处理器、存储器、接口和其他组成部分组成的一种集成电路,它具有结构简单、操作灵活、功耗低、价格便宜等优点。
在本次的出租车计价器设计中,将使用一种称为AT89C52(80C51系统)的单片机作为控制单元。
该单片机具有操作速度快,程序容量大,输入和输出可配置端口及特殊功能如定时器、串口等的优点,可以很好地实现出租车计价器的功能。
2.2 硬件设计本次出租车计价器的硬件设计以单片机AT89C52为核心,与其他电路芯片和外部元件连接,实现计价功能,设计的硬件电路图如下:图1 出租车计价器电路示意图电路中,五个按键K1至K5分别对应“起程”、“重新计算”、“下程”、“保险门”,“丝印台”;LCD123是用来显示当前行程总计程以及应付金额;电机M1用来驱动出票机打印票据;电磁铁的驱动电路依靠单片机AT89C52的P3口来控制,使其开及关。
2.3 软件设计在软件设计中,要求单片机AT89C52能够接收到外界的按键信号,发出电磁铁的控制信号,控制LCD123显示以及打印机的输出,借助C语言和Keil μVision 3.0软件编程,将原理图转化为相应的程序代码,使得计价器的功能及其性能更加可靠。
出租车计价器的设计(最终稿)

设计题目:出租车计价器的设计
系别:
专业:计算机科学与技术
组别:第十组
学生姓名:000000学号:00000013
起止日期:2008年05月25日~2008年06月15日
指导教师:
教研室主任:
第一章
1.1
设计要求:
1.3Km起计价,起始价5元,每公里1元;
2.传感器输出脉冲为2个/m;
3.每0.5Km改变一次显示,且提前显示(现实里程数和钱数);
五个模块中:脉冲产生模块由CP电源构成,先是模块用7447N驱动芯片和SEVEN_SEG_COM_A显示器构成,计数模块中千进制计数器由4块74LS290D组成。需重点设计为计数和逻辑比较模块。
第三章
3.1
方案一:
采用数字电路控制。其原理方框图如图3-1所示。采用传感器件,输出脉冲信号,经过放大整形作为移位寄存器的脉冲,实现计价。
4.画出电路原理图。
设计要求:
1.先进行方案论证,画出功能图;
2.分析要用到的电路模块;
3.使用EWB软件仿真。
1.2
设计思想:
首先,作为计价器电路必须具备里程数显示计价显示自动更新功能,初步计划用千进制计数器配合四位显示器实现;其次,电路中的计价显示应具备判断功能,计划用四位比较器实现;最后,计价器外部机械传感脉冲用cp电源模拟。(本设计题目旨在通过亲自动手实践加深对数字逻辑课程中涉及的硬件系统的工作原理的理解,并掌握初步应用它们基本功能的技能。故本课题的设计应做到所有功能的实现都必须用逻辑门电路、逻辑芯片等非可编程逻辑器件来实现。)
单片机课程设计--出租车计价器

摘要出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。
而采用模拟电路和数字电路设计的计价器整体电路的规模较大,用到的器件多,造成故障率高,难调试。
而采用单片机进行的设计,相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易地实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。
本设计的是一个基于单片机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)1 概述1.1 课题简介出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。
出租车计价器方案设计书程序原理图实物图

目录摘要 (Ⅰ)第1章引言 (1)1. 1 出租车计价器概述····················································· (1)1. 2 本设计任务······················································ (1)1.2.1 设计任务······················································ (1)1.2.2 设计要求······················································ (1)1. 3 系统主要功能······················································ (2)第2章出租车计价器硬件设计 (3)2.1 系统的硬件构成及功能························································ (3)2. 2 AT89S51单片机及其引脚说明··························································42.3 AT24C02引脚图及其引脚功能 (6)2. 4 AT24C02 掉电存储单元的设计·························································62.5 里程计算、计价单元的设计 (7)2.6 数据显示单元设计························································ (8)第3章系统软件设计 (10)3. 1 系统主程序设计························································ (10)3. 2 定时中断程序设计····················································· (12)3. 3 里程计数中断服务程序设计····················································· (12)3.4 中途等待中断服务程序设计····················································· (12)3. 5 键盘服务程序设计····················································· (12)3. 6 显示子程序服务程序设计····················································· (12)第4章系统调试与测试结果分析 (13)4. 1 使用的仪器仪表························································ (13)4.2 系统调试 (13)第1章引言本次课程设计利用单片机技术来实现一台多功能出租车计价器,具有性能可靠、电路简单、成本低等特点。
出租车计价器(电子专业课程设计)

出租车计价器摘要:出租车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。
它关系着交易双方的利益。
具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。
因此,汽车计价器的研究也是十分有一个应用价值的。
该系统由AT89S51单片机控制,满足计程、计时、计费、存储等多种计量功能为一体的出租车计价器的实用要求。
相比于普通的模拟电路控制,采用单片机进行的设计相对来说功能强大,用较少的硬件和适当的软件相互配合可以很容易的实现设计要求,且灵活性强,可以通过软件编程来完成更多的附加功能。
针对计费模式的切换,通过软件编程就可以轻易而举的实现。
避免了机械开关带来的不稳定因素。
关键词:出租车计价器单片机控制目录第一章前言 (1)第二章设计要求 (2)2.1 基本功能 (2)2.3 扩展功能 (2)第三章系统的组成及工作原理 (3)3.1 系统的硬件构成及功能 (3)3.2 AT89S51单片机及其引脚说明 (4)第四章硬件电路方案设计 (7)4.1方案比较与确定 (7)4.2 里程计算、计价单元的设计 (7)4.3 显示单元电路设计 (9)4.4 键盘显示模块设计 (10)第5章系统的软件设计 (12)5.1 系统主程序设计 (12)5.2 定时中断服务程序 (14)5.3 显示服务程序 (14)5.4 键盘服务程序 (15)第6章系统调试与测试结果分析 (17)6.1 使用的仪器仪表和工具 (17)6.2 调试的方法 (17)第7章结论 (18)参考文献 (19)附录 (20)附录1 总体设计电路图 (20)附录2 元件清单 (20)附录3 全部源程序 (21)第一章前言随着我国国民经济的告诉发展,出租车已成为城市公共交通的重要组成部分。
出租车计价器这一专用计算器具必须经当地技监局所属的管理部门坚定认可,且出租车安装计价器整车鉴定合格后才能运营。
针对电子式出租车计价器,建设部于1997年12月1日开始贯彻新的行业标准“CJ5024-1997”,要求“本标准实施之日起,电子式出租车计价器的设计,制造,和检验必须符合本标准的规定”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include<reg52.h>#define uchar unsigned charsbit P3_4=P3^4;//code uchar tab[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,}; //code uchar tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,}; code uchar tab[10]={0xbf,0x86,0xdb,0xcf,0x66,0xed,0xfd,0x87,0xff,0xef,}; uchar sz[4];int qw,bw,sw,gw,a,b,c;void disp(void){for(c=3;c>=0;c--){SBUF=tab[sz[c]];while(!TI);TI=0;}}void scjs(void)interrupt 3{TH1=0X3C;TL1=0xB0;a=a+1;if(a==2){a=0;P3_4=!P3_4;if(P3_4==0){b=TH0*256+TL0;///yw=sz[0]=b/100000;//ww=sz[0]=b/10000%10;qw=sz[0]=b/1000%10;bw=sz[1]=b/100%10;sw=sz[2]=b/10%10;gw=sz[3]=b%10;disp();}}}main(){IE=0X88;TH1=0X3C;TL1=0XB0;TR0=1;TR1=1;a=0;while(1);}2#include<reg52.h>#define uchar unsigned charsbit P3_4=P3^4;//code uchar tab[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,}; //code uchar tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,}; code uchar tab[10]={0xbf,0x06,0xdb,0xcf,0x66,0xed,0xfd,0x87,0xff,0xef,}; uchar sz[6];int yw,ww,qw,bw,sw,gw,a,b,c,d,e,f;void disp(void){for(c=5;c>=0;c--){SBUF=tab[sz[c]];while(!TI);TI=0;}}void scjs(void)interrupt 3{TH1=0X3C;TL1=0xB0;a=a+1;if(a==2){a=0;P3_4=!P3_4;if(P3_4==0){b=TH0*256+TL0;d=34;e=6;f=7;qw=sz[0]=b/100000;bw=sz[1]=b/10000%10;sw=sz[2]=b/1000%10;gw=sz[3]=b/100%10;yw=sz[4]=b/10%10;ww=sz[5]=b%10;disp();}}}main(){TMOD=0x15;IE=0X88;TH1=0X3C;TL1=0XB0;TR0=1;TR1=1;a=0;while(1);}3#include<reg52.h>#define uchar unsigned charsbit P3_4=P3^4;sbit jia=P2^0;sbit jian=P2^1;sbit gl=P2^2;sbit hp=P2^3;unsigned char keycnt=0;//code uchar tab[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,}; //code uchar tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,}; code uchar tab[10]={0xbf,0x06,0xdb,0xcf,0x66,0xed,0xfd,0x87,0xff,0xef,}; uchar sz[6];int yw,ww,qw,bw,sw,gw,a,b,c,d,e,f;d=46; //单价e=00; //公里数f=00;//jiage=d*e; //金额void disp(void){for(c=5;c>=0;c--){SBUF=tab[sz[c]];while(!TI);TI=0;}}void KEY() //按键扫描程序{unsigned char i,j;if(hp==0){for(i=20;i>0;i--) //延时去干扰for(j=248;j>0;j--);if(hp==0){keycnt++;switch(keycnt) //按下次数判断{case 1: //第一次按下d=40;break;case 2: //第二次按下d=50;break;case 3: //第三次按下d=60;keycnt=0; //重新开始判断键值break;}while(hp==0);}}void scjs(void)interrupt 3 {TH1=0X3C;TL1=0xB0;a=a+1;if(a==2){a=0;P3_4=!P3_4;if(P3_4==0){//b=TH0*256+TL0;f=e*d/10;qw=sz[0]=d/10%10;bw=sz[1]=d%10;sw=sz[2]=e/10%10;gw=sz[3]=e%10;yw=sz[4]=f/10%10;ww=sz[5]=f%10;if(jia==0){d++;}if(jian==0){d--;}if(gl==0){e=5;}disp();KEY();}}}main(){void KEY();TMOD=0x15;IE=0X88;TH1=0X3C;TL1=0XB0;TR0=1;TR1=1;a=0;while(1);}4#include<reg52.h>#define uchar unsigned charsbit P3_4=P3^4;sbit jia=P2^0;sbit jian=P2^1;sbit gl=P2^2;sbit hp=P2^3;sbit j=P2^4;unsigned char keycnt=0;unsigned **t=0;//code uchar tab[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,}; //code uchar tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,}; code uchar tab[10]={0xbf,0x06,0xdb,0xcf,0x66,0xed,0xfd,0x87,0xff,0xef,}; uchar sz[6];int yw,ww,qw,bw,sw,gw,a,b,c,d,e,f,g;d=46; //单价e=00; //公里数f=00;//jiage=d*e; //金额void jishuqi(){if(j==0)cnt++;if(cnt=100)e++;cnt=0;}void disp(void){for(c=5;c>=0;c--){SBUF=tab[sz[c]];while(!TI);TI=0;}}void KEY() //按键扫描程序{unsigned char i,j;if(hp==0){for(i=20;i>0;i--) //延时去干扰for(j=248;j>0;j--);if(hp==0){keycnt++;switch(keycnt) //按下次数判断{case 1: //第一次按下d=46;break;case 2: //第二次按下d=12;break;case 3: //第三次按下d=78;keycnt=0; //重新开始判断键值break;}while(hp==0);}}}void scjs(void)interrupt 3 {TH1=0X3C;TL1=0xB0;a=a+1;if(a==2){a=0;P3_4=!P3_4;if(P3_4==0){//b=TH0*256+TL0;if(e>3)f=g;else f=5;//g=e*d/10;//f=e*d/10+5;qw=sz[0]=d/10%10;bw=sz[1]=d%10;sw=sz[2]=e/10%10;gw=sz[3]=e%10;yw=sz[4]=f/10%10;ww=sz[5]=f%10;if(jia==0){d++;}if(jian==0){d--;}if(gl==0){e=5;}disp();KEY();jishuqi();}}}main(){void KEY();TMOD=0x15;TH1=0X3C;TL1=0XB0;TR0=1;TR1=1;a=0;while(1);}5#include<reg52.h>#define uchar unsigned charsbit P3_4=P3^4;sbit jia=P2^0;//价格加sbit jian=P2^1;//价格减sbit gl=P2^2; //公里sbit hp=P2^3; //换屏sbit j=P2^4;//记数unsigned char keycnt=0;unsigned **t=0;//code uchar tab[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,}; //code uchar tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,}; code uchar tab[10]={0xbf,0x06,0xdb,0xcf,0x66,0xed,0xfd,0x87,0xff,0xef,}; uchar sz[6];int yw,ww,qw,bw,sw,gw,a,b,c,d,e,f,g;d=46; //单价e=03; //公里数f=05;//jiage=d*e; //金额/*void jishuqi(){if(j==0)cnt++;e++;cnt=0;}*/ /*void disp(void){for(c=5;c>=0;c--){SBUF=tab[sz[c]];while(!TI);TI=0;}}void KEY() //按键扫描程序{unsigned char i,j;if(hp==0){for(i=20;i>0;i--) //延时去干扰for(j=248;j>0;j--);if(hp==0){keycnt++;switch(keycnt) //按下次数判断{case 1: //第一次按下d=46;break;case 2: //第二次按下d=12;break;case 3: //第三次按下d=78;keycnt=0; //重新开始判断键值break;}while(hp==0);}}}void led(void){qw=sz[0]=d/10%10;bw=sz[1]=d%10;sw=sz[2]=e/10%10;gw=sz[3]=e%10;yw=sz[4]=f/10%10;ww=sz[5]=f%10;}void scjs(void)interrupt 3 {TH1=0X3C;TL1=0xB0;a=a+1;if(a==2){a=0;P3_4=!P3_4;if(P3_4==0){//b=TH0*256+TL0;//f=5;if(jia==0){d++;}if(jian==0){d--;}if(gl==0){e++;}if(e>3){g=e*d/10;f=g;}//f=e*d/10+5;led();disp();KEY();jishuqi();}}}main(){void KEY();TMOD=0x15;IE=0X88;TH1=0X3C;TL1=0XB0;TR0=1;TR1=1;a=0;while(1);}6#include<reg52.h>#define uchar unsigned char sbit P3_4=P3^4;sbit jia=P2^0;//价格加sbit jian=P2^1;//价格减sbit gl=P2^2; //公里sbit hp=P2^3; //换屏sbit j=P2^4;//记数unsigned char keycnt=0;unsigned **t=0;//code uchar tab[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,}; //code uchar tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,}; code uchar tab[10]={0xbf,0x06,0xdb,0xcf,0x66,0xed,0xfd,0x87,0xff,0xef,}; uchar sz[6];int yw,ww,qw,bw,sw,gw,a,b,c,d,e,f,g;d=46; //单价e=03; //公里数f=05;//jiage=d*e; //金额void jishuqi(){if(j==0){cnt++;**t){case 10:e++;cnt=0;break;while(hp==0);}}}void disp(void){for(c=5;c>=0;c--){SBUF=tab[sz[c]];while(!TI);TI=0;}}void KEY() //按键扫描程序{unsigned char i,j;if(hp==0){for(i=20;i>0;i--) //延时去干扰for(j=248;j>0;j--);if(hp==0){keycnt++;switch(keycnt) //按下次数判断{case 1: //第一次按下d=46;break;case 2: //第二次按下d=12;break;case 3: //第三次按下d=78;keycnt=0; //重新开始判断键值break;}while(hp==0);}}}void led(void){qw=sz[0]=d/10%10;bw=sz[1]=d%10;sw=sz[2]=e/10%10;gw=sz[3]=e%10;yw=sz[4]=f/10%10;ww=sz[5]=f%10;}void scjs(void)interrupt 3{TH1=0X3C;TL1=0xB0;a=a+1;{a=0;P3_4=!P3_4;if(P3_4==0){//b=TH0*256+TL0; //f=5;if(jia==0){d++;}if(jian==0){d--;}if(gl==0){e++;}if(e>3){g=e*d/10;f=g;}led();disp();KEY();jishuqi();}}}main(){void KEY(); TMOD=0x15;IE=0X88;TH1=0X3C;TL1=0XB0;TR0=1;a=0;while(1);}7#include<reg52.h>#define uchar unsigned charsbit P3_4=P3^4;sbit jia=P2^0;//价格加sbit jian=P2^1;//价格减sbit gl=P2^2; //公里sbit hp=P2^3; //换屏sbit j=P2^4;//记数unsigned char keycnt=0;unsigned **t=0;//code uchar tab[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,}; //code uchar tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,}; code uchar tab[10]={0xbf,0x06,0xdb,0xcf,0x66,0xed,0xfd,0x87,0xff,0xef,}; uchar sz[6];int yw,ww,qw,bw,sw,gw,a,b,c,d,e,f,g,u,v,w,z;d=46; //单价e=03; //公里数f=05;u=12;//时v=00;//分w=00;//秒//jiage=d*e; //金额void jishuqi(){{cnt++;**t){case 10:e++;cnt=0;break;while(hp==0);}}}void disp(void){for(c=5;c>=0;c--){SBUF=tab[sz[c]];while(!TI);TI=0;}}void KEY() //按键扫描程序{unsigned char i,j;if(hp==0){for(i=20;i>0;i--) //延时去干扰for(j=248;j>0;j--);if(hp==0){keycnt++;switch(keycnt) //按下次数判断{case 1: //第一次按下d=46;break;case 2: //第二次按下d=12;break;case 3: //第三次按下d=78;keycnt=0; //重新开始判断键值break;}while(hp==0);}}}void led(void) //显示时间{z=TH0*256+TL0;if(z>3){w++;z=0;}if(w>59){v++;w=0;}if(v>59){u++;v=0;}if(u>23){u=0;}qw=sz[0]=u/10%10;bw=sz[1]=u%10;sw=sz[2]=v/10%10;gw=sz[3]=v%10;yw=sz[4]=w/10%10;ww=sz[5]=w%10;}void led1(void) //显示价格里程金额{qw=sz[0]=d/10%10;bw=sz[1]=d%10;sw=sz[2]=e/10%10;gw=sz[3]=e%10;yw=sz[4]=f/10%10;ww=sz[5]=f%10;}void scjs(void)interrupt 3 {TH1=0X3C;TL1=0xB0;a=a+1;if(a==3){a=0;P3_4=!P3_4;if(P3_4==0){//b=TH0*256+TL0;//f=5;if(jia==0){d++;}if(jian==0){d--;}if(gl==0){e++;}if(e>3){g=e*d/10;f=g;}led();disp();KEY();jishuqi();}}}main(){void KEY();TMOD=0x15;IE=0X88;TH1=0X3C;TL1=0XB0;TR0=1;TR1=1;a=0;while(1);}8#include<reg52.h>#define uchar unsigned charsbit P3_4=P3^4;sbit jia=P2^0;//价格加sbit jian=P2^1;//价格减sbit gl=P2^2; //公里sbit hp=P2^3; //换屏sbit j=P2^4;//记数unsigned char keycnt=0;unsigned **t=0;//code uchar tab[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,}; //code uchar tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,}; code uchar tab[10]={0xbf,0x06,0xdb,0xcf,0x66,0xed,0xfd,0x87,0xff,0xef,}; uchar sz[6];int yw,ww,qw,bw,sw,gw,a,b,c,d,e,f,g,u,v,w,z;d=46; //单价e=03; //公里数f=05;u=12;//时v=00;//分w=00;//秒//jiage=d*e; //金额void jishuqi(){if(j==0){cnt++;**t){case 10:e++;cnt=0;break;while(hp==0);}}}void disp(void){for(c=5;c>=0;c--){SBUF=tab[sz[c]];while(!TI);TI=0;}}void KEY() //按键扫描程序{unsigned char i,j;if(jian==0){for(i=20;i>0;i--) //延时去干扰for(j=248;j>0;j--);if(hp==0)keycnt++;switch(keycnt) //按下次数判断{case 1: //第一次按下d=46;break;case 2: //第二次按下d=12;break;case 3: //第三次按下d=78;keycnt=0; //重新开始判断键值break;}while(hp==0);}}}void shizhong(void){z=TH0*256+TL0;if(z>1){w++;z=0;}if(w>59){v++;w=0;}if(v>59){u++;v=0;}if(u>23){}}void led(void) //显示时间{if(jian==0){u++;}if(gl==0){v++;}if(hp==0){w++;}qw=sz[0]=u/10%10;bw=sz[1]=u%10;sw=sz[2]=v/10%10;gw=sz[3]=v%10;yw=sz[4]=w/10%10;ww=sz[5]=w%10;}void led1(void) //显示价格里程金额{KEY();qw=sz[0]=d/10%10;bw=sz[1]=d%10;sw=sz[2]=e/10%10;gw=sz[3]=e%10;yw=sz[4]=f/10%10;ww=sz[5]=f%10;}void scjs(void)interrupt 3{TH1=0X3C;TL1=0xB0;a=a+1;if(a==12)a=0;P3_4=!P3_4;if(P3_4==0){//b=TH0*256+TL0; //f=5;/*if(jia==0){d++;}if(jian==0){d--;}if(gl==0){e++;}*/if(e>3){g=e*d/10;f=g;}shizhong();if(jia==0)led();elseled1();disp();jishuqi();}}}main(){void KEY(); TMOD=0x15;IE=0X88;TH1=0X3C;TR0=1;TR1=1;a=0;while(1);}9最终程序#include<reg52.h>#include <stdio.h>#include <absacc.h>#define uchar unsigned charsbit P3_4=P3^4;sbit jia=P2^0;//价格加sbit jian=P2^1;//价格减sbit gl=P2^2; //公里sbit hp=P2^3; //换屏sbit j=P2^4;//记数unsigned char keycnt=0;unsigned **t=0;bit write=0; //写24C08 的标志;//code uchar tab[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,}; //code uchar tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,}; code uchar tab[10]={0xbf,0x06,0xdb,0xcf,0x66,0xed,0xfd,0x87,0xff,0xef,}; uchar sz[6];int yw,ww,qw,bw,sw,gw,a,b,c,d,e,f,g,u,v,w,z;d=46; //单价e=00; //公里数f=05;v=00;//分w=00;//秒//jiage=d*e; //金额/////////24C08 读写驱动程序////////////////////sbit scl=P3^4; // 24c08 SCLsbit sda=P3^5; // 24c08 SDAvoid delay1(unsigned char x){ unsigned int i;for(i=0;i<x;i++);;}void flash(){ ; ; }void x24c08_init() //24c08 初始化子程序{scl=1; flash(); sda=1; flash();}void start() //启动(I方C)总线{sda=1; flash(); scl=1; flash(); sda=0; flash(); scl=0; flash();} void stop() //停止(I方C)总线{sda=0; flash(); scl=1; flash(); sda=1; flash();}void writex(unsigned char j) //写一个字节{ unsigned char i,temp;temp=j;for (i=0;i<8;i++){temp=temp<<1; scl=0; flash(); sda=CY; flash(); scl=1; flash();} scl=0; flash(); sda=1; flash();}unsigned char readx() //读一个字节{unsigned char i,j,k=0;scl=0; flash(); sda=1;for (i=0;i<8;i++){flash(); scl=1; flash();if (sda==1) j=1;else j=0;k=(k<<1)|j;scl=0;}flash(); return(k);}void clock() //(I方C)线时钟{unsigned char i=0;scl=1; flash();while ((sda==1)&&(i<255))i++;scl=0; flash();}////////从24c02 的地址address 中读取一个字节数据/////unsigned char x24c08_read(unsigned char address){unsigned char i;start(); writex(0xa0);clock(); writex(address);clock(); start();writex(0xa1); clock();i=readx(); stop();delay1(10);return(i);}//////向24c02 的address 地址中写入一字节数据info///// void x24c08_write(unsigned char address,unsigned char info){EA=0;start(); writex(0xa0);clock(); writex(address);clock(); writex(info);clock(); stop();EA=1;delay1(50);}/////////////24C08 读写驱动程序完/////////////////////void Delay(unsigned int tc) //延时程序{while( tc != 0 ){unsigned int i;for(i=0; i<100; i++);tc--;}}/////////////////////////////////////////////////////////////////////////////void jishuqi(){if(j==0){cnt++;**t){case 30:e++;cnt=0;break;while(hp==0);}}}void disp(void){for(c=5;c>=0;c--){SBUF=tab[sz[c]];while(!TI);TI=0;}}/*void KEY() //按键扫描程序{unsigned char i,j;if(jian==0){for(i=20;i>0;i--) //延时去干扰for(j=248;j>0;j--);if(hp==0){keycnt++;switch(keycnt) //按下次数判断{case 1: //第一次按下d=46;break;case 2: //第二次按下d=12;break;case 3: //第三次按下d=78;keycnt=0; //重新开始判断键值break;while(hp==0);}}}*/void shizhong(void){z=TH0*256+TL0;if(z>1){w++;z=0;}if(w>59){v++;w=0;}if(v>59){u++;v=0;}if(u>23){u=0;}}void led(void) //显示时间{if(jian==0){u++;}if(gl==0){v++;}if(hp==0){w++;}qw=sz[0]=u/10%10;bw=sz[1]=u%10;sw=sz[2]=v/10%10;gw=sz[3]=v%10;yw=sz[4]=w/10%10;ww=sz[5]=w%10;}void led1(void) //显示价格里程金额{//KEY();if(jian==0){d=46;}if(gl==0){d=78;}if(hp==0){e=0;3.-f=0;}qw=sz[0]=d/10%10;bw=sz[1]=d%10;sw=sz[2]=e/10%10;gw=sz[3]=e%10;yw=sz[4]=f/10%10;ww=sz[5]=f%10;jishuqi();x24c08_write(2,e);}void scjs(void)interrupt 3{TH1=0X3C;TL1=0xB0;a=a+1;if(a==12){a=0;P3_4=!P3_4;if(P3_4==0){//b=TH0*256+TL0; //f=5;/*if(jia==0){d++;}if(jian==0){d--;}if(gl==0){e++;}*/if(e>3){g=e*d/10;f=g;}shizhong();if(jia==0)led();elseled1();disp();jishuqi();}}}main(){x24c08_init(); //初始化24C08e=x24c08_read(2);//读出保存的数据赋于//void KEY();TMOD=0x15;IE=0X88;TH1=0X3C;TL1=0XB0;TR0=1;TR1=1;a=0;while(1);}。