为了简化L ED 显现屏的驱动电路,节省单片机的端口资源,对常见的L ED 显现屏驱动电路进行了改善,悉数选用通用的串入并出移位寄存器作为选通驱动,体系悉数选用串行数据操控,形成了一种只需4 根信号线的L ED 显现屏驱动电路处理方案,仅需占用单片机的4个I/ O 端口发送串行数据就可以完结正常的显现功用,文中给出相应的程序代码。
1 、导言
L ED 显现屏运用非常广泛,是信息传达的有用东西。在某井下矿采设备监测体系中选用了ARM S3C44B0X 32 位单片机作为CPU ,依据运用要求,监测体系的显现部分运用16 行的单色L ED 显现屏实时显现监测数据。因为体系外设较多,端口资源非常严重,针对这种状况开发了一种四线驱动的显现屏电路规划方案,很好地处理了这个问题。
2、 常见的驱动电路规划及改善
在常见的显现驱动电路规划中,列操控一般选用串入并带锁存的移位寄存器如74HC595 ,将数据打入锁存器中,使寄存器各引脚出现与锁存器相同的状况来选中需求点亮的列。行操控一般选用译码器电路如4/ 16 译码器74HC154 ,操控信号经译码后选中需求点亮的行。这种硬件结构规划需求较多的操控信号线,占用单片机较多端口然后形成端口资源的糟蹋。
在改善的L ED 显现屏驱动电路规划方案中,行、列操控均选用串入并出带锁存的移位寄存器,操控信号的发生均由S3C44B0X的I/ O 口发送串行数据来完结,这样仅需求4 根信号线L ED 显现屏就能正常作业。
3 、显现驱动电路规划
3. 1 电路结构
LED显现屏由多个LED点阵模块构成。显现电路选用1/ 16 扫描办法,显现点阵的一行对应一路行选通讯号,各行的同一列共用一个列选通讯号。
当需求在L ED 显现屏上显现图文内容时,只需内行、列显现数据操控下让显现屏上相应的发光器材点亮就可以了,一次点亮一行,顺次点亮各行,只需速度足够快就会发生接连的视觉感触。
行驱动电路选用HEF4094 带锁存功用的串入并出移位寄存器。如图1 ,引脚D 为串行数据输入端,引脚CP 为移位时钟脉冲输入端,STR 为输出锁存器打入信号输入端,OE 为输出使能信号输入端,当其为高时锁存器的输出才敞开,芯片输出端为00~07 ,OS、OS′作为级联输出,见参考文献。
列驱动电路选用74HC595 带锁存功用的串入并出移位寄存器。如图1 ,引脚SER 为串行数据输入端,引脚SRCL K 为移位时钟脉冲输入端,引脚RCL K 为输出锁存器打入信号输入端, EO为输出使能信号输入端,只有当其为低时锁存器的输出才敞开,引脚SRCLR 为移位寄存器的清零输入端,当其为低时移位寄存器的输出悉数为零,芯片输出端为QA~QH ,QH′作为级联输出,见参考文献。
由I/ O 口送出的操控信号经总线驱动器74HC245 别离接到行、列驱动电路上。显现电路结构如图2 所示。
该L ED 显现屏为16 行×64 列点阵,共需两片HEF4094 级联以及8 片74HC595 级联。
由HEF4094 组成的行驱动器如图1 所示。
由两片HEF4094 组成16 行的驱动,图中只画出榜首片。榜首片HEF4094 的D 端衔接I/ O 口输出的串行行显现数据,OS 端衔接下一片的D 端。
两片相应的CP 并联,作为一致的串行数据移位信号。在各操控信号输入端中, STR 端(高电平有用) 、EO(高电平有用) 锁存输出使能端接直流电源正极。
由74HC595 组成的列驱动器如图1 所示。
由8 片74HC595 组成64 列的驱动,图中只画出榜首片。榜首片595 的SER 端衔接I/ O 口输出的串队伍显现数据,Q’H 端衔接下一片的SER 端,各片均选用相同的办法组成8 片的级联,各片相应的SRCL K, SRCLR , RCL K 别离并联,作为一致的串行数据移位信号和输出锁存打入信号。在各操控信号输入端中,SRCLR(低电平有用) 移位寄存器清零输入端接电源正极、OE(低电平有用)锁存输出使能端直接接地。
图1 中黑箭头所指即为下一片74HC595 或HEF4904 的信号输入端。
因为行驱动电路一起驱动64 列的L ED 发光器材,按每一L ED 器材电流20 mA 核算,64 个L ED 一起发光时就需求64 ×20 = 1 280 mA 的驱动电流。因而需求用功率管驱动, 如TP122等。
3. 2 根本显现原理
选用这种显现驱动电路规划,只需4 个I/ O口别离发送SRCL K、RCL KCP、SER、D 信号就能完结正常的显现功用,其间74HC595 的RCL K和HEF4094 的CP 共用一根信号线,由同一I/ O口宣布操控信号。74HC595 的SRCLR 信号输入端接直流电源正极防止进行清零操作,OE 信号输入端接地使得一旦列显现数据出现在锁存器的一起各输出引脚即出现出相应的凹凸电平状况。
HEF4094 的STR 信号输入端接直流电源正极使得行显现数据出现在片内移位寄存器的一起即被打入锁存器然后防止锁存打入操作,OE 信号输入端接直流电源正极使得一旦行显现数据出现在锁存器的一起各输出引脚即出现出相应的凹凸电平状况。因而,需求点亮某一行时,需求履行以下几个过程:
(1) 将15 位行显现数据经过D、CP 信号顺次送入到两片级联的HEF4094 中,最终一次移位在第三步完结。
(2) 将64 位列显现数据经过SER、SRCL K信号顺次送入到8 片级联的74HC595 中。
(3) 宣布列显现的锁存打入信号RCL K,把列显数据打到各595 的输出引脚上,完结列显现的预备作业,一起因为行移位信号CP 与RCL K共用一根信号线,行显现数据完结最终一次移位,完结行显现预备作业。
(4) 队伍数据都预备结束,显现屏中被选中的那一行被点亮。
(5) 延时几毫秒确保每一行有充沛的点亮时刻然后进行下一行的显现。
依照以上过程顺次点亮16 行,即可让L ED屏显现需求的图文内容。
4 、L ED 显现屏的软件规划
HEF4094 和74HC595 都是串入并出移位寄存器,明显运用串行口驱动,可是S3C44B0X 的串口资源有限,还要用来与上位机进行通讯;因而选用将并行的I/ O 口模仿成串行口的办法来处理。
这样仅需求4 个并行I/ O 口就可以完结显现使命,在程序中运用PORTD0 到PORTD3 这4 个I/ O 口,PORTD 由8 个I/ O 端口组成。
下面是已经在Hitool For ARM 编译环境中经过的在16 行×64 列点阵L ED 显现屏上显现4个汉字的程序,该程序用C 言语编写,稍做修正就可以用于各种单片机体系。
首要即将显现的4 个16 ×16 点阵的汉字字模存储在数组zimo[128 ]中。
主程序代码如下:
void Send-Char (void)
{ unsigned short Row-Data = 0 ×8 000 ;int k ;
for ( k = 0 ; k 128 ; k + = 8)
{ ∥调用发送别显现数据子函数
Send-Row-Data (Row-Data) ;
int j ;
∥顺次取0~7 ,8~16 等数组元素
for ( j = 0 ; j 8 ; j + + )∥调用发送列显现数据子函数
Send-Line-Data (zimo [ j + k ]) ;∥对PORTD3 清零置位发送列显现的锁存打入信号
rPDATD = rPDATD 0 ×fb ;rPDATD = rPDATD | 0 ×04 ;∥延时几毫秒确保该行的点亮时刻
Delay (6) ;∥行选数据移位预备发送下一行数Send-Data m = 1 ;}
}
行显现数据发送子程序代码如下:
void Send-Row-Data (unsigned short y){
int m = 0 ;∥发送别显现数据
for ( m = 0 ; m 16 ; m + + )
{
if (y 1)∥假如显现该行则对PORTD0 置1 不然置
0rPDATD = rPDATD | 0 ×01 ;elserPDATD = rPDATD 0 ×fe ;∥行显现数据移位预备发送下一位
y >> = 1 ;∥只移位15 次
if ( m 15){ ∥对PORTD3 清零置位发送别显现数据移位时钟脉冲
rPDATD = rPDATD 0 ×f7 ;rPDATD = rPDATD | 0 ×08 ;}
}
}
列显现数据发送子程序代码如下:
void Send-Line-Data (unsigned char x){
int i ;∥发送列显现数据
for ( i = 0 ; i 8 ; i + + ){
if ( x 1)∥假如该列需点亮则PORTD1置0 不然置
1rPDATD = rPDATD 0 ×fd ;elserPDATD = rPDATD | 0 ×02 ;∥列显现数据移位预备发送下一位
x >> = 1 ;∥对PORTD2 清零置位发送列显现数据移位时钟脉冲
rPDATD = rPDATD 0 ×fb ;rPDATD = rPDATD | 0 ×04 ;}
}
延时子程序代码如下,LoopCount 的数值可依据所选用的单片机时钟频率来设定。
void Delay (int time){
int LoopCount = 300 ;
for ( ; time > 0 ; time22)
for ( i = 0 ; i LoopCount ; i + + ) ;
}
5、结束语
这种规划方案大大节省了单片机的端口资源,有用简化了显现屏的电路结构,提高了整个显现体系的可靠性,依据这个规划原理可规划出各种规划的LED显现屏。