欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
簡單的單片機矩陣鍵盤程序
[打印本頁]
作者:
983684119
時間:
2016-1-8 21:04
標題:
簡單的單片機矩陣鍵盤程序
#include <reg52.h>
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
sbit KEY1 = P2^4;
sbit KEY2 = P2^5;
sbit KEY3 = P2^6;
sbit KEY4 = P2^7;
unsigned char code LedChar[] = { //數碼管顯示字符轉換表
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71
};
void delay();
void main()
{
bit keybuf = 1; //按鍵值暫存,臨時保存按鍵的掃描值
bit backup = 1; //按鍵值備份,保存前一次的掃描值
unsigned char cnt = 0; //按鍵計數,記錄按鍵按下的次數
ADDR3 = 1;
ADDR2 = 0;
ADDR1 = 0;
ADDR0 = 0;
P2 = 0xf7; //P2.3置0,即KeyOut1輸出低電平
P0 = LedChar[cnt]; //顯示按鍵次數初值
while (1)
{
keybuf = KEY4; //把當前掃描值暫存
if (keybuf != backup) //當前值與前次值不相等說明此時按鍵有動作
{
delay(); //延時大約10ms
if (keybuf == KEY4) //判斷掃描值有沒有發生改變,即按鍵抖動
{
if (backup == 0) //如果前次值為0,則說明當前是彈起動作
{
cnt++; //按鍵次數+1
if (cnt >= 10)
{ //只用1個數碼管顯示,所以加到10就清零重新開始
cnt = 0;
}
P0 = LedChar[cnt]; //計數值顯示到數碼管上
}
backup = keybuf; //更新備份為當前值,以備進行下次比較
}
}
}
}
/* 軟件延時函數,延時約10ms */
void delay()
{
unsigned int i = 1000;
while (i--);
}
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1