电路图如上
要实现按键控制公交车报站显示,按下K1显示起点欢迎词,按下K2显示上一站内容,按下K3显示下一站内容,按下K4显示终点欢送词,按键控制部分程序如下,不知道为啥仿真的时候按下K1显示完起点词以后就直接接着往下报了,都不停,按键K2、K3、K4直接是没用了,求大佬帮忙看看程序哪出错了,怎样改一改
程序:
sbit K1=P3^0;
sbit K2=P3^1;
sbit K3=P3^2;
sbit K4=P3^3;
void delay(void)
{
unsigned int n;
for(n=0;n<20000;n++);
}
void main(void)
{
unsigned char i;
i=0; //将i初始化为0
while(1)
{
if(K1==0)
{
delay(); //延时一段时间 按键消抖
if(K1==0)
i=1;
}
if(K2==0)
{
delay(); //延时一段时间 按键消抖
if(K2==0)
i=i-1;
}
if(K3==0)
{
delay(); //延时一段时间 按键消抖
if(K2==0)
i=i+1;
}
if(K4==0)
{
delay(); //延时一段时间 按键消抖
if(K2==0)
i=5;
}
switch(i) //使用多分支选择语句
{
case 1: init_lcd();
Clr_Scr();
LCDMcs=0; //左屏开显示
LCDScs=1;
Bmp_Left_Disp(0,0,Bmp1);// Bmp1为某个汉字的首地址
Bmp_Left_Disp(4,0,Bmp2);
LCDMcs=1; //右屏开显示
LCDScs=0;
Bmp_Right_Disp(0,0,Bmp1);
Bmp_Right_Disp(4,0,Bmp2);
while(1)
break;
case 2: init_lcd();
Clr_Scr();
LCDMcs=0; //左屏开显示
LCDScs=1;
Bmp_Left_Disp(0,0,Bmp3);// Bmp1为某个汉字的首地址
Bmp_Left_Disp(4,0,Bmp4);
LCDMcs=1; //右屏开显示
LCDScs=0;
Bmp_Right_Disp(0,0,Bmp3);
Bmp_Right_Disp(4,0,Bmp4);
while(1)
break;
case 3: init_lcd();
Clr_Scr();
LCDMcs=0; //左屏开显示
LCDScs=1;
Bmp_Left_Disp(0,0,Bmp5);// Bmp1为某个汉字的首地址
Bmp_Left_Disp(4,0,Bmp6);
LCDMcs=1; //右屏开显示
LCDScs=0;
Bmp_Right_Disp(0,0,Bmp5);
Bmp_Right_Disp(4,0,Bmp6);
while(1)
break;
case 4: init_lcd();
Clr_Scr();
LCDMcs=0; //左屏开显示
LCDScs=1;
Bmp_Left_Disp(0,0,Bmp7);// Bmp1为某个汉字的首地址
Bmp_Left_Disp(4,0,Bmp8);
LCDMcs=1; //右屏开显示
LCDScs=0;
Bmp_Right_Disp(0,0,Bmp7);
Bmp_Right_Disp(4,0,Bmp8);
while(1)
break;
case 5: init_lcd();
Clr_Scr();
LCDMcs=0; //左屏开显示
LCDScs=1;
Bmp_Left_Disp(0,0,Bmp9);// Bmp1为某个汉字的首地址
Bmp_Left_Disp(4,0,Bmp10);
LCDMcs=1; //右屏开显示
LCDScs=0;
Bmp_Right_Disp(0,0,Bmp9);
Bmp_Right_Disp(4,0,Bmp10);
while(1)
break;
}
{
}
}
}
|