文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-642318.html
?注意了:這個(gè)代碼你是沒(méi)法直接運(yùn)行的,但是如果你看得懂,隨便改一改不超過(guò)1分鐘就可以用文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-642318.html
#include "reg51.h"
#include "myheader.h"
void displayNumber(unsigned char num)
{
if(num==1)
{
P1=0XFF;
P10=P11=P14=P15=P16=0;
}
else if(num==0)
{
P1=0XFF;
P10=P13=P14=P15=P16=P17=0;
}
sleep(50000);
P1=0XFF;
}
void judgeKey()
{
int keydown=0;
unsigned char state=0;
unsigned char tag=0;
unsigned char row=0,col=0;
while(1)
{
P2=0XFF;
P3=0;
keydown=0;
while(keydown==0)
{
if(P2!=0XFF)//說(shuō)明沒(méi)有鍵按下
{
keydown=1;
}
}
if(keydown==1)//說(shuō)明有按鍵按下了
{
row=0;col=0;
//判斷是哪一個(gè)按鍵
//判斷行
P3=0;P2=0XFF;
for(state=~P2&0X0F,tag=0;state!=0X01;state=state>>1 )
{
tag++;
}
row=tag;
//判斷列
//邏輯錯(cuò)誤:P2的高電平接到P3的低電平是不會(huì)把低電平變?yōu)楦唠娖降模? P2=0;P3=0XFF;
for(state=~P3&0X0F,tag=0;state!=0X01;state=state>>1 )
{
tag++;
}
col=tag;
if(row==1&&col==3)
{
P34=1;
displayNumber(1);
}
else
{
P34=0;
displayNumber(0);
}
sleep(5000);
while(keydown==1)
{
if(P3&&0x0f==0X0F)//說(shuō)明沒(méi)有鍵按下
{
keydown=0;
}
}
}
}
}
int main()
{
judgeKey();
return 0;
}
void sleep(long int a)
{
long int i=0;
for(i=0;i<a;i++){;;;}
}
到了這里,關(guān)于c51單片機(jī)16個(gè)按鍵密碼鎖源代碼(富proteus電路圖)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!