五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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();//不斷掃描是否有按鍵按下

?}

}





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

分享到微博請遵守國家法律
六盘水市| 庆城县| 新晃| 永州市| 昭觉县| 昔阳县| 安龙县| 南江县| 临江市| 桑日县| 开封市| 根河市| 台中市| 铁岭市| 江川县| 易门县| 台前县| 玉溪市| 腾冲县| 余姚市| 富源县| 土默特右旗| 什邡市| 宝山区| 子洲县| 金寨县| 开封县| 康马县| 福泉市| 松原市| 永兴县| 五台县| 乐业县| 岚皋县| 靖州| 台湾省| 汨罗市| 桑日县| 高雄县| 长岭县| 台州市|