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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2958|回復: 7
收起左側

關于單片機按鍵控制多種流水該如何實現?

[復制鏈接]
ID:438648 發表于 2018-12-4 20:16 來自觸屏版 | 顯示全部樓層 |閱讀模式
有沒有哪位大佬知道如何實現一個按鍵控制多種流水要怎樣實現我現在是一個初學者,中斷這些都沒有學,具體要求就是按一下,它會開始第一種流水,在按一下,開始第二種,在按一下,開始第三種,跪求!
回復

使用道具 舉報

ID:292571 發表于 2018-12-4 22:22 | 顯示全部樓層
慢慢學,等你懂了才是真正的理解了
回復

使用道具 舉報

ID:282256 發表于 2018-12-4 22:48 | 顯示全部樓層
流水的本質是按照一定的次序點亮一顆顆燈,如順著來  反著來 跳著來,即模式,通過按鍵計數,切換模式
回復

使用道具 舉報

ID:439695 發表于 2018-12-4 23:41 | 顯示全部樓層
看樣子是個小的課程設計吧。我做完發給你。我們正在做。
回復

使用道具 舉報

ID:317383 發表于 2018-12-5 07:57 | 顯示全部樓層



#include <reg51.h>
#define uchar unsigned char
#define uint  unsigned int
sbit P20=P2^0;
sbit P21=P2^1;
sbit P22=P2^2;
sbit P23=P2^3;
//**************************
void delay();
void liushui();
void jiou();
void doubleLiushui();
void gaodi4();
//**************************
void main()
{
uchar flag=0;
while(1)
{
        //if(P1^0xff)
        {
          if(!P20){flag=0;}
                if(!P21){flag=1;}
                if(!P22){flag=2;}
                if(!P23){flag=3;}
        }
        switch(flag)
        {
                case 0: liushui();break;                        //á÷Ë®
                case 1: jiou();        break;                                //ÆæÅ¼
                case 2:        gaodi4();break;                                //¸ßμí4λ
                case 3: doubleLiushui();break;//ÆæÅ¼
                default : break;
        }
}
}
//*************************************
void liushui()//***á÷Ë®***
{       
        uchar a;
        a=0x01;
        P1=~a;
        while(1)
        {        
                delay();   
          a=a<<1;
          if(a==0x00) a=0x01;       
          P1=~a;
                if(P2^0xff)return;
         }
}
void jiou()//***ÆæÅ¼Î»***
{
        uchar a;
        a=0x55;
        P1=a;
        while(1)
        {        
          delay();   
          a=~a;                       
          P1=a;
                if(P2^0xff)return;               
         }
}
void doubleLiushui()//***Ë«á÷Ë®***
{
        uchar a;
        a=0x03;
        P1=~a;
        while(1)
        {        
                delay();   
          a=a<<1;
          if(a==0x00) a=0x03;       
          P1=~a;
                if(P2^0xff)return;               
         }
}
void gaodi4()//***¸ßμí4λ***
{
        uchar a;
        a=0x0F;
        P1=a;
        while(1)
        {        
          delay();   
          a=~a;                       
          P1=a;
                if(P2^0xff)return;               
         }
}
void delay()//***Ñóê±***
{
        unsigned int i,k;
        for(k=1;k<100;k++)
                for(i=1;i<255;i++);
}

新建位圖圖像.jpg
4keyflash.gif
回復

使用道具 舉報

ID:438322 發表于 2018-12-5 08:36 | 顯示全部樓層
用IF語句來寫,設定三個按鍵,然后if(SW1==1){流水燈第一種順序}if(SW2==1){流水燈第二種順序}if(SW3==1){流水燈第三種順序}
回復

使用道具 舉報

ID:410399 發表于 2018-12-5 08:39 | 顯示全部樓層
就說一下簡單的思路吧
  1. if(k1 == 0)   //按鍵按下
  2. {
  3.     if(key == 0)
  4.     {
  5.         .......    //功能
  6.         key++;     //設置一個標志位,記錄按下次數(做好軟件消抖,不然會跳著來)
  7.     }
  8.     if(key == 1)
  9.     {...........;   key++;}
  10.   
  11.     ...

  12. }
復制代碼
回復

使用道具 舉報

ID:434807 發表于 2018-12-5 08:53 | 顯示全部樓層
既然你要用按鍵,那么按鍵應該學了吧,給你個大致思路,把你自己想的流水燈,第一種花樣和第二個花樣以至于N個寫為多個子函數,這樣當按鍵按下時直接調用,某個函數就行了。至于在哪里調用的話,這個就很隨意了,你可以在按鍵按下后立即調用,也可以是按鍵按下后賦予鍵值,然后在主函數里用if或者switch()case,進行選擇判斷。至于程序嘛,這個比較基礎,自己看書后模仿書上例程就可以寫出來了,這比別人直接給你程序要有意義的多。

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产在线观看一区二区三区 | 免费观看一级毛片 | 亚洲久久久 | 亚洲精品一区二区三区蜜桃久 | 亚洲啪啪 | 国产精品免费观看 | m豆传媒在线链接观看 | av网站免费在线观看 | 欧美精品在线一区二区三区 | 国产精品亚洲精品日韩已方 | 日韩一区在线播放 | 最近免费日本视频在线 | 日韩av一区二区在线观看 | 欧美一区二区在线观看视频 | 亚洲日本欧美日韩高观看 | 国产精品久久久久久久免费大片 | 精品国产一区二区国模嫣然 | 欧美日韩精品一区二区三区四区 | 亚洲国产中文字幕 | 色黄网站 | 四色成人av永久网址 | 日韩成人| av黄色国产 | 欧美 日韩 亚洲91麻豆精品 | 亚洲免费在线视频 | 欧美午夜在线 | 日韩一区二区在线观看 | 毛片av免费在线观看 | 日韩综合在线视频 | 日韩亚洲一区二区 | 一区二区国产精品 | 天天拍天天操 | 欧美综合视频 | 亚洲一区二区在线播放 | 嫩草视频在线看 | 99久久久国产精品 | 精品一区二区三区免费视频 | 日韩电影一区 | 99亚洲精品 | 特黄色一级毛片 | 美女久久久久 |