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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3934|回復: 12
收起左側

stc15w408as四只按鍵控制四只LED 單片機程序問題

[復制鏈接]
ID:17109 發表于 2017-12-9 20:54 | 顯示全部樓層 |閱讀模式
本帖最后由 ll13536121668 于 2017-12-19 15:58 編輯

現在的是按一次打開LED燈、再按一次關LED燈      改點動方式    鍵按下,led燈亮,松開,led燈關。   、各位師傅請幫小弟看看程序還須增加什么語句能實現點動方式開關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;//靜態位變量按鍵自鎖標志
  16.         static uint count1,count2,count3,count4;//靜態計數變量                        
  17.         
  18.         if(key1==0)                                                        //檢測按鍵1按下
  19.         {
  20.                 if(key1_sign==0)
  21.                 {
  22.                         count1++;                                        //消抖計數1自+1
  23.                         if(count1>=1000)                        //按主循環周期100~2000調整
  24.                         {
  25.                                 key1_sign=1;                        //按鍵1自鎖標志置1
  26.                                 led1=~led1;                         //led1取反                        
  27.                         }
  28.                 }
  29.         }
  30.         else                                                                //按鍵1抬起
  31.         {
  32.                 key1_sign=0;                                         //按鍵1自鎖標志清0
  33.                 count1=0;                                                //消抖計數1清0
  34.         }

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

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

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


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

20.98 KB, 下載次數: 29

回復

使用道具 舉報

ID:260572 發表于 2017-12-12 12:29 | 顯示全部樓層
判斷行不行
回復

使用道具 舉報

ID:260696 發表于 2017-12-12 15:51 | 顯示全部樓層
判斷按鍵有沒有松開。
回復

使用道具 舉報

ID:17109 發表于 2017-12-12 16:00 | 顯示全部樓層

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

使用道具 舉報

ID:17109 發表于 2017-12-12 16:27 | 顯示全部樓層
lxmxyw 發表于 2017-12-12 15:51
判斷按鍵有沒有松開。

按一次開LED燈    松開就關LED燈
回復

使用道具 舉報

ID:17109 發表于 2017-12-12 16:29 | 顯示全部樓層
lxmxyw 發表于 2017-12-12 15:51
判斷按鍵有沒有松開。

增加什么語句能實現點動方式開關LED
回復

使用道具 舉報

ID:260727 發表于 2017-12-12 16:46 來自手機 | 顯示全部樓層
ll13536121668 發表于 2017-12-12 16:29
增加什么語句能實現點動方式開關LED

對不起兄弟,這個不會。我是小白,試試能不能掙點黑
回復

使用道具 舉報

ID:256523 發表于 2017-12-12 17:58 | 顯示全部樓層
對不起兄弟,這個不會。我是小白,試試能不能掙點黑
回復

使用道具 舉報

ID:260765 發表于 2017-12-12 18:03 | 顯示全部樓層
對不起兄弟,這個不會。我是小白,試試能不能掙點黑
回復

使用道具 舉報

ID:260784 發表于 2017-12-12 19:05 | 顯示全部樓層
改為點動方式可以在每個else語句內清完標志后增加一條語句:ledx=0;//
回復

使用道具 舉報

ID:260784 發表于 2017-12-12 19:18 | 顯示全部樓層
在每個else語句清完標志后增加:led(x)=0;或著led(x)=1;//根據硬件電路選擇
回復

使用道具 舉報

ID:260871 發表于 2017-12-12 21:54 | 顯示全部樓層
試試多加一個類似消抖的判斷
回復

使用道具 舉報

ID:17109 發表于 2017-12-13 10:47 | 顯示全部樓層
rongshubaihe 發表于 2017-12-12 19:05
改為點動方式可以在每個else語句內清完標志后增加一條語句:ledx=0;//

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本aⅴ中文字幕 | 日韩国产一区二区三区 | 国产成人免费视频网站视频社区 | 日韩精品一区中文字幕 | 国产亚洲精品久久情网 | 免费欧美 | 欧美精品国产一区二区 | 精品不卡 | 日韩精品一区在线 | 亚洲精品综合 | 国产视频2021 | 亚洲国产一区二区三区 | a级毛片免费高清视频 | 国产一区二区三区不卡av | 在线看日韩 | 国产高清在线观看 | 欧美一级欧美三级在线观看 | 亚洲国产中文在线 | 在线中文视频 | 色黄视频在线 | 亚洲精品在线免费看 | 97狠狠干 | 国产精品久久9 | 北条麻妃99精品青青久久主播 | 成人欧美一区二区三区在线观看 | 亚洲精品乱码久久久久久蜜桃91 | 精品日韩 | 欧美国产激情 | 国产一区亚洲 | 69av在线视频| 酒色成人网| 欧美自拍第一页 | 日本在线网站 | 91麻豆产精品久久久久久夏晴子 | 亚洲码欧美码一区二区三区 | 欧美a级成人淫片免费看 | 久久久久免费精品国产小说色大师 | 麻豆精品国产91久久久久久 | 作爱视频免费看 | 国产一区二区av | 欧美videosex性极品hd |