?? 鍵盤掃描和鍵值檢測.txt
字號:
C51編程:斑竹老大幫幫忙呀!!! [chenchenxxx] [55次] 01-6-7 下午 07:58:31
各位朋友你們好,我最近剛剛接觸C51語言,并且要用它來編輯一個鍵盤掃描和鍵值檢測程
序,我覺得很難,因為我剛剛接觸這個語言,請各位C51語言的編程高手幫幫我吧,謝謝
了!這個鍵盤是通過138譯碼器(A,B,C三端分別接89C52單片機的P1-0,P1-1,P1-2)
和89C52單片機的P1-4,P1-5,P1-6三個端口組成一個3*8距陣的24鍵的鍵盤,該怎么實現鍵
盤掃描程序呀,大家如果方便的話幫幫兄弟我,請聯(lián)系我chenchenxxx@163.com,
OICQ為41103971,謝謝大家了!
好像你已經貼了兩遍,明天編一個給你好啦, [青青子木㊣] [7次] 01-6-7 下午 08:04:13
我作鍵掃描的方法特笨,明天貼出來后,還得請大蝦們出出主意,如何提高效率,今天不編
了我得下班回家。
已經編好了 [青青子木㊣] [50次] 01-6-7 下午 08:47:27
匆匆編完,還沒有編譯,也許會有點小錯誤,這基本上是我編矩陣式鍵盤的方法,不知大蝦
有什么建議,或好的方法?拿出來共享共享怎樣
#include <reg51.h>
#define keyvalue1 1
#define keyvalue2 2
#define keyvalue3 3
#define keyvalue4 4
#define keyvalue5 5
#define keyvalue6 6
#define keyvalue7 7
#define keyvalue8 8
#define keyvalue9 9
#define keyvalue10 10
#define keyvalue11 11
#define keyvalue12 12
#define keyvalue13 13
#define keyvalue14 14
#define keyvalue15 15
#define keyvalue16 16
#define keyvalue17 10
#define keyvalue18 11
#define keyvalue19 19
#define keyvalue20 20
#define keyvalue21 21
#define keyvalue22 22
#define keyvalue23 23
#define keyvalue24 24
SetKeyRow(unsigned char row)
{
if (row<8)
P1=(P1&0xf8)|row;
}
//----------------------------------------------------------
unsigned char ReadKeyCol()
{
unsigned char temp;
P1=P1|0x70;
temp=P1&0x70;
if (temp==0x70) return 0xaa;
else return temp;
}
/**/
unsigned char GetKey()
{
unsigned char key;
SetKeyRow(0);
key=ReadKeyCol();
if (key!=0xaa)
{
switch (key)
{
case 3:return keyvalue1;break;
case 5:return keyvalue2;break;
case 6:return keyvalue3;break;
default:break;
}
}
SetKeyRow(1);
key=ReadKeyCol();
if (key!=0xaa)
{
switch (key)
{
case 3:return keyvalue4;break;
case 5:return keyvalue5;break;
case 6:return keyvalue6;break;
default:break;
}
}
SetKeyRow(2);
key=ReadKeyCol();
if (key!=0xaa)
{
switch (key)
{
case 3:return keyvalue7;break;
case 5:return keyvalue8;break;
case 6:return keyvalue9;break;
default:break;
}
}
SetKeyRow(3);
key=ReadKeyCol();
if (key!=0xaa)
{
switch (key)
{
case 3:return keyvalue10;break;
case 5:return keyvalue11;break;
case 6:return keyvalue12;break;
default:break;
}
}
SetKeyRow(4);
key=ReadKeyCol();
if (key!=0xaa)
{
switch (key)
{
case 3:return keyvalue13;break;
case 5:return keyvalue14;break;
case 6:return keyvalue15;break;
default:break;
}
}
SetKeyRow(5);
key=ReadKeyCol();
if (key!=0xaa)
{
switch (key)
{
case 3:return keyvalue16;break;
case 5:return keyvalue17;break;
case 6:return keyvalue18;break;
default:break;
}
}
SetKeyRow(6);
key=ReadKeyCol();
if (key!=0xaa)
{
switch (key)
{
case 3:return keyvalue19;break;
case 5:return keyvalue20;break;
case 6:return keyvalue21;break;
default:break;
}
}
SetKeyRow(7);
key=ReadKeyCol();
if (key!=0xaa)
{
switch (key)
{
case 3:return keyvalue22;break;
case 5:return keyvalue23;break;
case 6:return keyvalue24;break;
default:break;
}
}
rerurn 0xaa;
}
謝謝您了! [chenchenxxx] [4次] 01-6-10 上午 10:29:24
謝謝您了,有機會我們認識一下吧,呵呵!
點擊這里回復這篇貼子>>
_____________________________________________________________________________
Copyright?,C51BBS論壇 2000-2001
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -