久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機矩陣鍵盤掃描誤觸發的問題
[打印本頁]
作者:
simonYlc
時間:
2017-7-13 00:12
標題:
單片機矩陣鍵盤掃描誤觸發的問題
本人新手
請 大家幫小弟看一下 為什么我寫的這個矩陣鍵盤掃描函數 會誤觸發 像是沒有消抖功能 小弟百思不得其解 請大家幫幫 謝謝了#define KeyPort P3
unsigned char KeyScan() //矩陣掃描,使用行列逐級掃描法
{
unsigned char VAL;
KeyPort=0xf0;//高四位置高,低四位拉低
if(KeyPort!=0xf0)//表示有按鍵按下
{
Delay(10); //去抖
if(KeyPort!=0xf0) //表示有按鍵按下
{
Delay(5);
if(KeyPort!=0xf0)
{
KeyPort=0xfe; //檢測第一行
if(KeyPort!=0xfe)
{
VAL=KeyPort&0xf0;
VAL+=0x0e;
while(KeyPort!=0xfe);
Delay(10);
while(KeyPort!=0xfe);
return VAL;
}
}
}
return 0xff;
}
只檢測了第一行,發現按鍵的時候,會有誤觸發
我想知道我這個邏輯哪里有問題
作者:
不倒翁.WZT
時間:
2017-7-13 07:03
標題:
RE: 單片機矩陣鍵盤掃描誤觸發的問題
開發板配的矩陣鍵盤程序都非常好,講解的都很詳細,網上也有很多矩陣鍵盤的例子。拿過來仔細分析一下,真正弄懂其原理,再自我發揮,寫出自己需要的矩陣鍵盤程序。你寫的這段矩陣鍵盤程序,有點看不懂。開始鍵值KeyPort賦值0xf0,去抖、延時后KeyPort又賦值0xfe(KeyPort=0xfe; //檢測第一行),如果一直有鍵按下KeyPort肯定不等于0xfe,但究竟是哪個鍵還是不清楚。經過VAL=KeyPort&0xf0; VAL+=0x0e;運算后,VAL=0xfe。這個VAL=0xfe是人為的,不是程序判斷出來的。只要有鍵一直按下,KeyPort不會等于0xfe。 while(KeyPort!=0xfe);是成立的,僅此而已。
作者:
wulin
時間:
2017-7-13 07:32
程序修改如下:
#define KeyPort P3
unsigned char keyscan() //矩陣鍵盤掃描函數
{
unsigned char temp1,temp2,VAL; //臨時變量
static bit sign=0; //按鍵自鎖標志
static unsigned char count=0; //消抖計數變量
KeyPort=0xf0; //先給P3賦一個初值
if(KeyPort!=0xf0) //判斷P3不等于所賦初值,說明有健按下
{
if(sign==0) //如果按鍵自鎖標志為0
{
count++; //消抖計數
if(count>=100) //消抖計數自>=100,估算主循環周期調整
{ //摒棄Delay延時方式,提高運行效率
count=100; //防止溢出
sign=1; //按鍵自鎖標志置1,鍵不抬起,按其他鍵無效
temp1=KeyPort; //temp1保存高4位變化
KeyPort=0x0f; //再給P3賦值0x0f
temp2=KeyPort; //temp2保存低4位變化
VAL=temp2|temp1; //VAL=高4位+低4位
return VAL; //返回VAL值
}
}
}
else //按鍵抬起
{
sign=0; //按鍵自鎖標志清0
count=0; //消抖計數清0
}
}
作者:
HC6800-ES-V2.0
時間:
2017-7-13 08:30
程序問題吧。
我這里有一個例程,你看看。
/*******************************************************************************
* 函 數 名 : KeyDown
* 函數功能 : 檢測有按鍵按下并讀取鍵值
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void KeyDown(void)
{
char a=0;
GPIO_KEY=0x0f;
if(GPIO_KEY!=0x0f)//讀取按鍵是否按下
{
Delay10ms();//延時10ms進行消抖
if(GPIO_KEY!=0x0f)//再次檢測鍵盤是否按下
{
//測試列
GPIO_KEY=0X0F;
switch(GPIO_KEY)
{
case(0X07): KeyValue=0;break;
case(0X0b): KeyValue=1;break;
case(0X0d): KeyValue=2;break;
case(0X0e): KeyValue=3;break;
}
//測試行
GPIO_KEY=0XF0;
switch(GPIO_KEY)
{
case(0X70): KeyValue=KeyValue;break;
case(0Xb0): KeyValue=KeyValue+4;break;
case(0Xd0): KeyValue=KeyValue+8;break;
case(0Xe0): KeyValue=KeyValue+12;break;
}
while((a<50)&&(GPIO_KEY!=0xf0)) //檢測按鍵松手檢測
{
Delay10ms();
a++;
}
}
}
}
對應電路如圖,看看你的電路和它怎么樣,才能移植。
1.jpg
(25.29 KB, 下載次數: 40)
下載附件
2017-7-13 08:30 上傳
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日韩性在线
|
波多野结衣一区二区三区在线观看
|
婷婷久久五月天
|
久久久久久亚洲精品
|
国产精品高潮呻吟久久
|
四虎av电影
|
国内精品视频免费观看
|
久草.com
|
国产a爽一区二区久久久
|
毛片一区二区三区
|
九九天堂网
|
国产成人综合久久
|
91精品国产综合久久久久久丝袜
|
亚洲精品大片
|
久草网站
|
99热欧美
|
日韩精品在线视频免费观看
|
国内成人免费视频
|
日韩一区二区在线观看视频
|
91视频免费观看
|
91资源在线
|
欧美黄色片
|
在线国产一区二区
|
狠狠亚洲
|
成人免费视频网站
|
最新午夜综合福利视频
|
国产精品福利网站
|
午夜性色a√在线视频观看9
|
日日干日日色
|
99精品视频一区二区三区
|
av中文字幕在线
|
最近中文字幕免费
|
久久精点视频
|
伊人伊成久久人综合网站
|
一区二区高清在线观看
|
日韩av在线不卡
|
二区亚洲
|
日韩欧美中文字幕在线观看
|
精品国产亚洲一区二区三区大结局
|
91视频大全
|
欧美国产日韩精品
|