51 マイクロコントローラー: LED ライトの独立したボタン制御

1. LEDライトのステータスを制御する独立したボタン 

        オンオフ実験が完了すると、LED の状態を制御できるようになりますが、まず、キースイッチは機械構造の弾性により、閉じたときに一瞬安定してオンにならず、また、オンにならないことがわかります。オフにすると一斉にオフになります。したがって、ジッターをなくす、つまり適切な遅延を与えるようにプログラムする必要があります。

#include"reg52.h"
//定义LED灯
sbit LED1 = P2^0;
sbit LED2 = P2^1;
sbit LED3 = P2^2;
sbit LED4 = P2^3;
sbit LED5 = P2^4;
sbit LED6 = P2^5;
sbit LED7 = P2^6;
sbit LED8 = P2^7;

//独立したボタンを定義する
sbit KEY1 = P3^1; //ボタン 1 は P3^1 ピン、ボタン 2 は P3^0 ピンであることに注意してください
sbit KEY2 = P3^0;
sbit KEY3 = P3^2;
sbit KEY4 = P3^3; 

void Delay(int time)
{     while(time--) //while ループには 10us かかります     {     } }



 
 int main()
 {     while(1)     {         if(KEY1==0)         {             遅延(500);                while(KEY1==0);             遅延(500);             LED1 =~ LED1;         }









            

    }
 }

実験現象は次のとおりです

2. 独立したボタン制御 LED ライト表示バイナリ

        LEDの点灯・消灯とLEDの状態制御の実験は終了しました LEDライトの2値表示を制御するにはLEDライトP2を直接操作します 初期状態ではP2の全端子がハイレベルを出力し、その後LEDライトの2値表示を制御しますP2 を直接デクリメントします 実験効果は、次のような操作によって実現できます。

#include"reg52.h"

//独立したボタンを定義します
sbit KEY1 = P3^1; //ボタン 1 は P3^1 ピン、ボタン 2 は P3^0 ピンであることに注意してください

void Delay(int time)
{     while(time--) //while循環一回必要10us     {     } }  int main()  {     while(1)     {         if(KEY1==0)         {             Delay(500);                while(KEY1==0);             遅延(500);             P2--;         }




 











            

    }
 }

実験現象は次のとおりです

3. LED ライトシフトを制御する独立したボタン

        独立したキー KEY1 と KEY2 を制御して左右のシフトを実現する手順は次のとおりです。

 #include"reg52.h"

//独立したボタンを定義する
sbit KEY1 = P3^1; //ボタン 1 は P3^1 ピン、ボタン 2 は P3^0 ピンであることに注意してください
sbit KEY2 = P3^0;

void Delay(int time)
{     while(time--) //while ループには 10us かかります     {     } }  int main()  {      int num = -1;      while(1)     {         //LED ライトが右に移動します         if(KEY1 == 0)         {              遅延(500);                while(KEY1==0);             遅延(500);             num++;             if(num>=8)                 num=0;              P2 =~ (0x01<<num);         }




 








            







        

        //LEDランプ左移
        if(KEY2==0)
        {             if(num<=0)                 num=8;             else             {                   遅延(500);                    while(KEY2==0);                 遅延(500);                 番号--;                 P2 =~ (0x01<<num);             }             }    










                

    }
 }

実験現象は次のとおりです

おすすめ

転載: blog.csdn.net/weixin_52300845/article/details/124317717