資源簡介
適用于51單片機,4*4矩陣鍵盤,led數字屏,有c代碼帶仿真(keil uvision4),可顯示數字0-9,字母A-O,“熄滅”“自定義”

代碼片段和文件信息
#include?
#define?uchar?unsigned?char
#define?uint??unsigned?int
sbit?we?=?P2^7;
sbit?du?=?P2^6;
uchar?code?leddata[]={?
?
????????????????0x3F??//“0“
????????????????0x06??//“1“
????????????????0x5B??//“2“
????????????????0x4F??//“3“
????????????????0x66??//“4“
????????????????0x6D??//“5“
????????????????0x7D??//“6“
????????????????0x07??//“7“
????????????????0x7F??//“8“
????????????????0x6F??//“9“
????????????????0x77??//“A“
????????????????0x7C??//“B“
????????????????0x39??//“C“
????????????????0x5E??//“D“
????????????????0x79??//“E“
????????????????0x71??//“F“
????????????????0x76??//“H“
????????????????0x38??//“L“
????????????????0x37??//“n“
????????????????0x3E??//“u“
????????????????0x73??//“P“
????????????????0x5C??//“o“
????????????????0x40??//“-“
????????????????0x00??//熄滅
????????????????0x00??//自定義
?
?????????????????????????};
void?delay(uint?z)
{
uint?xy;
for(x?=?z;?x?>?0;?x--)
for(y?=?114;?y?>?0?;?y--);
}
uchar?KeyScan() //帶返回值的子函數
{
uchar?cord_lcord_h;//聲明列線和行線的值的儲存變量
P3?=?0x0f;//0000?1111
if(?(P3?&?0x0f)?!=?0x0f)//判斷是否有按鍵按下
{
delay(5);//軟件消抖
if(?(P3?&?0x0f)?!=?0x0f)//判斷是否有按鍵按下
{
??cord_h?=?P3?&?0x0f;//?儲存行線值
??P3?=?cord_l?|?0xf0;
??cord_l?=?P3?&?0xf0;//?儲存列線值
??while(?(P3?&?0xf0)?!=?0xf0?);//松手檢測
??return?(cord_l?+?cord_h);//返回鍵值碼
}
}
}
void?KeyPro()
{
switch(?KeyScan()?)
{
? //第一行鍵值碼
case?0xee:?P0?=?leddata[0]; break;
case?0xde:?P0?=?leddata[1]; break;
case?0xbe:?P0?=?leddata[2]; break;
case?0x7e:?P0?=?leddata[3]; break;
//第二行鍵值碼
case?0xed:?P0?=?leddata[4]; break;
case?0xdd:?P0?=?leddata[5]; break;
case?0xbd:?P0?=?leddata[6]; break;
case?0x7d:?P0?=?leddata[7]; break;
//第三行鍵值碼
case?0xeb:?P0?=?leddata[8]; break;
case?0xdb:?P0?=?leddata[9]; break;
case?0xbb:?P0?=?leddata[10]; break;
case?0x7b:?P0?=?leddata[11]; break;
//第四行鍵值碼
case?0xe7:?P0?=?leddata[12]; break;
case?0xd7:?P0?=?leddata[13]; break;
case?0xb7:?P0?=?leddata[14]; break;
case?0x77:?P0?=?leddata[15]; break;
//獨立鍵盤
case?0xfe:?P0?=?leddata[16]; break;
case?0xfd:?P0?=?leddata[17]; break;
case?0xfb:?P0?=?leddata[18]; break;
case?0xf7:?P0?=?leddata[19]; break;
}
}
void?main()
{
we?=?1;//打開位選
P0?=?0;//八位數碼管全顯示
we?=?0;//鎖存位選
du?=?1;//打開段選端
P0?=?leddata[22];
while(1)
{
? KeyPro();//提取鍵值碼并且送不同數值給數碼管顯示
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3683??2014-08-11?21:00??矩陣鍵盤\KeyScan
?????文件???????2610??2014-08-11?21:00??矩陣鍵盤\KeyScan.c
?????文件???????1087??2014-08-11?21:00??矩陣鍵盤\KeyScan.hex
?????文件?????????46??2014-08-11?21:00??矩陣鍵盤\KeyScan.lnp
?????文件???????5979??2014-08-11?21:00??矩陣鍵盤\KeyScan.LST
?????文件???????5820??2014-08-11?21:00??矩陣鍵盤\KeyScan.M51
?????文件???????4207??2014-08-11?21:00??矩陣鍵盤\KeyScan.OBJ
?????文件????????984??2014-08-11?21:48??矩陣鍵盤\KeyScan.Opt
?????文件????????178??2014-08-11?21:48??矩陣鍵盤\KeyScan.plg
?????文件???????2149??2014-05-23?22:43??矩陣鍵盤\KeyScan.Uv2
?????文件????????992??2014-08-11?21:48??矩陣鍵盤\KeyScan_Opt.Bak
?????文件??????????0??2014-05-23?21:21??矩陣鍵盤\KeyScan_Uv2.Bak
?????文件?????775323??2014-07-15?09:18??矩陣鍵盤\矩陣鍵盤.jpg
?????目錄??????????0??2017-03-02?21:08??矩陣鍵盤
-----------?---------??----------?-----??----
???????????????803058????????????????????14
- 上一篇:trnsys的安裝文件和資料
- 下一篇:專轉本計算機資料以及一些模擬卷
評論
共有 條評論