⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 text1.c

📁 32*64点阵显示屏C语言程序以下是32x64点阵LED电子显示屏的源程序
💻 C
字号:
/*以下是32x64点阵LED电子显示屏的源程序,采用C语言编写。*/
#include <AT89x51.H>
unsigned int zimo,xx=0;	//zimo是字模计数器,xx为分屏显示的时候的字数。
unsigned char yid,h;		//yid为移动计数器,h为行段计数器
unsigned char code hanzi[];			//汉字字模
unsigned char BUFF[18],BUFF2[18];	//左移显示的缓存
void qing(void);		void xianshi(void);
void fen(void);		void zuo(void);
void in_data(void);				//调整数据
void rxd_data(void);				//左移发送数据
void out_rxd(unsigned char *d);		//分屏、上移发送数据
char code sw[]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x00}; /*8行段码*/
/***********主程序******************/
void main(void)
{	unsigned char ee;
	SCON=0;P1=0;yid=0;zimo=0;
	while(1)
	{	fen();				//分屏显示
		for(ee=30;ee>0;ee--)//清屏幕3秒
		{qing();}
		zuo();				//左移显示
		for(ee=30;ee>0;ee--)
		{qing();}
	}
 }
/**********清屏幕*******************/
void qing (void)
{  unsigned char zz,xx=0x0ff;
	for (zz=33;zz>0;zz--)
	{out_rxd(&xx);}
	P1=0xff; P1=0;	//锁存为高,74HC595锁存信号	
	P2=0;				//清74LS138的使能端
} 
/**********分屏显示***********/
void fen(void)
{	do{	xianshi();	}while(xx++<=5);	//调用单屏显示
	xx=0;
}
/************单屏显示*************/
void xianshi(void)
{	unsigned char ii,jj;	unsigned int kk,aa;
	for (kk=500;kk>0;kk--)		//每屏显示500次
	{for(ii=1;ii<16;ii+=2)		//每个汉字分8行扫描
		{for (jj=0;jj<8;jj++)	//每次要发送8个汉字的2个字节,发送8次
			{	aa=(xx*8+jj)*32+ii;
				out_rxd(&hanzi[aa]);	//从串口输出第1个字的第1字节。
			    out_rxd(&hanzi[aa-1]);	//从串口输出第1个字的第1字节。
			}
			for (jj=0;jj<8;jj++)	//每次要发送8个汉字的2个字节,发送8次
			{	aa=(xx*8+jj)*32+ii;
			    out_rxd(&hanzi[aa+16]);	//从串口输出第1个字的第17字节。
				out_rxd(&hanzi[aa+15]);	//从串口输出第1个字的第18字节
			}
			P2=0x0ff;
			P1=0xff; P1=0;			//锁存为高,74HC595锁存信号	
			P2=sw[h];				   //输出行信号
			h++;	   					//行加一
			if(h==8)h=0;
		}
	}
}
/***************左移显示************/
void zuo(void)
{	unsigned char i,d=5;	//d为移动的时候一个汉字的扫描显示次数
	xianshi();				//调用单屏显示
	while(zimo<=1450)
		{while(yid<16)					//数据移位。
			{for(i=0;i<d;i++)				//移动速度
				{for(h=0;h<8;h++)	  		//8行扫描
					{	in_data();			//调整数据
						rxd_data();		//串口发送数据
						P2=sw[h];			//送段码
						P1=0xff;			//锁存为高,595锁存信号
				        P1=0;
					}
				}
				yid++;						//移动一步
			}
		   yid=0;zimo=zimo+32;	   		//后移一个字,
		}
	zimo=0;
}
/*************分屏显示的数据发送************/
void out_rxd(unsigned char *d)	  /*从串口发送数据*/
{	SBUF=*d; while(!TI);     	  //等待发送完毕
     TI=0;
 } 
/*******左移显示读取数据 并调整**************/
void in_data(void)
{	char s,w; unsigned int qqq;
	for(s=8;s>=0;s--)
	{	w=s+s;
		qqq=zimo+h+h+s*32;
		BUFF[w+1]=hanzi[qqq];
		BUFF[w]=hanzi[qqq+1];
		BUFF2[w+1]=hanzi[qqq+16];
		BUFF2[w]=hanzi[qqq+17];
	}
}
/**********左移显示的数据调整发送***************/
void rxd_data(void)		            //串行发送数据
{unsigned char inc,s,tempyid,temp;
if(yid<8)	inc=0;
else		inc=1;
for(s=0+inc;s<16+inc;s++)			   //发送数据
	{ if(yid<8)	tempyid=yid;
	  else			tempyid=yid-8;
	temp=(BUFF[s]>>tempyid)|(BUFF[s+1]<<(8-tempyid));	
	SBUF=temp;			//把BUFF中的字节从大到小移位相或后发送输出。
	while(!TI);TI=0;	//等待发送中断
	}
for(s=0+inc;s<16+inc;s++)			   //发送8字节数据
	{  if(yid<8)	tempyid=yid;
	  else 		tempyid=yid-8;
	temp=(BUFF2[s]>>tempyid)|(BUFF2[s+1]<<(8-tempyid));	
	SBUF=temp;			//把BUFF中的字节从大到小移位相或后发送输出。
	while(!TI);TI=0;	//等待发送中断
	}
}
/*************汉字编码信息*************/ 
unsigned char code hanzi[]={0x00,0x00,0xF8,0x00,0x00,0x7E,0x52,0x66,0x4A,0x52,0x7E,0x00,0x00,0xF8,0x00,0x00,0x00,0x84,0x65,0x1D,0x05,0x05,0xFF,0x00,0x00,0xFF,0x05,0x05,0x05,0xFD,0x00,0x00},/*"鼎",0*/
{0x00,0x00,0x80,0x9F,0x95,0x95,0x95,0x95,0x95,0xF5,0x95,0xB5,0xDF,0x80,0x80,0x00,0x40,0x30,0x0F,0x02,0x02,0x0A,0x12,0x0E,0x40,0x27,0x18,0x18,0x26,0x40,0x70,0x00},/*"晟",1*/
{0x00,0x00,0xFE,0x22,0x22,0xFE,0x40,0x21,0xD1,0x4F,0x41,0x51,0x61,0xDF,0x00,0x00,0x40,0x60,0x3B,0x01,0x09,0x33,0x60,0x00,0x0F,0x32,0x62,0x02,0x0A,0x37,0x60,0x00},/*"照",2*/
{0x00,0xFE,0x22,0x22,0x22,0xFE,0x00,0x00,0xFF,0x11,0x11,0x11,0x11,0xFF,0x00,0x00,0x00,0x03,0x02,0x02,0x02,0x43,0x20,0x18,0x07,0x01,0x01,0x41,0x81,0x7F,0x00,0x00},/*"明",3*/
{0x14,0x24,0x44,0x84,0x64,0x1C,0x20,0x18,0x0F,0xE8,0x08,0x08,0x28,0x18,0x08,0x00,0x20,0x10,0x4C,0x43,0x43,0x2C,0x20,0x10,0x0C,0x03,0x06,0x18,0x30,0x60,0x20,0x00},/*"欢",4*/
{0x40,0x41,0xCE,0x04,0x00,0xFC,0x04,0x02,0x02,0xFC,0x04,0x04,0x04,0xFC,0x00,0x00,0x40,0x20,0x1F,0x20,0x40,0x47,0x42,0x41,0x40,0x5F,0x40,0x42,0x44,0x43,0x40,0x00},/*"迎",5*/
{0x80,0x40,0x30,0xFC,0x03,0x90,0x68,0x06,0x04,0xF4,0x04,0x24,0x44,0x8C,0x04,0x00,0x00,0x20,0x38,0x03,0x38,0x40,0x40,0x49,0x52,0x41,0x40,0x70,0x00,0x09,0x30,0x00},/*"您",6*/
{0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"!",7*/};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -