#include "reg52.h" //包函AT89S52 内部资源的定义(注视参看书160页)
#define uchar unsigned char //宏定义
uchar led [10]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,}; //数字1~10,字符串
uchar led1[64]; //存储接收数据
unsigned int i,j,t,k;
void scjs(void)interrupt 4 //定义中断
{
ES=0;// 使能串行口的中断
k=1;
while(1)
{
RI=0;
led1[k-1]=SBUF; //将接收数据送段码表
k++;
TH0=0x 3c ; //t0定时50sm内接收不到数据跳过接收
TL0=0xb0;
TR0=1;
while(!RI)
{
if(!TF0) goto FH;
}
}
FH:TF0=0;//TF0不清零不能重新接收
TR0=0;
for(j=1;j<k;j++)
{
SBUF=led[j-1];//数据送回给pc
while(!TI);
TI=0;
}
}
delay(t)
{
ES=1;
SCON=0x50;
for(i=0;i<t;i++);
ES=0;
SCON=0x00;
}
void main (void)
{
int a,c;
TMOD=0x21;
TH1=0Xfd;
TL1=0xfd;
SCON=0x50;
PCON=0x00;
IE=0x90;
TR1=1;
k=1;
P2=0xaa;
P1=0xaa;
while(1)
{
ES=0;
SCON=0x00;
for(a=0;a<=k+1/k*8;a++)
{
for(c=5;c>=0;c--)
{
if(a+c<k+1/k*8+1)
{
if(k==1)SBUF=led[a+c];
else SBUF=led1[a+c];
}
else SBUF=0x00;
while(!TI);
TI=0;
}
delay(39000);
}
}
}
// 显示一个大写的“二”///
#include<reg52.h>
#define uchar unsigned char //宏定义
code uchar er[]={0x00,0xff,0x00,0x00,0x00,0x00,0x7e,0x00};//定义数组 二
//code uchar hang[]={0xff,0xbf,0x00,0x00,0x00,0x00,0xfb,0xff};//定义数组
int i;
uchar b;
void delay()//延时函数
{
for(i=0;i<195;i++);
}// 12M 晶振延时约19500x1us=0.195s
void main()//主程序
{ while(1)
{
P2=0xfe; //行控制
for(b=0;b<8;b++)//循环数组内容
{
P3=er[b];//P3口显示
delay();
P2=P2<<1|P2>>7;
}
}
}
///另一种/
#include<reg52.h>
#define uchar unsigned char //宏定义
code uchar er[]={0x00,0xff,0x00,0x00,0x00,0x00,0x7e,0x00};//定义数组 二
//code uchar hang[]={0xff,0xbf,0x00,0x00,0x00,0x00,0xfb,0xff};//定义数组
int i;
uchar b;
void delay()//延时函数
{
for(i=0;i<195;i++);
}// 12M 晶振延时约19500x1us=0.195s
void main()//主程序
{ while(1)
{
P2=0x 7f ; //行控制
for(b=0;b<8;b++)//循环数组内容
{
P3=er[b];//P3口显示
delay();
P2=P2<<7|P2>>1;
}
}
}
///多组显示/
#include<reg52.h>
#define uchar unsigned char //宏定义
code uchar er[]={0x00,0x7e,0x00,0x00,0x00,0x00,0xff,0x00};//定义数组 二
code uchar si[]={0xFE,0xAA,0xAA,0xAA,0xAE,0xC2,0xFE,0x82};//定义数组 四
code uchar wu[]={0xFE,0x10,0x10,0x 7C ,0x24,0x24,0x24,0xFE};//定义数组 五
int i;
uchar b;
void delay()//延时函数
{
for(i=0;i<195;i++);
}// 12M 晶振延时约19500x1us=0.195s
void main()//主程序
{ while(1)
{
P2=0xfe; //行控制
for(b=0;b<8;b++)//循环数组内容
{
P3=wu[b];//P3口显示
delay();
P2=P2<<1|P2>>7;
}
}
}
//向上移动的“五”字//
#include<reg52.h>
#define uchar unsigned char //宏定义
code uchar er[]={0x00,0x7e,0x00,0x00,0x00,0x00,0xff,0x00};//定义数组 二
code uchar si[]={0xFE,0xAA,0xAA,0xAA,0xAE,0xC2,0xFE,0x82};//定义数组 四
code uchar wu[]={0xFE,0x10,0x10,0x 7C ,0x24,0x24,0x24,0xFE,0xFE,0x10,0x10,0x 7C ,0x24,0x24,0x24};//定义数组 8+8-1=15 其中的一是为了一次移动一格
int i,a,b,c;
void delay()//延时函数
{
for(i=0;i<195;i++);
}// 12M 晶振延时约19500x1us=0.195s
void main()//主程序
{ while(1)
{
for(a=0;a<8;a++)
{for(b=0;b<50;b++)
{
P2=0xfe; //行控制
for(c=0;c<8;c++)//扫描一针取八个数据
{
P3=wu[a+c];//a+c表示第a针第c列
delay();
P3=0xff;
P2=P2<<1|P2>>7;
}
}
}
}
}
//向上移动的一组数据
#include<reg52.h>
#define uchar unsigned char //宏定义
code uchar er[]={0x00,0x7e,0x00,0x00,0x00,0x00,0xff,0x00};//定义数组 二
code uchar si[]={0xFE,0xAA,0xAA,0xAA,0xAE,0xC2,0xFE,0x82};//定义数组 四
code uchar wu[]={0xFE,0x10,0x10,0x 7C ,0x24,0x24,0x24,0xFE,0xFE,0x10,0x10,0x 7C ,0x24,0x24,0x24,0xFE,0xAA,0xAA,0xAA,0xAE,0xC2,0xFE,0x82,0x00,0x7e,0x00,0x00,0x00,0x00,0xff,0x00};//定义数组 五
int i,a,b,c;
void delay()//延时函数
{
for(i=0;i<195;i++);
}// 12M 晶振延时约19500x1us=0.195s
void main()//主程序
{ while(1)
{
for(a=0;a<32;a++)
{for(b=0;b<50;b++)
{
P2=0xfe; //行控制
for(c=0;c<8;c++)//扫描一针取八个数据
{
P3=wu[a+c];//a+c表示第a针第c列
delay();
P3=0xff;
P2=P2<<1|P2>>7;
}
}
}
}
}