📄 32x64led点阵上显示32x32的汉字.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 + -