久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9668|回復: 11
打印 上一主題 下一主題
收起左側

單片機如何實現一個按鍵控制三個led燈,我的程序有問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:541458 發表于 2019-5-18 15:57 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
要求是按下按鍵 第一個亮 再按一下第二個亮第一個滅  第三下第三個亮第二個滅  我做的  存在問題 求助大神

單片機源程序如下:
  1. #include<reg51.h>
  2. #define uint unsigned int
  3. sbit key=P0^1;
  4. sbit r=P3^0;
  5. sbit g=P3^1;
  6. sbit b=P3^2;
  7. char state;
  8. void delay_1ms(uint t)
  9. {
  10.   uint i;
  11.         while(--t)
  12.           for(i=0;i<600;i++);
  13. }
  14. void main()
  15. {
  16.   key=1;
  17.         r=1;
  18.         g=1;
  19.         b=1;
  20.         state=0;
  21.         while(1)
  22.         {
  23.           if(key==0)
  24.                 {
  25.                   delay_1ms(20);
  26.                         if(key==0&state==0)r=~r;
  27.                 }
  28.                 if(key!=0)state=1;
  29.                 if(key==0)
  30.                 {
  31.                   delay_1ms(20);
  32.                   if(key==0&state==1)
  33.                   {
  34.                           r=~r;
  35.                           g=~g;
  36.                   }
  37.                 }
  38.                 if(key!=0)state=2;
  39.                 if(key==0)
  40.                 {
  41.                   delay_1ms(20);
  42.                   if(key==0&state==2)
  43.                   {
  44.                           g=~g;
  45.                           b=~b;
  46.                   }
  47.                 }
  48.                 if(key!=0)state=0;
  49.         }
  50. }
復制代碼


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

使用道具 舉報

沙發
ID:21069 發表于 2019-5-18 22:24 | 只看該作者
程式如下: if(SW==1)    led1=1, led2=0, led2=0:
                if(SW==2)    led1=0, led2=1, led2=0:
                if(SW==3)    led1=0, led2=0, led2=1:
如此下去....................
回復

使用道具 舉報

板凳
ID:512205 發表于 2019-5-18 22:34 | 只看該作者
做按鍵次數標記再執行吧 ,我的方法是用switch ,不知大家有沒更好方法.下面是我做的一個項目的按鍵選擇部分,你可參考一下.case 0 1 2 3 就是按鍵次數執行不同的語句而已!

/*************************************************************/
//2úÆ·Ñ¡Ôñ
void pro_scan_key()
{

   if(K_CPXZ==0 && QD_BJ==1 && GZ_ID==0) //éèÖÃÄ£ê½óDD§
         {                 
delay(20);
if(K_CPXZ==0 && QD_BJ==1 )
         while(!K_CPXZ);        //êÇ·ñËé¿a
                {  
                                 CP_ID++;
                                if(CP_ID>=4)
                                        CP_ID=0;
                                At24c02Write(10,CP_ID);   //ÔúμØÖ·100ÄúD′èëêy¾YCP_ID
                                delay(20);
                                GXYS_SJ=1;GXYS_BJ=1;                //×Ô¶¨1¤DòÑóê±ê±¼ä¼°¿aê¼¼Æê±

                               
                }
         }


   switch(CP_ID)      //SHU4ÎaÖ÷Öáμç»ú×aËù SHU1Îa»úí·μç»ú SHU2Îa±èày
                {
                        case 0:{ SHU1=8; SHU2=1; ZJSD=8; SHU4=90; ZJSJ=150; }; break;
                        case 1:{ SHU1=20; SHU2=1; ZJSD=60;SHU4=90;ZJSJ=150;};break;
                        case 2:{ SHU1=50; SHU2=5; ZJSD=40;SHU4=90;ZJSJ=99;};break;
                        case 3:{ SHU1=90; SHU2=10; ZJSD=90;SHU4=90;ZJSJ=9;};break;
          }
}
回復

使用道具 舉報

地板
ID:541458 發表于 2019-5-18 22:40 來自觸屏版 | 只看該作者
求助在線大神啊
回復

使用道具 舉報

5#
ID:213173 發表于 2019-5-18 22:46 | 只看該作者
樓主這樣寫會亂套,需要有按鍵松手檢測。給你改了,你試試。
注:P0端口用于按鍵需要外接10K上拉電阻
  1. #include<reg51.h>
  2. #define uint unsigned int
  3. sbit key=P0^1;
  4. sbit r=P3^0;
  5. sbit g=P3^1;
  6. sbit b=P3^2;
  7. unsigned char state;
  8. void delay_1ms(uint t)
  9. {
  10.         uint i;
  11.         while(--t)
  12.                 for(i=0;i<600;i++);
  13. }
  14. void main()
  15. {
  16.         key=1;
  17.         r=1;
  18.         g=1;
  19.         b=1;
  20.         state=0;
  21.         while(1)
  22.         {
  23.                 if(key==0)
  24.                 {
  25.                         delay_1ms(20);
  26.                         if(key==0)
  27.                         {
  28.                                 state++;
  29.                                 if(state==1)
  30.                                 {
  31.                                         r=~r;
  32.                                 }
  33.                                 if(state==2)
  34.                                 {
  35.                                         r=~r;
  36.                                         g=~g;
  37.                                 }
  38.                                 if(state==3)
  39.                                 {
  40.                                         g=~g;
  41.                                         b=~b;
  42.                                 }
  43.                                 if(state>=4)
  44.                                 {
  45.                                         state=0;
  46.                                         r=g=b=1;
  47.                                 }
  48.                                 while(!key);//等待松手
  49.                         }
  50.                 }
  51.         }
  52. }
復制代碼
回復

使用道具 舉報

6#
ID:541189 發表于 2019-5-18 22:58 來自觸屏版 | 只看該作者
感覺if(key==0&state==2)里面key==0不要,應該就可以了。你的程序很難讀,我也是小白
回復

使用道具 舉報

7#
ID:93224 發表于 2019-5-18 23:01 | 只看該作者
if(key==0&state==0)這句話語法錯誤
回復

使用道具 舉報

8#
ID:541458 發表于 2019-5-19 19:18 | 只看該作者
jinsheng7533967 發表于 2019-5-18 22:24
程式如下: if(SW==1)    led1=1, led2=0, led2=0:
                if(SW==2)    led1=0, led2=1, l ...

這種可以 但簡單了寫 老師讓我們讓我們加個變值
回復

使用道具 舉報

9#
ID:541458 發表于 2019-5-19 19:37 | 只看該作者
wulin 發表于 2019-5-18 22:46
樓主這樣寫會亂套,需要有按鍵松手檢測。給你改了,你試試。
注:P0端口用于按鍵需要外接10K上拉電阻

大體可以 不過要實現第三個燈亮后 再按是第一個燈亮 依次循環應怎么修改
回復

使用道具 舉報

10#
ID:541458 發表于 2019-5-19 19:44 | 只看該作者
QZQ1973 發表于 2019-5-18 22:34
做按鍵次數標記再執行吧 ,我的方法是用switch ,不知大家有沒更好方法.下面是我做的一個項目的按鍵選擇部 ...

還是小白 消化不了大神的程序
回復

使用道具 舉報

11#
ID:541458 發表于 2019-5-19 19:46 | 只看該作者
lele5211314 發表于 2019-5-18 23:01
if(key==0&state==0)這句話語法錯誤

語法應該沒問題  keil5ok的  但仿真不行 會亂套
回復

使用道具 舉報

12#
ID:805286 發表于 2020-7-18 23:20 | 只看該作者
wulin 發表于 2019-5-18 22:46
樓主這樣寫會亂套,需要有按鍵松手檢測。給你改了,你試試。
注:P0端口用于按鍵需要外接10K上拉電阻

下載了運行,完美
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久最新精品 | 手机av在线| 欧美激情精品久久久久久 | 日日日干干干 | 毛片的网址 | 亚洲精品www | 激情欧美日韩一区二区 | 99精品国产一区二区青青牛奶 | 欧美性猛交一区二区三区精品 | 91精品国产91久久久久游泳池 | 在线视频 亚洲 | 亚洲免费在线 | 午夜日韩 | 国产一级片 | 国产一级片在线观看视频 | 欧美精品日韩精品 | 91国产精品在线 | 亚洲精品字幕 | 欧美人妇做爰xxxⅹ性高电影 | 欧美一级黄色免费看 | 一区二区视频在线观看 | 亚洲视频不卡 | 国产精品爱久久久久久久 | 日韩日韩日韩日韩日韩日韩日韩 | 精品日韩一区 | 日日夜夜av | 久久久青草婷婷精品综合日韩 | 伊人精品久久久久77777 | 欧美成人精品一区二区三区 | 日韩精品一区二区三区免费视频 | 91精品国产一区二区三区 | 精品视频一区二区 | 久久精品国产久精国产 | 国产精品伦一区二区三级视频 | 欧美二区在线 | 国产亚洲一区在线 | 免费一区在线 | 欧美成人hd | 欧美亚洲另类在线 | 精品欧美乱码久久久久久1区2区 | 久久精品视频9 |