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

標(biāo)題: stc15w408as四只按鍵控制四只LED 單片機程序問題 [打印本頁]

作者: ll13536121668    時間: 2017-12-9 20:54
標(biāo)題: stc15w408as四只按鍵控制四只LED 單片機程序問題
本帖最后由 ll13536121668 于 2017-12-19 15:58 編輯

現(xiàn)在的是按一次打開LED燈、再按一次關(guān)LED燈      改點動方式    鍵按下,led燈亮,松開,led燈關(guān)。   、各位師傅請幫小弟看看程序還須增加什么語句能實現(xiàn)點動方式開關(guān)LED燈勞煩大家謝謝

單片機源程序:
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. sbit key1=P1^3;                //按鍵1定義
  5. sbit key2=P1^2;                //按鍵2定義
  6. sbit key3=P1^1;                //按鍵3定義
  7. sbit key4=P1^0;                //按鍵4定義
  8. sbit led1=P3^6;                //led1端口
  9. sbit led2=P3^5;                //led2端口
  10. sbit led3=P3^4;                //led3端口
  11. sbit led4=P3^3;                //led4端口

  12. /********按鍵掃描程序*************/
  13. void key_scan()
  14. {
  15.         static bit key1_sign,key2_sign,key3_sign,key4_sign;//靜態(tài)位變量按鍵自鎖標(biāo)志
  16.         static uint count1,count2,count3,count4;//靜態(tài)計數(shù)變量                        
  17.         
  18.         if(key1==0)                                                        //檢測按鍵1按下
  19.         {
  20.                 if(key1_sign==0)
  21.                 {
  22.                         count1++;                                        //消抖計數(shù)1自+1
  23.                         if(count1>=1000)                        //按主循環(huán)周期100~2000調(diào)整
  24.                         {
  25.                                 key1_sign=1;                        //按鍵1自鎖標(biāo)志置1
  26.                                 led1=~led1;                         //led1取反                        
  27.                         }
  28.                 }
  29.         }
  30.         else                                                                //按鍵1抬起
  31.         {
  32.                 key1_sign=0;                                         //按鍵1自鎖標(biāo)志清0
  33.                 count1=0;                                                //消抖計數(shù)1清0
  34.         }

  35.         if(key2==0)        //檢測按鍵1按下
  36.         {
  37.                 if(key2_sign==0)
  38.                 {
  39.                         count2++;                                        //消抖計數(shù)2自+1
  40.                         if(count2>=1000)                        //按主循環(huán)周期100~2000調(diào)整
  41.                         {
  42.                                 key2_sign=1;                        //按鍵2自鎖標(biāo)志置1
  43.                                 led2=~led2;                         //led2取反                        
  44.                         }
  45.                 }
  46.         }
  47.         else                                                                //按鍵2抬起
  48.         {
  49.                 key2_sign=0;                                        //按鍵2自鎖標(biāo)志清0
  50.                 count2=0;                                                //消抖計數(shù)2清0
  51.         }

  52.         if(key3==0)                                                        //檢測按鍵1按下
  53.         {
  54.                 if(key3_sign==0)
  55.                 {
  56.                         count3++;                                        //消抖計數(shù)1自+1
  57.                         if(count3>=1000)                        //按主循環(huán)周期100~2000調(diào)整
  58.                         {
  59.                                 key3_sign=1;                        //按鍵3自鎖標(biāo)志置1
  60.                                 led3=~led3;                         //led3取反                        
  61.                         }
  62.                 }
  63.         }
  64.         else                                                                //按鍵3抬起
  65.         {
  66.                 key3_sign=0;                                        //按鍵3自鎖標(biāo)志清0
  67.                 count3=0;                                                //消抖計數(shù)3清0
  68.         }

  69.         if(key4==0)                                                        //檢測按鍵1按下
  70.         {
  71.                 if(key4_sign==0)
  72.                 {
  73.                         count4++;                                        //消抖計數(shù)4自+1
  74.                         if(count4>=1000)                        //按主循環(huán)周期100~2000調(diào)整
  75.                         {
  76.                                 key4_sign=1;                        //按鍵4自鎖標(biāo)志置1
  77.                                 led4=~led4;                         //led4取反                        
  78.                         }
  79.                 }
  80.         }
  81.         else                                                                //按鍵4抬起
  82.         {
  83.                 key4_sign=0;                                        //按鍵4自鎖標(biāo)志清0
  84.                 count4=0;                                                //消抖計數(shù)4清0
  85.         }
  86. }
  87. /************主程序************/
  88. void main()
  89. {
  90.         while(1)
  91.         {
  92.                 key_scan();                                                //按鍵掃描程序
  93.         }
  94. }
復(fù)制代碼


4個獨立按鍵控制4個LED.zip

20.98 KB, 下載次數(shù): 29


作者: ly789    時間: 2017-12-12 12:29
判斷行不行

作者: lxmxyw    時間: 2017-12-12 15:51
判斷按鍵有沒有松開。
作者: ll13536121668    時間: 2017-12-12 16:00
ly789 發(fā)表于 2017-12-12 12:29
判斷行不行

改點動方式    按一次開LED燈     放手就關(guān)LED燈   、各位師傅請幫小弟看看程序還須增加什么語句能實現(xiàn)點動方式開關(guān)LED燈勞煩大家謝謝

作者: ll13536121668    時間: 2017-12-12 16:27
lxmxyw 發(fā)表于 2017-12-12 15:51
判斷按鍵有沒有松開。

按一次開LED燈    松開就關(guān)LED燈
作者: ll13536121668    時間: 2017-12-12 16:29
lxmxyw 發(fā)表于 2017-12-12 15:51
判斷按鍵有沒有松開。

增加什么語句能實現(xiàn)點動方式開關(guān)LED
作者: Bjfhygh    時間: 2017-12-12 16:46
ll13536121668 發(fā)表于 2017-12-12 16:29
增加什么語句能實現(xiàn)點動方式開關(guān)LED

對不起兄弟,這個不會。我是小白,試試能不能掙點黑
作者: wenyaozu    時間: 2017-12-12 17:58
對不起兄弟,這個不會。我是小白,試試能不能掙點黑
作者: 111245525452    時間: 2017-12-12 18:03
對不起兄弟,這個不會。我是小白,試試能不能掙點黑
作者: rongshubaihe    時間: 2017-12-12 19:05
改為點動方式可以在每個else語句內(nèi)清完標(biāo)志后增加一條語句:ledx=0;//
作者: rongshubaihe    時間: 2017-12-12 19:18
在每個else語句清完標(biāo)志后增加:led(x)=0;或著led(x)=1;//根據(jù)硬件電路選擇
作者: lxhxz99996666    時間: 2017-12-12 21:54
試試多加一個類似消抖的判斷
作者: ll13536121668    時間: 2017-12-13 10:47
rongshubaihe 發(fā)表于 2017-12-12 19:05
改為點動方式可以在每個else語句內(nèi)清完標(biāo)志后增加一條語句:ledx=0;//

師傅你好:在   else語句什樣增加一條語句:ledx=0;//     可以修改粘貼上傳戴圖看看嗎   勞煩師傅 謝謝





歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1