双色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总线驱动器接入。正常工作时因为按行扫描,首先扫描第1行和第17行同时进行,依次扫描到第16行和32行结束,所以送数据时,要把“黑龙江省哈尔滨市”8个汉字分成上面4个和下面4个,首先取“黑”字的16*16点阵数据的第1行第1个字节(一个汉字32个字节)存入单片机寄存器R6中,再取“哈” 字的16*16点阵数据的第1行第1个字节存入单片机寄存器R4中,调用送字节子程序送出到595中,接下来再取“黑”字的16*16点阵数据的第1行第二个字节存入单片机寄存器R6中,接着取“哈” 字的16*16点阵数据的第1行第二个字节存入单片机寄存器R4中,调用送字节子程序送出到595中,如此共取8次,用R2控制,这样就扫描完了第1行和第17行,用R3控制ABCD共扫描16行(因为一次扫描2行)就完成一屏的数据显示。
双色LED显示屏编程为了配合这种扫描方式,8个汉字的点阵数据要进行重新排列才行,这在后续的程序中再说。