大侠们,把小弟看看这程序是怎么回事,感谢

2019-07-15 23:04发布

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,shi,ge;
sbit dula=P2^0;
sbit wela=P3^7;
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90
};
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
             for(y=110;y>0;y--);
}
//…………以上延时程序…………

void main()
{
temp=12;
  shi=temp/10;
  ge=temp%10;
while(1)
  {
wela=1;
P1=0x01;
wela=0;

  dula=1;
P1=table[shi];
dula=0;
delay(100); /*为什么这里delay(100)改成delay(5)就不显示了1了,可是delay(5)的时候,temp=22,也是可以显示2的 */
  //………以上要是将dula先打开送数,再打开位送,就不行…………………
  wela=1;
P1=0x02;
wela=0;

dula=1;
P1=table[ge];
dula=0;
  delay(5);

  }
  
  }
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
橘子陈
1楼-- · 2019-07-17 01:46
应该是消影问题。如果消影了,不管延迟多短都能显示的,只不过延迟短了之后人眼分辨不了了,这就是动态显示了。
iamsrf
2楼-- · 2019-07-17 05:31
学习学习嘻嘻嘻
海之北01
3楼-- · 2019-07-17 08:48
 精彩回答 2  元偷偷看……

一周热门 更多>