"); //-->
;*****************16*16 LED点阵显示程序*****************
;*MCU: AT89C51
;*MCU-crystal: 12M
;*Version: 1.0
;*Last Updata: 2005-1-1
;*Author: WWW.PICAVR.COM
;*Description: FOR-16*16 LED点阵显示程序, 参考了一本书上做的.
显示"欢迎光临"字符,字符可同时显示两个汉字并且
可上下,左右移动显示.
;**********************************************************
ORG 00H
START: MOV A,#00H ;清除屏幕
MOV P0,A
MOV P2,A
ACALL DISP ;调用显示子程序
ACALL MOVE ;调用左移子程序
AJMP START
;*********************************************************
DISP: MOV R2,#02H ;每个画面2个字,4个字分2次显示
MOV 20H,#00H ;取码指针暂存地址20H初值为00H
D4: MOV R4,#00H ;74154扫描指针初值
MOV R1,#0FFH ;每幕停留的时间
D5: MOV R6,#32 ;每幕2个字,32个数据
MOV R0,20H ;取码指针存入R0
D2: ACALL READ1 ;调用取码子程序
INC R4 ;扫描下一列
DJNZ R6,D2 ;显示1幕?
MOV R4,#00 ;清除74154扫描指针为00
DJNZ R1,D5 ;每幕停留时间到了?
MOV 20H,R0 ;保留取码指针存入20H地址
DJNZ R2,D4 ;2幕显示完毕了?
RET
;********************************************************
READ1: MOV A,R4 ;扫描指针载入A
MOV P1,A ;输出至P1扫描列
MOV A,R0 ;取码指针载入A
MOV DPTR,#TAB ;数据指针指到TAB
MOVC A,@A+DPTR ;到TAB取上半部的数据码
MOV P0,A ;输出至P0显示
INC R0 ;取下一个码
MOV A,R0 ;取码指针载入A
MOV DPTR,#TAB ;数据指针指到TAB
MOVC A,@A+DPTR ;到TAB取下半部的数据码
MOV P2,A ;输出至P2显示
INC R0 ;取码值加1
MOV R3,#25 ;延时
DJNZ R3,$
MOV A,#00H ;清除屏幕
MOV P0,A
MOV P2,A
DELAY: MOV R3,#01 ;延时
D7: MOV R5,#50
DJNZ R5,$
DJNZ R3,D7
RET
;*************************************************
MOVE:
MOV 20H,#00 ;取码指针暂存地址20H初值为00H
MOV R4,#00H ;74154扫描指针初值
M1: MOV R1,#1FH ;每幕停留的时间
M2: MOV R6,#32 ;每幕2个字,32个数据
MOV R0,20H ;取码指针存入R0
M3: ACALL READ1 ;调用取码子程序
INC R4 ;扫描下一列
DJNZ R6,M3 ;显示1幕?
MOV R4,#00 ;清除74154扫描指针为00
DJNZ R1,M2 ;每幕停留时间到了?
MOV A,20H ;取码指针载入A
ADD A,#02 ;加2
MOV 20H,A ;再存入20H地址取码指针
XRL A,#66 ;4个字是否都左移完毕了?
JNZ M1 ;循环
RET
;*************************************************
DL5S: MOV R6,40H ;delay program
DL1: MOV R5,#200
DL2: MOV R4,#125
DL3: DJNZ R4,$
DJNZ R5,DL2
DJNZ R6,DL1
RET
;************************************************
;"欢迎光临"显示用ROM数据表
TAB: ;欢
DB 00H,20H,3CH,10H
DB 44H,08H,84H,04H
DB 04H,03H,04H,03H
DB 84H,04H,44H,08H
DB 3CH,10H,00H,20H
DB 00H,00H,07H,20H
DB 04H,10H,0F4H,0FH
DB 04H,10H,1CH,20H
;迎
DB 00H,00H,49H,20H
DB 6AH,10H,0DCH,0FH
DB 08H,10H,00H,20H
DB 0FEH,27H,02H,22H
DB 02H,21H,81H,20H
DB 00H,20H,02H,20H
DB 0FEH,2FH,02H,22H
DB 02H,22H,0FEH,21H
;光
DB 00H,00H,00H,20H
DB 22H,20H,24H,20H
DB 28H,10H,30H,08H
DB 0E0H,07H,3FH,00H
DB 20H,00H,0F0H,3FH
DB 28H,20H,24H,20H
DB 22H,20H,20H,20H
DB 00H,38H,00H,00H
;临
DB 00H,00H,0F0H,03H
DB 00H,00H,00H,00H
DB 0FFH,3FH,00H,00H
DB 40H,00H,20H,3FH
DB 10H,21H,0FH,21H
DB 14H,21H,24H,3FH
DB 44H,21H,04H,21H
DB 04H,21H,04H,3FH
DB 00H,00H,00H,00H
END ;程序结束
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
差分和单端有源探头的性能差别
据报道,华为 Mate 80 将搭载麒麟 9030 芯片,性能提升 20%,传闻将延续 7nm 工艺
AI利好之外 东南亚着眼于全球芯片竞赛的领导地位
《嵌入式Linux开发要点》视频下载
未来的数字设计可能将趋向异步方式
通用函数发生器
瑞萨电子推出用于AI数据中心、工业及电源系统的全新GaN FET
GSM网的网络优化设计
稳定的函数发生器
单片精密函数发生器ICL8038应用电路二
三星第二季度利润据报道降至六年来最低;下半年复苏面临关税挑战
ARM开发之启动代码 下
中国先进制造业的并购热潮受到技术趋势的推动
《嵌入式Linux内核移植及驱动开发》PDF课件下载
与中国不可分割的联系:为什么战略脱离不是一种选择
ARM开发之启动代码 中
《嵌入式Linux驱动程序设计》PDF课件下载(1)
用CD4046产生相位相反的对称方波
嵌入式LINUX系统的构建 中
先进半导体封装材料与加工市场规模与预测(2025-2034年)
EDA工具的互操作性发展滞后,使芯片设计周期延迟
嵌入式LINUX系统的构建 下
《嵌入式Linux驱动程序设计》PDF课件下载
MPLS包头结构在协议栈中的位置
《嵌入式Linux内核移植及驱动开发》视频下载
电流型运放组成的压控振荡器
ARM开发之启动代码 上
基于STEVAL-ROBKIT1的机器人应用方案
三星电子的半导体困境:HBM苦苦挣扎,竞争对手表现出色
据报道,Meta招募了苹果的 AI 模型负责人