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

📄 32x64led点阵上显示32x32的汉字.txt

📁 程序名称:32x64LED点阵上显示32X32的汉字 日期 :2006.11.25 程序说明:一个汉字占128个字节
💻 TXT
字号:
/*************************************************
程序名称:32x64LED点阵上显示32X32的汉字
日期    :2006.11.25
程序说明:一个汉字占128个字节,点阵每一行数据占4个字节
作者	:liuanggh	
*************************************************/
#include <reg52.h>
#include "P1.h"

sbit  	LOAD 	=P3^2;	//74LS595锁存
sbit  	RST 	=P3^3;  //
sbit 	SLECET 	=P2^3;  //74LS138译码器使能端,低电平有效

uchar code line[] = {   //行扫描段码
						0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07
					};
uchar line_count;			//行计数器
uchar move_count;			//移位计数器
uchar font_count;			//字计数器
uchar buff[16] = {0x00};				//一行有64列,每8列数据占一个字节,所以缓冲区需要8个字节

void transform_data();  //数据转换
void send_data();  		//串行发送8个字节的数据

main()
{
	uchar i;
	uchar j = 0;
	SCON = 0;			//串口工作在方式0下
	SLECET = 1;     	//138译码器无效
	RST = 0;        
	RST = 1;			//595复位
	/*
	for(i = 0; i < 32; i++)
	{
		LOAD = 0;
		send_data();
		LOAD = 1;
		P2 = line[j%8];  //片选138
		P1 = line[i%8];
		if(i%8 == 7)
		j++;		
	}
	*/
	for(i = 0; i < 8; i++)
	{
		P2 = line[i];		//138译码器片选
		for(j = 0; j < 8; j++)
		{			
			LOAD = 0;      //保持原有数据
			send_data();	//发送数据
			SLECET = 1; 	//关闭显示
			LOAD = 1;		//595锁存数据
			SLECET = 0; 	//138译码器有效
			P1 = line[j];	//行扫描
			line_count++;	//行扫描一次,行计数器加1
			if(line_count > 31)
			line_count = 0;
			delay();
		}
	}

}	

void transform_data()  //数据转换
{
	/*
    uchar temp[5] = {0};
	uchar i;
	for( i = 0; i < 4; i++)
	temp[i] = font[(font_count + i) * 8 + line_count]; //取第i行数据
	for( i = 0; i < 4; i++)
	buff[i] = ( temp[ i ] >> move_count )|( temp[ i + 1] << ( 7 - move_count ) );
	*/
	uchar i;
	for(i = 0; i < 4; i++)
	{
		buff[i] = hanzi[ line_count*4 + i];
	}

	for(i = 4; i < 8; i++)
	{
		buff[i] = hanzi[ line_count*4 + i + 128];
	}

	for(i = 8; i < 12; i++)
	{
		buff[i] = hanzi[ line_count*4 + i + 256];
	}

	for(i = 12; i < 16; i++)
	{
		buff[i] = hanzi[ line_count*4 + i + 384];
	}

}


void send_data()  			//串行发送8个字节的数据
{
	uchar i;
	transform_data();			//数据转换

	//显示"阵点"
	for( i = 0; i < 16; i++)
	{
		//SBUF = 0xff;
      SBUF = buff[i];
		while(!TI);
		TI = 0;
	} 

	/*
	//显示"点阵"
	for( i = 4; i < 8; i++)
	{
		//SBUF = 0xff;
      SBUF = buff[i];
		while(!TI);
		TI = 0;
	} 
	for( i = 0; i < 4; i++)
	{
		//SBUF = 0xff;
      SBUF = buff[i];
		while(!TI);
		TI = 0;
	} 
	*/
}

⌨️ 快捷键说明

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