📄 led1.c
字号:
#include<at89x51.h>
#include "led.h"
#include <stdio.h>
sbit sck0=P0^5;
sbit ds0=P0^6;
sbit res0=P0^7;
sbit oe=P0^4;
extern unsigned int x,y,second[],min[],hour[];
unsigned char code tab[272]={0xff,0xff,0xc3,0xc3,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0xc3,0xc3,0xff,0xff, //0
0xff,0xff,0xe7,0xc7,0xc7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xc3,0xc3,0xff,0xff, //1
0xff,0xff,0xc1,0xc1,0xf9,0xf9,0xf9,0xc1,0xc1,0x9f,0x9f,0x9f,0xc1,0xc1,0xff,0xff, //2
0xff,0xff,0x81,0x81,0xf9,0xf9,0xf9,0x81,0x81,0xf9,0xf9,0xf9,0x81,0x81,0xff,0xff, //3
0xff,0xff,0xf1,0xe1,0xc1,0x89,0x19,0x39,0x01,0x01,0x01,0xf9,0xf9,0xf9,0xff,0xff, //4
0xff,0xff,0x01,0x01,0x01,0x1f,0x1f,0x01,0x01,0x01,0xf9,0xf9,0x01,0x01,0xff,0xff, //5
0xff,0xff,0x01,0x01,0x01,0x1c,0x1f,0x1f,0x00,0x00,0x18,0x18,0x00,0x00,0xff,0xff, //6
0xff,0xff,0x01,0x01,0x01,0xf1,0xe3,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xff,0xff, //7
0xff,0xff,0x01,0x01,0x01,0x39,0x39,0x39,0x01,0x01,0x39,0x39,0x01,0x01,0xff,0xff, //8
0xff,0xff,0x01,0x01,0x01,0x19,0x19,0x01,0x01,0xf9,0xf9,0xf9,0x01,0x01,0xff,0xff, //9
0xff,0xff,0xe7,0xc3,0x81,0x18,0x18,0x3c,0x00,0x00,0x3c,0x3c,0x3c,0x18,0xff,0xff, //a 10
0xff,0xff,0x01,0x01,0x38,0x3c,0x38,0x01,0x01,0x38,0x3c,0x38,0x00,0x01,0xff,0xff, //b 11
0xff,0xff,0xc3,0x81,0x01,0x1d,0x1f,0x1f,0x1f,0x1f,0x1d,0x01,0x81,0xc3,0xff,0xff, //c 12
0xff,0xff,0x03,0x01,0x01,0x18,0x18,0x18,0x18,0x18,0x18,0x01,0x03,0x03,0xff,0xff, //d 13
0xff,0xff,0xf9,0xf6,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, //度14
0xff,0xff,0xe7,0x81,0x00,0x18,0x1c,0x1f,0x1f,0x10,0x10,0x18,0x01,0x83,0xff,0xff, //g 15
0xff,0xff,0xc3,0x81,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x81,0xc3,0xff,0xff}; //o 16
unsigned char code hz[1120]={0xFE,0xFF,0xFF,0x7B,0xC0,0x01,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF, //广
0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xBF,0xFF,0xBF,0xFF,0x7F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFB,0x00,0x01,0xFB,0xBF,0xFB,0xBF,0xFB,0xBB,0x80,0x01,0xBB,0xBB, //西
0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xB7,0xCB,0xAF,0xFB,0xBF,0xFB,0x80,0x03,0xBF,0xFB,
0xFF,0xF7,0xC0,0x03,0xDF,0xFF,0xD7,0xF7,0xDB,0xE7,0xDD,0xDF,0xDE,0xBF,0xDF,0x7F, //区
0xDE,0xBF,0xDD,0xCF,0xDB,0xE7,0xD7,0xF7,0xDF,0xFF,0xDF,0xFB,0xC0,0x01,0xFF,0xFF,
0xFD,0xFF,0xFD,0xFF,0xFD,0xEF,0x80,0x07,0xBD,0xEF,0xBD,0xEF,0x80,0x0F,0xBD,0xEF, //电
0xBD,0xEF,0x80,0x0F,0xBD,0xEF,0xFD,0xFF,0xFD,0xFB,0xFD,0xFB,0xFE,0x03,0xFF,0xFF,
0xFF,0xFF,0xC0,0x0F,0xFF,0xEF,0xFF,0xDF,0xFF,0xBF,0xFE,0x7F,0xFE,0xFB,0x00,0x01, //子
0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFA,0xFF,0xFD,0xFF,
0xFE,0x0F,0xDE,0xEF,0xEE,0xEF,0xEE,0xEF,0xFE,0xEF,0xFD,0xF1,0x0B,0xFF,0xEC,0x07, //设
0xEE,0xF7,0xEE,0xEF,0xEF,0x6F,0xEF,0x5F,0xEB,0xBF,0xE7,0x4F,0xEC,0xF1,0xF3,0xFB,
0xFF,0xBF,0xDF,0xBF,0xEF,0xBF,0xEF,0xBF,0xFF,0xBF,0xFF,0xBB,0x08,0x01,0xEF,0xBF, //计
0xEF,0xBF,0xEF,0xBF,0xEF,0xBF,0xED,0xBF,0xEB,0xBF,0xE7,0xBF,0xEF,0xBF,0xFF,0xBF,
0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFB,0x00,0x01,0xFE,0xFF,0xFD,0x7F, //大
0xFD,0x7F,0xFD,0xBF,0xFB,0xBF,0xFB,0xDF,0xF7,0xEF,0xEF,0xF1,0x9F,0xFB,0xFF,0xFF,
0xFE,0xFF,0x80,0x01,0xBB,0xBD,0x60,0x0B,0xFB,0xBF,0xE0,0x0F,0xFB,0xBF,0x80,0x03, //赛
0xF7,0xDF,0xE0,0x0F,0xD7,0xD1,0x36,0xDB,0xF6,0xDF,0xFE,0xFF,0xF9,0x3F,0xE7,0xCF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, //,
0xF3,0xFF,0xE1,0xFF,0xE1,0xFF,0xF3,0xFF,0xFB,0xFF,0xF7,0xFF,0xEF,0xFF,0xFF,0xFF,
0xFE,0xFF,0xFF,0x7B,0xC0,0x01,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF, //广
0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xBF,0xFF,0xBF,0xFF,0x7F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFB,0x00,0x01,0xFB,0xBF,0xFB,0xBF,0xFB,0xBB,0x80,0x01,0xBB,0xBB, //西
0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xB7,0xCB,0xAF,0xFB,0xBF,0xFB,0x80,0x03,0xBF,0xFB,
0xFF,0xFF,0xFF,0xF7,0x80,0x03,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF, //工
0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFB,0x00,0x01,0xFF,0xFF,0xFF,0xFF,
0xDD,0xF7,0xEE,0xF7,0xEE,0xEF,0xFF,0xDF,0x80,0x01,0xBF,0xFD,0x7F,0xFB,0xE0,0x1F, //学
0xFF,0xBF,0xFE,0x7B,0x00,0x01,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFA,0xFF,0xFD,0xFF,
0xFF,0x7F,0x87,0xBF,0xB0,0x01,0xAB,0xFD,0xA7,0xEB,0x9C,0x07,0xAF,0xFF,0xB7,0xF7, //院
0xB0,0x03,0xB7,0x5F,0x97,0x5F,0xAF,0x5F,0xBE,0xDD,0xBE,0xDD,0xBD,0xE1,0xB3,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x0F,0xC7,0xC7,0xC7,0xE3,0xFF,0xC7,0xFC,0x0F, //3
0xFC,0x0F,0xFF,0xE3,0xFF,0xF1,0xC7,0xE3,0xC7,0xE3,0xF0,0x0F,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x0F,0xE3,0xE7,0xC7,0xE3,0xC7,0xF1,0xC7,0xF1, //0
0x87,0xF1,0xC7,0xF1,0xC7,0xF1,0xC7,0xE3,0xE3,0xE7,0xF8,0x0F,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x0F,0xC7,0xE7,0xCF,0xF3,0x8F,0xF1,0xCF,0xF1, //9
0xC7,0xC1,0xE0,0x11,0xFF,0xE3,0xE7,0xE7,0xC3,0xCF,0xE0,0x1F,0xFF,0xFF,0xFF,0xFF,
0xFF,0xEF,0xE0,0x07,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xE0,0x0F,0xFF,0xFB,0x00,0x01, //号
0xFB,0xFF,0xF7,0xEF,0xE0,0x07,0xFF,0xEF,0xFF,0xEF,0xFF,0xEF,0xFF,0x5F,0xFF,0xBF,
0xFD,0xFF,0xFD,0xBF,0xFB,0xDF,0xE0,0x0F,0xFD,0xFB,0x00,0x01,0xFB,0xBF,0xF7,0x5F, //参
0xEC,0xEF,0xD3,0xB1,0x3E,0x7B,0xF1,0xEF,0xFF,0x9F,0xFE,0x7F,0xF1,0xFF,0x8F,0xFF,
0xFE,0xFF,0x80,0x01,0xBB,0xBD,0x60,0x0B,0xFB,0xBF,0xE0,0x0F,0xFB,0xBF,0x80,0x03, //赛
0xF7,0xDF,0xE0,0x0F,0xD7,0xD1,0x36,0xDB,0xF6,0xDF,0xFE,0xFF,0xF9,0x3F,0xE7,0xCF,
0xFF,0xBF,0x83,0xBF,0xBB,0xBF,0xB7,0xBF,0xB7,0xBF,0xAF,0xBF,0xB7,0xBF,0xB7,0xBF, //队
0xBB,0x5F,0xBB,0x5F,0xBB,0x5F,0x96,0xEF,0xAE,0xEF,0xBD,0xF7,0xBB,0xF9,0xB7,0xFB,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x0F,0xE3,0xE7,0xC7,0xE3,0xC7,0xF1,0xC7,0xF1, //.
0x87,0xF1,0xC7,0xF1,0xC7,0xF1,0xC7,0xE3,0xE3,0xE7,0xF8,0x0F,0xFF,0xFF,0xFF,0xFF,
0xFE,0xFF,0xFE,0xF7,0x80,0x03,0xFE,0xFF,0xFA,0xBF,0xF6,0xCF,0xCE,0xF1,0x3E,0xFB, //李
0xF0,0x1F,0xFF,0xBF,0xFE,0x77,0x80,0x03,0xFE,0xFF,0xFE,0xFF,0xFA,0xFF,0xFD,0xFF,
0xEF,0xBF,0xEF,0x5F,0xEF,0x77,0x02,0x03,0xEE,0xDF,0xEC,0xD7,0xDA,0x03,0xDE,0xDF, //雄
0xAE,0xD7,0xAE,0x03,0x6E,0xDF,0xDA,0xDF,0xBA,0xDB,0x82,0x01,0xFE,0xFF,0xFE,0xFF,
0xFE,0xFF,0xFF,0x7B,0xC0,0x01,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF, //广
0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xBF,0xFF,0xBF,0xFF,0x7F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, //.
0xFF,0xFF,0xFF,0xFF,0xC3,0xFF,0x99,0xFF,0x99,0xFF,0x99,0xFF,0xC3,0xFF,0xFF,0xFF,
0xFF,0x7F,0xBF,0x7F,0xCF,0x7F,0xE8,0x03,0x7B,0x7B,0x97,0x77,0xDF,0x3F,0xF6,0xBF, //沈
0xEE,0xBF,0xDE,0xBF,0x1E,0xBF,0xDD,0xBF,0xDD,0xBD,0xDB,0xBD,0xD7,0xC1,0xCF,0xFF,
0xEF,0xDF,0xEF,0xDF,0xEB,0xAF,0x01,0x77,0xEE,0xF9,0x81,0xFB,0xBA,0x23,0x83,0xBB, //翰
0xBA,0xAB,0x83,0x33,0xEF,0xBB,0x01,0x33,0xEE,0xAB,0xEF,0xBB,0xEE,0xAB,0xEF,0x77,
0xFD,0xFF,0xFE,0xFF,0x80,0x01,0xBF,0xFD,0x7F,0xFB,0xFF,0xFF,0x00,0x01,0xFE,0xFF, //宁
0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFA,0xFF,0xFD,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, //.
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC3,0xFF,0xE3,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xEF,0xB8,0x07,0xCF,0xEF,0xED,0xEF,0xFD,0xEF,0xF5,0xEF,0xED,0xEF,0xED,0xEB, //冯
0xDC,0x01,0x1F,0xFB,0xDF,0xDB,0xD0,0x0B,0xDF,0xFB,0xDF,0xFB,0xDF,0xD7,0xDF,0xEF,
0xFF,0xF7,0x82,0x03,0xBB,0xFF,0xB7,0xFF,0xB7,0xFF,0xAF,0xFB,0xB4,0x01,0xB7,0xDF, //际
0xBB,0xDF,0xBB,0x57,0xBB,0x5B,0x96,0xDD,0xAD,0xDD,0xBF,0xDF,0xBF,0x5F,0xBF,0xBF,
0xFF,0x7F,0xBF,0x77,0xC8,0x03,0xEF,0x7F,0x7C,0x07,0x9F,0x7F,0xD0,0x01,0xF6,0xF7, //涛
0xEE,0xF7,0xDC,0x01,0x1D,0xF7,0xDA,0xF7,0xD7,0x77,0xCF,0x77,0xDF,0xD7,0xDF,0xEF,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, //空
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
void delay(void)
{
unsigned int j=0;
for(j=0;j<60;j++);
}
void write_595(unsigned char dat)
{
unsigned char i=0;
res0=0;
for(i=0;i<8;i++)
{
ds0=dat&0x01;
sck0=0;
sck0=1;
dat>>=1;
}
res0=1;
res0=0;
}
void main(void)
{
unsigned char n=0,l=0,k=0,m=0,h=0,sp=10;
bit num=0,wd=0,time=0,open=1;
//ds1302();
pc_init();
oe=0;
do
{
if(P1_0==0) //左移,右移
{
num=~num;
wd=0;
time=0;
open=1;
while(!P1_0);
}
if(P1_1==0) //温度显示
{
wd=1;
time=0;
open=0;
while(!P1_1);
}
if(P1_2==0) //时钟显示
{
time=1;
wd=0;
open=0;
while(!P1_2);
}
if(P1_3==0) //串口通行
{
printf("现在温度是%d%d度\n现在时刻是%d%d%时d%d%分%d%d秒\n",x,y,hour[1],hour[0],min[1],min[0],second[1],second[0]);
open=0;
while(!P1_3);
}
if(time) //显示时钟
{
dsplay_ds1302(); //读取时钟
for(l=0;l<30;l++)
{
for(n=0;n<16;n++) //扫16行
{
oe=1;
P0=(P0&0xf0)|n;
write_595(tab[n+16*min[1]]);
write_595(tab[n+16*min[0]]);
write_595(tab[n+16*second[1]]);
write_595(tab[n+16*second[0]]);
oe=0;
delay();
}
}
}
if(wd==0&&time==0&&open==0) //主界面good
{
for(l=0;l<30;l++)
{
for(n=0;n<16;n++) //扫16行
{
oe=1;
P0=(P0&0xf0)|n;
write_595(tab[n+16*15]);
write_595(tab[n+16*16]);
write_595(tab[n+16*16]);
write_595(tab[n+16*13]);
oe=0;
delay();
}
}
}
if(wd) //温度显示
{
wd_t();
for(l=0;l<30;l++)
{
for(n=0;n<16;n++) //扫16行
{
oe=1;
P0=(P0&0xf0)|n;
write_595(tab[n+16*x]);
write_595(tab[n+16*y]);
write_595(tab[n+16*14]);
write_595(tab[n+16*12]);
oe=0;
delay();
}
}
}
if(num&&wd==0&&time==0&&open==1) //左移数字字母
{
for(m=0;m<10;m++)
{
for(k=0;k<8;k++)
{
for(l=0;l<sp;l++)
{
for(n=0;n<16;n++) //扫16行
{
oe=1;
P0=(P0&0xf0)|n;
write_595((tab[n+16*m]<<k)|(tab[n+16*(m+1)]>>(8-k)));
write_595((tab[n+16*(m+1)]<<k)|(tab[n+16*(m+2)]>>(8-k)));
write_595((tab[n+16*(m+2)]<<k)|(tab[n+16*(m+3)]>>(8-k)));
write_595((tab[n+16*(m+3)]<<k)|(tab[n+16*(m+4)]>>(8-k)));
oe=0;
delay();
if(P1_0==0)
{
num=1;
wd=0;
time=0;
open=0;
break;
}
if(P1_3==0)
{
sp=sp+5;
if(sp==40) sp=5;
while(!P1_3);
}
}
if(P1_0==0) break;
}
if(P1_0==0) break;
}
if(P1_0==0)
{
while(!P1_0);
break;
}
}
for(m=0;m<10;m++) //右移数字字母
{
for(k=0;k<8;k++)
{
for(l=0;l<sp;l++)
{
for(n=0;n<16;n++) //扫16行
{
oe=1;
P0=(P0&0xf0)|n;
write_595((tab[n+16*(m+3)]>>k)|(tab[n+16*(m+4)]<<(8-k)));
write_595((tab[n+16*(m+2)]>>k)|(tab[n+16*(m+3)]<<(8-k)));
write_595((tab[n+16*(m+1)]>>k)|(tab[n+16*(m+2)]<<(8-k)));
write_595((tab[n+16*m]>>k)|(tab[n+16*(m+1)]<<(8-k)));
oe=0;
delay();
if(P1_0==0)
{
num=1;
wd=0;
time=0;
open=0;
break;
}
if(P1_3==0)
{
sp=sp+5;
if(sp==40) sp=5;
while(!P1_3);
}
}
if(P1_0==0) break;
}
if(P1_0==0) break;
}
if(P1_0==0)
{
while(!P1_0);
break;
}
}
}
if(num==0&&wd==0&&time==0&&open==1) //左移汉字
{
for(m=0;m<33;m++)
{
for(h=0;h<2;h++)
{
for(k=0;k<8;k++)
{
for(l=0;l<sp;l++)
{
for(n=0;n<16;n++) //扫16行
{
oe=1;
P0=(P0&0xf0)|n;
write_595((hz[n*2+h+m*32]<<k)|(hz[(n*2+(1-h)+32*h+m*32)]>>(8-k)));
write_595((hz[(n*2+(1-h)+32*h+m*32)]<<k)|(hz[n*2+32+m*32+h]>>(8-k)));
write_595((hz[n*2+32+m*32+h]<<k)|(hz[n*2+(1-h)+32*h+32+m*32]>>(8-k)));
write_595((hz[n*2+(1-h)+32*h+32+m*32]<<k)|(hz[n*2+32*2+m*32+h]>>(8-k)));
oe=0;
delay();
if(P1_0==0)
{
num=0;
wd=0;
time=0;
open=0;
break;
}
if(P1_3==0)
{
sp=sp+5;
if(sp==40) sp=5;
while(!P1_3);
}
}
if(P1_0==0) break;
}
if(P1_0==0) break;
}
if(P1_0==0) break;
}
if(P1_0==0)
{
while(!P1_0);
break;
}
}
}
}while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -