求大神指点!!!!!急!急!急!
51单片机吧
全部回复
仅看楼主
level 7
一挽弓 楼主

就是动态显示100以内的自加,
不知为什么显示函数放在中断中数码管闪烁,但能实现功能,但放在主程序中就不闪
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
uchar code Table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint num,n,bai,shi,ge;
void init();
void display(uint bai,uint shi,uint ge);void delay(uint z);
void main()
{
init();
while(1)
{
/*
bai=n/100;
shi=n%100/10;
ge=n%10;
display(bai,shi,ge);
*/
}
}
void init()
{
n=0;
num=1;
TMOD=0x01;
TL0=(65536-45872)%256;
TH0=(65536-45872)/256;
EA=1;
ET0=1;
TR0=1;
wela=1;
P0=0xf8;
wela=0;
dula=1;
P0=0x3f;
dula=0;
}
void timer() interrupt 1
{
TR0=0;
TL0=(65536-45872)%256;
TH0=(65536-45872)/256;
if(num++==20)
{
num=1;
bai=n/100;
shi=n%100/10;
ge=n%10;
display(bai,shi,ge);
n++;
if(n==100)
n=0;
}
TR0=1;
}
void display(uint bai,uint shi,uint ge)
{
wela=1;
P0=0xfe;
wela=0;
dula=1;
P0=Table;
dula=0;
delay(5);
wela=1;
P0=0xfd;
wela=0;
dula=1;
P0=Table[shi];
dula=0;
delay(5);
wela=1;
P0=0xfb;
wela=0;
dula=1;
P0=Table[ge];
dula=0;
delay(5);
}
void delay(uint z)
{uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
2013年07月26日 08点07分 1
level 12
void main() {init(); while(1){display(num);}}
2013年07月26日 09点07分 2
但是放在中断中,就有两个灯闪烁???
2013年07月26日 09点07分
@一挽弓 注意数码管消影
2013年07月26日 09点07分
回复 lukapool :小弟突然想到了!动态闪现要在循环中!谢谢!!!
2013年07月26日 10点07分
level 7
一挽弓 楼主
动态闪现要在循环中,
2013年07月26日 10点07分 3
1