A30基于51单片机汇编语言点阵箭头Proteus设计
作者:单片机仿真   类别:51单片机仿真    日期:2026-10-22 10:36:39    阅读:17 次   消耗积分:10 分

image.png

A30基于51单片机汇编语言点阵箭头Proteus设计

两个8×8点阵拼成16×8的横幅,一个箭头从左边慢慢"走"到右边,循环滚动。驱动方式也升级了:不用P0/P3直接扫,而是用串口方式0 + 74HC595移位寄存器,一根数据线一根时钟线就能推出8位行码+16位列数据,引脚省下大半。资料包含Proteus仿真文件和完整汇编源码。

一、设计实现功能

本设计功能简介:使用51单片机和汇编语言设计一个8X8点阵显示箭头的proteus仿真,要求以下功能:

1、使用汇编语言编写程序。

2、两个8×8点阵组成16×8点阵屏,串口方式0配合74HC595驱动。

3、箭头图形从左向右循环滚动显示。

二、资源汇总

1、仿真文件:Proteus工程,7.8和8.6两个版本都能直接打开。

2、程序文件:main.asm汇编源码,以及编译好的cx.hex。

3、修改日期小工具:购买资料后赠送,用于修改文件创建日期,下载地址在文章最后。

三、设计介绍

拿到压缩包之后先解压,没有解压软件的直接搜"压缩",下载解压软件后先解压文件,再运行仿真和程序。

硬件是两级串联的74HC595:串口RXD(P3.0)送数据、TXD(P3.1)送时钟,P3.2做锁存(上升沿把移位寄存器的内容打到输出)。每行要送3个字节:1个行选码 + 2个列数据字节(左半边、右半边各一个)。

图1 Proteus仿真总览

仿真原理图

图形数据只有8行,每行2个字节,共16字节,程序一开头就整块搬到40H开始的RAM里:

`asm
TAB: DB 0FFH,0FFH ;第0行:全灭
DB 0DFH,0FFH ;第1行:斜线
DB 0BFH,0FFH ;第2行:斜线
DB 001H,0FFH ;第3行:箭头尖
DB 0BFH,0FFH ;第4行:斜线
DB 0DFH,0FFH ;第5行:斜线
DB 0FFH,0FFH ;第6行:全灭
DB 0FFH,0FFH ;第7行:全灭
`

0表示点亮,FFH全灭。把第1~5行的非FF位连起来看,就是一个指向左边的箭头;右边那个字节全是FF,因为图案先画在左半边,靠滚动慢慢进到右半边。

显示主循环每次刷新一整屏:

`asm
MOV SCON,#00H ;串口方式0:同步移位寄存器
CLR P3.2 ;锁存脚拉低
MOV R3,#080H ;行选初值
A0: MOV R2,#08H ;8行
MOV R0,#40H ;图形缓冲首地址
LOOP: MOV R1,#2 ;每行2个列字节
MOV A,R3
RR A ;行选右移一位,换下一行
MOV R3,A
MOV SBUF,A ;先送行选码
WAIT1: JNB TI,WAIT1
CLR TI
A1: MOV A,@R0
MOV SBUF,A ;再送两个列数据字节
WAIT2: JNB TI,WAIT2
CLR TI
INC R0
DJNZ R1,A1
SETB P3.2 ;锁存:上升沿输出
CLR P3.2
DJNZ R2,LOOP
JMP A0
`

串口方式0是51最省引脚的输出方式:写SBUF就自动把8位数据按低位先出的顺序从RXD挤出去,TXD自动产生同步时钟,一个字节8个时钟,CPU只管等TI标志。三个字节推完,P3.2给一个上升沿,595就把数据并行输出到点阵的行列线上。

滚动靠定时器中断,每250毫秒把整个缓冲区左移一位:

`asm
INTS_T0:
CLR EA
PUSH 00H
PUSH 01H
PUSH 02H
DJNZ R7,BACK ;5×50ms=250ms
MOV R7,#5
MOV R0,#40H
MOV R1,#8 ;8行
SHIFT1: MOV R2,#2
CLR C ;进位清零,第一位补0
PUSH 00H
MOV A,R0
ADD A,#1
MOV R0,A
MOV A,@R0 ;取后一个字节
POP 00H
RLC A ;带进位左移,最高位进C
SHIFT2: MOV A,@R0
RLC A ;本字节左移,低位补上一字节的C
MOV @R0,A
INC R0
DJNZ R2,SHIFT2
DJNZ R1,SHIFT1
BACK: POP 02H
POP 01H
POP 00H
MOV TMOD,#01H
MOV TL0,#0FFH
MOV TH0,#03CH ;50ms
SETB ET0
SETB EA
SETB TR0
RETI
`

滚动的本质是整块16字节当作一个128位的长移位寄存器,每个字节用 RLC 带进位左移,进位位把前一个字节的最高位接到后一个字节的最低位——和A08流水灯里用一个字节RLC是同一个思路,只是这里串了16个字节。

层级参数说明
一行3字节串行1行选+2列数据
一屏8行每行刷新一次
滚动一步5×50ms=250ms左移一位
一轮16步=4秒箭头走完全屏

特别注意: 点阵全黑或者全亮,先看595的锁存脚是不是接P3.2、串口方式0有没有设(SCON=00H);只亮半边,说明只推了一个列字节,检查MOV R1,#2和A1循环;图形上下颠倒,把行选码的移位方向从RR改成RL;滚动方向反了,把RLC换成RRC;闪烁严重,把滚动间隔从250ms缩短到100ms(R7改成2),或者把行扫描里加消隐;实物上595要加100nF去耦电容,串两个以上时第一个的Q7'接第二个的SER。

四、日期修改

资料中提供修改日期的小工具,购买资料赠送修改文件创建日期的小工具,三个下载地址都在文章最后。

五、资料下载

付费后获取下载链接,直接下载到电脑上,然后解压即可!每个链接前面都配了二维码,手机扫码可以直接跳转。

/

版权所有,转载本站文章请注明出处:proteus单片机
上一篇:A29基于51单片机汇编语言按键门铃Proteus设计
下一篇:A31基于51单片机汇编语言数字电压表Proteus设计
${comment['nickname']}   ${comment['createtime']}
  
       
${comment.content}
${reply.nickname} 回复 ${comment.nickname}    ${reply.createtime}
     
  
回复内容:${reply.content}