lcdrs=0; P0=com; delay(5);
lcde=1;//使能信号端输入高脉冲 delay(5); lcde=0; }
void write_date(uchar date)//写数据 { lcdrs=1; P0=date; delay(5);
lcde=1;//使能信号端输入高脉冲 delay(5); lcde=0; }
void lcd_init()//lcd初始化 {
lcdrw=0; lcde=0;
write_com(0x38);//设置16X2显示,5X7点阵,8位数据接口 write_com(0x0c);//设置开显示,不显示光标 write_com(0x06);//写一个字符后地址指针加1 write_com(0x01);//显示清0,数据指针清0 }
void int0_ringht()interrupt 0//左边壁障模块检测到信号右转 {
if(rpr==1)//检测红外线是否检测到模块检测到黑线 { n++;
13
if(n==6)//到达终点线
{
fx++;
P2=0x55;//电机反转 delay(10000);//等待10s
n++;
}
delay(100);
}
if(fx==0)
P2=0x2a;//前进时右转 else
P2=0x15;//后退时右转 if(n==13)
{
write_com(0x80+0x0a);//显示路程 a0=TL0; a1=a0*0.102; a2=a1/10; a3=a1-a2*10;
write_date(0x30+a2);//显示路程十位 write_date(0x30+a3);//显示路程个位 write_com(0x80+0x0d); a4=(a1-a2*10-a3)*10;
write_date(0x30+a4);//显示路程十分位 delay(1);
write_com(0x80+0x09+0x40);//显示时间 b0=t; b1=b0/50;
14
b2=b1/10; b3=b1-b2*10;
write_date(0x30+b2);//显示时间十位 write_date(0x30+b3);//显示时间个位 EA=0;//关cpu中断 TR0=0;//关定时器0 TR1=0;//关定时器1 ET1=0;//关定时器1中断 EX0=0;//关外部中断0 EX1=0;//关外部中断1 } }
void int1_left()interrupt 2//右边壁障模块检测到信号左转 {
if(rpr==1)//检测红外线是否检测到模块检测到黑线 { n++;
if(n==6)//到达终点线
{
fx++;
P2=0x55;//电机反转 delay(10000);//等待10s
n++;
}
delay(100);
}
if(fx==0)
P2=0xa2;//前进时左转 else
15
P2=0x51;//后退时左转 if(n==13)
{
write_com(0x80+0x0a);//显示路程 a0=TL0; a1=a0*0.102; a2=a1/10; a3=a1-a2*10;
write_date(0x30+a2);//显示路程十位 write_date(0x30+a3);//显示路程个位 write_com(0x80+0x0d); a4=(a1-a2*10-a3)*10;
write_date(0x30+a4);//显示路程十分位 delay(1);
write_com(0x80+0x09+0x40);//显示时间 b0=t; b1=b0/50; b2=b1/10; b3=b1-b2*10;
write_date(0x30+b2);//显示时间十位 write_date(0x30+b3);//显示时间个位 EA=0;//关cpu中断u中断 TR0=0;//关定时器0 TR1=0;//关定时器1 ET1=0;//关定时器1中断 EX0=0;//关外部中断0 EX1=0;//关外部中断1 } }
16
相关推荐: