最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

單片機學習——獨立按鍵基礎(自用)

2023-03-14 18:56 作者:huabi_fxz  | 我要投稿

原理:

輕觸按鍵,相當于一種電子開關,按下使開關接通,松開時開關斷開,K1、K2、K3、K4公共端接GND,另一端分別接單片機I/O口的P3^0到P3^3,因為單片機4組I/O口P0—P3都是高電平有效,當按鍵按下時,將I/O口拉到低電平使按鍵有效。

按鍵抖動:

一個開關在閉合時不會馬上穩(wěn)定地接通,在斷開時也不會一下子斷開,所以在開關閉合及斷開的瞬間會伴隨一連串的抖動,單片機會檢測出來。

按鍵消抖:

(1)硬件消抖: 加一個電路,將總電路經(jīng)過觸發(fā)器之類的操作進行電路過濾。

(2)軟件消抖:?檢測按鍵按下時,延時時間,再繼續(xù)操作,松手也同樣道理。

軟件部分:

#include "reg52.h"

sbit S7=P3^0;

sbit S6=P3^1;

sbit S5=P3^2;

sbit S4=P3^3; //定義按鍵IO端口


sbit L1=P0^0;

sbit L2=P0^1;

sbit L3=P0^2;

sbit L4=P0^3;

sbit L5=P0^4;

sbit L6=P0^5; //定義LED燈IO端口

void selectHC573(unsigned char n)

{

switch(n)

?{

?case 4:

?P2=(P2 & 0x1f) | 0x80; ?

?break; ? ? ??

?case 5: ? ? ?

?P2=(P2 & 0x1f) | 0xa0;

?break;

?case 6:

?P2=(P2 & 0x1f) | 0xc0;

?break;

?case 7:

?P2=(P2 & 0x1f) | 0xe0;

?break;

}

}


void delayk(unsigned char t)

{

while(t--);

}



void Scankeys_alone() //掃描獨立按鍵

{

if(S7==0)? //判斷是否按下S7

{

? delayk(100);

? if(S7==0) ? //延時消抖后S7依然處于低電平,則確定按下

? {

? L1=0;

? while(S7==0); //判斷S7是否依然工作(神來之筆?。?/span>

? L1=1; //關燈,完成檢測

? }

}

if(S6==0)

{

? delayk(100);

? if(S6==0)

? {

? L2=0;

? while(S7==0);

? L2=1;

? }

}

if(S5==0)

{

? delayk(100);

? if(S5==0)

? {

? L3=0;

? while(S5==0);

? L3=1;

? }

}

if(S4==0)

{

? delayk(100);

? if(S4==0)

? {

? L4=0;

? while(S4==0);

? L4=1;

? }

}

}



void main()

{

?selectHC573(4);//選擇鎖存器處于打開狀態(tài)

?while(1)

?{

?Scankeys_alone();//不斷掃描是否有按鍵按下

?}

}





單片機學習——獨立按鍵基礎(自用)的評論 (共 條)

分享到微博請遵守國家法律
铜梁县| 内乡县| 庆安县| 宝鸡市| 安吉县| 杭锦后旗| 揭西县| 志丹县| 吴堡县| 张北县| 屯留县| 普安县| 睢宁县| 长泰县| 琼海市| 泸溪县| 东乡族自治县| 乳山市| 吐鲁番市| 桃江县| 昆山市| 渝北区| 福安市| 宁国市| 闽侯县| 湖口县| 高青县| 阿拉善左旗| 天柱县| 玉龙| 彩票| 岱山县| 利辛县| 侯马市| 昌宁县| 贵德县| 太仓市| 博罗县| 大理市| 富源县| 武宣县|