国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee
ELEOK
標題:
51單片機矩陣按鍵的應用16個按鍵對應輸出16種狀態 Proteus
[打印本頁]
作者:
coolfire
時間:
2021-4-25 14:29
標題:
51單片機矩陣按鍵的應用16個按鍵對應輸出16種狀態 Proteus
仿真原理圖如下(proteus仿真工程文件和單片機C源碼可到本帖附件中下載)
1.jpg
(97.79 KB)
下載附件
2021-4-25 14:25 上傳
部分源碼:完整請見附件
單片機源程序如下:
//功能:晶振11.0592M,矩陣按鍵應用,16種按鍵對用16種輸出
#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();}
復制代碼
仿真文件和C源程序下載:
矩陣鍵盤電路的控制與應用.zip
(196.07 KB, 售價: 3 E幣)
2021-4-25 14:27 上傳
點擊文件名下載附件
售價: 3 E幣
[記錄]
[
購買
]
歡迎光臨 ELEOK (http://www.afoofa.cn/)
Powered by Discuz! X5.0