问题遇到的现象和发生背景
用51单片机完成一个数字输入显示器,通过矩阵键盘完成数值的输入
没反应
如果可以的话帮忙告诉我怎么利用独立按键实现清零,退格
用代码块功能插入代码,请勿粘贴截图
#include <reg51.h>
sbit dula=P2^6;
sbit wela=P2^7;
unsigned char shuzi[] = { 0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71 };
void delay(unsigned int i)
{
unsigned int m,n;
for(m=i;m>0;m--)
for(n=90;n>0;n--);
}//ÑÓʱ
unsigned char code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
//λѡ
unsigned char juzhen()//
{
unsigned char juzhenNum;
P3 = 0x7f;
if (P3^4 == 0) { delay(20); while (P3^4 == 0); delay(20); juzhenNum = 0; }
if (P3^5 == 0) { delay(20); while (P3^5 == 0); delay(20); juzhenNum = 1; }
if (P3^6 == 0) { delay(20); while (P3^6 == 0); delay(20); juzhenNum = 2; }
if (P3^7 == 0) { delay(20); while (P3^7 == 0); delay(20); juzhenNum = 3; }
P3 = 0xbf;
if (P3^4 == 0) { delay(20); while (P3^4 == 0); delay(20); juzhenNum = 4; }
if (P3^5 == 0) { delay(20); while (P3^5 == 0); delay(20); juzhenNum = 5; }
if (P3^6 == 0) { delay(20); while (P3^6 == 0); delay(20); juzhenNum = 6; }
if (P3^7 == 0) { delay(20); while (P3^7 == 0); delay(20); juzhenNum = 7; }
P3 = 0xdf;
if (P3^4 == 0) { delay(20); while (P3^4 == 0); delay(20); juzhenNum = 8; }
if (P1^5 == 0) { delay(20); while (P3^5 == 0); delay(20); juzhenNum = 9; }
if (P1^6 == 0) { delay(20); while (P3^6 == 0); delay(20); juzhenNum = 10; }
if (P1^7 == 0) { delay(20); while (P3^7 == 0); delay(20); juzhenNum = 11; }
P3 = 0xef;
if (P3^4 == 0) { delay(20); while (P3^4 == 0); delay(20); juzhenNum = 12; }
if (P3^5 == 0) { delay(20); while (P3^5 == 0); delay(20); juzhenNum = 13; }
if (P3^6 == 0) { delay(20); while (P3^6 == 0); delay(20); juzhenNum = 14; }
if (P3^7 == 0) { delay(20); while (P3^7 == 0); delay(20); juzhenNum = 15; }
return juzhenNum;
}
void main()
{
unsigned char num;
while(1)
{
for(num=0;num<8;num++)
{
int i;
i=juzhen();
P0=table[num];
wela=1;
wela=0;
P0=shuzi[i];
dula=1;
dula=0;
delay(1000);
}
}
}