欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1743|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)公交車報(bào)站顯示程序有問(wèn)題,求大佬幫忙看看指導(dǎo)指導(dǎo)

[復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 50 黑幣 回復(fù)本帖可獲得 10 黑幣獎(jiǎng)勵(lì)! 每人限 1 次
跳轉(zhuǎn)到指定樓層
樓主
ID:720043 發(fā)表于 2020-4-7 00:57 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

電路圖如上
要實(shí)現(xiàn)按鍵控制公交車報(bào)站顯示,按下K1顯示起點(diǎn)歡迎詞,按下K2顯示上一站內(nèi)容,按下K3顯示下一站內(nèi)容,按下K4顯示終點(diǎn)歡送詞,按鍵控制部分程序如下,不知道為啥仿真的時(shí)候按下K1顯示完起點(diǎn)詞以后就直接接著往下報(bào)了,都不停,按鍵K2、K3、K4直接是沒(méi)用了,求大佬幫忙看看程序哪出錯(cuò)了,怎樣改一改
程序:
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();  //延時(shí)一段時(shí)間 按鍵消抖
                if(K1==0)
                i=1;
          }
         if(K2==0)
         {
                delay();  //延時(shí)一段時(shí)間 按鍵消抖
                if(K2==0)
                i=i-1;
         }
         if(K3==0)
         {
                delay();  //延時(shí)一段時(shí)間 按鍵消抖
                if(K2==0)
                i=i+1;
         }
         if(K4==0)
         {
                delay();  //延時(shí)一段時(shí)間 按鍵消抖
                if(K2==0)
                i=5;
         }
         
          switch(i)  //使用多分支選擇語(yǔ)句
                {
    case 1: init_lcd();
Clr_Scr();
LCDMcs=0; //左屏開顯示
LCDScs=1;
Bmp_Left_Disp(0,0,Bmp1);// Bmp1為某個(gè)漢字的首地址
    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為某個(gè)漢字的首地址
    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為某個(gè)漢字的首地址
    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為某個(gè)漢字的首地址
    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為某個(gè)漢字的首地址
    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;        
                }
    {
  
}
    }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:592807 發(fā)表于 2020-4-7 08:29 | 只看該作者
if(k1 == 0){}else if(k2==0){}else if(k3 == 0){}else{};
另外你switch里面每個(gè)break都市跳出他前面的while(1);所以你的switch里面每個(gè)case后面都沒(méi)有帶break,所以會(huì)一直往下
回復(fù)

使用道具 舉報(bào)

板凳
ID:405033 發(fā)表于 2020-4-7 09:34 | 只看該作者
本帖最后由 瘋子本人 于 2020-4-7 16:49 編輯

不知道你這樣寫的目的,每個(gè)switch的每個(gè)case不用加while,直接break就好,而且最后面有個(gè)無(wú)效的括號(hào),頭文件沒(méi)有,P3是矩陣按鍵,你可以參考參考矩陣的寫法
回復(fù)

使用道具 舉報(bào)

地板
ID:584814 發(fā)表于 2020-4-7 12:58 | 只看該作者
那么多的while(1)
回復(fù)

使用道具 舉報(bào)

5#
ID:720043 發(fā)表于 2020-4-7 20:44 | 只看該作者
黃youhui 發(fā)表于 2020-4-7 08:29
if(k1 == 0){}else if(k2==0){}else if(k3 == 0){}else{};
另外你switch里面每個(gè)break都市跳出他前面的whi ...

我想問(wèn)下怎樣實(shí)現(xiàn)swich語(yǔ)句中執(zhí)行完case1后再重新判定swich表達(dá)式的值而不是繼續(xù)往下執(zhí)行case2
回復(fù)

使用道具 舉報(bào)

6#
ID:592807 發(fā)表于 2020-4-8 13:08 | 只看該作者
起個(gè)名真難。 發(fā)表于 2020-4-7 20:44
我想問(wèn)下怎樣實(shí)現(xiàn)swich語(yǔ)句中執(zhí)行完case1后再重新判定swich表達(dá)式的值而不是繼續(xù)往下執(zhí)行case2

switch(n)
{
case 0:代碼1;break;
case 1:代碼2;break;
.
.
.
default:break;


}
回復(fù)

使用道具 舉報(bào)

7#
ID:592807 發(fā)表于 2020-4-8 17:29 | 只看該作者
起個(gè)名真難。 發(fā)表于 2020-4-7 20:44
我想問(wèn)下怎樣實(shí)現(xiàn)swich語(yǔ)句中執(zhí)行完case1后再重新判定swich表達(dá)式的值而不是繼續(xù)往下執(zhí)行case2

把你的while(1)去掉或者在break后面再加一個(gè)break就好了,switch檢測(cè)道case后面的break就會(huì)跳出,但是你代碼里面的break被你的while(1)抵消掉了
回復(fù)

使用道具 舉報(bào)

8#
ID:573999 發(fā)表于 2020-4-8 21:23 | 只看該作者
給個(gè)經(jīng)典的按鍵掃描做法給你

按鍵SCAN.pdf

113.88 KB, 下載次數(shù): 6

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表