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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

有兩種單片機流水燈形式,想要加兩個按鍵切換流水燈模式,程序應該怎么改,謝謝

[復制鏈接]
回帖獎勵 50 黑幣 回復本帖可獲得 5 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
新手求助:有兩種流水燈形式,想加兩個按鍵切換流水燈模式,按鍵程序搞半天也沒整明白,請高人指點,謝謝!按鍵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
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1080935 發表于 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),根據狀態調用對應函數,調用完后變量清零。這相當于只調用一次的任務。
回復

使用道具 舉報

板凳
ID:743654 發表于 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是否松開
回復

使用道具 舉報

地板
ID:1109793 發表于 2024-5-21 09:25 | 只看該作者
if(按鍵1)disp0();
if(按鍵2)disp1();
回復

使用道具 舉報

5#
ID:1105755 發表于 2024-5-23 20:28 | 只看該作者
LaoYuTou 發表于 2024-5-21 08:18
定義按鍵端口
sbit key1 =  P1^6;
sbit key2 =  P1^7;

謝謝!剛開始弄,研究一下
回復

使用道具 舉報

6#
ID:1105755 發表于 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);  ...

謝謝!我弄一下試試。
回復

使用道具 舉報

7#
ID:1105755 發表于 2024-5-23 20:30 | 只看該作者
xiaobendan001 發表于 2024-5-21 09:25
if(按鍵1)disp0();
if(按鍵2)disp1();

謝謝!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩精品影院 | 久久一区二区精品 | 五月天国产视频 | 国产精品久久久久久久久久 | 一区二区久久 | 综合网伊人 | 伊人导航 | 在线视频国产一区 | 久久亚洲欧美日韩精品专区 | 久久久久国产精品 | 日韩欧美国产综合 | 在线精品国产 | 青青草一区二区三区 | 久久久久久久久久久蜜桃 | 久久免费资源 | 日韩av成人 | 一区二区三区国产好 | av一级在线观看 | 国产亚洲区 | 久久黄色网| 欧美成年人网站 | 天天精品在线 | 欧美日韩最新 | 日本成人区| 日本爱爱 | 日本在线网站 | 在线观看www视频 | 玖玖国产| 日韩第1页| 亚洲视频二 | 免费精品视频在线观看 | 午夜在线精品偷拍 | 欧美日韩综合 | 天天天操 | 亚洲视频一区二区三区 | 国产日韩一区二区三区 | 日韩欧美亚洲 | 亚洲成人精品在线 | 狠狠操狠狠操 | 色综合久久久久 | 成人高清在线 |