LED显示屏工作原理及驱动程序发表时间:2024-10-29 10:05 几年前本人得到一块双色LED显示屏,因为没有控制器,所以对显示屏的工作原理进行了一番研究,利用手头上的元件,搭了一块电路板,编写了一段程序就放置一边了,这几天有时间,把原来的89C51汇编程序改了一下,改为AT89C2051和STC11F04E单片机能用的程序,放到博客上希望有兴趣的同行可以参考一下。 工作原理:这块显示屏是分为上下共32行LED点阵,水平有4块16*16点阵,所以能显示16*16点阵8个汉字。工作原理是用74ls138做为行扫描,列用74ls595控制,当138扫描到某一行时,595决定哪一列该亮,就这样快速扫描,就形成了图像了。参见下图: 各信号走向如下: l JP1排针16脚信号A->74HC245的第2脚(信号放大)->74HC245的第18脚->74HC138的第1脚->JP2排针16脚 l JP1排针15脚信号B->74HC245的第3脚(信号放大)->74HC245的第17脚->74HC138的第2脚->JP2排针15脚 l JP1排针1脚信号OE->74HC245的第4脚(信号放大)->74HC245的第16脚->74HC04D的第1脚->74HC04D的2脚-> ①74HC138的第5脚->② 74HC04D的3脚->74HC04D的4脚->JP2排针1脚 l JP1排针11脚信号R->74HC245的第9脚(信号放大)->74HC245的第11脚->最左上角74HC595-1的第14脚->74HC595-1的9脚->74HC595-2的14脚->74HC595-2的9脚->最右下角74HC595-16的14脚->74HC595-16的9脚->JP2排针11脚 我现在用的是双色板,JP1各端口含义如下: ABCD是显示屏电路板上的74LS138地址译码端, 单片机寄存器R3控制行扫描,当R3从00000000到00010000增加时ABCD的变化给138译码,当R3=0FH时正好扫描16行,当进位到10时扫描结束,OE是138的片选使能端,低电平有效。G1,G2是给595送绿色数据,R1R2是给595送红色数据的,ST是595数据锁存脉冲,SC是595时钟输入端。所有11个接线端都要通过74HC244总线驱动器接入。正常工作时因为按行扫描,首先扫描第一行和第17行同时进行,依次扫描到第16行和32行结束,所以送数据时,要把“黑龙江省哈尔滨市”8个汉字分成上面4个和下面4个,首先取“黑”字的16*16点阵数据的第一行第一个字节(一个汉字32个字节)存入单片机寄存器R6中,再取“哈” 字的16*16点阵数据的第一行第一个字节存入单片机寄存器R4中,调用送字节子程序送出到595中,接下来再取“黑”字的16*16点阵数据的第一行第二个字节存入单片机寄存器R6中,接着取“哈” 字的16*16点阵数据的第一行第二个字节存入单片机寄存器R4中,调用送字节子程序送出到595中,如此共取8次,用R2控制,这样就扫描完了第一行和第17行,用R3控制ABCD共扫描16行(因为一次扫描2行)就完成一屏的数据显示。为了配合这种扫描方式,8个汉字的点阵数据要进行重新排列才行,这在后续的程序中再说。 下面是51单片机汇编语言代码,主要由显示程序和送字节数据程序2段程序组成: ORG 0000H AJMP KS ;显示绿色黑龙江省哈尔滨市,11.0592MHZ,STC11F04E单片机 ORG 0003H RETI ORG 000BH ; LJMP 0C00H RETI ORG 001BH RETI ORG 0023H ;AJMP S ;接收数据转S A1 EQU P1.0 ;P1.0=A 接2针 B1 EQU P1.1 ;P1.1=B 接4针 C1 EQU P1.2 ;P1.2=C 接6针 D1 EQU P1.3 ;P1.3=D 接8针 G1 EQU 0B3H ;数据输出G1=B4 G2 EQU 0B7H ;数据输出 G2=B5 STB EQU 0B2H ;595数据锁存脉冲=L 12脚 SCK EQU 0B4H ;595时钟输入=S 11脚 R11 EQU 0B0H ;改为81,R22改为80,上下显示颠倒 R22 EQU 0B1H EN EQU 0B5H ;138片选,行输出使NENG DELBUF EQU 7FH WDT_CONTR EQU 0C1H AUX EQU 0A2H ; |