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

📄 16x80.c

📁 16X80点阵C程序(51)
💻 C
字号:
/******************************************
*P1为扫描数据,P3.2为扫描使能,P3.3为窜行移位使能,P3.4为锁存CP;
*P3.0为窜行数据入口,P3.1为窜行CP ;
*此数据为由单片机串行口发送;
*此程序为16x80点阵屏;
*完成时间:2010.10.06;
*付其业写;
**************************************************/
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar zimo;					//被扫描数据记数器为:0~15
uchar yid; 					//移位记数器为:0~15
uchar zi; 					//汉字个数记数器
sbit G=P3^2; 				//扫描使能
sbit MR=P3^3;				//串行移位使能
sbit STcp=P3^4;				//串行锁存CP
uint  BUFF[6];				//显存	
/**********************汉字库**********************/
uchar code TAB1[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//空格
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//空格
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//空格
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//空格
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//空格 
0x00,0x80,0x00,0x80,0xFC,0x80,0x04,0xFC,0x45,0x04,0x46,0x48,0x28,0x40,0x28,0x40,
0x10,0x40,0x28,0x40,0x24,0xA0,0x44,0xA0,0x81,0x10,0x01,0x08,0x02,0x0E,0x0C,0x04,//欢
0x00,0x00,0x41,0x84,0x26,0x7E,0x14,0x44,0x04,0x44,0x04,0x44,0xF4,0x44,0x14,0xC4,
0x15,0x44,0x16,0x54,0x14,0x48,0x10,0x40,0x10,0x40,0x28,0x46,0x47,0xFC,0x00,0x00,//迎
0x11,0x00,0x11,0x00,0x11,0x00,0x23,0xFC,0x22,0x04,0x64,0x08,0xA8,0x40,0x20,0x40,
0x21,0x50,0x21,0x48,0x22,0x4C,0x24,0x44,0x20,0x40,0x20,0x40,0x21,0x40,0x20,0x80,//你
0x01,0x00,0x01,0x00,0x01,0x08,0x7F,0xFC,0x01,0x00,0x21,0x10,0x19,0x30,0x09,0x44,
0xFF,0xFE,0x03,0x80,0x05,0x40,0x09,0x30,0x31,0x1E,0xC1,0x04,0x01,0x00,0x01,0x00,//来
0x01,0x04,0x7F,0x84,0x08,0x04,0x10,0x24,0x22,0x24,0x41,0x24,0x7F,0xA4,0x08,0xA4,
0x0A,0x24,0x7F,0x24,0x08,0x24,0x08,0x24,0x08,0x04,0x0F,0x84,0xF8,0x14,0x00,0x08,//到
0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF8,0x1C,0x1C,0x38,0x0C,0x70,0x00,0x70,0x00,
0x70,0x00,0x70,0x3F,0x70,0x1C,0x38,0x1C,0x1C,0x1C,0x0F,0xFC,0x00,0x00,0x00,0x00,//G
0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xF8,0x1C,0x0E,0x1C,0x0E,0x1C,0x0E,0x1C,0x1C,
0x1F,0xF8,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,//P
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFC,0x30,0x1C,0x30,0x04,0x38,0x00,0x1F,0x80,
0x03,0xF0,0x00,0x3C,0x20,0x0E,0x20,0x0E,0x38,0x0C,0x3F,0xF8,0x00,0x00,0x00,0x00,//S
0x08,0x08,0xFD,0xFC,0x10,0x88,0x10,0x88,0x20,0x88,0x20,0x88,0x7C,0x88,0xA7,0xFE,
0x24,0x88,0x24,0x88,0x24,0x88,0x25,0x08,0x3D,0x08,0x22,0x08,0x04,0x08,0x00,0x08,//研
0x02,0x00,0x01,0x00,0x7F,0xFE,0x44,0x42,0x88,0x34,0x12,0x10,0x02,0x20,0x3F,0xF0,
0x02,0x20,0x02,0x20,0x04,0x20,0x04,0x20,0x08,0x22,0x08,0x22,0x10,0x1E,0x60,0x00,//究
0x02,0x00,0x01,0x00,0x7F,0xFE,0x40,0x02,0x80,0x14,0x3F,0xF8,0x04,0x00,0x08,0x20,
0x1F,0xF0,0x01,0x10,0x01,0x00,0x1F,0xF0,0x01,0x00,0x01,0x08,0x7F,0xFC,0x00,0x00,//室
0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x7F,0xF8,
0xFF,0xF8,0x7F,0xF8,0x30,0x00,0x18,0x00,0x0C,0x00,0x04,0x00,0x00,0x00,0x00,0x00,//
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x3C,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3C,0x00,0x00,0x00,//.
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//空格
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//空格
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//空格
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//空格
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//空格 
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 //空格
};
/*******************延时函数**********************/
void delay(uint t)
{
	while(t--);
}
/**********************显存取数***********************************/
void qusu()
{
	uint huan;
	huan=TAB1[zimo*2+1+zi*32]|(TAB1[zimo*2+zi*32]<<8);
	BUFF[0]=((huan>>15)&0x01)|(((huan>>14)&0x01)<<1)|(((huan>>13)&0x01)<<2)|(((huan>>12)&0x01)<<3)|(((huan>>11)&0x01)<<4)|(((huan>>10)&0x01)<<5)|(((huan>>9)&0x01)<<6)|(((huan>>8)&0x01)<<7)|(((huan>>7)&0x01)<<8)|(((huan>>6)&0x01)<<9)|(((huan>>5)&0x01)<<10)|(((huan>>4)&0x01)<<11)|(((huan>>3)&0x01)<<12)|(((huan>>2)&0x01)<<13)|(((huan>>1)&0x01)<<14)|((huan&0x01)<<15);
	huan=TAB1[zimo*2+1+zi*32+32*1]|(TAB1[zimo*2+zi*32+32*1]<<8);
	BUFF[1]=((huan>>15)&0x01)|(((huan>>14)&0x01)<<1)|(((huan>>13)&0x01)<<2)|(((huan>>12)&0x01)<<3)|(((huan>>11)&0x01)<<4)|(((huan>>10)&0x01)<<5)|(((huan>>9)&0x01)<<6)|(((huan>>8)&0x01)<<7)|(((huan>>7)&0x01)<<8)|(((huan>>6)&0x01)<<9)|(((huan>>5)&0x01)<<10)|(((huan>>4)&0x01)<<11)|(((huan>>3)&0x01)<<12)|(((huan>>2)&0x01)<<13)|(((huan>>1)&0x01)<<14)|((huan&0x01)<<15);
	huan=TAB1[zimo*2+1+zi*32+32*2]|(TAB1[zimo*2+zi*32+32*2]<<8);
	BUFF[2]=((huan>>15)&0x01)|(((huan>>14)&0x01)<<1)|(((huan>>13)&0x01)<<2)|(((huan>>12)&0x01)<<3)|(((huan>>11)&0x01)<<4)|(((huan>>10)&0x01)<<5)|(((huan>>9)&0x01)<<6)|(((huan>>8)&0x01)<<7)|(((huan>>7)&0x01)<<8)|(((huan>>6)&0x01)<<9)|(((huan>>5)&0x01)<<10)|(((huan>>4)&0x01)<<11)|(((huan>>3)&0x01)<<12)|(((huan>>2)&0x01)<<13)|(((huan>>1)&0x01)<<14)|((huan&0x01)<<15);
	huan=TAB1[zimo*2+1+zi*32+32*3]|(TAB1[zimo*2+zi*32+32*3]<<8);
	BUFF[3]=((huan>>15)&0x01)|(((huan>>14)&0x01)<<1)|(((huan>>13)&0x01)<<2)|(((huan>>12)&0x01)<<3)|(((huan>>11)&0x01)<<4)|(((huan>>10)&0x01)<<5)|(((huan>>9)&0x01)<<6)|(((huan>>8)&0x01)<<7)|(((huan>>7)&0x01)<<8)|(((huan>>6)&0x01)<<9)|(((huan>>5)&0x01)<<10)|(((huan>>4)&0x01)<<11)|(((huan>>3)&0x01)<<12)|(((huan>>2)&0x01)<<13)|(((huan>>1)&0x01)<<14)|((huan&0x01)<<15);
	huan=TAB1[zimo*2+1+zi*32+32*4]|(TAB1[zimo*2+zi*32+32*4]<<8);
	BUFF[4]=((huan>>15)&0x01)|(((huan>>14)&0x01)<<1)|(((huan>>13)&0x01)<<2)|(((huan>>12)&0x01)<<3)|(((huan>>11)&0x01)<<4)|(((huan>>10)&0x01)<<5)|(((huan>>9)&0x01)<<6)|(((huan>>8)&0x01)<<7)|(((huan>>7)&0x01)<<8)|(((huan>>6)&0x01)<<9)|(((huan>>5)&0x01)<<10)|(((huan>>4)&0x01)<<11)|(((huan>>3)&0x01)<<12)|(((huan>>2)&0x01)<<13)|(((huan>>1)&0x01)<<14)|((huan&0x01)<<15);
	huan=TAB1[zimo*2+1+zi*32+32*5]|(TAB1[zimo*2+zi*32+32*5]<<8);
	BUFF[5]=((huan>>15)&0x01)|(((huan>>14)&0x01)<<1)|(((huan>>13)&0x01)<<2)|(((huan>>12)&0x01)<<3)|(((huan>>11)&0x01)<<4)|(((huan>>10)&0x01)<<5)|(((huan>>9)&0x01)<<6)|(((huan>>8)&0x01)<<7)|(((huan>>7)&0x01)<<8)|(((huan>>6)&0x01)<<9)|(((huan>>5)&0x01)<<10)|(((huan>>4)&0x01)<<11)|(((huan>>3)&0x01)<<12)|(((huan>>2)&0x01)<<13)|(((huan>>1)&0x01)<<14)|((huan&0x01)<<15);
		
}
/******************串口发数****************************/
void fasu()
{
	uint temp; //16位数据缓存
	uchar temp1,temp2;//两个8位数据缓存
//--------------------------------------------
    temp=(BUFF[0]>>yid)|(BUFF[1]<<(16-yid));
	temp1=temp&0x00ff;
	temp2=(temp&0xff00)>>8;		
	SBUF=~temp1;                                           
	while(TI==0);
	TI=0;
	SBUF=~temp2;
	while(TI==0);
	TI=0;
//--------------------------------------------
	temp=(BUFF[1]>>yid)|(BUFF[2]<<(16-yid));
	temp1=temp&0x00ff;
	temp2=(temp&0xff00)>>8;		
	SBUF=~temp1;                                           
	while(TI==0);
	TI=0;
	SBUF=~temp2;
	while(TI==0);
	TI=0;
//-------------------------------------------
	temp=(BUFF[2]>>yid)|(BUFF[3]<<(16-yid));
	temp1=temp&0x00ff;
	temp2=(temp&0xff00)>>8;		
	SBUF=~temp1;                                           
	while(TI==0);
	TI=0;
	SBUF=~temp2;
	while(TI==0);
	TI=0;
//-------------------------------------------
	temp=(BUFF[3]>>yid)|(BUFF[4]<<(16-yid));
	temp1=temp&0x00ff;
	temp2=(temp&0xff00)>>8;		
	SBUF=~temp1;                                           
	while(TI==0);
	TI=0;
	SBUF=~temp2;
	while(TI==0);
	TI=0;
//-------------------------------------------
	temp=(BUFF[4]>>yid)|(BUFF[5]<<(16-yid));
	temp1=temp&0x00ff;
	temp2=(temp&0xff00)>>8;		
	SBUF=~temp1;                                           
	while(TI==0);
	TI=0;
	SBUF=~temp2;
	while(TI==0);
	TI=0;						
}
/******************数据输出函数********************************/

/*****************主函数*******************/
void main()
{
	P0=0xff;//端口初使化
	P1=0xff;//端口初使化
	P2=0xff; //端口初使化
	P3=0xff; //端口初使化
	STcp=0;	 //端口初使化  
	yid=0;	  //移位记数器初使化
	zi=0;	 //汉字记数器初使化
	zimo=0;
	SCON=0x00;
	while(1)
	{
		uchar a,b,c,d;
		zi=0;
		for(a=0;a<16;a++)	  //(字的个数)
		{
			yid=0;
			for(b=0;b<16;b++)  //移位
			{
				for(c=0;c<4;c++) //静止时间
				{
					zimo=0;
					for(d=0;d<16;d++)//扫描输出
					{	
					    qusu();
                     	fasu();
						STcp=0;
						STcp=1;
						STcp=0;
						G=0;
						P1=d;
						zimo++;
					}
				}
				yid++;
			}
			zi++;
		}
	}
	delay(50000);
}

⌨️ 快捷键说明

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