按下16个矩阵键盘依次在数码管上显示1-16的平方。如按下第一个显示1,第二个显示4...
我写了第3行的检测,就是说:按键按下的话 ,会显示:16 25 36 49:
但是我在实验板上运行的时候,高位的数字只会闪一下就不见了,只有个位的数字。求大家说说原因,或给个检测的程序。
下面是我写的程序:
#include
#define uchar unsigned char
#define uint unsigned int
uchar num,temp,num1;
uchar i=0,j=0;
uchar code table[]={0x02,0X9F,0x25,0x0D,0x99,0x49,0x40,0x1F,0x00,0x08 };//0~~~9.
void delayms(uint i) //延时
{
uint j;
for(;i>0;i--)
for(j=100;j>0;j--);
}
main()
{
while(1)
{
P1=0Xfb;
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
delayms(5);
while(temp!=0xf0)
{
temp=P1;
switch(temp)
{
case 0xeb: num=2 , num1=7 ;
break;
case 0xdb: num=3 , num1=6 ;
break;
case 0xbb: num=4, num1=7;
break;
case 0x7b: num=5, num1=10;
break;
}
while(temp!=0xf0) //松手检测
{
temp=P1;
temp=temp&0xf0;
}
P2=0X03; //打开十位的数码管
P0=table[num-1]; //P0是送具体的数字
delayms(50) ;
P2=0x01; //个位的数码管
P0=table[num1-1];
delayms(50);
}
}
}
}
应该是数码管显示延时不好,时间间隔太长了,貌似是没4ms闪烁一下人眼就分辨不出来数码管是不是在闪动了,具体忘了~停电睡觉咯~
但是我在实验板上运行的时候,高位的数字只会闪一下就不见了,只有个位的数字。求大家说说原因
高位只会闪下,就不亮了。 一般应该是 你LED显示保持时间不够。
你的LED的刷新频率和显示保持时间,再好好调下,应该没问题吧