❶ 單片機匯編矩陣鍵盤實驗(掃描法)
關於掃描按鍵的原理,可以看下面這篇文章。
本文以循序漸進的思路,引導大家思考如何用最少的IO驅動更多的按鍵,並依次給出5種方案原理圖提供參考。在實際項目中我們經常會遇到有按鍵輸入的需求,但有的時候為了節省資源成本,我們都會選擇在不增加硬體的情況下使用最少的控制器IO驅動更多的按鍵,那麼具體是怎麼做的呢,下面我們就以用5個IO引腳為例,講下怎麼設計可以實現更多的按鍵?共有5種設計思路,下面依次介紹。
首先通常想到的可能是下面這樣的設計:
這樣我們可以先識別K01、K02、K03、K04、K05,若沒有按鍵按下然後再和思路四的設計一樣去識別其他按鍵。但這樣存在一個問題,如果IO1配置為0,IO5讀到0,那麼怎麼知道是K51按下還是K05按下呢,這里只需要在程序里做下判斷,先判斷下是不是K05按下,若不是就是K51,因為按鍵K01、K02、K03、K04、K05在5個IO口都為讀取的情況下,就可以識別,不需要掃描識別處理,相當於這5個按鍵優先順序高與其他按鍵。
總結
綜合上述,5個IO口最多可以識別25個按鍵,思路五程序上處理比較麻煩,若實際中只按思路四設計,也可識別20個按鍵,那麼如果有N個IO口可識別多少按鍵呢?這里給出如下公式:
假設有N個IO口按照思路三可以識別N*(N-1)/2個;
按照思路四可識別N*(N-1)個;
按照思路5可以識別N*(N-1)+N個。
最後再說下,如果實際設計時,還是按思路四設計好,軟體也沒那麼麻煩。如果是你的話你會選擇哪種方法呢?你還有沒有其他的設計方法呢?
❷ 本科題目。簡要說明矩陣鍵盤的特點和應用場合
矩陣鍵盤是單片機外部設備中所使用的排布類似於矩陣的鍵盤組。矩陣式結構的鍵盤顯然比直接法要復雜一些,識別也要復雜一些,列線通過電阻接正電源,並將行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。
矩陣鍵盤特點
矩陣鍵盤的編程是十分復雜的,但是矩陣鍵盤也節省IO口。而且還提高了I/O口利用率。
矩陣鍵盤構成與工作方式
圖9-7為一個4x3的行列結構,可以構成12個鍵的鍵盤。如果使用4x4的行列結構,就能組成一個16鍵的鍵盤。很明顯,在按鍵數量多的場合,矩陣鍵盤與獨立式按鍵鍵盤相比可以節省很多的I/O口線。
矩陣鍵盤不僅在連接上比單獨式按鍵復雜,它的按鍵識別方法也比單獨式按鍵復雜。在矩陣鍵盤的軟體介面程序中,常使用的按鍵識別方法有行掃描法和線反轉法。這兩種方法的基本思路是採用循環查循的方法,反復查詢按鍵的狀態,因此會大量佔用MCU的時間,所以較好的方式也是採用狀態機的方法來設計,盡量減少鍵盤查詢過程對MCU的佔用時間。
❸ 基於CT107D平台的矩陣鍵盤
實驗目的
1. 了解 4*4 矩陣鍵盤的工作原理。
2. 掌握利用行列掃描法讀取按鍵信息及軟體消抖的方法。
3. 熟悉掌握 VHDL 語言和 QUARTUS 2 軟體的使用。
4. 理解狀態機的工作原理和設計方法。
5. 掌握利用 EDA 工具進行自頂向下的電子系統設計方法。
實驗任務
設計製作一個檢測 4*4 矩陣鍵盤的按鍵編碼的實驗, 把實際按鍵的 鍵值的八位編碼先轉換成從 0000—1111 的編碼,再譯成數碼管能識別 的八位編碼, 在數碼管動態顯示時, 矩陣鍵盤的第一行對應 00—03, 4*4 第二行對應 04—07,第三行 08—11,第四行對應 12—15。
實驗原理
1.鍵盤的工作原理: 按鍵設置在行、列線交點上,行、列線分別連接到按鍵開關的 兩端。行線通過上拉電阻接到+5V 電源上。無按鍵按下時,行線處 於高電平的狀態, 而當有按鍵按下時, 行線電平與此行線相連的列 線電平決定。
2.行列掃描法原理:
第一步, 使行線為編程的輸入線,列線是輸出線,拉低所有的列線, 判斷行線的變化,如果有按鍵按下,按
❹ 單片機中獨立鍵盤和矩陣鍵盤如何一起使用 請用C語言寫個程序說明,謝謝。
這個很好處理呀,比如以下舉例,獨立+矩陣,實現獨立按鍵相當於類似SHIFT作用的效果。
#include<reg51.h>
#define uchar unsigned char
uchar tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //0到f
uchar keyval,num;
sbit skey=P1^0; //獨立鍵P1.0
void delay(uchar a)
{
uchar i,j;
for(i=0;i<a;i++)
for(j=0;j<125;j++);
}
uchar kbscan(void) //矩陣鍵掃描程序
{
unsigned char sccode,recode;
P3=0x0f; //發0掃描,列線輸入
if ((P3 & 0x0f) != 0x0f) //有鍵按下
{
delay(20); //延時去抖動
if ((P3&0x0f)!= 0x0f)
{
sccode = 0xef; //逐行掃描初值
while((sccode&0x01)!=0)
{
P3=sccode;
if((P3&0x0f)!=0x0f)
{
recode=(P3&0x0f)|0xf0;
while((P3&0x0f)!=0x0f);//等待鍵抬起
return((~sccode)+(~recode));
}
else
sccode=(sccode<<1)|0x01;
}
}
}
return 0; //無鍵按下,返回0
}
void getkey(void)
{
unsigned char key;
key=kbscan();
if(key==0)
{
return;
}
switch(key)
{
case 0x11:keyval=7;break;
case 0x12:keyval=4;break;
case 0x14:keyval=1;break;
case 0x18:keyval=10;break;
case 0x21:keyval=8;break;
case 0x22:keyval=5;break;
case 0x24:keyval=2;break;
case 0x28:keyval=0;break;
case 0x41:keyval=9;break;
case 0x42:keyval=6;break;
case 0x44:keyval=3;break;
case 0x48:keyval=11;break;
case 0x81:keyval=12;break;
case 0x82:keyval=13;break;
case 0x84:keyval=14;break;
case 0x88:keyval=15;break;
default:keyval=0xff;break;
}
//以下處理獨立按鍵
if(skey==0)
{
if(keyval!=0xff)keyval+=16; //如果獨立鍵按下,鍵值加16
while(skey==0); //等待獨立鍵釋放
}
}
void t0isr() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
switch(num)
{
case 0:P2=0x01;break;
case 1:P2=0x02;break;
case 2:P2=0x04;break;
case 3:P2=0x08;break;
default:break;
}
if(keyval<16) P0=~tab[keyval]; //獨立鍵未按正常顯示
else P0=~(tab[keyval]|0x80); //獨立鍵按下顯示+DP
num++;
num&=0x03;
}
main()
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
getkey();
}
}
❺ FPGA4*4矩陣鍵盤鍵值表示方法
既然是4x4,即4行4列了,共需要8個I/O口。
有8bit數據(如高四位為行4bit,低四位為列4bit)位:xxxx xxxx。還要結合你的程序來編碼鍵值,如果有鍵按下了,查詢所有按鍵的所連接的I/O口電平狀態,每個按鍵需要兩個I/O口,一端連接行(行4bit之一),一端連接列(列4bit之一);若此時按鍵的電平狀態為0010 0001,即十六進制數據0x21,按下的按鍵所對應的鍵值編碼即為0x21。當然為了使用方便,在確定了按下按鍵的編碼後,可對其賦值,我要將它賦值為數字鍵8,方便後續編程使用。
❻ 富泰爾三維矩陣鍵盤使用方法
摘要 1.中文/英文液晶屏顯示
❼ 在proteus中有現成的矩陣鍵盤嗎有的話請問怎麼找沒有的話請問怎麼辦啊
有的,在元件裡面按照下面名稱查找就可以了。
1、打開proteus,在原理圖界面點擊P按鈕,進入元器件選擇界面;
按鍵的識別可採用行掃描法和線反轉法。
❽ 矩陣鍵盤的矩陣鍵盤實驗
實驗目的
1. 了解 4*4 矩陣鍵盤的工作原理。
2. 掌握利用行列掃描法讀取按鍵信息及軟體消抖的方法。
3. 熟悉掌握 VHDL 語言和 QUARTUS 2 軟體的使用。
4. 理解狀態機的工作原理和設計方法。
5. 掌握利用 EDA 工具進行自頂向下的電子系統設計方法。
實驗任務
設計製作一個檢測 4*4 矩陣鍵盤的按鍵編碼的實驗, 把實際按鍵的 鍵值的八位編碼先轉換成從 0000—1111 的編碼,再譯成數碼管能識別 的八位編碼, 在數碼管動態顯示時, 矩陣鍵盤的第一行對應 00—03, 4*4 第二行對應 04—07,第三行 08—11,第四行對應 12—15。
實驗原理
1.鍵盤的工作原理: 按鍵設置在行、列線交點上,行、列線分別連接到按鍵開關的 兩端。行線通過上拉電阻接到+5V 電源上。無按鍵按下時,行線處 於高電平的狀態, 而當有按鍵按下時, 行線電平與此行線相連的列 線電平決定。
2.行列掃描法原理:
第一步, 使行線為編程的輸入線,列線是輸出線,拉低所有的列線, 判斷行線的變化,如果有按鍵按下,按鍵按下的對應行線被拉低,否則 所有的行線都為高電平。
第二步, 在第一步判斷有鍵按下後, 延時 10ms 消除機械抖動,再次讀取行值,如果此行線還處於低電平狀態則進入下 一步,否則返回第一步重新判斷。
第三步,開始掃描按鍵位置,採用逐 行掃描,每間隔 1ms 的時間,分別拉低第一列,第二列,第三列,第四 列,無論拉低哪一列其他三列都為高電平,讀取行值找到按鍵的位置, 分別把行值和列值儲存在寄存器里。
第四步,從寄存器中找到行值和列 值並把其合並,得到按鍵值,對此按鍵值進行編碼,按照從第一行第一 個一直到第四行第四個逐行進行編碼,編碼值從「0000」 至「1111」 , 再進行解碼,最後顯示按鍵號碼。 3.數碼管動態掃描原理。數碼管動態掃描原理: 數碼管的 7 個段及小數點都是由 LED 塊組成的,顯示方式分為靜 態顯示和動態顯示兩種。數碼管在靜態顯示方式時,其共陽管的位選 信號均為低電平,四個數碼管的共用段選線 a、b、c、d、e、f、g、dp 分別與 CPLD 的 8 根 I/O 口線相連,顯示數字時只要給相應的段選線送 低電平。數碼管在動態顯示方式時,在某一時刻只能有一個數碼管被 點亮顯示數字,其餘的處於非選通狀態,位選碼埠的信號改變時, 段選碼埠的信號也要做相應的改變 ,每位顯示字元停留顯示的時間 一般為 1-5ms,利用人眼睛的視覺慣性,在數碼管上就能看到相當穩定 的數字顯示。
❾ 矩陣鍵盤的識別方法
矩陣式結構的鍵盤顯然比直接法要復雜一些,識別也要復雜一些,列線通過電阻接正電源,並將行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當按鍵沒有按下時,所有的輸入端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態就可得知是否有鍵按下了。
<1>確定矩陣式鍵盤上何鍵被按下介紹一種「行掃描法」。
行掃描法 行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識別方法,如上圖所示鍵盤,介紹過程如下。
1、判斷鍵盤中有無鍵按下 將全部行線Y0-Y3置低電平,然後檢測列線的狀態。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位於低電平線與4根行線相交叉的4個按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。
2、判斷閉合鍵所在的位置 在確認有鍵按下後,即可進入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平後,再逐行檢測各列線的電平狀態。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。
下面給出一個具體的例子:
圖仍如上所示。8031單片機的P1口用作鍵盤I/O口,鍵盤的列線接到P1口的低4位,鍵盤的行線接到P1口的高4位。列線P1.0-P1.3分別接有4個上拉電阻到正電源+5V,並把列線P1.0-P1.3設置為輸入線,行線P1.4-P.17設置為輸出線。4根行線和4根列線形成16個相交點。
1、檢測當前是否有鍵被按下。檢測的方法是P1.4-P1.7輸出全「0」,讀取P1.0-P1.3的狀態,若P1.0-P1.3為全「1」,則無鍵閉合,否則有鍵閉合。
2、去除鍵抖動。當檢測到有鍵按下後,延時一段時間再做下一步的檢測判斷。
3、若有鍵被按下,應識別出是哪一個鍵閉合。方法是對鍵盤的行線進行掃描。P1.4-P1.7按下述4種組合依次輸出:
P1.7 1 1 1 0
P1.6 1 1 0 1
P1.5 1 0 1 1
P1.4 0 1 1 1
在每組行輸出時讀取P1.0-P1.3,若全為「1」,則表示為「0」這一行沒有鍵閉合,否則有鍵閉合。由此得到閉合鍵的行值和列值,然後可採用計演算法或查表法將閉合鍵的行值和列值轉換成所定義的鍵值
4、為了保證鍵每閉合一次CPU僅作一次處理,必須去除鍵釋放時的抖動。
鍵盤掃描程序:
從以上分析得到鍵盤掃描程序的流程圖所示。程序如下
SCAN: MOV P1,#0FH
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,NEXT1
SJMP NEXT3
NEXT1: ACALL D20MS
MOV A,#0EFH
NEXT2: MOV R1,A
MOV P1,A
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,KCODE;
MOV A,R1
SETB C
RLC A
JC NEXT2
NEXT3: MOV R0,#00H
RET
KCODE: MOV B,#0FBH
NEXT4: RRC A
INC B
JC NEXT4
MOV A,R1
SWAP A
NEXT5: RRC A
INC B
INC B
INC B
INC B
JC NEXT5
NEXT6: MOV A,P1
ANL A,#0FH
CJNE A,#0FH,NEXT6
MOV R0,#0FFH
RET
<2>確定矩陣式鍵盤上何鍵被按下介紹一種「高低電平翻轉法」。
首先讓P1口高四位為1,低四位為0,。若有按鍵按下,則高四位中會有一個1翻轉為0,低四位不會變,此時即可確定被按下的鍵的行位置。
然後讓P1口高四位為0,低四位為1,。若有按鍵按下,則低四位中會有一個1翻轉為0,高四位不會變,此時即可確定被按下的鍵的列位置。
最後將上述兩者進行或運算即可確定被按下的鍵的位置。
鍵盤處理程序就作這么一個簡單的介紹,實際上,鍵盤、顯示處理是很復雜的,它往往佔到一個應用程序的大部份代碼,可見其重要性,但說到,這種復雜並不來自於單片機的本身,而是來自於操作者的習慣等等問題,因此,在編寫鍵盤處理程序之前,最好先把它從邏輯上理清,然後用適當的演算法表示出來,最後再去寫代碼,這樣,才能快速有效地寫好代碼。
❿ ws8102-4 矩陣鍵盤使用方法,有人知道嗎請各位幫幫忙。急求!!!!!!!!急!急!急!
WS8102系列主、分控操作鍵盤(配接WS60、WS70、WS80 WS90系統)產品型號 單價 說 明
WISH威西WS70/WS80/WS90視頻矩陣主機系列,WS8102系列主控鍵盤、分控鍵盤系列,WS918/922/923系列高速智能球,WS801M-PLC系列曼碼轉換器。
WS8102-1 分控操作鍵盤(控制恆速雲台、鏡頭、智能球),用恆速搖桿控制。只適用於WS60、WS70系統。
WS8102-2 分控操作鍵盤(控制恆速、變速雲台、鏡頭、智能球),用二維變速搖桿控制,RS232,波特率1200B,適用於WS60、WS70、WS80、WS90。
WS8102-3 主控操作鍵盤(對系統全功能操作及編程,控制恆速、變速雲台、鏡頭、智能球),用二維變速搖桿控制,RS-232,波特率可選,適用於WS60、WS70、WS80、WS90。
WS8102-4 主控操作鍵盤(對系統全功能操作及編程,控制恆速、變速雲台、鏡頭、智能球),用四維變速搖桿控制,RS-232,波特率可選,適用於WS60、WS70、WS80、WS90。
WS8132T 智能球控制鍵盤四維變速搖桿,能直接控制32隻智能球。
WS8188 帶宏鍵主控操作鍵盤(對系統全功能操作及編程,控制恆速、變速雲台、鏡頭、智能球),用四維變速搖桿控制,RS-232,波特率可選,適用於WS60、WS70、WS80、WS90。提供由用戶定義的宏指令鍵。