原代碼,能實現動態數碼管和LED交通燈的動態顯示。
為增加LED顯示停和行,增加了LED代碼模塊,但增加后數碼管和LED交通燈均不亮,LED亂碼
請問是哪里出問題了。
運行結果正常。
51hei圖片_20200407105438.jpg (200.38 KB, 下載次數: 36)
下載附件
2020-4-7 10:55 上傳
修改后代碼,紅色部分,程序無報錯,但數碼管和LED燈都不亮,LED點陣亂碼
#include "reg52.h"
#include "intrins.h"
typedef unsigned int u16;
typedef unsigned char u8;
#define led P0
#define light P1
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit GREEN00=P0^0;
sbit RED00=P0^1;
sbit GREEN10=P0^2;
sbit YELLOW10=P0^3;
sbit RED10=P0^4;
sbit GREEN11=P0^5;
sbit YELLOW11=P0^6;
sbit RED11=P0^7;
sbit GREEN01=P3^0;
sbit RED01=P3^1;
sbit SER=P2^7;
sbit SRCLK=P2^6;
sbit RCLK1=P2^5;
u8 code smg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
u8 code duan2[]={0x80,0x60,0xF8,0x07,0x00,0x04,0x74,0x54,0x55,0x56,0x54,0x54,0x74,0x04,0x00,0x00,
0x00,0x00,0xFF,0x00,0x03,0x01,0x05,0x45,0x85,0x7D,0x05,0x05,0x05,0x01,0x03,0x00,}; //?
u8 code duan1[]={0x00,0x10,0x88,0xC4,0x33,0x00,0x40,0x42,0x42,0x42,0xC2,0x42,0x42,0x42,0x40,0x00,
0x02,0x01,0x00,0xFF,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,}; //??
u8 code wei[32]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};
u8 Second=0;
u8 DisplayData[8];
void delay(u16 t);
void inter0();
void Display();
void LEDDZ(u8 dat1,u8 dat2,u8 dat3,u8 dat4);
void DZdisplay1();
void DZdisplay2();
void LEDDZ(u8 dat1,u8 dat2,u8 dat3,u8 dat4)
{ u8 a;
for(a=0;a<8;a++)
{ SER=dat1>>7;
dat1=dat1<<1;
SRCLK=0;
_nop_();
SRCLK=1;
}
for(a=0;a<8;a++)
{ SER=dat2>>7;
dat2=dat2<<1;
SRCLK=0;
_nop_();
SRCLK=1;
}
for(a=0;a<8;a++)
{ SER=dat3>>7;
dat3=dat3<<1;
SRCLK=0;
_nop_();
SRCLK=1;
}
for(a=0;a<8;a++)
{ SER=dat4>>7;
dat4=dat4<<1;
SRCLK=0;
_nop_();
SRCLK=1;
}
RCLK1=0;
_nop_();
RCLK1=1;
}
void DZdisplay1()
{ u8 i;
while(1)
{ for(i=0;i<16;i++)
{LEDDZ(~wei[i+16],~wei[ i],duan1[i+16],duan1[ i]);
delay(10);}
}
}
void DZdisplay2()
{ u8 i;
while(1)
{ for(i=0;i<16;i++)
{LEDDZ(~wei[i+16],~wei[ i],duan2[i+16],duan2[ i]);
delay(10);}
}
}[ i][ i][ i]
void delay(u16 t)
{while(t--);}
void inter0()
{TMOD=0X01;
TH0=0XFC;
TL0=0X18;
EA=1;
ET0=1;
TR0=1;
}
void Display()
{ u8 i;
light=0x00;
for(i=0;i<8;i++)
{ switch(i)
{case(0):LSA=0;LSB=0;LSC=0;break;
case(1):LSA=1;LSB=0;LSC=0;break;
case(2):LSA=0;LSB=1;LSC=0;break;
case(3):LSA=1;LSB=1;LSC=0;break;
case(4):LSA=0;LSB=0;LSC=1;break;
case(5):LSA=1;LSB=0;LSC=1;break;
case(6):LSA=0;LSB=1;LSC=1;break;
case(7):LSA=1;LSB=1;LSC=1;break;
}
light=DisplayData[ i];
delay(100);
light=0x00;
}
}
void main()
{ inter0();
while(1)
{if(Second==70)
{
Second=0;
}
if(Second<31)
{
DisplayData[0]=0x00;
DisplayData[1]=0x00;
DisplayData[2]=smg[(30-Second)%100/10];
DisplayData[3]=smg[(30-Second)%10];
DisplayData[4]=0x00;
DisplayData[5]=0x00;
DisplayData[6]=DisplayData[2];
DisplayData[7]=DisplayData[3];
Display();
DZdisplay2();
led=0xff;
GREEN01=1;
RED01=1;
GREEN00=0;
GREEN10=0;
RED11=0;
RED01=0;
}
else if(Second<36)
{
DisplayData[0]=0x00;
DisplayData[1]=0x00;
DisplayData[2]=smg[(36-Second)%100/10];
DisplayData[3]=smg[(36-Second)%10];
DisplayData[4]=0x00;
DisplayData[5]=0x00;
DisplayData[6]=DisplayData[2];
DisplayData[7]=DisplayData[3];
Display();
led=0xff;
GREEN01=1;
RED01=1;
RED00=0;
YELLOW10=0;
RED11=0;
RED01=0;
}
else if(Second<66)
{
DisplayData[0]=0x00;
DisplayData[1]=0x00;
DisplayData[2]=smg[(66-Second)%100/10];
DisplayData[3]=smg[(66-Second)%10];
DisplayData[4]=0x00;
DisplayData[5]=0x00;
DisplayData[6]=DisplayData[2];
DisplayData[7]=DisplayData[3];
Display();
DZdisplay1();
led=0xff;
GREEN01=1;
RED01=1;
RED00=0;
RED10=0;
GREEN11=0;
GREEN01=0;
}
else
{
DisplayData[0]=0x00;
DisplayData[1]=0x00;
DisplayData[2]=smg[(71-Second)%100/10];
DisplayData[3]=smg[(71-Second)%10];
DisplayData[4]=0x00;
DisplayData[5]=0x00;
DisplayData[6]=DisplayData[2];
DisplayData[7]=DisplayData[3];
Display();
led=0xff;
GREEN01=1;
RED01=1;
RED00=0;
RED10=0;
YELLOW11=0;
RED01=0;
}
}
}
void inter0in() interrupt 1
{ static u16 i;
TH0=0XFC;
TL0=0X18;
i++;
if(i==1000)
{i=0;
Second++;
}
}
51hei圖片_20200407110531.jpg (239.04 KB, 下載次數: 34)
下載附件
2020-4-7 11:05 上傳
|