求51微控制器行列式鍵盤源程式

2025-06-14 22:25:15 字數 4404 閱讀 7638

1樓:

#include

#include

unsigned char code table 共陽數碼管顯示0~f

void delay() 延時子程式。

void display(unsigned char s) /顯示子程式。

unsigned char keycan(void) /按鍵掃瞄程式 為行線 為列線。

while((p1&0xf0) !0xf0); 等待鍵釋放。

return ((rcode) +ccode));返回鍵編碼。

elsercode = rcode<<1)|0x01; /行掃瞄碼左移一位。

return 0; /無鍵按下,返回值為0

void keydispaly(unsigned char key)

int main(void)

return 0;

51微控制器行列式鍵盤掃瞄程式組合語言

2樓:網友

這個怎麼寫程式呢?要用匯編的哦。

3樓:網友

我有鍵盤介面並帶顯示(74ls164)。

51微控制器4*4行列式鍵盤程式設計的led顯示管顯示問題

4樓:自動隨心

請問您在程式執行到哪您鬆開的按鍵? 看下面的片段。

if((p1 & 0xf0) != 0xf0) /*如果有p1的電平發生變化,就掃瞄出是哪個鍵*/

程式一旦進入此 if 語句就必然執行顯示程式,p0口就必然被重新整理,如果不巧您在此段程式中鬆開的按鍵,那顯示的是啥?

5樓:網友

c語言我不太會,不好意思。

51微控制器中闡述4*4行列式按鍵的掃瞄原理

6樓:網友

如圖:微控制器4個io線如至作為輸出,4 個作為輸入如至,上面可以接16 個按鍵,這些按鍵都有是一端跨在一根輸出線上,另一端跨在一根輸入線上, 要是沒有按鍵按下時,輸入 狀態和輸出狀態沒有任何關係,這時微控制器讀輸入線的狀態,得到的結果全是1(預設或設定),若有按鍵按下,輸出線的狀態就會反映在輸入線上。

先讓輸出線的一根線輸出0,這時接這根線上的4個按鍵的某乙個如s0被按下,在上就可以讀到乙個0,如果s1被按下,上就可以讀到0,..從而可以確定4個按鍵有無按下,下一步,讓輸出線的另一根線輸出0,如果s4按下,上就又可以讀到乙個0,如果s5按下,上就又可以讀到乙個0...又可以確定4個按鍵,4 根輸出線分另輸出0,就其可以確定16個按鍵。

51微控制器行列式鍵盤和獨立式鍵盤可以一起用嗎

7樓:網友

tx一1c開發板就是這樣,我的解決辦法是,當矩陣按鍵時,程式設計時,把p3·4至p3·7這4個埠做輸出,而p3·0至p3·3作為輸入,和敎程中講的變一下就行了。

這樣獨立按鍵按下時,就不會被檢測到,即使被檢測到,也知道是非法狀態。

8樓:網友

一般都有跳線來選擇行列式矩陣鍵盤還是獨立按鍵。

9樓:做而論道

通過軟體,好好編個程式,就行了。

微控制器行列式鍵盤掃瞄原理?

10樓:滴擺的火龍果

微控制器行列式鍵盤掃瞄原理如下:

1、行線p10~p13為輸出線,列線p14~p17為輸入線。一開始微控制器將行線(p10~p13)全部輸出低電平,此時讀入列線資料,若列線全為高電平則沒有鍵按下,當列線有出現低電平時呼叫延時程式以此來去除按鍵抖動。

2、延時完成後再判斷是否有低電平,如果此時讀入列線資料還是有低電平,則說明確實有鍵按下。最後一步確定鍵值。當判斷確實有鍵按下之後,行線輪流輸出低電平,根據讀入列線的資料可以確定鍵值。

3、微控制器將p10輸出為低電平,其它p11~p13輸出高電平,此時讀取列線的資料全為高電平,說明沒有在第一行有鍵按下;其次,微控制器將p11輸出低電平,其它p10、p12、p13仍為高電平。

4、此時再來讀取列線資料,發現列線讀到的資料有低電平,數值為1011(0x0b),如果我們的鍵盤佈局已經確定,那麼0x0b就代表s5的值了。轉到s5鍵功能處理子程式就可以達到目的。

11樓:向天致信

現在的筆記本鍵盤一般都是16+8的方式,即16個pin輸出,對應列;8個輸入pin腳,對應行。

鍵盤輸入與輸出的結構如下:

在idel狀態下,ec把16條輸出線全部拉低,使能鍵盤掃瞄中斷,這樣當任意乙個按鍵按下時,就會觸發中斷(icu的int11h),然後ec就開始逐列掃面,比如out(0,1,……15)輸出(1,1,……1,0),(1,1,……0,1)……0,1,……1,1),當數乙個列掃瞄碼,得到的行如輸入訊號為有乙個為0的時候,這是得到的列掃瞄碼與行掃瞄碼就是這個鍵的掃面碼。比如上圖按下s6的時候,列與行掃瞄碼就分別為1101,1011。然後通過掃瞄碼在scan table裡面找對應的鍵碼,傳給os,確定是哪個鍵。

在上面的圖中,我們看到,在輸入訊號每個上面都有上拉電阻,這個電阻必須有除非ec的輸入pin腳上面的有足夠的上拉能力,否則掃瞄就會出現錯誤。

下圖中,是乙個正常的鍵盤矩陣圖。鍵盤上面的數字就與下面矩陣裡面相同的數字對應。

普通鍵盤結構及工作原理。

鍵盤一般有獨立式和行列式(矩陣式)兩種。當然還有其它的結構,比如交 互式結構等等,不過其它的結構比較少用,在這裡就不介紹了。在中穎的微控制器 中,有些微控制器的lcd 驅動引腳的segment 口可以共享按鍵掃瞄口,當選擇為按 鍵掃瞄口時,可以使用這些口來掃瞄按鍵,所以在外部電路可以連線lcd 和按鍵 矩陣,採用分時掃瞄進行處理。

12樓:網友

一般是在行(或列)的4 引腳上,用低電平掃瞄,然後測列(或行)的4 引腳,看哪個腳低電平,就是那個腳的行列交點的按鍵按下。

13樓:網友

行線與按鍵的乙個引腳相連,列線與按鍵的另乙個引腳相連。平時列線被置成低電平,沒有按鍵被按下時,行線保持高電平,而有按鍵被按下時,行線被拉成低電平。這時候控制器知道有按鍵被按下,但只能判斷出在哪一行,不能判斷出在哪一列,因此接下來就要進行鍵盤掃瞄,以確定具體是哪個按鍵被按下。

51微控制器,在做矩陣鍵盤(行列式鍵盤)的時候,io口選擇不同,按鍵按下時,相應io口讀入電平也不同,為什麼

14樓:高茂程

一般如果是4*4的鍵盤的話、一般掃瞄是行全為1、列逐行為0、通過檢測哪一行為0、則該行和對應的為0列嗦確定的鍵就按下;

15樓:西索迷情

矩陣鍵盤常用開發方法是行列反轉法,不知道你是怎麼開發的。

微控制器4*4行列式鍵盤程式! 動態顯示,開始時,顯示「— —」,按鍵後顯示相應鍵值(00—15)

16樓:匿名使用者

你的圖看不清楚,你可以參考下面的程式【數碼管段選接hc573晶元,位選接hc138晶元】/***

#include

#include#define uint unsigned int

#define uchar unsigned charuchar code table[10] = ;/***

名稱 : delay_1ms()

功能 : 延時子程式,延時時間為 1ms * x

void delay_1ms(uint i)

名稱 : keyscan()

功能 : 實現按鍵的讀取。

uchar keyscan(void)

for(j=0; j<4; j++)

temp <<= 1;}

名稱 : main()

功能 : 主函式。

void main(void)

p0 = table[key_value / 10]; //顯示高位鍵值。

p2 = 0x00;

delay_1ms(5);

p0 = table[key_value % 10]; //顯示低位鍵值。

p2 = 0x04;

delay_1ms(5);}

微控制器的行列式鍵盤的工作原理是怎樣的,它與微控制器的i/o口相連,然後怎麼檢測是否有按鍵按下。

17樓:網友

你說的是矩陣鍵盤吧,每乙個按鍵與兩個io口相連。假設將行全部置為低電平,則檢測列有沒有低電平,有則為按鍵按下。這個可以根據你自身的需要來改變,就把他看做是座標即可,在之下這個**有矩陣鍵盤的一些判別方法,我寫的不是很詳細,自己多看看百科,應該能找到你想要的。

另外我給你貼乙個4*3鍵盤掃瞄程式。

鍵掃瞄子程式 (4*3 的矩陣) 為行 */

為列 */

void keyscan(void)

判斷鍵是否按下 */

void keydown(void)

可追問。

51微控制器節乘法程式51微控制器二位元組乘法程式

標號 功能 雙位元組二進位制無符號數乘法子程式入口條件 被乘數在r2 r3中,乘數在r6 r7中。出口資訊 乘積在r2 r3 r4 r5中。影響資源 psw a b r2 r7 堆疊需求 位元組muld mov a,r3 計算r3乘r7mov b,r7 mul ab mov r4,b 暫存部分積 m...

微控制器4 4鍵盤處理程式

看看這兩個吧。一。void delay void msunsigned char a,b for b b b for a a a unsigned char scanf void unsigned char recode,i,j for i i i p x if recode xf for j j ...

求51微控制器c語言教程 ,求51微控制器c語言教程 pdf

微控制器學習方法 網上微控制器資料很多 你上csdn上找吧 那上面多的是 這個網上的太多了。你搜一下,有很多 的。這種東西多得很,你應該先搜搜再提問 急求郭天祥 新概念51微控制器c語言教程 入門 提高 開發 拓展全攻略 pdf 這是郭天祥這本書最完整的pdf,是整本的,不是一部分。望採納 從入門到...