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

標題: 有兩種單片機流水燈形式,想要加兩個按鍵切換流水燈模式,程序應該怎么改,謝謝 [打印本頁]

作者: cxy822    時間: 2024-5-20 21:53
標題: 有兩種單片機流水燈形式,想要加兩個按鍵切換流水燈模式,程序應該怎么改,謝謝
新手求助:有兩種流水燈形式,想加兩個按鍵切換流水燈模式,按鍵程序搞半天也沒整明白,請高人指點,謝謝!按鍵1執行 void disp0()
按鍵2執行 void disp1()
請大佬們幫幫忙,萬分感謝!
單片機源程序如下:
#include <REGX52.H>
#define        uint        unsigned int
#define        uchar        unsigned char
uchar code table0[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//LED從低位往高位移
uchar code table1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//LED從高位往低位移
uchar i,j;                //定義循環變量
uint tt=70;                //定義時間指數
void delay(uint time)        //延時函數
{
        uint x,y;
        for(x=time;x>0;x--)
        for(y=110;y>0;y--);
}

void disp0()                        //狀態1 LED順時針轉一圈
{
        for(i=0;i<8;i++)
        {
                P2=table1[ i];
                delay(100);
        }
        P2=0xff;

        for(i=0;i<8;i++)
        {
                P0=table0[ i];
                delay(100);
        }
        P0=0xff;
}
void disp1()                        //狀態0 所有LED閃爍3次
{
        for(i=0;i<3;i++)
        {
                P0=0x00; P2=0x00;
                delay(300);
                P0=0xff; P2=0xff;
                delay(300);
        }
}
void main()
{        
        while(1)
        {        
         disp0();                //狀態1 LED順時針轉一圈
        disp1();                //狀態0 所有LED閃爍3次
  }

}



93caf1d444a37d821636c66be211e3c.png (42.97 KB, 下載次數: 18)

93caf1d444a37d821636c66be211e3c.png

作者: LaoYuTou    時間: 2024-5-21 08:18
定義按鍵端口
sbit key1 =  P1^6;
sbit key2 =  P1^7;
在主循環中while(1)中改為
{
  if(!key1)
  {//可以考慮消抖,仿真中可不用。
    disp0();
    while(!key1);//等待按鍵釋放
  }
  if(!key2)
  {
     disp1();
     while(!key2);//等待按鍵釋放
  }
}
這種方法不是特別推薦,可以額外定義一邊量作為狀態初始為0,按鍵按下后狀態改變(1或2),根據狀態調用對應函數,調用完后變量清零。這相當于只調用一次的任務。
作者: cheney03    時間: 2024-5-21 08:58
先定義兩個按鍵參數sbit k1=P1^6; sbit k2=P1^7;  主函數:        if(k1==0)        //檢測按鍵K1是否按下{delay(1000);   //消除抖動 一般大約10ms  if(k1==0)         //再次判斷按鍵是否按下{disp0();   //模式1}while(!k1);         //檢測按鍵1是否松開              if(k2==0)        //檢測按鍵K2是否按下{delay(1000);   //消除抖動 一般大約10ms  if(k2==0)//再次判斷按鍵是否按下{disp1();   //模式2}while(!k2);         //檢測按鍵2是否松開
作者: xiaobendan001    時間: 2024-5-21 09:25
if(按鍵1)disp0();
if(按鍵2)disp1();
作者: cxy822    時間: 2024-5-23 20:28
LaoYuTou 發表于 2024-5-21 08:18
定義按鍵端口
sbit key1 =  P1^6;
sbit key2 =  P1^7;

謝謝!剛開始弄,研究一下
作者: cxy822    時間: 2024-5-23 20:29
cheney03 發表于 2024-5-21 08:58
先定義兩個按鍵參數sbit k1=P1^6; sbit k2=P1^7;  主函數:        if(k1==0)        //檢測按鍵K1是否按下{delay(1000);  ...

謝謝!我弄一下試試。
作者: cxy822    時間: 2024-5-23 20:30
xiaobendan001 發表于 2024-5-21 09:25
if(按鍵1)disp0();
if(按鍵2)disp1();

謝謝!




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产区第一页 | 午夜激情免费 | 亚洲av毛片成人精品 | 日韩中文字幕免费在线 | 国产成人一区二区三区 | 成在线人视频免费视频 | 91视频大全 | 亚洲第1页| 国产精品永久免费观看 | 天天爽夜夜爽精品视频婷婷 | 中文字幕第一页在线 | 一区二区三区四区在线视频 | 99热精品在线 | 国产精品福利在线 | 国产区第一页 | 国产高清在线观看 | 99久久精品免费看国产高清 | 日韩五月天 | 国产偷录视频叫床高潮对白 | 久草精品视频 | 国产午夜精品理论片a大结局 | 亚洲a人 | 日韩成人久久 | 欧美亚洲综合久久 | 久久国产亚洲 | 色综合天天天天做夜夜夜夜做 | 国产日韩欧美 | 一级黄色av电影 | 爱操av | 天天操天天摸天天爽 | 高清av电影 | 欧美激情精品久久久久久变态 | 亚洲人人| 亚洲成人免费电影 | 久久久久久久久综合 | 国产精品视频一区二区三区 | 欧美一区二区三区四区视频 | 久久免费视频1 | 亚洲精品在线视频 | 欧美视频区 | a级黄色毛片免费播放视频 国产精品视频在线观看 |