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

📄 16x16dian zhen.c

📁 138与595控制 16x16点阵
💻 C
字号:
//作者:肖向前
//日期:2012年12月14日
//功能:16*32点阵
//取模方式:横向
//两个138,两个595
#include <reg52.h> 
#include <intrins.h> 
#define uchar unsigned char  
#define uint unsigned int 
#define NOP    _nop_() 

sbit OE = P2^3; 
sbit A1 = P2^0; 
sbit B1 = P2^1; 

sbit SRCLK = P2^1;    //11脚SHCP    移位时钟 
sbit SCLK = P2^2;    //12脚STCP    锁存时钟 
sbit DATA = P2^0;    //数据输入 

char code table[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*--  文字:  明  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0xFC,0x7C,0x84,0x44,0x84,0x44,0x84,0x44,0xFC,0x7C,0x84,0x44,0x84,0x44,0x84,
0x44,0xFC,0x7C,0x84,0x00,0x84,0x01,0x04,0x01,0x04,0x02,0x04,0x04,0x14,0x00,0x08,


0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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 serial_input(uchar dat)     
{ 
	uint m; 
	for(m=0;m<8;m++) 
	{ 
		if(dat&0x80) 
		DATA=1; 
		else  
		DATA=0; 
		SRCLK=0; 
		SRCLK=1;    
		NOP; 
		NOP; 
		SRCLK=0; 
		NOP; 
		NOP; 
		dat=dat<<1; 
	} 

} 

/*******************************************************************************************/ 
//595并行输出 
void serial_output() 
{ 
	SCLK=1;                  
	NOP; 
	NOP; 
	SCLK=0; 
}   
/*******************************************************************************************/ 
/*******************************************************************************************/ 
void delay(int z)
{
int x,y;
for(x=0;x<z;x++)
for(y=0;y<110;y++);
}


/*******************************************************************************************/ 
/*******************************************************************************************/ 
//整屏显示 
void display() 
{ 
	uint i,up=0,control;
	for(control=0;control<60;control++)//移动速度
	{
		for(i=0;i<16;i++)
		{	
			serial_input(table[2*i+2*up]); //左半屏
			serial_input(table[2*i+1+2*up]);//右半屏
			
			P1=i;	//行控制 
			serial_output(); //595输出
			delay(5);		
		}
		up=up+1;	//上移,改变up可实现上移或下移
		if(up>32) up=0;	
	}
	 

} 

void main() 
{ 
	while(1) 
	{ 
		display(); 
	} 
}

⌨️ 快捷键说明

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