C51单片机之按键控制LED【02】
生活随笔
收集整理的這篇文章主要介紹了
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(); }
利用軟件延時消抖。
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】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python3提取字符串中的手机号码
- 下一篇: 针对初学者以 MQL5 编写“EA 交易