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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

51之按键控制开关

發布時間:2024/1/18 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 51之按键控制开关 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原理:按鍵和燈不是我們傳統理解的思維,傳統按鍵和燈是在同一個電路中的。而我們單片機編程按鍵 和燈是分開的兩個電路,通過單片機作為媒介來處理數據,通過邏輯來實現按鍵控制燈

通過上圖可以分析出key1是接到P2.1口,所以只要不斷的檢測P2.1口的值(0:按下,1:松開)就知道按鍵是否被按下了

#include "reg52.h"sbit ledOne = P3^7; sbit key1 = P2^1; sbit key2 = P2^0;void main() {// 查詢法檢測,是否被按下while(1){if(key1 == 0){ //KEY1位置和GND接通,表現為低電平,值為0// 燈會亮,給一個(p3.7口)低電平ledOne = 0;}if(key2 == 0){ledOne = 1;}} }

軟件消抖

有時候震動燈也會亮,這種情況是不可取的,所以我們需要消除抖動

#include "reg52.h"#define ON_STATUS 1 #define OFF_STATUS 0sbit ledOne = P3^7; sbit key1 = P2^1; sbit key2 = P2^0;void Delay50ms() //@11.0592MHz {unsigned char i, j;i = 90;j = 163;do{while (--j);} while (--i); }void main() {int ledMark = OFF_STATUS;ledOne = 1;// 查詢法檢測,是否被按下while(1){if(key1 == 0){ //KEY1位置和GND接通,表現為低電平,值為0// 感覺被按下,不知道是抖動還是人為的,延遲50ms再判斷Delay50ms();if(key1 == 0){// 燈會亮,給一個(p3.7口)低電平ledMark = ON_STATUS;}}if(key2 == 0){ledMark = OFF_STATUS;}if(ledMark == OFF_STATUS){ledOne = 1;}else{ledOne = 0;}} }

總結

以上是生活随笔為你收集整理的51之按键控制开关的全部內容,希望文章能夠幫你解決所遇到的問題。

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