日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

51单片机实现独立按键控制LED灯

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 51单片机实现独立按键控制LED灯 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本節博客主要實現以下效果:

?3-1獨立按鍵控制LED亮滅

? ? 本段代碼主要使用了if...else...語句實現按下按下燈亮,松開按鍵時燈滅

#include <REGX51.H>void main() {while(1){if(P3_1==0&&P3_0==0){P2_0=0;}else{P2_0=1;}} }

?3-2獨立按鍵控制LED狀態

首先使用較為靈活的延時函數生成代碼,進行修改后如下

void Delay(unsigned int xms) {unsigned char i, j;while(xms){i = 2;j = 239;do{while (--j);} while (--i);xms--;} }

?按鍵代碼:

void main() {while(1){if(P3_1==0){Delay(20);while(P3_1==0); //{}Delay(20);P2_0=~P2_0;}} }

實現效果:

?3-2獨立按鍵控制LED狀態

?3-3獨立按鍵控制LED顯示二進制

顯示二進制的延時函數與上述一致,但是按鍵部分稍有變化

if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);LEDNum++; P2=~LEDNum; }

注意:要對按鍵進行消抖,判斷按鍵是否仍然繼續按下,在此之前定義一個局部變量記錄變化,最后讓其取反賦值給P2

unsigned char LEDNum=0;

實現效果:

?3-3獨立按鍵控制LED顯示二進制

?3-4獨立按鍵控制LED移位

3-4設置兩個按鍵控制LED燈的移位,延時部分一致,與3-3比較可以定義一個全局變量

unsigned char LEDNum;

?P3_1控制LED右移,P3_0控制LED左移

if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);LEDNum++;if(LEDNum>=8)LEDNum=0;P2=~(0x01<<LEDNum);}if(P3_0==0){Delay(20);while(P3_0==0);Delay(20);if(LEDNum==0)LEDNum=7;elseLEDNum--;P2=~(0x01<<LEDNum);}

一開始D1是不亮的,所以可在代碼前添加以下代碼,表示將其狀態取反后賦值給P2

P2=~0x01;

實現效果:

?3-4獨立按鍵控制LED移位

總結

以上是生活随笔為你收集整理的51单片机实现独立按键控制LED灯的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。