本帖最后由 刘前辈 于 2011-3-11 15:39 编辑
多谢16楼ljm810010大侠,原因正如你所说,是延时程序问题,电路没错。把延时程序写好就成功了!再次感谢,真正帮我实验了一把。辛苦了。还是旁观者清。
下面是一个12M AT89V51比较精确的延时程序,延时0~65秒。
void Delay(unsigned int ms)
// 延时程序
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}
这样:程序和7段显示屏 100ms都能反应了:
uchar code LEDData[ ] = { 0xc0, 0xf6, 0xA4, 0xb0, 0x99, 0x61, 0x21, 0x7A, 0x20, 0x60,0xff}; // 编码要修改。
while(1)
{
P2=LEDData[(i++)%10] ;
P1=~P1;
Delay(100);
}
同时感谢楼上所有 Proteus 玩家。Proteus 是很好的软件,几乎所有BUG都是我自己没玩好。不会玩的时候上论坛来请教讨论一般,毕竟旁观者清。自己只有一个头脑和想法,容易钻死胡同。
、
|