單片機入門-矩陣鍵盤控制數碼管顯示
阿新 • • 發佈:2017-05-16
矩陣 right 控制 入門 i/o num .cn mar oid
任務簡述:通過按下4X4矩陣鍵盤實現數碼管對應顯示數字
實現方式:通過行列分接法,可以節省使用單片機的I/O口,掃描矩陣鍵盤是否有按下,判斷P2端口得到的值。
protues 硬件系統
單片機晶振復位電路:
鎖存器、上拉電阻:
4x4矩陣鍵盤:
代碼實現:
void key44scan(void)//鍵盤掃描函數 { uint t; P2=0xfe; t=P2; t=t&0xf0; if(t!=0xf0) { delay(); t=P2; switch(t) {case 0xee:keynum=1; break; case 0xde:keynum=5; break; case 0xbe:keynum=9; break; case 0x7e:keynum=13; break; } P0=table[keynum]; while(t!=0xf0) { t=P2; t=t&0xf0; } } P2=0xfd; t=P2; t=t&0xf0; if(t!=0xf0) { delay(); t=P2; switch(t) { case 0xed:keynum=2; break; case 0xdd:keynum=6; break; case 0xbd:keynum=10; break; case 0x7d:keynum=14; break; } P0=table[keynum]; while(t!=0xf0) { t=P2; t=t&0xf0; } } P2=0xfb; t=P2; t=t&0xf0; if(t!=0xf0) { delay(); t=P2; switch(t) { case 0xeb:keynum=3; break; case 0xdb:keynum=7; break; case 0xbb:keynum=11; break; case 0x7b:keynum=15; break; } P0=table[keynum]; while(t!=0xf0) { t=P2; t=t&0xf0; } } P2=0xf7; t=P2; t=t&0xf0; if(t!=0xf0) { delay(); t=P2; switch(t) { case 0xe7:keynum=4; break; case 0xd7:keynum=8; break; case 0xb7:keynum=12; break; case 0x77:keynum=0; break; } P0=table[keynum]; while(t!=0xf0) { t=P2; t=t&0xf0; } } }
單片機入門-矩陣鍵盤控制數碼管顯示