的士计价器
一设计任务。
设计并制作一台出租车计价器,调试采用10赫兹脉冲信号,每个脉冲代表汽车
进行10米
不同情况具有不同的收费
(1)白天 1元/公里 晚上 2元/公里 途中等待(〉30秒开始收费)1元/30
秒
(2)数据输出(6位LED数码管显示)
单价(元)输出2位 路程(公里)输出2位 总金额(元)输出2位
(3)按键(3个)
启动计价开关 数据复位 白天/晚上转换
二流程图。
三程序。
#inclde(reg51.h)
#define uchar unsigned char #define uchar unsigned int sbit Y1=P3^4;
sbit Y2=P3^7;
sbit Y3=P3^6;
sbit sd=P3^5;
sbit dula=P2^6;
sbit wela=P2^7;
uchar tep [6];
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
ddsj;
dj;
k1js;
uint 1c;
ddfy;
zfy;
dz;
c,y;
unsigned long jflc;
sjlc;
void delay (uchar i)
{ uchar j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void int()
{ k1js=0;
ddsj=0;
jflc=0;
sjlc=0;
lc=0;
dt=0;
dj=0;
TMOD=0x51;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
IE=0X8A;
}
void xs()
{ uchar x;
tep[0]=dj/10;
tep[1]=dj%10;
tep[2]=sjlc/1000/10;
tep[3]=sjlc/1000%10;
tep[4]=zfy/10;
tep[5]=zfy%10;
c++;
if(c==6) c=0;
r++;
if(r==6) r=0;
x=tep[r];
dula=0;
P0=table[x];
dula=1;
dula=0;
wela=0;
P0=(1<=600)
{ lc=((TH*256)+TL1)*10;
TH1=0;
TL1=0;
sjlc=sjlc+lc;
if(lc>0)
{ jflc=jflc+lc;}
else ddsj++;
dt=0;
lc=0;}
if(P1!=0xf0 keys_scan);
if(pre_keyno!=keyno);
{P0=dsy_code(keyno);
pre_keyno=keyno;
}
delay ms(100);}}