在本次課程中,我將向大家介紹單片機(jī)的輸入口的使用。
在這里,我以最簡單的檢測一個按鍵是否被按下為例來向大家介紹。
一、STC15W408AS按鍵檢測電路
下面是本例中按鍵檢測的電路原理圖,K1是一個按鍵,它接在單片機(jī)的P3.3口上,R2是一個與按鍵連接的上拉電阻。
二、按鍵檢測原理
在本例中,按鍵與單片機(jī)的第14腳(P3.3引腳)相連。當(dāng)按鍵沒有按下時,P3.3的電平是高電平;當(dāng)按鍵被按下時,按鍵將P3.3與地短接,此時P3.3的電平為低電平。
從分析可知,根據(jù)P3.3電平的變化狀態(tài),我們可以知道按鍵是否被按下。因此,我們只要檢測P3.3電平的狀態(tài),就可以判斷出按鍵的狀態(tài)。
三、STC15W408AS輸入模式配置方法
為了讓單片機(jī)能檢測按鍵,我們必須將單片機(jī)的P3.3口設(shè)置為輸入口,也就信號是從單片機(jī)外輸入到單片機(jī)內(nèi)。因此,必須將單片機(jī)的IO口模式設(shè)置為輸入模式。
如果要將STC15W408AS的引腳配置成輸入模式,只需修改PxM0和PxM1兩個寄存器的值。下面是STC15的STC15W408AS引腳的配置說明:
四、按鍵檢測有關(guān)代碼
下面是本例中,按鍵檢測相關(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;
}
五、本例中按鍵檢測指示
為了顯示按鍵的是否被按下,我們用上節(jié)課程中介紹的單片機(jī)點(diǎn)LED的亮滅狀態(tài)來表示按鍵的狀態(tài)。當(dāng)按鍵沒被按下時,LED不亮;當(dāng)按鍵被按下時,LED燈點(diǎn)亮。
請看下面代碼:
PinKEY_DirIn(); //將按鍵所在的口設(shè)置為輸入模式
while(TRUE)
{
if(GetKey_High()) //如果檢測到按鍵口是高電平
{
PinLed_High(); //則將LED所在口置高,LED不亮。
}else{
PinLed_Low(); //否則,將LED所在口置低,LED點(diǎn)亮
}
}
六、按鍵檢測完整源程序
#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)注
6035文章
44554瀏覽量
634634 -
上拉電阻
+關(guān)注
關(guān)注
5文章
359瀏覽量
30607 -
電路原理圖
+關(guān)注
關(guān)注
40文章
347瀏覽量
38318 -
按鍵檢測
+關(guān)注
關(guān)注
0文章
23瀏覽量
4834 -
STC15W408AS
+關(guān)注
關(guān)注
10文章
27瀏覽量
10244
發(fā)布評論請先 登錄
相關(guān)推薦
評論