欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1682|回復: 0
打印 上一主題 下一主題
收起左側

單片機矩陣鍵盤掃描函數 參考就行

[復制鏈接]
跳轉到指定樓層
樓主
ID:942486 發表于 2021-6-22 16:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
void IO_KeyScan(void)
{
u8 j;
j = IO_KeyState1; //保存上一次狀態
P7 = 0xf0; //X低,讀Y
IO_KeyDelay();
IO_KeyState1 = P7 & 0xf0;
P7 = 0x0f; //Y低,讀X
IO_KeyDelay();
IO_KeyState1 |= (P7 & 0x0f);
IO_KeyState1 ^= 0xff; //取反
if(j == IO_KeyState1) //連續兩次讀相等
{
j = IO_KeyState;
IO_KeyState = IO_KeyState1;
if(IO_KeyState != 0) //有鍵按下
{
F0 = 0;
if(j == 0) F0 = 1; //第一次按下
else if(j == IO_KeyState)
{
if(++IO_KeyHoldCnt >= 20) //1秒后重鍵
{
IO_KeyHoldCnt = 18;
28
F0 = 1;
}
}
if(F0)
{
j = T_KeyTable[IO_KeyState >> 4];
if((j != 0) && (T_KeyTable[IO_KeyState& 0x0f] != 0))
{
KeyCode = (u8)(((j - 1) * 4 )+ (T_KeyTable[IO_KeyState &
0x0f]) ); //計算鍵碼,17~32 + 16
}
}
}
else IO_KeyHoldCnt = 0;
}
P7 = 0xff;
}






2、主函數
void main(void)
{
IO_init(); //IO口初始化
LCD_Init();//液晶屏初始化
delay1ms(10);
LCD_Clear(WHITE);//清屏白底
UartInit(); //串口初始化
UartSendStr("按鍵測試\r\n");
KeyCode = 0; //給用戶使用的鍵碼, 1~16有效
IO_KeyState = 0;
IO_KeyState1 = 0;
IO_KeyHoldCnt = 0;
Gui_StrCenter(0,16,RED,BLUE,"KEY 測試程序",16,1);//居中顯示
Show_Str(20,56,BLUE,YELLOW,"KeyCode:",16,0);
//循環
while(1)
{
IO_KeyScan();
if(KeyCode>0)
{
UartSendStr("pressed");
LCD_ShowNum(100,56,KeyCode,2,16);
}
KeyCode=0;
delay1ms(100);
}
}

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表