A26基于51单片机汇编语言8位数码管滚动显示器Proteus设计
作者:单片机仿真   类别:51单片机仿真    日期:2026-10-22 10:36:20    阅读:17 次   消耗积分:5 分

image.png

A26基于51单片机汇编语言8位数码管滚动显示器Proteus设计

8位数码管做成一块滚动屏:数字"12345678"从右往左慢慢滑过屏幕,滑完一遍停一下再来。核心是一个22字节的段码表——7个空白+8个数字+7个空白,靠"组号+位号"算出表内偏移,组号每0.4秒加1,画面就动一格。资料包含Proteus仿真文件和完整汇编源码。

一、设计实现功能

本设计功能简介:使用51单片机和汇编语言设计一个8位数码管滚动显示的proteus仿真,要求以下功能:

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

2、8位共阴数码管,段码接P0,位选接P2。

3、显示内容"12345678",从右向左滚动,循环播放。

二、资源汇总

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

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

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

三、设计介绍

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

8位数码管段码接P0(共阴,高电平点亮),位选接P2的P2.0~P2.7。位选是"一个引脚管一位",P2的值直接就是当前要点亮第几位。

图1 Proteus仿真总览

仿真原理图

先看段码表,它是整个滚动效果的根:

`asm
TABLE: DB 00H,00H,00H,00H,00H,00H,00H ;7个空白
DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH ;1 2 3 4 5 6 7 8
DB 00H,00H,00H,00H,00H,00H,00H ;7个空白
`

一共22个字节:前面7个空白是"数字还没进屏幕",后面7个空白是"数字已经滑出去",中间8个是内容。为什么两边都是7而不是8?因为屏幕一次显示8位,最右和最左都填满需要滑过整整8格,留7个空白刚好让第一个字符从最右边进来、最后一个字符从最左边出去,首尾衔接不断档。

显示部分只做一次加法:

`asm
DISP: MOV A,DISP_CNT ;组号,0~14
MOV DPTR,#TABLE
MOV R0,P2 ;位选值=当前第几位(0~7)
ADD A,R0 ;组号+位号=表内偏移
MOVC A,@A+DPTR
MOV P0,A ;取段码送P0显示
LJMP DISP
`

偏移=组号+位号,这是数码管滚动和点阵最大的不同:点阵是二维(行×列)要乘8,数码管是一维(8个位置排成一行),直接加就行。组号0时,第7位显示TABLE[7]='1',其余6位显示空白;组号1时整串往左挪一格,'1'到第6位……组号7时'1'已经到最左,'2'在最右,屏幕正好铺满"12345678"。

时间节奏全在中断里:

`asm
INT_T0: MOV TH0,#(65536-5000)/256
MOV TL0,#(65536-5000)MOD 256
INC P2 ;换下一位
MOV A,P2
CJNE A,#08H,RETUNE
MOV P2,#00H ;8位扫完一圈
INC TCNT ;圈数+1
MOV A,TCNT
CJNE A,#10,RETUNE ;10圈=0.4秒
MOV TCNT,#00H
INC DISP_CNT ;画面左移一格
MOV A,DISP_CNT
CJNE A,#15,RETUNE ;15格滑完一轮
MOV P2,#00H
MOV DISP_CNT,#00H
MOV TCNT,#00H
RETUNE: RETI
`

层级周期作用
1位5毫秒动态扫描,8位轮一圈40ms(25Hz,不闪)
1圈8×5ms=40ms8位全扫一遍
1格10圈=0.4秒画面左移一格
1轮15格=6秒整串滑完一遍

想调速度只改一个数:CJNE A,#10 里的10改成20,滚动慢一倍;改成5快一倍。想换滚动内容就改中间那8个段码(共阴编码:0=3FH、1=06H、2=5BH、3=4FH、4=66H、5=6DH、6=7DH、7=07H、8=7FH、9=6FH)。想显示更长的内容,把表加长、CJNE A,#15 的15跟着改(表长-7)。

特别注意: 数字乱码或显示成奇怪符号,先确认数码管是共阴还是共阳——共阴用这套高电平点亮的段码,共阳要全部取反(06H→0F9H);只有一位在亮或者全都不亮,位选P2接反了或者数码管是共阳位选(低电平有效);滚动一顿一顿的不连续,把一位的5毫秒调小到2毫秒提高刷新率;滚动方向反了,把INC DISP_CNT改成DEC DISP_CNT并把初值设成14;显示内容缺字,检查段码表是不是漏了某个字节导致偏移错位。

四、日期修改

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

五、资料下载

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

/

版权所有,转载本站文章请注明出处:proteus单片机
上一篇:A25基于51单片机汇编语言独立按键8X8点阵显示字符Proteus设计
下一篇:A27基于51单片机汇编语言6位数码管频率计Proteus设计
${comment['nickname']}   ${comment['createtime']}
  
       
${comment.content}
${reply.nickname} 回复 ${comment.nickname}    ${reply.createtime}
     
  
回复内容:${reply.content}