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

📄 dot_9.c

📁 LED16X16 滚动显示,非常经典
💻 C
字号:
/*--------------------------------------------------------------*/
//包含头文件
#include<reg52.h>


/*--------------------------------------------------------------*/
//代码区
//取码规则:纵向取模,字节倒序
//取码顺序:左到右,上到下(← → ↑ ↓)
unsigned char code table[]={
0x00,0x02,0x02,0x02,0x02,0x82,0x42,0xFE,0x06,0x42,0xC2,0x82,0x02,0x03,0x02,0x00,
0x00,0x08,0x04,0x02,0x01,0x00,0x00,0x7F,0x00,0x00,0x00,0x01,0x07,0x02,0x00,0x00,//不0
0x80,0x80,0x80,0x80,0xBE,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xBE,0x80,0x80,0x80,0x00,
0x00,0x40,0x20,0x10,0x0E,0x10,0x20,0x3F,0x44,0x44,0x44,0x44,0x44,0x40,0x40,0x00,//是1
0x00,0xF8,0x8C,0x8B,0x88,0xF8,0x40,0x30,0x8F,0x08,0x08,0x08,0x08,0xF8,0x00,0x00,
0x00,0x7F,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x03,0x26,0x40,0x20,0x1F,0x00,0x00//的2
};
#define num sizeof(table)			//获得汉字个数



/*--------------------------------------------------------------*/
//延时500+0us 函数定义
void delay1(void)
{
    unsigned char i, j;
    for(i = 99; i > 0; i--)
    for(j = 1; j > 0; j--);
}


/*--------------------------------------------------------------*/
//主函数
void main(void)
{
	unsigned char i, n;				//n控制滚动速度
	unsigned int  m; 				//汉字移动变量
	unsigned char buffer[64];		//两个汉字的缓冲区
	unsigned char k;				//指向第几个汉字的变量
	bit next = 1, neg;				//控制是否缓冲,反色显示

	while(1)
	{
		if(next|m)
		{
			for(i = 0; i < 16; i++)				//写入两个汉字进缓冲区12-23-34
			{
				buffer[i]    = ((table[32*k+i])>>m)|((table[32*k+16+i])<<(8-m));	
				buffer[i+32] = (table[32*k+16+i])>>m;	
			}
		}	
									
		for(i = 0; i < 16; i++)					//单列扫描
		{
			if(neg)								//反色显示
			{
				P0 = ~buffer[i+m];				//字的上半部分
				P2 = ~buffer[i+m+32];			//字的下半部分
			}
			else								//正常显示
			{	
				P0 = buffer[i+m];				//字的上半部分
				P2 = buffer[i+m+32];			//字的下半部分
			}
			P1 = ~((0x0001<<i)&0xff);			//列扫描
			P3 = ~((0x0001<<i)>>8);
			delay1();delay1();delay1();			//延时
			P1 = 0xff;							//关显示
			P3 = 0xff;
		}
		n++; 
		if(n == 10)  {n = 0; m++;}				//控制滚动速度
		if(m == 10)  {m = 0; k++; next = 1;}	//下一组汉字
		else next = 0;							//控制是否缓冲
		if(k == num/32) {k = 0; neg = ~neg;}	//循环滚动
	}
}

⌨️ 快捷键说明

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