废话少说直接上图 https://pan.baidu.com/s/15BvnC4jLvHe2zWJLPi4qlg 提取码:azxy
#include"reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
sbit P14=P1^4;
sbit P15=P1^5;
sbit P16=P1^6;
sbit P17=P1^7;
sbit P30=P3^0;
sbit P31=P3^1;
sbit P32=P3^2;
sbit P33=P3^3;
sbit P34=P3^4;
sbit P35=P3^5;
u8 smg_display[8];
u8 code wala[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 code duan[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
u8 s=0;
void delay(u16 i)
{
while(i--);
}
void Timer0Init(void)
{
TMOD &= 0xF0;
TL0 = 0x00;
TH0 = 0x28;
TF0 = 0;
TR0 = 1;
ET0=1;
EA=1;
}
void smg_buff()
{
static u8 num=0;
while(num<8)
{
P2=~wala[num];
P0=smg_display[num];
num++;
delay(200);
}
if(num==8) num=0;
}
void smg_led()
{
if(s==70)
{
s=0;
}
if(s<30)
{
smg_display[0]=~duan[(30-s)/10];
smg_display[1]=~duan[(30-s)%10];
smg_display[2]=~duan[(35-s)/10];
smg_display[3]=~duan[(35-s)%10];
smg_display[4]=~duan[(30-s)/10];
smg_display[5]=~duan[(30-s)%10];
smg_display[6]=~duan[(35-s)/10];
smg_display[7]=~duan[(35-s)%10];
P10=0;P11=0;P12=1;
P13=0;P14=1;P15=0;
P16=0;P17=0;P30=1;
P31=0;P32=1;P33=0;
}
else if(s<35)
{
smg_display[0]=~duan[(35-s)/10];
smg_display[1]=~duan[(35-s)%10];
smg_display[2]=~duan[(35-s)/10];
smg_display[3]=~duan[(35-s)%10];
smg_display[4]=~duan[(35-s)/10];
smg_display[5]=~duan[(35-s)%10];
smg_display[6]=~duan[(35-s)/10];
smg_display[7]=~duan[(35-s)%10];
P10=1;P11=0;P12=0;
P13=0;P14=1;P15=0;
P16=1;P17=0;P30=0;
P31=0;P32=1;P33=0;
}
else if(s<65)
{
smg_display[0]=~duan[(70-s)/10];
smg_display[1]=~duan[(70-s)%10];
smg_display[2]=~duan[(65-s)/10];
smg_display[3]=~duan[(65-s)%10];
smg_display[4]=~duan[(70-s)/10];
smg_display[5]=~duan[(70-s)%10];
smg_display[6]=~duan[(65-s)/10];
smg_display[7]=~duan[(65-s)%10];
P10=0;P11=1;P12=0;
P13=0;P14=0;P15=1;
P16=0;P17=1;P30=0;
P31=0;P32=0;P33=1;
}
else
{
smg_display[0]=~duan[(70-s)/10];
smg_display[1]=~duan[(70-s)%10];
smg_display[2]=~duan[(70-s)/10];
smg_display[3]=~duan[(70-s)%10];
smg_display[4]=~duan[(70-s)/10];
smg_display[5]=~duan[(70-s)%10];
smg_display[6]=~duan[(70-s)/10];
smg_display[7]=~duan[(70-s)%10];
P10=0;P11=1;P12=0;
P13=1;P14=0;P15=0;
P16=0;P17=1;P30=0;
P31=1;P32=0;P33=0;
}
}
void green()
{
if(P34==0)
{
TR0 = 0;
smg_display[0]=0x00;
smg_display[1]=0x00;
smg_display[2]=0x00;
smg_display[3]=0x00;
smg_display[4]=0x00;
smg_display[5]=0x00;
smg_display[6]=0x00;
smg_display[7]=0x00;
P10=0;P11=0;P12=1;
P13=0;P14=0;P15=0;
P16=0;P17=0;P30=1;
P31=0;P32=0;P33=0;
}
else
{
TR0 = 1;
}
if(P35==0)
{
TR0 = 0;
smg_display[0]=0x00;
smg_display[1]=0x00;
smg_display[2]=0x00;
smg_display[3]=0x00;
smg_display[4]=0x00;
smg_display[5]=0x00;
smg_display[6]=0x00;
smg_display[7]=0x00;
P10=0;P11=0;P12=0;
P13=0;P14=0;P15=1;
P16=0;P17=0;P30=0;
P31=0;P32=0;P33=1;
}
else
{
TR0 = 1;
}
}
void main()
{
P1=0x00;P3=0x00;
P34=1;P35=1;
Timer0Init();
while(1)
{
smg_led();
green();
smg_buff();
}
}
void timer0() interrupt 1
{
static u8 i=0;
i++;
if(i==200)
{
i=0;
s++;
}
}
|