欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
單片機(jī)4x4矩陣鍵數(shù)值讀取和顯示程序Proteus仿真
[打印本頁(yè)]
作者:
18896597781
時(shí)間:
2021-5-30 10:14
標(biāo)題:
單片機(jī)4x4矩陣鍵數(shù)值讀取和顯示程序Proteus仿真
4x4矩陣鍵數(shù)值的讀取和顯示;
按鍵被按下后只有被松開(kāi)才會(huì)有效果;
多個(gè)按鍵被按下只有按鍵都被松開(kāi)最先被按下的按鍵起效果;
采用共陽(yáng)極數(shù)碼管顯示;
附件包含完整仿真設(shè)計(jì)和C程序。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
無(wú)標(biāo)題.png
(58.53 KB, 下載次數(shù): 81)
下載附件
仿真效果
2021-5-30 10:07 上傳
單片機(jī)源程序如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
/**************物理連線
P1對(duì)應(yīng)數(shù)碼管;
P2前四位對(duì)應(yīng)矩陣行
P2后四位對(duì)應(yīng)矩陣列
*****************/
#define saomiao P2
#define DB P1
void display(uchar dat); //顯示鍵盤(pán)值函數(shù)
uchar key_scan( ); //鍵盤(pán)掃描函數(shù)
uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e }; //0~15數(shù)碼管代碼,共陽(yáng)極
uchar key; //鍵盤(pán)值
/********************************************************************
延時(shí)函數(shù)
*********************************************************************/
void delay10ms(void) //延時(shí)程序
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
//*****************鍵盤(pán)掃描函數(shù)*****************
uchar key_scan()
{
uchar temp;
saomiao=0xfe; //掃描第1行鍵
temp=saomiao;
temp=temp&0xf0;
if(temp!=0xf0)
delay10ms(); //延時(shí)10ms
temp=saomiao;
temp=temp&0xf0; //確認(rèn)按鍵被按下
if(temp!=0xf0)
{
temp=saomiao;
switch(temp)
{
case 0xee: //第1行第1列被按下
key=0;
break;
case 0xde: // 第1行第2列被按下
key=1;
break;
case 0xbe: // 第1行第3列被按下
key=2;
break;
case 0x7e: // 第1行第4列被按下
key=3;
break;
default:
break;
}
K1:
temp=saomiao;
temp=temp&0xf0;
while(temp!=0xf0) //等待按鍵被松開(kāi)才可以有效果
goto K1;
}
saomiao=0xfd; //掃描第2行鍵
temp=saomiao;
temp=temp&0xf0;
if(temp!=0xf0)
delay10ms();
temp=saomiao;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=saomiao;
switch(temp)
{
case 0xed:
key=4;
break;
case 0xdd:
key=5;
break;
case 0xbd:
key=6;
break;
case 0x7d:
key=7;
break;
default:
break;
}
K2: temp=saomiao;
temp=temp&0xf0;
while(temp!=0xf0) //等待按鍵被松開(kāi)
goto K2;
}
saomiao=0xfb; //掃描第3行鍵
temp=saomiao;
temp=temp&0xf0;
if(temp!=0xf0)
delay10ms();
temp=saomiao;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=saomiao;
switch(temp)
{
case 0xeb:
key=8;
break;
case 0xdb:
key=9;
break;
case 0xbb:
key=10;
break;
case 0x7b:
key=11;
break;
default :
break;
}
K3:
temp=saomiao;
temp=temp&0xf0;
while(temp!=0xf0) //等待按鍵被松開(kāi)
goto K3;
}
saomiao=0xf7; //掃描第4行鍵
temp=saomiao;
temp=temp&0xf0;
if(temp!=0xf0)
delay10ms();
temp=saomiao;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=saomiao;
switch(temp)
{
case 0xe7:
key=12;
break;
case 0xd7:
key=13;
break;
case 0xb7:
key=14;
break;
case 0x77:
key=15;
break;
default:
break;
}
K4: temp=saomiao;
temp=temp&0xf0;
while(temp!=0xf0) //等待按鍵被松開(kāi)
goto K4;
}
return key;
}
void display(uchar dat)
{
DB=table[dat];
}
main()
{
key=0;
while(1)
{
key=key_scan(); //讀取按鍵值
display(key); //顯示按鍵值
}
}
復(fù)制代碼
所有資料51hei提供下載:
4x4矩陣鍵.zip
(54.63 KB, 下載次數(shù): 13)
2021-5-30 10:07 上傳
點(diǎn)擊文件名下載附件
仿真設(shè)計(jì)和C程序
下載積分: 黑幣 -5
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1