16x64LED点阵模块驱动记录(一)简单实现

驱动记录链接:

1、本文

2、16x64LED点阵模块驱动记录(二)左移实现

3、16x64LED点阵模块驱动记录(三)字库读取并显示

4、16x64LED点阵模块驱动记录(四)SST29EE020 GB2312汉字库读取

5、16x64LED点阵模块驱动记录(五)DS1302时钟

6、16x64LED点阵模块驱动记录(六)PYTHON上位机串口通信并显示

7、16x64LED点阵模块驱动记录(七)像画布一样操作点阵屏

前言

        某宝志鑫家入手一款16x64点阵模块,此类模块常见于停车场等户外场地,用于动态显示车牌号天气时间等信息。模块显示面板由16个8*8点阵屏拼为16x64点阵,主控芯片为STC89C52,行扫描为1个74HC154(4-16译码器),列扫描为8个74HC595(8位串行输入、并行输出的位移缓存器)。板上还有1块flash存储芯片sst29ee020(256k*8,感觉是字库),配合它工作的是74hc573锁存器(隔离sst29ee020输入输出,复用MCU IO);另外还有1个DS1302时钟芯片。

        模块功能较多,不是单纯的点阵显示模块。将模块理解为带MCS、存储、时钟、显示的多功能开发板可能更为合适。

        本文描述显示功能简单实现方法。并且希望可以通过进一步研究,将其他功能也开发出来。

        另外,74HC154做行扫描,为以后做左移效果增加了难度。74HC154是输出低电平有效,也就是点阵行扫描低电平有效,共阴?74HC154虽然是低电平有效,但到点阵屏应该做了电平转换。并且595的列扫描是低电平有效。所以还是共阳。

        sst29ee020较老,地址总线占了MCU18个IO口,STC89C52外部存储寻址最大为64k,52要驱动256k的存储,程序上控制要复杂一些。主要是现在都串行驱动存储了,这种方式应该都淘汰了吧。

16x64LED点阵模块驱动记录(一)简单实现_第1张图片


一、原理图

        简单地画了下原理图,为了仿真并没有完成照搬实物,图中的CD1602和几个LED在实物中并不存在。 proteus中没有sst29ee020的模型,找了个其他容量小一些的存储代替,但是存储是不能仿真的。

二、源码

main.c(就一个文件)

#include 

sbit SH_CP = P1^5;
sbit DS = P2^7;
sbit ST_CP = P1^6;


//PCtoLCD2002
//
unsigned char code Table_row[] = {


//这个调了好久,现在贴的不知道是不是实际跑的字模了
//阳码,顺向,逐行式,C51,左右反转
0xFE,0xFF,0xFE,0xFF,0xFE,0xC0,0xC0,0xDF,0xDF,0x5F,0xEF,0x6D,0xFD,0xAB,0xFD,0xD7,
0xFD,0xF7,0xFA,0xEB,0xFA,0xDB,0xF7,0x5D,0xF7,0x7E,0xEF,0xBF,0xDF,0xDF,0xBF,0xEF,/*"欢",0*/
0xFF,0xFF,0xFE,0xFB,0xC3,0x37,0xDB,0xB7,0xDB,0xBF,0xDB,0xBF,0xDB,0xB0,0xDB,0xB7,
0xDB,0xB7,0xD2,0xB7,0xEB,0x37,0xFB,0xB7,0xFB,0xF7,0xFB,0xEB,0x80,0x1D,0xFF,0xFF,/*"迎",1*/
0xFF,0x7F,0xEF,0x7B,0xEF,0x77,0xF7,0x6F,0xFB,0x6F,0xFF,0x7F,0x80,0x00,0xFD,0xDF,
0xFD,0xDF,0xFD,0xDF,0xFD,0xDF,0xBD,0xEF,0xBD,0xEF,0xBD,0xF7,0x83,0xFB,0xFF,0xFC,/*"光",2*/
0xFE,0xEF,0xFE,0xEF,0xFE,0xEF,0x80,0x6D,0xFD,0x6D,0xFB,0xAD,0xFB,0xCD,0xFF,0xED,
0xC0,0x6D,0xDB,0x6D,0xDB,0x6D,0xDB,0x6D,0xDB,0x6D,0xC0,0x6F,0xDF,0x6F,0xFF,0xEF,/*"临",3*/

};

/*
void delayms(unsigned int m)
{
	int i,j;
	for(i=0; i>1;
		SH_CP =1;  	//上升沿,移位
	}
}


void Matrix16x16(unsigned char num)
{
	unsigned char k,i;
	unsigned int m,n;
	unsigned char Char_num=num*32;
	
	for(m=0;m

16x64LED点阵模块驱动记录(一)简单实现_第2张图片

16x64LED点阵模块驱动记录(一)简单实现_第3张图片


三、注意事项

        用STC-ISP下载程序时,选择使能6T(双倍速)模式,这样显示效果会提高一些。

       板上12V的3.96mm接口是电源。

       另外一个3.96mm接口的(5V,LED)就是普通的TTL串行接口,可以接下载器的5V和TXD,实测可以做串口接收。3.96mm接口后面接光耦,光耦输出端到MCU的RXD。光耦负责隔离,提高可靠性。串口通讯的例子很多,不再赘述

       关于本模块的认识前三篇处在探索阶段,到第(四)篇基本完成,可以通过下面链接直达(四):       16x64LED点阵模块驱动记录(四)SST29EE020 GB2312汉字库读取_修充电器上瘾的博客-CSDN博客接上文《16x64LED点阵模块驱动记录(三)字库读取并显示》。上文主要实现了对SST29EE020外部存储的读取,证实了这个外部存储确实是个字库IC。在没有证实之前这都只是猜测。那么下一步应该研究如何正确地读取字库中字模。虽然这方面的例子很多,但我还是走了一两天弯路。走弯路的原因其实很简单。我尝试使用GB2312字库的读取实现方法,但是发现手头的模块似乎并非全部支持此方法,导致部分汉字无法正确读取。在我的漫长尝试中,我开始怀疑程序是否存在问题。经过一晚尝试,我依旧没有找到答案。https://blog.csdn.net/weixin_44067125/article/details/130251835

        “感觉之前商家好像卖过这款模块,还有红、蓝两种可选,但是我看到时只剩8块多的故障品了,就没下手。”

        “这次果断入坑,看来有得研究了”

你可能感兴趣的:(51单片机)