实验三 LED点阵显示屏

一、实验目的

*继续深入学习和掌握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、运行结果演示

  • 14
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值