📄 74hc595.asm
字号:
;*******************************************************************
;* *
;* ME500单片机开发系统演示程序 - 74HC595 串转并演示 *
;* *
;* 16×16LED点阵显示 *
;* *
;* 版本: V1.0 (2007/01/05) *
;* 作者: gguoqing (Email: gguoqing@willar.com) *
;* 网站: www.willar.com(伟纳电子) www.mcusj.com(伟纳单片机世界) *
;* 邮箱: support@willar.com *
;* *
;*【版权】Copyright(C)伟纳电子 www.willar.com All Rights Reserved *
;*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! *
;* *
;*******************************************************************
;* *
;* 描述: *
;* *
;* 74HC595具有一个8位串行输入并行输出的移位寄存器和一个8位输出 *
;* 锁存器。此程序利用595芯片进行串行输入并行输出演示。 *
;* *
;*******************************************************************
ORG 0000H
LJMP MAIN
ORG 0030H
;**********************************************************
SDATA_595 EQU P0.0 ;串行数据输入
SCLK_595 EQU P2.7 ;移位时钟脉冲
RCK_595 EQU P0.2 ;输出锁存器控制脉冲
G_74138 EQU P2.4 ;显示允许控制信号端口
;**********************************************************
MAIN:
MOV SP,#70H
MOV P2,#0F0H
MOV P0,#0FFH
CLR RCK_595
SETB G_74138 ;关闭显示
MAIN1:
MOV R0,#00H ;取码指针存入R0
MAIN2:
MOV DPTR,#TAB_TEST1
CALL WR_LED
INC R0
INC R0
CALL DELAY
CJNE R0,#34,MAIN2 ;显示完34个字符?
MOV R0,#00H
MAIN3:
MOV DPTR,#TAB_TEST2
CALL WR_LED
INC R0
INC R0
CALL DELAY
CJNE R0,#34,MAIN3 ;显示完34个字符?
JMP MAIN1
;**********************************************************
; 点阵显示子程序
;**********************************************************
WR_LED:
SETB G_74138 ;关行显示,准备刷新
CLR RCK_595
INC R0 ;取行右边字节偏址
MOV A,R0 ;取码指针载入A
MOVC A,@A+DPTR
LCALL WR_595
CLR RCK_595
DEC R0 ;取行左边字节偏址
MOV A,R0 ;取码指针载入A
MOVC A,@A+DPTR
LCALL WR_595
NOP
NOP
NOP
SETB RCK_595 ;上升沿将数据送到输出锁存器
NOP
NOP
NOP
NOP
NOP
NOP
CLR RCK_595 ;恢复低电平
NOP
NOP
CLR G_74138 ;开显示
RET
;**********************************************************
;移位寄存器接收数据子程序
;**********************************************************
WR_595:
MOV R7,#08H
WR_LOOP:
RLC A
MOV SDATA_595,C
SETB SCLK_595 ;上升沿发生移位
NOP
NOP
NOP
NOP
CLR SCLK_595
DJNZ R7,WR_LOOP
RET
;**********************************************************
DELAY:
MOV R5,#02H
DEL1:
MOV R6,#0FFH
DEL2:
MOV R7,#0FFH
DEL3:
DJNZ R7,DEL3
DJNZ R6,DEL2
DJNZ R5,DEL1
RET
;**********************************************************
TAB_TEST1:
DB 0FFH,0FFH,07FH,0FFH,0BFH,0FFH,0DFH,0FFH,0EFH,0FFH
DB 0F7H,0FFH,0FBH,0FFH,0FDH,0FFH,0FEH,0FFH
DB 0FFH,07FH,0FFH,0BFH,0FFH,0DFH,0FFH,0EFH
DB 0FFH,0F7H,0FFH,0FBH,0FFH,0FDH,0FFH,0FEH
TAB_TEST2:
DB 0FFH,0FFH,0FFH,0FEH,0FFH,0FDH,0FFH,0FBH,0FFH,0F7H
DB 0FFH,0EFH,0FFH,0DFH,0FFH,0BFH,0FFH,07FH
DB 0FEH,0FFH,0FDH,0FFH,0FBH,0FFH,0F7H,0FFH
DB 0EFH,0FFH,0DFH,0FFH,0BFH,0FFH,07FH,0FFH
;**********************************************************
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -