utopia779的笔记 https://passport2.21ic.com/?550404 [收藏] [复制] [RSS]

日志

单片机控制的LED银行利率显示屏【转】

已有 808 次阅读2008-8-21 18:54 |个人分类:硬件技术|系统分类:接口电路

一、LED的驱动形式

    一般而言,当系统中LED数量较多时,采用动态扫描的方法较为经济,但当系统中LED的数量达到数百只,且每只LED的驱动电流达到数百毫安时,如仍采用动态扫描的方法,会使系统变得较为复杂,可靠性降低,且成本下降有限。为此选用静态法,为每一只LED配一只CD4094MC1413七达林顿驱动器,见图1(A)。由于利率屏显示时小数点固定,所以可以不用驱动小数点,直接用一个限流电阻将需点亮的小数点接到地即可。


 


二、单片机驱动CD4094的方式


        CD4094是串/并转换器,显然单片机应用串行口驱动,但如果将系统中所有的CD4094全部串接,然后接到串行口上,不仅串行口难以驱动,就算扩展驱动能力后能够驱动,在编写程序时也会很麻烦。为此采用扩展并行口,然后将并行口模拟成串行口的方法来解决,电路参考图1(B),假设将数据端接到P1.2,而脉冲输入端接到P3.3则输出一个数的完整程序如下:


        ORG 0000H
        LJMP START
START:
        SETB P3.3 ;
P3.3置为高电平为后面作准备
     MOV 30H#01H ; 30H为显示缓冲区
S_1:
        LCALL DISP
        SJMP $
;
以上主程序
DISP:
        MOV A
30H
        MOV DPTR
#ZX_TAB ;字形表首地址
     MOVC A@A+DPTR ;查字形
        MOV R7#2 ;R7用于控制循环次数
DISP_LOOP:
        RL A
        DJNZ R7
DISP_LOOP
;
由于用P1.2作为数据输出端,所以必须先把待送出的数左移二次将数据的第0
;移到第2位,例要送的数为05H00000101,移位二次变成
00010100
        MOV P1
A ;将移位后的数据送到P1
    
CLR P3.3
        SETB P3.3 ;
形成一次脉冲的上升沿,将第一位数据
;送到CD4094去,以刚才例,即P1.2;高电被送到CD4094
     MOV R7
#7
DISP_LOOP1:
        RR A ;
数据右移
     MOV P1A ;数据送P1
    
CLR P3.3
        SETB P3.3 ;
形成一次脉冲上升沿,送入一位数据
     DJNZ R7DISP_LOOP1 ;循环7次,送入7位数据
    
RET
;
以刚才的例子,移位7次分别是0000101000000101;1000001001000001101000000101000000101000请注意粗、斜体的数字,它位加上第一次送出
;1正好就是10100000,与串行口发送是相同
ZX_TAB:
        DB 3FH
06H5BH4FH66H6DH7DH07H7FH
6FH
        END


    以上例子是发送一个数据,稍作修改,即可一次发送多个数据。如果用其它的并行口位作数据输出端或脉冲输出端,也只要对程序稍作改动即可。











llp1.gif (4882 字节)

图1(A)

llp2.gif (5418 字节)

图1(B)


    采用这一方法后,我们将LED分组,一般利率屏中一行的LED数量为1820多只不等,将两行或三行为一个单元为其配一个驱动单元(即并行口的两位),这样一个由300500个左右的LED构成的屏约需30个左右的并行口位,这只需要扩展一片8255加上P1口和P3口的一些位就够了。串行口可以留作键盘扩展或作远距遥控等用。


三、电平转换及驱动能扩展


    由于大尺寸LED的压降较高,因此需要较高的驱动电压,这样在CD4094和单片机电路中就要有一个电平转换,选用集电极开路同相器7406就可以完成这一工作(见图3),同时它还兼有扩展驱动能力的作用,实践证明,当7406的上拉电阻取2.2K8031的晶振为6MHZ时,即便给电路加上0.047UF的电容负载,电路仍能正常工作,可靠性很高。


llp3.gif (1987 字节)


图2


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)