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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

stc15w408as 四只按鍵 控制四只LED按一次跳一個燈單片機程序問題

  [復制鏈接]
跳轉到指定樓層
樓主
ID:17109 發表于 2017-11-8 15:04 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
現在的是按一次跳一個LED燈、但是在同一個按鍵上按第二次不能關LED燈、各位師傅請幫小弟看看程序還須增加什么語句能實現關LED燈勞煩大家謝謝
4個LED亮滅程序實測視頻




kay1按下.LED1亮.
kay2按下.LED2亮.LED1滅
kay3按下.LED3亮.LED2滅
kay4按下.LED4亮.LED3滅

在每只鍵 上停留時按第二次關led燈須要什樣修改才可以




#include <reg52.h>
#define uchar unsigned char
#define uint  unsigned int
sbit key1=P3^6;                //按鍵1定義
sbit key2=P3^5;                //按鍵2定義
sbit key3=P3^4;                //按鍵3定義
sbit key4=P3^3;                //按鍵4定義
sbit led1=P1^3;                //led1端口
sbit led2=P1^2;                //led2端口
sbit led3=P1^1;                //led3端口
sbit led4=P1^0;                //led4端口

/********按鍵掃描程序*************/
void key_scan()
{
        static bit key1_sign,key2_sign,key3_sign,key4_sign;//靜態位變量按鍵自鎖標志
        static uint count1,count2,count3,count4;//靜態計數變量                        
        
        if(key1==0)                                                        //檢測按鍵1按下
        {
                if(key1_sign==0)
                {
                        count1++;                                        //消抖計數1自+1
                        if(count1>=1000)                        //按主循環周期100~2000調整
                        {
                                key1_sign=1;                        //按鍵1自鎖標志置1
                                led1=0;led2=led3=led4=1;                         //led1取反                        
                        }
                }
        }
        else                                                                //按鍵1抬起
        {
                key1_sign=0;                                         //按鍵1自鎖標志清0
                count1=0;                                                //消抖計數1清0
        }

        if(key2==0)        //檢測按鍵1按下
        {
                if(key2_sign==0)
                {
                        count2++;                                        //消抖計數2自+1
                        if(count2>=1000)                        //按主循環周期100~2000調整
                        {
                                key2_sign=1;                        //按鍵2自鎖標志置1
                                led2=0;led1=led3=led4=1;                         //led2取反                        
                        }
                }
        }
        else                                                                //按鍵2抬起
        {
                key2_sign=0;                                        //按鍵2自鎖標志清0
                count2=0;                                                //消抖計數2清0
        }

        if(key3==0)                                                        //檢測按鍵1按下
        {
                if(key3_sign==0)
                {
                        count3++;                                        //消抖計數1自+1
                        if(count3>=1000)                        //按主循環周期100~2000調整
                        {
                                key3_sign=1;                        //按鍵3自鎖標志置1
                                led3=0;led1=led2=led4=1;                         //led3取反                        
                        }
                }
        }
        else                                                                //按鍵3抬起
        {
                key3_sign=0;                                        //按鍵3自鎖標志清0
                count3=0;                                                //消抖計數3清0
        }

        if(key4==0)                                                        //檢測按鍵1按下
        {
                if(key4_sign==0)
                {
                        count4++;                                        //消抖計數4自+1
                        if(count4>=1000)                        //按主循環周期100~2000調整
                        {
                                key4_sign=1;                        //按鍵4自鎖標志置1
                                led4=0;led1=led2=led3=1;                         //led4取反                        
                        }
                }
        }
        else                                                                //按鍵4抬起
        {
                key4_sign=0;                                        //按鍵4自鎖標志清0
                count4=0;                                                //消抖計數4清0
        }
}
/************主程序************/
void main()
{
        while(1)
        {
                key_scan();                                                //按鍵掃描程序
        }
}

四只按鍵 控制四只LED.zip

21.02 KB, 下載次數: 46

評分

參與人數 1黑幣 +5 收起 理由
阿豪阿阿豪 + 5 很給力!學到了

查看全部評分

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

使用道具 舉報

沙發
ID:248503 發表于 2017-11-12 11:47 | 只看該作者
修改成ledX=~ledX;
X=1,2,3,4
回復

使用道具 舉報

板凳
ID:248319 發表于 2017-11-12 14:14 | 只看該作者

修改成ledX=~ledX;
X=1,2,3,4
回復

使用道具 舉報

地板
ID:126218 發表于 2017-11-12 14:59 | 只看該作者
修改成ledX=~ledX;
X=1,2,3,4
回復

使用道具 舉報

5#
ID:17109 發表于 2017-11-12 16:38 | 只看該作者
cccc8888 發表于 2017-11-12 11:47
修改成ledX=~ledX;
X=1,2,3,4

樓主能戴圖看看什樣改嗎
回復

使用道具 舉報

6#
ID:242890 發表于 2017-11-12 19:30 | 只看該作者
你只寫了按鍵按下,led=0即燈滅,你再怎么按也是led=0;如果你想每按一次,LED燈都由亮變滅或者由滅變亮,就把led=0改成led=~led,~是取反的意思,即0變1,1變0,即每次按下都是相反的狀態
回復

使用道具 舉報

7#
ID:17109 發表于 2017-11-12 20:23 來自觸屏版 | 只看該作者
lebronda 發表于 2017-11-12 19:30
你只寫了按鍵按下,led=0即燈滅,你再怎么按也是led=0;如果你想每按一次,LED燈都由亮變滅或者由滅變亮, ...

上面這程序按一次跳一次燈、能夠修改成可以在同一鍵關LED嗎
回復

使用道具 舉報

8#
ID:164732 發表于 2017-11-12 21:09 | 只看該作者
對我們很有幫助,謝謝
回復

使用道具 舉報

9#
ID:17109 發表于 2017-11-12 23:37 來自觸屏版 | 只看該作者
905377346 發表于 2017-11-12 18:15
按鍵檢測和松手檢測要好好寫一下  你那個可能有點不準

這樣就勞煩師傅指導、給小弟學習一下看看什樣編改、編好把程序粘貼分享一下謝謝
回復

使用道具 舉報

10#
ID:17109 發表于 2017-11-13 16:55 | 只看該作者
cccc8888 發表于 2017-11-12 11:47
修改成ledX=~ledX;
X=1,2,3,4

ed4=0;led1=led2=led3=1;
保留原功能    修改成可以在同一個按鍵  按 第二次鍵關LED可以嗎
回復

使用道具 舉報

11#
ID:17109 發表于 2017-11-13 20:32 | 只看該作者
cccc8888 發表于 2017-11-12 11:47
修改成ledX=~ledX;
X=1,2,3,4

耬主修改好  分享貼貼出來好嗎   謝謝
回復

使用道具 舉報

12#
ID:242890 發表于 2017-11-18 11:00 | 只看該作者
ll13536121668 發表于 2017-11-12 20:23
上面這程序按一次跳一次燈、能夠修改成可以在同一鍵關LED嗎

不太明白你的意思,你可以把你想要的功能描述出來
回復

使用道具 舉報

13#
ID:17109 發表于 2017-11-18 11:22 | 只看該作者
本帖最后由 ll13536121668 于 2017-11-18 16:33 編輯
lebronda 發表于 2017-11-18 11:00
不太明白你的意思,你可以把你想要的功能描述出來

kay1按下.LED1亮.
kay2按下.LED2亮.LED1滅
kay3按下.LED3亮.LED2滅
kay4按下.LED4亮.LED3滅

回復

使用道具 舉報

14#
ID:17109 發表于 2017-11-18 11:33 | 只看該作者
lebronda 發表于 2017-11-18 11:00
不太明白你的意思,你可以把你想要的功能描述出來

上面這個程序能按一鍵亮一個燈 但是沒有關燈,    就是想在4只鍵上加入一個關燈語句  ,就是在按鍵按第二次關led燈須要什樣修改才可以
回復

使用道具 舉報

15#
ID:143637 發表于 2017-11-18 13:44 | 只看該作者
修改成ledX=~ledX;
X=1,2,3,4
回復

使用道具 舉報

16#
ID:58241 發表于 2019-5-21 12:20 | 只看該作者
lebronda說得很正確,只要把
led1=0改成 led1=~led1;
led2=0改成 led2=~led2;
led3=0改成 led3=~led3;
led4=0改成 led4=~led4;

就解決問題了。
回復

使用道具 舉報

17#
ID:511890 發表于 2019-5-21 17:42 | 只看該作者
就改key1,其他的同理:
if(count1>=1000)                        //按主循環周期100~2000調整
                        {
                                key1_sign=1;                        //按鍵1自鎖標志置1
                                led1=0;led2=led3=led4=1;                         //led1取反                        
                        }
改成:
if(count1>=1000)                        //按主循環周期100~2000調整
    {
                if(led1==0){
                        key1_sign=1;                        //按鍵1自鎖標志置1
                        led1=1;
                }else{
                        key1_sign=1;                        //按鍵1自鎖標志置1
                        led1=0;led2=led3=led4=1;                        //led1取反                        
                }
    }
回復

使用道具 舉報

18#
ID:548116 發表于 2019-5-28 07:48 | 只看該作者
你這就不是
回復

使用道具 舉報

19#
ID:548116 發表于 2019-5-28 07:52 | 只看該作者
你這就程序不是
kay1按下.LED1亮.
kay2按下.LED2亮.LED1滅
kay3按下.LED3亮.LED2滅
kay4按下.LED4亮.LED3滅
你演示只是按順序按的而已
實際是
kay1按下.LED1亮,其他全滅
kay2按下.LED2亮,其他全滅
kay3按下.LED3亮,其他全滅
kay4按下.LED4亮,其他全滅

LED1=-LED1  才能達到2次滅
回復

使用道具 舉報

20#
ID:586438 發表于 2019-7-23 11:34 | 只看該作者
這個程序弄出來嗎  能不能分享一下  非常感謝,本人小白,目前正在嘗試這個方面
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美激情精品久久久久久 | 二区视频 | 亚洲精品久久久久久久久久久久久 | 91精品久久久久 | 国产欧美一区二区三区在线看 | 国产精品无码久久久久 | av毛片 | 国产成人高清成人av片在线看 | 精品国产伦一区二区三区观看方式 | 91美女视频| 欧美在线观看网站 | 日本成人在线播放 | 久久精品国产久精国产 | 在线成人福利 | 久久精品青青大伊人av | 国产精品成人一区二区三区 | 久草新在线| 丁香婷婷在线视频 | 欧美.com| 亚洲综合国产精品 | 亚洲精品www | 精品欧美一区二区三区免费观看 | 最新中文字幕第一页视频 | 久久高清亚洲 | 欧美一区二区激情三区 | 在线91| 精品国产一区二区在线 | 亚洲高清免费 | 免费一级毛片 | 成人激情视频免费在线观看 | 天天综合国产 | 久久精品av麻豆的观看方式 | 亚洲精品9999 | 亚洲网站观看 | 夜夜骑首页 | 天天操夜夜骑 | 超碰人人人人 | 国产精品中文字幕在线播放 | 自拍第一页| 日韩视频一区在线观看 | 亚洲一区久久久 |