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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

C51单片机之按键控制LED【02】

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

前言

1.獨立按鍵


當按下時,金屬彈片下壓,使得中間3個點連接一起。

查看原理圖

#include <REGX52.H> // REGX52有關于位定義的,而REG52則沒有,需要自己sbit定義

2.按下K1點亮LED

#include <REGX52.H> // REGX52有關于位定義的,而REG52則沒有,需要自己sbit定義 #include <INTRINS.H>// 延時xms void Delay1ms(unsigned int xms) //@11.0592MHz {unsigned char i, j;while (xms) // while里面是延時1ms的代碼{_nop_();i = 2;j = 199;do{while (--j);} while (--i);--xms;} } void test1() {while (1){if(P3_1 == 0) // 按下按鍵K1 點亮LED{P2_0 = 0;}else{P2_0 = 1;}} }void main() {test1(); }


利用軟件延時消抖。

if(P3_1 == 0) {Delay1ms(20); // 軟件延時消抖while (P3_1 == 0); // 檢測松手Delay1ms(20); // 延時消抖 }

3.按鍵控制LED狀態

#include <REGX52.H> // REGX52有關于位定義的,而REG52則沒有,需要自己sbit定義 #include <INTRINS.H>// 延時xms void Delay1ms(unsigned int xms) //@11.0592MHz {unsigned char i, j;while (xms--) // while里面是延時1ms的代碼{_nop_();i = 2;j = 199;do{while (--j);} while (--i);} }// 按下按鍵才點亮,再按一次就熄滅 void test2() {while (1){if(P3_1 == 0){Delay1ms(20); // 軟件延時消抖while (P3_1 == 0); // 檢測松手Delay1ms(20); // 延時消抖P2_0 = ~P2_0;}}} void main() {test2(); }

4.按鍵控制LED移位

// 獨立按鍵控制LED移位 // 所使用開發板D1~D8是從左到右的 // 按下K1右移,按下K2左移 void test4() {unsigned char LEDNum = 0;P2 = 0xFE;// 上電時要讓D1點亮while (1){if (P3_1 == 0){// 軟件消抖Delay1ms(20);while (P3_1 == 0); // 檢測松手Delay1ms(20);LEDNum++;if (LEDNum >= 8){LEDNum = 0;}// 0x01 << 1 --> 0000 0010 取反 --> 1111 1101// 0x01 << 2 --> 0000 0100 取反 --> 1111 1011// ...// 0x01 << 7 --> 1000 0000 取反 --> 0111 1111// 0x01 << 8 --> 0000 0000 取反 --> 1111 1111// 因此當左移到8位時,需要重新從0開始移位P2 = ~(0x01 << LEDNum);}// 按下K2右移if (P3_0 == 0){// 軟件消抖Delay1ms(20);while (P3_0 == 0); // 檢測松手Delay1ms(20);if(LEDNum == 0){LEDNum = 7; // 0再--就變成255了}else{LEDNum--;}P2 = ~(0x01 << LEDNum);}} } void main() {test4(); }

尾聲

🌹🌹🌹

寫文不易,如果有幫助煩請點個贊~ 👍👍👍

Thanks?(・ω・)ノ🌹🌹🌹

😘😘😘

👀👀由于筆者水平有限,在今后的博文中難免會出現錯誤之處,本人非常希望您如果發現錯誤,懇請留言批評斧正,希望和大家一起學習,一起進步ヽ( ̄ω ̄( ̄ω ̄〃)ゝ,期待您的留言評論。
附GitHub倉庫鏈接

總結

以上是生活随笔為你收集整理的C51单片机之按键控制LED【02】的全部內容,希望文章能夠幫你解決所遇到的問題。

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