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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 15706|回復(fù): 17
收起左側(cè)

4個(gè)獨(dú)立按鍵控制4個(gè)LED亮滅

[復(fù)制鏈接]
ID:17109 發(fā)表于 2017-11-16 16:25 | 顯示全部樓層 |閱讀模式
stc15w408as,   4只按鍵到的LED就亮、各位師傅請(qǐng)幫小弟看看程序、要在同一個(gè)按鍵關(guān)LED  還須增加什么語(yǔ)句能實(shí)現(xiàn)關(guān)LED燈勞煩大家謝謝


4個(gè)LED亮滅程序?qū)崪y(cè)視頻




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

修改在每只鍵 上停留時(shí)按第二次能關(guān)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;//靜態(tài)位變量按鍵自鎖標(biāo)志
        static uint count1,count2,count3,count4;//靜態(tài)計(jì)數(shù)變量                        

        if(key1==0)                                                        //檢測(cè)按鍵1按下
        {
                if(key1_sign==0)
                {
                        count1++;                                        //消抖計(jì)數(shù)1自+1
                        if(count1>=1000)                        //按主循環(huán)周期100~2000調(diào)整
                        {
                                key1_sign=1;                        //按鍵1自鎖標(biāo)志置1
                                led1=0;led2=led3=led4=1;                         //led1取反                        
                        }
                }
        }
        else                                                                //按鍵1抬起
        {
                key1_sign=0;                                         //按鍵1自鎖標(biāo)志清0
                count1=0;                                                //消抖計(jì)數(shù)1清0
        }

        if(key2==0)        //檢測(cè)按鍵1按下
        {
                if(key2_sign==0)
                {
                        count2++;                                        //消抖計(jì)數(shù)2自+1
                        if(count2>=1000)                        //按主循環(huán)周期100~2000調(diào)整
                        {
                                key2_sign=1;                        //按鍵2自鎖標(biāo)志置1
                                led2=0;led1=led3=led4=1;                         //led2取反                        
                        }
                }
        }
        else                                                                //按鍵2抬起
        {
                key2_sign=0;                                        //按鍵2自鎖標(biāo)志清0
                count2=0;                                                //消抖計(jì)數(shù)2清0
        }

        if(key3==0)                                                        //檢測(cè)按鍵1按下
        {
                if(key3_sign==0)
                {
                        count3++;                                        //消抖計(jì)數(shù)1自+1
                        if(count3>=1000)                        //按主循環(huán)周期100~2000調(diào)整
                        {
                                key3_sign=1;                        //按鍵3自鎖標(biāo)志置1
                                led3=0;led1=led2=led4=1;                         //led3取反                        
                        }
                }
        }
        else                                                                //按鍵3抬起
        {
                key3_sign=0;                                        //按鍵3自鎖標(biāo)志清0
                count3=0;                                                //消抖計(jì)數(shù)3清0
        }

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






4個(gè)獨(dú)立按鍵控制4個(gè)led.zip

20.71 KB, 下載次數(shù): 81

回復(fù)

使用道具 舉報(bào)

ID:111634 發(fā)表于 2017-11-16 18:35 | 顯示全部樓層
本帖最后由 zl2168 于 2017-11-16 18:36 編輯

實(shí)例5  4種不同方式鍵控信號(hào)燈
Proteus仿真一下,確認(rèn)有效。
實(shí)例5 不同方式鍵控?zé)?rar (31.72 KB, 下載次數(shù): 39)
4種不同方式鍵控信號(hào)燈.jpg
以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1.書(shū)中電路和程序設(shè)計(jì)有詳細(xì)說(shuō)明,程序語(yǔ)句條條有注解。
回復(fù)

使用道具 舉報(bào)

ID:17109 發(fā)表于 2017-11-19 22:51 | 顯示全部樓層
上面這個(gè)程序能按一鍵亮一個(gè)燈 但是沒(méi)有關(guān)燈,    就是想在4只鍵上加入一個(gè)關(guān)燈語(yǔ)句  ,就是在按鍵按第二次關(guān)led燈須要什樣修改才可以
回復(fù)

使用道具 舉報(bào)

ID:247666 發(fā)表于 2017-11-20 18:36 | 顯示全部樓層
led=!led試試
回復(fù)

使用道具 舉報(bào)

ID:251605 發(fā)表于 2017-11-20 20:37 | 顯示全部樓層
其實(shí)你這樣也并不好給每個(gè)按鍵定義一個(gè)變量,相當(dāng)于它的鍵值,比如key1對(duì)應(yīng)于P1.1口,燈在P.1,sbit P13=P1^3; sbit P21=P2^1; key1=0;if(P13==0){key1=!key1P21=key1;}
回復(fù)

使用道具 舉報(bào)

6#
無(wú)效樓層,該帖已經(jīng)被刪除
ID:17109 發(fā)表于 2017-11-21 11:03 | 顯示全部樓層
51dianzihy 發(fā)表于 2017-11-20 20:37
其實(shí)你這樣也并不好給每個(gè)按鍵定義一個(gè)變量,相當(dāng)于它的鍵值,比如key1對(duì)應(yīng)于P1.1口,燈在P.1,sbit P13=P1 ...

保持這個(gè)程序的功能、在四只按鍵、按第二下能關(guān)LED
燈樓主懂修改嗎幫小弟看看謝謝
回復(fù)

使用道具 舉報(bào)

ID:251930 發(fā)表于 2017-11-21 16:09 | 顯示全部樓層
第一次按下,小燈點(diǎn)亮,松手后燈依舊亮,然后等第二次按下的時(shí)候,小燈才滅對(duì)吧,
第一次按鍵松開(kāi)后,小燈狀態(tài)不變,而后再加入一個(gè)if(按鍵再次按下),小燈再取反
回復(fù)

使用道具 舉報(bào)

ID:17109 發(fā)表于 2017-11-21 19:04 | 顯示全部樓層
芥末醬 發(fā)表于 2017-11-21 16:09
第一次按下,小燈點(diǎn)亮,松手后燈依舊亮,然后等第二次按下的時(shí)候,小燈才滅對(duì)吧,
第一次按鍵松開(kāi)后,小燈 ...

樓主你好   能修改后上傳程序看看好嗎   謝謝
回復(fù)

使用道具 舉報(bào)

ID:231632 發(fā)表于 2017-11-22 00:16 | 顯示全部樓層
#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;//靜態(tài)位變量按鍵自鎖標(biāo)志
        static uint count1,count2,count3,count4;//靜態(tài)計(jì)數(shù)變量  
                uint bzw1=1,bzw2=1,bzw3=1,bzw4=1;//設(shè)置標(biāo)志位。                     

        if(key1==0)                                                        //檢測(cè)按鍵1按下
        {
                if(key1_sign==0)
                {
                        count1++;                                        //消抖計(jì)數(shù)1自+1
                        if(count1>=1000)                        //按主循環(huán)周期100~2000調(diào)整
                        {
                                key1_sign=1;                                           //按鍵1自鎖標(biāo)志置1
                                                                if(bzw1==1)                       
                                        led1=0;led2=led3=led4=1;                         //led1取反  
                                                                else
                                                                        led1=led2=led3=led4=1;                              
                        }
                }
                                bzw1++;
                                if(bzw1>3)
                                        bzw1=1;

        }
        else                                                                //按鍵1抬起
        {
                key1_sign=0;                                         //按鍵1自鎖標(biāo)志清0
                count1=0;                                                //消抖計(jì)數(shù)1清0
        }

        if(key2==0)        //檢測(cè)按鍵1按下
        {
                if(key2_sign==0)
                {
                        count2++;                                        //消抖計(jì)數(shù)2自+1
                        if(count2>=1000)                        //按主循環(huán)周期100~2000調(diào)整
                        {
                                key2_sign=1;                        //按鍵2自鎖標(biāo)志置1
                                                                if(bzw2==1)
                                        led2=0;led1=led3=led4=1;                         //led2取反  
                                                                else
                                                                        led1=led2=led3=led4=1;                              
                        }
                }
                                bzw2++;
                                if(bzw2>3)
                                        bzw2=1;
        }
        else                                                                //按鍵2抬起
        {
                key2_sign=0;                                        //按鍵2自鎖標(biāo)志清0
                count2=0;                                                //消抖計(jì)數(shù)2清0
        }

        if(key3==0)                                                        //檢測(cè)按鍵1按下
        {
                if(key3_sign==0)
                {
                        count3++;                                        //消抖計(jì)數(shù)1自+1
                        if(count3>=1000)                        //按主循環(huán)周期100~2000調(diào)整
                        {
                                key3_sign=1;                        //按鍵3自鎖標(biāo)志置1
                                                                if(bzw3==1)
                                        led3=0;led1=led2=led4=1;                         //led3取反
                                                                else
                                                                        led1=led2=led3=led4=1;                       
                        }
                }
                                bzw3++;
                                if(bzw3>3)
                                        bzw3=1;
        }
        else                                                                //按鍵3抬起
        {
                key3_sign=0;                                        //按鍵3自鎖標(biāo)志清0
                count3=0;                                                //消抖計(jì)數(shù)3清0
        }

        if(key4==0)                                                        //檢測(cè)按鍵1按下
        {
                if(key4_sign==0)
                {
                        count4++;                                        //消抖計(jì)數(shù)4自+1
                        if(count4>=1000)                        //按主循環(huán)周期100~2000調(diào)整
                        {
                                key4_sign=1;                        //按鍵4自鎖標(biāo)志置1
                                                                if(bzw4==1)
                                               led4=0;led1=led2=led3=1;                         //led4取反
                                                                else
                                                                        led1=led2=led3=led4=1;                       
                        }                  
                }
                                bzw4++;
                                if(bzw4>3)
                                        bzw4=1;
        }
        else                                                                //按鍵4抬起
        {
                key4_sign=0;                                        //按鍵4自鎖標(biāo)志清0
                count4=0;                                                //消抖計(jì)數(shù)4清0
        }
}
/************主程序************/
void main()
{
        while(1)
        {
                key_scan();                                                //按鍵掃描程序
        }
}
這是修改的,
回復(fù)

使用道具 舉報(bào)

ID:231046 發(fā)表于 2017-11-22 08:14 | 顯示全部樓層
i et 不用這第復(fù)雜吧,直接用switch 語(yǔ)句行了
回復(fù)

使用道具 舉報(bào)

ID:17109 發(fā)表于 2017-11-22 10:12 | 顯示全部樓層
david888 發(fā)表于 2017-11-22 08:14
i et 不用這第復(fù)雜吧,直接用switch 語(yǔ)句行了

師博你好  什樣修改能簡(jiǎn)化程序  直接用switch 語(yǔ)句行   
能修改后上傳程序看看好嗎   謝謝
回復(fù)

使用道具 舉報(bào)

ID:17109 發(fā)表于 2017-11-22 10:43 | 顯示全部樓層
ljn123123 發(fā)表于 2017-11-22 00:16
#include
#define uchar unsigned char
#define uint  unsigned int

樓主你好   你修改   的程序   用Keil uVision4軟件能通過(guò)嗎      小弟試過(guò)不能通過(guò)
回復(fù)

使用道具 舉報(bào)

14#
無(wú)效樓層,該帖已經(jīng)被刪除
ID:231046 發(fā)表于 2017-11-22 13:59 | 顯示全部樓層
可先初始化所有LED關(guān),然后判斷是那個(gè)按鍵,點(diǎn)亮相應(yīng)的燈就行,在WHILE 里
回復(fù)

使用道具 舉報(bào)

ID:231046 發(fā)表于 2017-11-22 14:07 | 顯示全部樓層
按那個(gè)就那個(gè)亮,其它的關(guān)了,這樣就能用了
回復(fù)

使用道具 舉報(bào)

ID:17109 發(fā)表于 2017-11-22 15:25 | 顯示全部樓層
david888 發(fā)表于 2017-11-22 14:07
按那個(gè)就那個(gè)亮,其它的關(guān)了,這樣就能用了

師博你好      能修改后上傳程序看看好嗎   謝謝
回復(fù)

使用道具 舉報(bào)

ID:252387 發(fā)表于 2017-11-22 19:26 | 顯示全部樓層
我只硬件模擬,沒(méi)有真的做過(guò)硬件
回復(fù)

使用道具 舉報(bào)

ID:17109 發(fā)表于 2017-11-22 22:55 來(lái)自觸屏版 | 顯示全部樓層
david888 發(fā)表于 2017-11-22 13:59
可先初始化所有LED關(guān),然后判斷是那個(gè)按鍵,點(diǎn)亮相應(yīng)的燈就行,在WHILE 里

樓主小弟初學(xué)可以修改后上傳嗎?謝謝
回復(fù)

使用道具 舉報(bào)

ID:111634 發(fā)表于 2017-11-23 11:15 | 顯示全部樓層
ll13536121668 發(fā)表于 2017-11-19 22:51
上面這個(gè)程序能按一鍵亮一個(gè)燈 但是沒(méi)有關(guān)燈,    就是想在4只鍵上加入一個(gè)關(guān)燈語(yǔ)句  ,就是在按鍵按第二次 ...

S3按第一次亮,按第二次暗,不是嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人精品一区二区三区中文字幕 | 日韩精品在线免费观看 | 亚洲视频免费一区 | 亚洲精品国产第一综合99久久 | 天天操欧美 | 北条麻妃视频在线观看 | 狠狠色综合网站久久久久久久 | 日本成人在线免费视频 | 三级av网址| 在线毛片网 | 噜噜噜色网 | 国产精品国产精品国产专区不蜜 | 天天干夜夜 | 97伦理| 欧美日韩中文字幕在线播放 | 日本中文字幕在线视频 | 欧美视频一区二区三区 | 国产高清视频一区 | 精品1区2区3区4区 | 中文字幕不卡在线观看 | 亚洲 欧美 另类 日韩 | 亚洲精品久久久久久久久久久久久 | 91久久久久久久 | 久久一级免费视频 | 四虎海外 | 国产一区二区不卡 | 一区二区免费看 | 夜夜骑av| 人人人人干| 久久精品这里 | 欧美大片一区 | 久久一区精品 | 天天干成人网 | 天天干天天爱天天操 | 免费午夜视频在线观看 | 国产99精品 | 欧美久久一区二区三区 | 免费在线视频a | 中文字幕第一页在线 | 久久精品小视频 | 毛片一级黄色 |