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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9493|回復: 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. }
復制代碼


回復

使用道具 舉報

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 來自手機 | 顯示全部樓層
求助在線大神啊
回復

使用道具 舉報

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. }
復制代碼
回復

使用道具 舉報

ID:541189 發表于 2019-5-18 22:58 來自手機 | 顯示全部樓層
感覺if(key==0&state==2)里面key==0不要,應該就可以了。你的程序很難讀,我也是小白
回復

使用道具 舉報

ID:93224 發表于 2019-5-18 23:01 | 顯示全部樓層
if(key==0&state==0)這句話語法錯誤
回復

使用道具 舉報

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 ...

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

使用道具 舉報

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

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

使用道具 舉報

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

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

使用道具 舉報

ID:541458 發表于 2019-5-19 19:46 | 顯示全部樓層
lele5211314 發表于 2019-5-18 23:01
if(key==0&state==0)這句話語法錯誤

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

使用道具 舉報

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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久久久久久 | 日韩欧美一区二区三区 | 精品网站999www | 人人人人干| 日韩精品一区二区在线 | 精精国产xxxx视频在线播放7 | 成人在线免费电影 | 99国产精品久久久 | 一级毛片高清 | 国产午夜一级 | 日本高清视频网站 | 一区二区中文字幕 | 欧美精品一二三 | 欧美日韩综合视频 | 国产精品日韩欧美一区二区三区 | 中文字幕日韩欧美 | 日韩欧美天堂 | 久久亚洲国产精品日日av夜夜 | 99爱在线观看 | 精品久久久久久亚洲精品 | 欧美又大粗又爽又黄大片视频 | 亚洲一区成人 | 免费在线视频a | 婷婷久久网 | 羞羞视频网站 | 国产一区二区精品 | 亚洲第一色av | 精品国产1区2区3区 在线国产视频 | 国产9999精品 | 欧美日韩网站 | 91久久爽久久爽爽久久片 | 91大神在线资源观看无广告 | 国产一区二区小视频 | 97偷拍视频 | 国产探花在线精品一区二区 | 久久久.com | 国产激情视频在线观看 | 欧美一级片免费看 | 欧美夜夜| 又黄又色 | 在线欧美 |