RSS

74HC595实际应用-8位数码管循环移位显示

发布时间:2006-12-27 关键字: 显示 循环 数码 数据 NOP XCHA 输出 #00H MOVA

 ;===============================================================

         SDATA_595  EQU  P0.0     ;串行数据输入
         SCLK_595   EQU  P0.1     ;移位时钟脉冲
         RCK_595    EQU  P0.2     ;输出锁存器控制脉冲

         LS138_G1   EQU  P0.3     ;使能端
         LS138_A    EQU  P0.4     ;
         LS138_B    EQU  P0.5     ;
         LS138_C    EQU  P0.6     ;

  ;=====================================================

               ORG  0000H
               LJMP  MAIN
               ORG  0030H

  ;=====================================================
  MAIN:
                MOV  SP,#60H
                MOV  P0,#00H
                MOV  P1,#0FFH
                MOV  P2,#0FFH
                MOV  P3,#0FFH

                MOV  R0,#30H              ;初始化寄存器
                MOV  R1,#00H
                MOV  R2,#00H

                MOV  30H,#01H             ;显示数据
               MOV  31H,#02H
                MOV  32H,#03H
                MOV  33H,#04H
                MOV  34H,#05H
                MOV  35H,#06H
                MOV  36H,#07H
                MOV  37H,#08H

                CLR  LS138_G1             ;禁止74LS138使能
               MOV  R5,#7FH
MAIN1:
                LCALL  DISPLAY
                DJNZ  R5,MAIN1
                MOV  A,30H                ;数据交换
               XCH  A,31H
                XCH  A,32H
                XCH  A,33H
                XCH  A,34H
                XCH  A,35H
                XCH  A,36H
                XCH  A,37H
                XCH  A,30H
                MOV  R5,#7FH
                JMP  MAIN1               
  ;=============================================================

  ;显示子程序

  ;=============================================================               
DISPLAY:
                MOV  A,@R0                     ;查表取显示数据
                MOV  DPTR,#TAB_NU
                MOVC  A,@A+DPTR
                LCALL  WR_595                  ;移位寄存器接收数据
                CLR  LS138_G1                  ;关闭显示
                LCALL  OUT_595                 ;将数据送到输出锁存器
                NOP
                NOP
                MOV  A,P0                      ;读P0状态
                ANL  A,#0FH                    ;维持低4位状态
                ADD  A,R2                      ;确定显示
                MOV  P0,A                      ;送显示
                SETB  LS138_G1                 ;开显示
                INC  R0                        ;取下一位显示数据
                INC  R1                        ;
                MOV  A,R1                      ;修改显示
                SWAP  A                        ;高、低四位数据交换
                MOV  R2,A                      ;确定下一个显示
                LCALL  DELAY                   ;延时
                CJNE  R1,#09H,DISPLAY          ;8个数码管是否显示完毕?             

                MOV  R0,#30H                   ;重新初始化寄存器
                MOV  R1,#00H
                MOV  R2,#00H
                RET

  ;=============================================================

  ;输出锁存器输出数据子程序

  ;=============================================================
OUT_595:
                CLR  RCK_595
                NOP
                NOP
                SETB RCK_595        ;上升沿将数据送到输出锁存器
                NOP
                NOP
                NOP
                CLR  RCK_595
                RET
  ;=============================================================

  ;移位寄存器接收数据子程序

  ;=============================================================
WR_595:
                MOV R4,#08H
WR_LOOP:
                RLC A
                MOV SDATA_595,C
                SETB SCLK_595         ;上升沿发生移位
                NOP
                NOP
                CLR SCLK_595
                DJNZ R4,WR_LOOP
                RET
  ;=============================================================

  ;延时子程序

  ;=============================================================
DELAY:
                MOV  R6,#02H
 DEL1:
                MOV  R7,#200
                DJNZ  R7,$
                DJNZ  R6,DEL1
                RET
  ;=============================================================

TAB_NU:
    DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
    DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH

  ;=============================================================
                END
 


最新评论共有 2 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册