📄 up-move.asm
字号:
;********************************************************************
;* *
;* ME500单片机开发系统演示程序 - 向上滚动显示伟纳电子 *
;* *
;* 16×16LED点阵显示
;* *
;* 版本: V1.0 (2006/11/20) *
;* 作者: gguoqing (Email: gguoqing@willar.com) *
;* 网站: www.willar.com(伟纳电子) www.mcusj.com(伟纳单片机世界) *
;* 邮箱: support@willar.com *
;* *
;*【版权】Copyright(C)伟纳电子 www.willar.com All Rights Reserved *
;*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! *
;* *
;********************************************************************
SDATA_595 EQU P0.0 ;串行数据输入
SCLK_595 EQU P2.7 ;移位时钟脉冲
RCK_595 EQU P0.2 ;输出锁存器控制脉冲
G_74138 EQU P2.4 ;显示允许控制信号端口
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP INTT0
ORG 0030H
;****************************************************************
MAIN:
MOV 20H,#00H
MOV A,#0FFH
MOV P1,A
MOV P2,A
MOV P3,A
MOV P0,A
CLR RCK_595
MOV TMOD,#01H
MOV TH0,#0FCH
MOV TL0,#18H
MOV IE,#82H
MOV SP,#70H
MAIN1:
LCALL DIS1
MOV DPTR,#TAB1
LCALL MOVDISP
INC DPH
LCALL MOVDISP
AJMP MAIN1
;----------------------------------------------------------
;单字显示子程序
;----------------------------------------------------------
DIS1:
MOV R3,#5AH ;静止显示时间控制
DIS11:
MOV R2,#00H ;一帧扫描初始值(行地址从00-0FH)
MOV DPTR,#TAB ;取表首址
MOV R1,#00H ;查表偏址(显示第一个字)
SETB TR0 ;开扫描(每次一帧)
WAIT11:
JBC 01H,DIS111 ;为1,扫描一帧结束
AJMP WAIT11
DIS111:
DJNZ R3,DIS11
RET
;---------------------------------------------------------
;多字滚动显示子程序
;每次8个字,入口时定义好DPTR值
;---------------------------------------------------------
MOVDISP:
MOV B,#00H ;向上移动显示,查表偏址暂存(从00开始)
DISLOOP:
MOV R3,#0AH ;移动速度
DISMOV:
MOV R2,#00H ;第0行开始
MOV R1,B
SETB TR0 ;开扫描(每次一帧)
WAITMOV:
JBC 01H,DISMOV1 ;标志为1扫描一帧结束
AJMP WAITMOV
DISMOV1:
DJNZ R3,DISMOV ;一帧重复显示(控制移动速度)
INC B ;显示字的下一行(每行2字节)
INC B
MOV A,R1 ;R1为0,8个字显示完。
JZ MOVOUT
AJMP DISLOOP
MOVOUT:
RET ;移动显示结束
;---------------------------------------------------------
;T0中断扫描子程序
;---------------------------------------------------------
INTT0:
PUSH ACC
MOV TH0,#0FCH
MOV TL0,#18H
JBC 00H,GOEND
INC R1 ;取行右边字节偏址
MOV A,R1
MOVC A,@A+DPTR
LCALL WR_595
DEC R1 ;取行左边字节偏址
MOV A,R1
MOVC A,@A+DPTR
LCALL WR_595
SETB G_74138 ;关行显示,准备刷新
NOP
NOP
SETB RCK_595 ;产生上升沿,数据打入输出端
NOP
NOP
CLR RCK_595 ;恢复低电平
MOV A,R2 ;修改显示行地址
MOV P2,A ;修改完毕
CLR G_74138 ;开行显示
INC R2 ;下一行扫描地址值
INC R1
INC R1 ;下一行数据地址
MOV A,R2
ANL A,#0FH
JNZ GO2
SETB 00H ;R2为10H,现为末行扫描,置标记
GO2:
POP ACC
RETI
GOEND:
CLR TR0 ;一帧扫描完,关扫描
SETB 01H ;一帧扫描完,置结束标记
POP ACC
RETI
;--------------------------------------------------------------
;移位寄存器接收数据子程序
;--------------------------------------------------------------
WR_595:
MOV R4,#08H
WR_LOOP:
RLC A
MOV SDATA_595,C
SETB SCLK_595 ;上升沿发生移位
NOP
NOP
CLR SCLK_595
DJNZ R4,WR_LOOP
RET
;-----------------------------------------------------------------
TAB:
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
TAB1:
;欢
DB 0ffh,07fh,0ffh,07fh,03h,07fh,0fbh,03h,0bah,0fbh,0b9h,0b7h,0d7h,0bfh,0d7h,0bfh
DB 0efh,0bfh,0d7h,0bfh,0dbh,05fh,0bbh,05fh,07eh,0efh,0feh,0f7h,0fdh,0f1h,0f3h,0fbh
;迎
DB 0ffh,0ffh,0beh,07bh,0d9h,081h,0ebh,0bbh,0fbh,0bbh,0fbh,0bbh,0bh,0bbh,0ebh,03bh
DB 0eah,0bbh,0e9h,0abh,0ebh,0b7h,0efh,0bfh,0efh,0bfh,0d7h,0b9h,0b8h,03h,0ffh,0ffh
;使
DB 0efh,0bfh,0efh,0bbh,0e0h,01h,0dfh,0bfh,0d8h,03h,09bh,0bbh,05bh,0bbh,0dbh,0bbh
DB 0d8h,03h,0dbh,0bbh,0ddh,0bfh,0deh,07fh,0dfh,03fh,0deh,0cfh,0d9h,0f1h,0d7h,0fbh
;用
DB 0ffh,0f7h,0c0h,03h,0deh,0f7h,0deh,0f7h,0deh,0f7h,0c0h,07h,0deh,0f7h,0deh,0f7h
DB 0deh,0f7h,0c0h,07h,0deh,0f7h,0deh,0f7h,0deh,0f7h,0beh,0f7h,0beh,0d7h,07fh,0efh
;伟
DB 0F7H,0BFH,0F7H,0BFH,0F7H,0BBH,0E8H,01H,0EFH,0BFH,0CFH,0B7H,0A8H,03H,6FH,0BFH
DB 0EFH,0BBH,0E0H,01H,0EFH,0BBH,0EFH,0BBH,0EFH,0ABH,0EFH,0B7H,0EFH,0BFH,0EFH,0BFH
;纳
DB 0EFH,0BFH,0EFH,0BFH,0DFH,0BBH,0DCH,01H,0B5H,0BBH,05H,0BBH,0EDH,0BBH,0DDH,0BBH
DB 0BDH,5BH,05H,6BH,0FCH,0EBH,0FDH,0FBH,0E5H,0FBH,1DH,0FBH,0BDH,0EBH,0FDH,0F7H
;电
DB 0FDH,0FFH,0FDH,0FFH,0FDH,0EFH,80H,07H,0BDH,0EFH,0BDH,0EFH,80H,0FH,0BDH,0EFH
DB 0BDH,0EFH,80H,0FH,0BDH,0EFH,0FDH,0FFH,0FDH,0FBH,0FDH,0FBH,0FEH,03H,0FFH,0FFH
;子
DB 0FFH,0FFH,0C0H,0FH,0FFH,0EFH,0FFH,0DFH,0FFH,0BFH,0FEH,7FH,0FEH,0FBH,00H,01H
DB 0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FAH,0FFH,0FDH,0FFH
;子
DB 0FFH,0FFH,0C0H,0FH,0FFH,0EFH,0FFH,0DFH,0FFH,0BFH,0FEH,7FH,0FEH,0FBH,00H,01H
DB 0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FAH,0FFH,0FDH,0FFH
;单
DB 0efh,0efh,0f7h,0dfh,0fbh,0b7h,0c0h,03h,0deh,0f7h,0deh,0f7h,0c0h,07h,0deh,0f7h
DB 0deh,0f7h,0c0h,07h,0deh,0ffh,0feh,0fbh,00h,01h,0feh,0ffh,0feh,0ffh,0feh,0ffh
;片
DB 0ffh,07fh,0dfh,07fh,0dfh,07fh,0dfh,07fh,0dfh,07bh,0c0h,01h,0dfh,0ffh,0dfh,0ffh
DB 0c0h,03fh,0dfh,0bfh,0dfh,0bfh,0dfh,0bfh,0dfh,0bfh,0dfh,0bfh,0bfh,0bfh,07fh,0bfh
;机
DB 0efh,0ffh,0efh,0efh,0eeh,07h,0eeh,0efh,02h,0efh,0eeh,0efh,0ceh,0efh,0c6h,0efh
DB 0aah,0efh,0aeh,0efh,06eh,0efh,0eeh,0efh,0eeh,0edh,0edh,0edh,0ebh,0f1h,0e7h,0ffh
;开
DB 0ffh,0f7h,080h,03h,0f7h,0dfh,0f7h,0dfh,0f7h,0dfh,0f7h,0dfh,0f7h,0dbh,00h,01h
DB 0f7h,0dfh,0f7h,0dfh,0f7h,0dfh,0f7h,0dfh,0efh,0dfh,0efh,0dfh,0dfh,0dfh,0bfh,0dfh
;发
DB 0feh,0ffh,0eeh,0dfh,0eeh,0efh,0deh,0fbh,080h,01h,0fdh,0ffh,0fdh,0ffh,0f8h,0fh
DB 0f9h,0efh,0f5h,0dfh,0f6h,0bfh,0efh,07fh,0deh,0bfh,0bdh,0cfh,073h,0f1h,0cfh,0fbh
;系
DB 0ffh,0c7h,080h,03fh,0fbh,0ffh,0fbh,0efh,0f7h,0dfh,0c0h,03fh,0feh,0ffh,0fdh,0dfh
DB 0fbh,0efh,0c0h,07h,0feh,0f7h,0f6h,0dfh,0f6h,0efh,0eeh,0f7h,0dah,0f7h,0fdh,0ffh
;统
DB 0efh,07fh,0efh,0bfh,0dfh,0b7h,0d8h,03h,0b7h,07fh,06h,0efh,0edh,0f7h,0d8h,03h
DB 0beh,0dbh,06h,0dfh,0beh,0dfh,0feh,0dfh,0e5h,0ddh,01dh,0ddh,0bbh,0e1h,0f7h,0ffh
;-------------------------------------------------------------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -