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

2025-03-08 02:20:18 字數 1605 閱讀 8045

1樓:匿名使用者

看看這兩個吧。一。void delay(void) /5msunsigned char a,b;

for(b=19;b>0;b--)

for(a=130;a>0;a--)

unsigned char scanf(void)unsigned char recode,i,j;

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

p1=~(0x01<>4;

if(recode<0x0f)

for(j=0;j<4;j++)unsigned char keycan(void) /按鍵掃瞄程式 為行線 為列線while((p1&0xf0) !0xf0); 等待鍵釋放 return ((rcode) +ccode));返回鍵編碼 } else rcode = rcode<<1)|0x01; /行掃瞄碼左移一位 } return 0; /無鍵按下,返回值為0}

2樓:匿名使用者

如果放乙個具體電路就橋神好講了。現在只能給你說可以用兩種方式來棚衫1。逐行掃瞄的方式2。行反轉的方式這些你可以字網上敏和虧找找。應該有的。

關於微控制器4x4鍵盤電路?

3樓:網友

如果p04輸出0v,只有c鍵被按下,才能使p04與p03連線了,p03行線上才能檢測到低電平0v啊,如果c鍵不按下,p03仍然是高電平,哪來的低電平。

所以,圖上沒寫錯,是你理解錯了。你的理解:應該是列線輸出高電平,如果行線上檢測到高電平,說明按鍵被按下,這是錯誤的。

別忘了,微控制器引腳正常狀態下就是高電平,按鍵按不按都是高電平,那怎麼區分是按下了還是沒按下。

乙個4*4鍵盤控制兩塊微控制器的問題!!!!求教高手!!!

4樓:網友

可以嘗試下面的思路(假設4*4矩陣鍵盤,4根行線介面,4根列線介面鍵盤掃瞄機制:列線分別順序輸出0111、 1011、 1101、 1110,分別在相應時刻讀入p1口狀態)

1、p2口全部輸出高電平。

2、讀入p2口狀態,有0則說明另一臺微控制器在掃瞄,則退出,等待一段時間再掃瞄。

3、將0111送出p2口。

4、讀入p1口狀態。

5、p2口全部輸出高電平。

6、讀入p2口狀態,有0則說明另一臺微控制器在掃瞄,剛才的資料丟棄,退出等一段時間再掃瞄。

7、迴圈4次。

然後處理鍵值。

這種方法有個前提,應保證兩臺微控制器每次掃瞄的時間間隔不一樣,否則理論上會出現兩臺同時開始進行掃瞄,又同時放棄,下次再掃時又碰上對方再掃瞄,又放棄,..這樣就永遠無法檢測到有效的鍵值了。而且上面實際掃瞄的指令應儘量簡潔,佔用埠線的時間越短越好。

你試試看,我覺得應該沒問題。

5樓:網友

這個很正常啊。因為你的掃瞄沒有同步啊,可能讀回來的是另乙個微控制器發出的電平。

6樓:網友

微控制器與微控制器之間通訊沒用上吧,,,矩陣鍵盤不要接在p3

7樓:網友

不要兩個微控制器同時接乙個矩陣鍵盤上,兩個掃瞄不同步就會讀到錯誤的電平,你可以只用乙個微控制器掃瞄,掃到鍵值後通過串列埠傳送給另乙個微控制器就可以了。

微控制器迴圈,怎樣讓微控制器程式迴圈

程式應該是沒有問題的,估計是你在輸入字元的時候輸入成全形了,有的編譯器會出錯,把 mov r7,0x0a 改為 mov r7,10 就可以了,估計是編譯器不識別或者出錯吧!org 0000h ajmp main main mov r5,0h loop call disp call delay ajm...

微控制器彙編程式,微控制器(組合語言)程式

這個是外部擴充套件的ram,fef0h是存資料的地址,mov dptr 0fef0h是給資料指標賦值,movx dptr,a是間接定址,將a中資料送到外部ram的fef0h中,中斷服務程式後面應該有reti,挺容易的,看看書,這例題允許了中斷,給出了中斷處理程式,自己看書學得較為深刻。ofefoh指...

求助微控制器c語言程式問題,求助 微控制器C語言程式問題

第一個是在主程式中設定的定時計數器中斷相關引數設定,tmod 0x10 設定定時計數器的工作方式為方式1 16為計數器 也就是計數範圍為 0 65536 th1 65536 200 256 tl1 65536 200 256 設定計數器的初值為 200.ea 1 開總中斷,et1 1 開定時計數器1...