仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
屏幕截圖 2021-04-24 104022.jpg (151.88 KB, 下載次數: 60)
下載附件
2021-4-24 10:43 上傳
屏幕截圖 2021-04-24 101914.jpg (150.16 KB, 下載次數: 63)
下載附件
2021-4-24 10:42 上傳
單片機源程序如下:
//功能:晶振11.0592M,矩陣按鍵應用,16種按鍵對用16種輸出//作者: 康曉龍
//版本號:1.0
#include<reg51.h>
unsigned char code duan[]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,0x80,0x90};//0~9的數碼
void delay(unsigned int i)
{while(i--);}
/**************************************
函數名:jianzhi()
函數功能:當有按鍵按下時,判斷是哪一個按鍵按下,16個按鍵對應16種輸出
返回值: result. result=0 忙,result=1 不忙。
***************************************/
void jianzhi()
{
switch(P2)
{
//判斷第一行哪一個按鍵按下,讓P0口輸出
case 0xee:P0=duan[0];break;
case 0xed:P0=duan[1];break;
case 0xeb:P0=duan[2];break;
case 0xe7:P0=duan[3];break;
//判斷第二行哪一個按鍵按下,讓P0口輸出
case 0xde:P0=duan[4];break;
case 0xdd:P0=duan[5];break;
case 0xdb:P0=duan[6];break;
case 0xd7:P0=duan[7];break;
//判斷第三行哪一個按鍵按下,讓P0口輸出
case 0xbe:P0=duan[8];break;
case 0xbd:P0=duan[9];break;
case 0xbb:P0=0xbb;break;
case 0xb7:P0=0xb7;break;
//判斷第四行哪一個按鍵按下,讓P0口輸出
case 0x7e:P0=0x7e;break;
case 0x7d:P0=0x7d;break;
case 0x7b:P0=0x7b;break;
case 0x77:P0=0x77;break;
}
}
void main()
{
while(1)
{
P2=0xef; //對第一行進行掃描,判斷是否有按鍵按下
if(P2!=0xef){jianzhi();}
P2=0xdf; //對第二行進行掃描,判斷是否有按鍵按下
if(P2!=0xdf){jianzhi();}
P2=0xbf; //對第三行進行掃描,判斷是否有按鍵按下
if(P2!=0xbf){jianzhi();}
P2=0x7f; //對第四行進行掃描,判斷是否有按鍵按下
if(P2!=0x7f){jianzhi();}
}
}
51hei.png (2.82 KB, 下載次數: 73)
下載附件
2021-4-24 17:33 上傳
全部資料51hei下載地址:
矩陣鍵盤電路的控制與應用.zip
(196.07 KB, 下載次數: 37)
2021-4-24 10:48 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|