LED显示驱动器SAA1060 测试程序----原创程序3

2020-02-03 10:11发布

;********************************************************************************************
;LED显示驱动器SAA1060 测试程序:双位共阳绿 {MOD}显示器HDSP-5621,89C2051,SAA1060,330*16只电阻

; 高位LED接线: Q16  Q15  Q14  Q13  Q12  Q11  Q10  Q09----------SAA1060 端子号码
;               dp1   g1   f1   e1   d1   c1   b1   a1----------LED段码

; 低位LED接线: Q08  Q07  Q06  Q05  Q04  Q03  Q02  Q01----------SAA1060 端子号码
;               dp2  g2   f2   e2   d2   c2   b2   a2----------LED段码

; 单片机89C2051 和SAA1060 接线: LOEX--P1.7;SLEN--P1.6;DUP--P1.5;DATA--P1.4;

;CLB--P1.3;IR--P3.2

;试验时间及地点:   北京市房山 -----2009/03/23-----

;版本号  01    晶体频率12M,20P*2;复位参数:10UF,10K  

;图纸及资料 : 记事本有  SAA1060---见PDF文件夹

;*********************************************************************************************
      LOEX  EQU   P1.7   ;单16、双16通道选择:0-双;1--单

      DLEN  EQU   P1.6   ;平时时为低电平,传数据时为高电平,锁存结果时也为低平

      DUP   EQU   P1.5   ;选择A、B通道:0--A ,1--B

      DATA_16  EQU   P1.4   ;数据输入口

      CLB   EQU   P1.3   ;传送时钟口,最大F《50KHZ(周期为20us)

      IR    EQU   P3.2   ;  红外线接收口(配套试验用,这里边暂不用)

      SEG_Q1Q8  EQU  31H  ; 低位段码

      SEG_Q9Q16 EQU  30H  ; 高位段码

      HW_LW     EQU  32H  ; 二位要显示的BCD码

;-------------------------------------------------------------   
  ORG  0000H
        AJMP  STRAT       ;转开始

STRAT:  CALL INT_1        ; 调初始化子程序

        MOV R4,#16        ; 循环显示16次--00-----16

        MOV 32H,#00       ; 初期值为00

K3:    LCALL K0          ;调转换成段码子程序

        CALL W_DATA_16    ;调写入SAA1060子程序

        CALL W_DATA_16    ; 为可靠再写一次

        CALL S2           ;为显示的数据能看清楚做三次延时
        CALL S2           ;
        CALL S2           ;

        INC 32H           ;码加一

        DJNZ R4, K3       ;循环

        AJMP    STRAT     ;  转开始
;-------------------------------------------------------        
INT_1:  MOV SP,#60H   ;设堆栈
        SETB LOEX     ; 选择单通道模式
        CLR  DUP      ; 选择A通道
        CLR  DLEN     ; 使能无效时为低电平
        CLR  CLB      ;时钟为低电平
        RET
;--------------------------------------------------------
K0:     MOV A,32H     ;  取码值

        ANL A,#0FH    ; 去高位

        MOV DPTR,#DBTF ; 送码表地址

        MOVC A,@A+DPTR ; 取码值

        MOV 31H,A      ; 送低位

        MOV A,32H      ; 再取码值

        ANL A,#0F0H    ; 留高位

        SWAP A         ; 半字节交换

        MOVC A,@A+DPTR ; 换成段码

        MOV 30H,A      ;  送高位

        RET      
;------------------------------------------------------
              
W_DATA_16:   

;--------------strat  bit  ------------------------  开始位
        SETB  CLB          ;最先为高电平
         NOP
         NOP

         SETB DLEN          ;小延时后使能线为高
         CLR  C             ;清位C为0
         MOV DATA_16,C      ;传送至数据端
         CALL  DELAY1       ;位传输延时
         CLR   CLB          ;时钟位为低
         CALL  DELAY1       ;再延时
;----------------Q1-Q8  8-bit data -------------------
        MOV A,SEG_Q1Q8         ;  传高位数据段码值至A
        MOV R3,#8          ;               
K1:     RRC  A             ;带进位C右移一位,Q1送到C中
        NOP
        MOV DATA_16,C      ;C送至数据端
        NOP
        SETB  CLB          ;时钟位为高电平
        CALL  DELAY1       ;位传输延时
        CLR   CLB          ;时钟位为低电平
        CALL  DELAY1       ;位传输延时
        DJNZ R3,K1         ;共传送8次,高位数据传完
;---------------Q9-Q16 8-bit data  --------------------
        MOV A,SEG_Q9Q16         ;
        MOV R3,#8          ;               
K2:     RRC  A             ;
        NOP
        MOV DATA_16,C      ;
        NOP
        SETB  CLB          ;
        CALL  DELAY1       ;
        CLR   CLB          ;
        CALL  DELAY1       ;
        DJNZ R3,K2         ;

;-----------------  end  bit  ----------------------

         MOV C,DUP          ;  A或B组选取值送17比特
         MOV DATA_16,C      ;
         SETB  CLB          ;  
         CALL  DELAY1       ;
         CLR   CLB          ;
         CALL  DELAY1       ;
         NOP                ;
         NOP                ;
         CLR  DLEN          ; 使能线为低电平,数据传输结束

;--------------    load   pulse  --------------------------
        CLR   DUP          ;
        NOP
        NOP
        NOP
        NOP
        NOP
        SETB  DUP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP  
        SETB  CLB          ; 装入数据脉冲
        CALL  DELAY1       ;
        CLR   CLB          ;
        CALL  DELAY1       ;
;-----------------------------------------------

        RET                ;
;----------------------------------------------------
DELAY1:  MOV R7,10         ;
         DJNZ R7,$         ;
         RET
;----------------------------------------------------
S2:   MOV R4,#0FFH                  ;延时子程序
D2:    MOV R5,#0FFH
       DJNZ R5,$
       DJNZ R4,D2
       RET
DBTF:  DB  0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H,088H,083H,0C6H,0A1H,086H,08EH,08CH
      ;     0    1     2   3    4    5    6     7   8    9    A    B    C     D   E    F    P
DBTF1: DB   40H,79H,24H,30H,19H,12H,02H,78H,00H,10H,08H,03H,41H,21H,06H,0EH,0CH
      ;      0.  1.  2.  3. 4.  5.   6.  7.  8.  9.  A.  B.  C.  D.  E. F.   P.

      END
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。