求八位数码管依次移动显示的单片机C51的程序,急!在线等~~~

2024年11月18日 14:27
有3个网友回答
网友(1):

//PROTEUS对三极管支持不好,这个是不用三极管的程序,仅供参考
//8位共阴数码管间隔0.5S循环左移依次显示 12345678、23456781、34567812 ...
//2012 01 06 更新 E:\DPJ\OTHER\1\8位左移\8位左移-2.C
#include
#include
#define uchar unsigned char
#define uint unsigned int
uchar temp;
uchar code tab[ ]={0x06,0x5B,0x4F,0x66,
0x6D,0x7D,0x07,0x7F};
bit flag;
void delay(int ms)
{
uchar j;
while(ms--)
for(j=0;j<123;j++);
}
void T0INTinit()
{
TMOD=0x01;
EA=1;
ET0=1;
TR0=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
void disp();
void main()
{
T0INTinit();
temp=0xfe;
while(1)
{
disp();
if(flag)
{
flag=0;
temp=_cror_(temp,1);
}
}
}
void disp()
{
uchar i;
for(i=0;i<8;i++)
{
P0=tab[i];
P2=temp;
delay(1);
P2=0xff;
temp=_crol_(temp,1);
}
}
void T0INT() interrupt 1
{
uchar time;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
time++;
if(time==10)
{
time=0;
flag=1;
}
}

网友(2):

三极管,画错了。
数码管,亮不了。

网友(3):

这个程序好做。