📄 mywork.c
字号:
#include<reg52.h>
#include<absacc.h>
#define uchar unsigned char
void Send_Dot_Lcd(uchar *p); //Lcd driver;
void Scan_Dot_Lcd(); //Lcd scan
void Led_Driver(uchar address,uchar Data); //Led Show driver;
void Light_Led(uchar address,uchar Data); //Red Led lighten
void Delay_10ms(); //delay 1s;
void Lcd_Show1(); //1a,1b,3c,4c
void Lcd_Show2(); //2a,2b,1c,4c
void Lcd_Show3(); //3a,3b,1c,2c
void Lcd_Show4(); //4a,4b,2c,3c
unsigned char Address;
static uchar code Dot_Lcd[3][8]={ //{0x10,0x38,0x10,0x12,0xFF,0x12,0x10,0x10}, // 东北禁行
{0x10,0x38,0x10,0x50,0xFF,0x50,0x10,0x10}, //西北禁行
{0x0,0x0,0x0,0x2,0xFF,0x2,0x0,0x0}, //东禁行
//{0x0,0x0,0x0,0x40,0xFF,0x40,0x0,0x0}, // 西禁行
{0x0,0x3C,0x7E,0x7E,0x7E,0x7E,0x3C,0x0} // 全部禁行
};
static uchar code Led[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
//P1;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
void main()
{
// System initializing
int time;
uchar i,*p,j,m,n;
p=Led;
P0=0xFF;
P1=0xF0;
P2=0xFF;
for(;;) //Main Loop;
{
m=3;
n=0;
for(i=0;i<30;i++) //run 30s
{
Light_Led(0x8F,0x0C);
Light_Led(0x9F,0xF3);
for(j=0;j<10;j++) //send data 1s
{
for(time=0;time<10000;time++)
{
Lcd_Show1();
Led_Driver(0xbf,*(p+m));
Address=PBYTE[0x4f];
Address=PBYTE[0x6f];
Led_Driver(0xbf,*(p+n));
Address=PBYTE[0x5f];
Address=PBYTE[0x7f];
Led_Driver(0xaf,*(p+m));
Address=PBYTE[0x4f];
Address=PBYTE[0x6f];
Led_Driver(0xaf,*(p+n));
Address=PBYTE[0x5f];
Address=PBYTE[0x7f];
Delay_10ms();
}
}
if(n==0&&m==3)
{
m--;
n=9;
}
else if(n==0&m>0)
{
n=9;
m--;
}
else
n--;
}
n=0;
m=3;
for(i=0;i<3;i++) //run 3s
{
Light_Led(0x8F,0x8a);
Light_Led(0x9F,0xF2);
for(j=0;j<10;j++) //send data 1s
{
for(time=0;time<10000;time++)
{
Lcd_Show2();
Led_Driver(0xbf,*(p+m));
Address=PBYTE[0x4f];
Address=PBYTE[0x6f];
Led_Driver(0xbf,*(p+n));
Address=PBYTE[0x5f];
Address=PBYTE[0x7f];
Led_Driver(0xaf,*(p+m));
Address=PBYTE[0x4f];
Address=PBYTE[0x6f];
Led_Driver(0xaf,*(p+n));
Address=PBYTE[0x5f];
Address=PBYTE[0x7f];
Delay_10ms();
}
}
n--;
}
m=3;
n=0
for(i=0;i<30;i++) //run 30s
{
Light_Led(0x8F,0x61)
Light_Led(0x9F,0xf8);
for(j=0;j<10;j++) //send data 1s
{
for(time=0;time<10000;time++)
{
Lcd_Show3();
Led_Driver(0xbf,*(p+m));
Address=PBYTE[0x4f];
Address=PBYTE[0x6f];
Led_Driver(0xbf,*(p+n));
Address=PBYTE[0x5f];
Address=PBYTE[0x7f];
Led_Driver(0xaf,*(p+m));
Address=PBYTE[0x4f];
Address=PBYTE[0x6f];
Led_Driver(0xaf,*(p+n));
Address=PBYTE[0x5f];
Address=PBYTE[0x7f];
Delay_10ms();
}
}
if(n==0&&m==3)
{
m--;
n=9;
}
else if(n==0&m>0)
{
n=9;
m--;
}
else
n--;
}
n=0;
m=3;
for(i=0;i<3;i++) //run 3s
{
Light_Led(0x8F,0x51);
Light_Led(0x9F,0xF4);
for(j=0;j<10;j++) //send data 1s
{
for(time=0;time<10000;time++)
{
Lcd_Show4();
Led_Driver(0xbf,*(p+m));
Address=PBYTE[0x4f];
Address=PBYTE[0x6f];
Led_Driver(0xbf,*(p+n));
Address=PBYTE[0x5f];
Address=PBYTE[0x7f];
Led_Driver(0xaf,*(p+m));
Address=PBYTE[0x4f];
Address=PBYTE[0x6f];
Led_Driver(0xaf,*(p+n));
Address=PBYTE[0x5f];
Address=PBYTE[0x7f];
Delay_10ms();
}
}
n--;
}
}
}
void Send_Dot_Lcd(uchar *p)
{
uchar i,j;
for(i=0;i<8;i++)
{
for(j=0;j<8;i++) // send a byte;
{
P1_6=*p^j;
P1_5=0;
P1_5=1;
}
p++;
}
}
void Scan_Dot_Lcd()
{
uchar temp=0xfe,temp1,temp2,i;
for(i=0;i<8;i++)
{
temp1=temp>>7;
temp2=temp<<1;
temp=temp1|temp2;
P2=temp;
}
}
void Led_Driver(uchar address,uchar Data)
{
PBYTE[address]=Data;
}
void Light_Led(uchar address,uchar Data)
{
PBYTE[address]=Data;
}
void delay_10ms() //Delay 10ms
{
unsigned int j;
for(j=6245;j>0;j--); //误差约为10us
}
void Lcd_Show1() //1a,1b,3c,4c 右禁行 ,
{
uchar address=0x0f,i,n;
for(n=0;n<8;n++)
{
Send_Dot_Lcd(Dot_Lcd[1][n]); //1a,1b
Send_Dot_Lcd(Dot_Lcd[2][n]); //cross forbiden
Send_Dot_Lcd(Dot_Lcd[0][n]); //3c
Send_Dot_Lcd(Dot_Lcd[0][n]); //4c
for(i=0;i<3;i++)
{
Address=PBYTE[address];
Scan_Dot_Lcd();
address+=0x10;
}
}
}
void Lcd_Show2() //2a,2b,1c,4c
{
uchar address=0x0f,i,n;
for(n=0;n<8;n++)
{
Send_Dot_Lcd(Dot_Lcd[0][n]); //1c
Send_Dot_Lcd(Dot_Lcd[1][n]); //2a,2b
Send_Dot_Lcd(Dot_Lcd[2][n]); //3 cross forbiden
Send_Dot_Lcd(Dot_Lcd[0][n]); //4c
for(i=0;i<3;i++)
{
Address=PBYTE[address];
Scan_Dot_Lcd();
address+=0x10;
}
}
}
void Lcd_Show3() //3a,3b,1c,2c
{
uchar address=0x0f,i,n;
for(n=0;n<8;n++)
{
Send_Dot_Lcd(Dot_Lcd[1][n]); //1c
Send_Dot_Lcd(Dot_Lcd[1][n]); //2c
Send_Dot_Lcd(Dot_Lcd[2][n]); //3a,3b
Send_Dot_Lcd(Dot_Lcd[3][n]); //4 Cross Forbiden
for(i=0;i<3;i++)
{
Address=PBYTE[address];
Scan_Dot_Lcd();
address+=0x10;
}
}
}
void Lcd_Show4() //4a,4b,2c,3c
{
uchar address=0x0f,i,n;
for(n=0;n<8;n++)
{
Send_Dot_Lcd(Dot_Lcd[2][n]); //1 Cross Forbiden
Send_Dot_Lcd(Dot_Lcd[0][n]); //2c
Send_Dot_Lcd(Dot_Lcd[0][n]); //3c
Send_Dot_Lcd(Dot_Lcd[1][n]); //4a,4b
for(i=0;i<3;i++)
{
Address=PBYTE[address];
Scan_Dot_Lcd();
address+=0x10;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -