代碼都是相同的代碼分別,第一個原理圖是自己畫的原理圖,按鍵按下之后,按鍵兩邊都是高電平。請各位大佬分析分析我自己畫的原理圖為什么是高電平,哪一步出了問題。
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit k=P2^0;
sbit led=P2^1;
uchar temp,tema,row,column,i;
uchar dis[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar code colcode[4]={0xfe,0xfd,0xfb,0xf7};
uint time;
void delay(time)
{
uint j;
for(j=0;j<time;j++)
{}
}
void main()
{
k=0;
P0=dis[0];
while(1)
{
P1=0xf0;
temp=P1&0xf0;
if(temp!=0xf0)
{
delay(1000);
temp=P1&0xf0;
if(temp!=0xf0)
{
switch(temp)
{
case 0x70 : row=3;break;
case 0xb0 : row=2;break;
case 0xd0 : row=1;break;
case 0xe0 : row=0;break;
default : break;
}
for(i=0; i<4; i++)
{
P1=colcode[ i];
temp=P1&0xf0;
temp=~temp;
if(temp!=0x0f)column=i;
}
}}
P0=dis[row*4+column];
}
}
|