本帖最后由 hinata_aoi 于 2022-6-6 14:35 編輯
運行該程序時,LED數碼管一直閃爍,多次嘗試修改delay函數后無效,辛苦大家看一下這個是什么情況
源程序:
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define SPEED 1
sbit DS=P2^0;
sbit ST=P2^2;
sbit SH=P2^1;
uchar code table1[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0x21,0x22,0x22,0x24,0x28,0x30,0xFF,0x30,0x28,0x24,0x22,0x22,0x21,0x01,0x00,
0x08,0x06,0x40,0x30,0x03,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x00,0x00,
0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00,
0x02,0x0C,0x88,0x69,0x09,0x09,0x89,0x69,0x09,0x09,0x19,0x28,0xC8,0x0A,0x0C,0x00,
0x00,0x7F,0x44,0x5A,0x61,0x08,0x30,0x24,0x24,0xA4,0x64,0x24,0x24,0x28,0x30,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
uchar code table2[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x10,0x10,0x10,0x10,0x90,0x92,0x91,0x9E,0xB0,0xD0,0x90,0x10,0x10,0x10,0x10,0x00,
0x20,0x20,0x3E,0xC0,0x04,0x04,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x04,0x04,0x00,
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,
0x20,0x20,0x20,0x20,0x20,0x22,0x21,0x7E,0x60,0xA0,0x20,0x20,0x20,0x20,0x20,0x00,
0x00,0xFF,0x20,0x10,0xE0,0x01,0x82,0x8C,0xF0,0x80,0x80,0xFC,0x82,0x82,0x8E,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
void senddata(uchar,uchar,uchar,uchar);
void delay(uint);
void main()
{
uchar i,j,k,m,n=0;
while(1)
{
for(i=0;i<112;i++
{
for(j=0;j<SPEED;j++)
{
for(k=0;k<16;k++
{
m=i+k;
P1=k;
senddata(table1[m+16],table2[m+16],table1[m],table2[m]);
delay(100);
senddata(0,0,0,0);
}
}
}
}
}
void senddata(uchar m,uchar n, uchar m1, uchar n1)
{
uchar i;
ST=0;
for(i=0;i<32;i++)
{
SH=0;
if(i<8) {
DS=0X80&(m<<i);
} else if(i>=8 && i<16) {
DS=0X80&(n<<(i-8));
} else if(i>=16 && i<24) {
DS=0X80&(m1<<(i-16));
} else if(i>=24 && i<32) {
DS=0X80&(n1<<(i-24));
}
SH=1;
}
ST=1;
}
void delay(uint m)
{
uint j;
for(j=m;j>0;j--);
}
|