第七篇 亚龙236 led 16*32点阵显示显示汉字
亚龙236设备显示模块有led点阵,16*32点阵可以显示汉字或图形。
这个模块只能教学用,实际的户外屏用的电路和它从原理上不一样。数码管模块也一样和常用电路不一样。但是竞赛都用 -!
led点阵共32列。每8列成一组,共四组,每次写入一组的数据,四次写完一行数据,再驱动这一行,通过uln2803供电让它显示。显示1ms再刷下一行数据,再点下一行。
点阵共16行,行驱动使用uln2803达林顿扩流,分上下两半屏写入数据。16行工作时只有一行给高电平,通过uln2803使得这一行得电能亮。
具体电路见pdf文档。
proteus画图时为了好看把驱动电路和led点阵分开画在两页了。
代码:
/*
教学使用
李枝蔚 西峰职专
*/
#include <reg52.h>
//用户数据类型定义
#define uchar unsigned char
#define uint unsigned int
//硬件连接定义
sbit row0 = P3 ^ 4; //上半屏选通信号 低电平有效
sbit row1 = P3 ^ 5; //下半屏
sbit col0 = P3 ^ 0; //第一组选通信号。低电平有效
sbit col1 = P3 ^ 1; //第二组选通信号
sbit col2 = P3 ^ 2; //第三组
sbit col3 = P3 ^ 3; //第四组
#define mat_port P0 //点阵数据端口
//用户全局变量定义
bit mat_refresh_en = 0; //点阵刷新使能标志,每1ms刷新一次,显示16行的其中一行
uchar i=0; //循环变量
uchar code line_sel[16] = {
0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
uchar code mat_hz[4][16] = {
{
0x00,0x00,0x3F,0x20,0xA0,0x92,0x54,0x28,0x08,