在本次課程中,我將向大家介紹單片機(jī)的輸入口的使用。
在這里,我以最簡(jiǎn)單的檢測(cè)一個(gè)按鍵是否被按下為例來(lái)向大家介紹。
一、STC15W408AS按鍵檢測(cè)電路
下面是本例中按鍵檢測(cè)的電路原理圖,K1是一個(gè)按鍵,它接在單片機(jī)的P3.3口上,R2是一個(gè)與按鍵連接的上拉電阻。

二、按鍵檢測(cè)原理
在本例中,按鍵與單片機(jī)的第14腳(P3.3引腳)相連。當(dāng)按鍵沒(méi)有按下時(shí),P3.3的電平是高電平;當(dāng)按鍵被按下時(shí),按鍵將P3.3與地短接,此時(shí)P3.3的電平為低電平。
從分析可知,根據(jù)P3.3電平的變化狀態(tài),我們可以知道按鍵是否被按下。因此,我們只要檢測(cè)P3.3電平的狀態(tài),就可以判斷出按鍵的狀態(tài)。
三、STC15W408AS輸入模式配置方法
為了讓單片機(jī)能檢測(cè)按鍵,我們必須將單片機(jī)的P3.3口設(shè)置為輸入口,也就信號(hào)是從單片機(jī)外輸入到單片機(jī)內(nèi)。因此,必須將單片機(jī)的IO口模式設(shè)置為輸入模式。
如果要將STC15W408AS的引腳配置成輸入模式,只需修改PxM0和PxM1兩個(gè)寄存器的值。下面是STC15的STC15W408AS引腳的配置說(shuō)明:

四、按鍵檢測(cè)有關(guān)代碼
下面是本例中,按鍵檢測(cè)相關(guān)的代碼:
#define Pin_KEY P33
#define Pin_KEY_M1 P3M1
#define Pin_KEY_M0 P3M0
#define Pin_KEY_BIT BIT3
#define GetKey_High() Pin_KEY==1
void PinKEY_DirIn(void)
{
Pin_KEY_M1 &=~Pin_KEY_BIT;
Pin_KEY_M0 &=~Pin_KEY_BIT;
}
五、本例中按鍵檢測(cè)指示
為了顯示按鍵的是否被按下,我們用上節(jié)課程中介紹的單片機(jī)點(diǎn)LED的亮滅狀態(tài)來(lái)表示按鍵的狀態(tài)。當(dāng)按鍵沒(méi)被按下時(shí),LED不亮;當(dāng)按鍵被按下時(shí),LED燈點(diǎn)亮。
請(qǐng)看下面代碼:
PinKEY_DirIn(); //將按鍵所在的口設(shè)置為輸入模式
while(TRUE)
{
if(GetKey_High()) //如果檢測(cè)到按鍵口是高電平
{
PinLed_High(); //則將LED所在口置高,LED不亮。
}else{
PinLed_Low(); //否則,將LED所在口置低,LED點(diǎn)亮
}
}
六、按鍵檢測(cè)完整源程序
#define BIT0 0x01
#define BIT1 0x02
#define BIT2 0x04
#define BIT3 0x08
#define BIT4 0x10
#define BIT5 0x20
#define BIT6 0x40
#define BIT7 0x80
#define TRUE 1
#define FALSE 0
#define BEEP_ON 1
#define BEEP_OFF 0
#define Pin_LED P32
#define Pin_LED_M1 P3M1
#define Pin_LED_M0 P3M0
#define Pin_LED_BIT BIT2
#define PinLed_High() Pin_LED=1
#define PinLed_Low() Pin_LED=0
#define Pin_KEY P33
#define Pin_KEY_M1 P3M1
#define Pin_KEY_M0 P3M0
#define Pin_KEY_BIT BIT3
#define GetKey_High() Pin_KEY==1
void PinKEY_DirIn(void);
void PinLED_DirOut(void);
void main(void)
{
PinLED_DirOut();
PinKEY_DirIn();
PinLed_Low();
while(TRUE)
{
if(GetKey_High())
{
PinLed_High();
}else{
PinLed_Low();
}
}
}
void PinKEY_DirIn(void)
{
Pin_KEY_M1 &=~Pin_KEY_BIT;
Pin_KEY_M0 &=~Pin_KEY_BIT;
}
void PinLED_DirOut(void)
{
Pin_LED_M1 &=~Pin_LED_BIT;
Pin_LED_M0 |=Pin_LED_BIT;
}
-
單片機(jī)
+關(guān)注
關(guān)注
6078文章
45550瀏覽量
672808 -
上拉電阻
+關(guān)注
關(guān)注
5文章
366瀏覽量
31707 -
電路原理圖
+關(guān)注
關(guān)注
40文章
356瀏覽量
40154 -
按鍵檢測(cè)
+關(guān)注
關(guān)注
0文章
25瀏覽量
5113 -
STC15W408AS
+關(guān)注
關(guān)注
10文章
27瀏覽量
10730
發(fā)布評(píng)論請(qǐng)先 登錄
單片機(jī)按鍵設(shè)計(jì)的方法,這幾個(gè)方案不錯(cuò)
如何實(shí)現(xiàn)基于單片機(jī)的鍵盤檢測(cè)
基于單片機(jī)的按鍵電路設(shè)計(jì)(1)
單片機(jī)按鍵檢測(cè)
簡(jiǎn)談單片機(jī)檢測(cè)按鍵原理和中斷按鍵檢測(cè)的辦法
51單片機(jī)按鍵檢測(cè)和信號(hào)函數(shù)仿真的詳細(xì)資料說(shuō)明
51單片機(jī)的獨(dú)立按鍵和按鍵消抖及矩陣按鍵的電路與程序免費(fèi)下載
單片機(jī)實(shí)現(xiàn)按鍵的電路和程序設(shè)計(jì)資料說(shuō)明
單片機(jī)按鍵使用程序 (51單片機(jī))
51單片機(jī)按鍵檢測(cè)--獨(dú)立按鍵與矩陣鍵盤
PIC單片機(jī) 按鍵檢測(cè)識(shí)別
單片機(jī)之按鍵檢測(cè)
單片機(jī)學(xué)習(xí)-矩陣按鍵
單片機(jī)按鍵檢測(cè)電路原理詳解
評(píng)論