一、实验目的
*继续深入学习和掌握MCS-51的体系结构、 指令系统和汇编语言开发
*学习使用串行方式驱动LED点阵显示屏显示字符
二、实验设备
Proteus仿真软件
三、实验原理
移位寄存器595的原理和使用
74 系列 595 芯片是具有三态输出寄存器的 8 位移位寄存器,包括各种细分类别的74LS595、74HCT595、74LV595 等(区别在于速度、电压、电路、输入输出电平等)。不同厂家产品针脚的描述有所差别,但功能上来说都是一致的。
74 系列 595 是带有一个存储寄存器和三态输出的 8 位串入/串或并出的移位寄存器。移位寄存器和存储寄存器都有独立的时钟。该器件具有一个串行输入(DS)和一个串行输出 (Q7S),以实现级联和一个异步复位 MR 输入。MR 上的低电平将复位移位寄存器。数据在 SHCP 输入上升沿时发生移位。移位寄存器中的数据在 STCP 输入的上升沿时被传输到存储寄存器。如果两个时钟都连接在一起,则移位寄存器将始终比存储寄存器早一个时钟脉冲。 每当使能输入(OE)为低电平时,存储寄存器中的数据就会出现在输出中。OE 上的高电平导致输出呈现高阻态。OE 输入的变化不会影响寄存器的状态。
引脚功能定义如下:
控制逻辑如下
四、实验内容
在LED点阵显示屏上显示学生姓名等信息(不少于3个汉字)
汉字以一定速度不断上移,移到最后返回开头,如此循环
五、实验步骤
1、绘制仿真电路
2、编写程序
$NOMOD51
$INCLUDE (8051.MCU)
SER EQU P1.3
SHCP EQU P1.1
STCP EQU P1.2
TH EQU 0FCH
TL EQU 0F8H
ORG 0000H
JMP INIT
ORG 000BH
LJMP T0_INT
ORG 0100H
; R0:8行递增循环
; R1:table表偏移,即offset+i
; R2:ser传入数据时的循环计数
; R3:高/低8位循环计数
; R4:16为数据中某八位在table中的位置
; R5:外部定时中断
;初始化子程序
INIT:
MOV R5, #0FFH
;_74LS595_Init
CLR SHCP
CLR STCP
;Table_Init
MOV DPTR, #TABLE
MOV R1, #0H
;Time0_Init
MOV TMOD, #01H
MOV TH0, #TH
MOV TL0, #TL
SETB EA
SETB ET0
SETB TR0
;主程序
MAIN:
MOV R0, #0FH
MOV A, R1
MOV R4, A
ROW_ROL:
;LED显示
CALL MatrixLED
DEC R0
CJNE R0,#0FFH, ROW_ROL
JMP MAIN
;LED显示子程序
MatrixLED:
;根据R0选中某一行,送入74LS138
MOV P2, R0
;将R1+R0送入74LS595
CALL WRITE_74LS595
CALL SHORT_DELAY
RET
WRITE_74LS595:
MOV A, R4
MOVC A, @A+DPTR ;将offset+i的前8位数据送入输入线上
MOV R2, #10H
MOV R3, #9H
NEXT:
DJNZ R3, SER_LOOP
INC R4
MOV A, R4
MOVC A, @A+DPTR ;后8位数据
MOV R3, #8H
SER_LOOP:
RLC A
CLR SHCP
MOV SER, C
SETB SHCP
DJNZ R2, NEXT
SER_END:
SETB STCP
NOP
CLR STCP
;下一行的列数据位置
INC R4
RET
;T0中断子程序
T0_INT:
;init
MOV TH0, #TH
MOV TL0, #TL
DJNZ R5, T0_END
MOV R5, #0FFH
INC R1
INC R1
CJNE R1, #070H, T0_END
MOV R1, #0H
T0_END:
RETI
;延时子程序
SHORT_DELAY:
MOV R6, #02H
SD_LOOP:
MOV R7, #0FFH
DJNZ R7, $
DJNZ R6, SD_LOOP
RET
TABLE:
;逐行顺向
DB 01H,00H,01H,00H,01H,00H,0FFH,0FEH,01H,00H,01H,00H,01H,00H,3FH,0F8H;
DB 00H,00H,00H,00H,1FH,0F0H,10H,10H,10H,10H,10H,10H,1FH,0F0H,10H,10H;"吉",0
DB 10H,20H,10H,20H,10H,20H,10H,20H,0FDH,0FEH,10H,20H,30H,70H,38H,70H;
DB 54H,0A8H,50H,0A8H,91H,24H,12H,22H,14H,20H,10H,20H,10H,20H,10H,20H;"林",1
DB 01H,00H,01H,00H,01H,00H,01H,00H,01H,00H,0FFH,0FEH,01H,00H,01H,00H;
DB 02H,80H,02H,80H,04H,40H,04H,40H,08H,20H,10H,10H,20H,08H,0C0H,06H;"大",2
DB 22H,08H,11H,08H,11H,10H,00H,20H,7FH,0FEH,40H,02H,80H,04H,1FH,0E0H;
DB 00H,40H,01H,80H,0FFH,0FEH,01H,00H,01H,00H,01H,00H,05H,00H,02H,00H;"学",3
END
3、运行结果演示