日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

51之按键控制开关

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

原理:按鍵和燈不是我們傳統(tǒng)理解的思維,傳統(tǒng)按鍵和燈是在同一個(gè)電路中的。而我們單片機(jī)編程按鍵 和燈是分開的兩個(gè)電路,通過單片機(jī)作為媒介來處理數(shù)據(jù),通過邏輯來實(shí)現(xiàn)按鍵控制燈

通過上圖可以分析出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接通,表現(xiàn)為低電平,值為0// 燈會(huì)亮,給一個(gè)(p3.7口)低電平ledOne = 0;}if(key2 == 0){ledOne = 1;}} }

軟件消抖

有時(shí)候震動(dòng)燈也會(huì)亮,這種情況是不可取的,所以我們需要消除抖動(dòng)

#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接通,表現(xiàn)為低電平,值為0// 感覺被按下,不知道是抖動(dòng)還是人為的,延遲50ms再判斷Delay50ms();if(key1 == 0){// 燈會(huì)亮,給一個(gè)(p3.7口)低電平ledMark = ON_STATUS;}}if(key2 == 0){ledMark = OFF_STATUS;}if(ledMark == OFF_STATUS){ledOne = 1;}else{ledOne = 0;}} }

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。