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...