点阵显示程序

 

#include "reg52.h" //包函AT89S52 内部资源的定义(注视参看书160页)

#define uchar unsigned char                //宏定义

uchar led [10]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,};  //数字110,字符串

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 晶振延时约19500x1us0.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 晶振延时约19500x1us0.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 晶振延时约19500x1us0.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 晶振延时约19500x1us0.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 晶振延时约19500x1us0.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;

}

}

}

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值