📄 16×16点阵显示.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 *
;*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! *
;* *
;********************************************************************
ORG 0000H
LJMP MAIN
ORG 0030H
SDATA_595 EQU P0.0 ;串行数据输入
SCLK_595 EQU P2.7 ;移位时钟脉冲
RCK_595 EQU P0.2 ;输出锁存器控制脉冲
G_74138 EQU P2.4 ;显示允许控制信号端口
;--------------------------------------------------------------
MAIN:
MOV SP,#70H
MOV 30H,#00H ;取码指针初值(初值为0)
MOV A,#0FFH
MOV P2,A
MOV P0,A
CLR RCK_595
SETB G_74138
MAIN1:
MOV R1,#05FH ;字停留时间
MAIN2:
MOV R6,#16 ;每字16组码
MOV R4,#00H ;扫描地址初值(从00-0FH)
MOV R0,30H ;取码指针存入R0
MAIN3:
INC R0 ;取行右边字节偏址
MOV A,R0 ;取码指针载入A
MOV DPTR,#TAB
MOVC A,@A+DPTR
LCALL WR_595
DEC R0 ;取行左边字节偏址
MOV A,R0 ;取码指针载入A
MOV DPTR,#TAB
MOVC A,@A+DPTR
LCALL WR_595
SETB G_74138 ;关行显示,准备刷新
NOP
; CLR RCK_595
NOP
NOP
SETB RCK_595 ;上升沿将数据送到输出锁存器
NOP
NOP
CLR RCK_595 ;恢复低电平
INC R0
INC R0 ;下一行数据地址
CLR G_74138
NOP
NOP
MOV A,R4 ;扫描地址载入A
MOV P2,A ;扫描输出
INC R4 ;扫描下一个
MOV R3,#2
DEL1MS:
MOV R5,#240 ;延时1ms
DJNZ R5,$
DJNZ R3,DEL1MS
DJNZ R6,MAIN3 ;显示1个字了?
DJNZ R1,MAIN2 ;停留时间到了?
MOV 30H,R0
CJNE R0,#160,MAIN1 ;显示完5个字?
JMP MAIN
;--------------------------------------------------------------
;移位寄存器接收数据子程序
;--------------------------------------------------------------
WR_595:
MOV R7,#08H
WR_LOOP:
RLC A
MOV SDATA_595,C
SETB SCLK_595 ;上升沿发生移位
NOP
NOP
NOP
NOP
CLR SCLK_595
DJNZ R7,WR_LOOP
RET
;-----------------------------------------------------------------
TAB:
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
;伟
DB 0f7h,0bfh,0f7h,0bfh,0f7h,0bbh,0e8h,01h,0efh,0bfh,0cfh,0b7h,0a8h,03h,06fh,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,05bh,05h,06bh,0fch,0ebh,0fdh,0fbh,0e5h,0fbh,01dh,0fbh,0bdh,0ebh,0fdh,0f7h
;电
DB 0fdh,0ffh,0fdh,0ffh,0fdh,0efh,080h,07h,0bdh,0efh,0bdh,0efh,080h,0fh,0bdh,0efh
DB 0bdh,0efh,080h,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,07fh,0feh,0fbh,00h,01h
DB 0feh,0ffh,0feh,0ffh,0feh,0ffh,0feh,0ffh,0feh,0ffh,0feh,0ffh,0fah,0ffh,0fdh,0ffh
TAB1: ;中
DB 0FEH,0FFH,0FEH,0FFH,0DEH,0F7H,0C0H,003H
DB 0DEH,0F7H,0DEH,0F7H,0DEH,0F7H,0DEH,0F7H
DB 0DEH,0F7H,0C0H,007H,0DEH,0F7H,0FEH,0FFH
DB 0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH
TAB2: ;单
DB 0F7H,0DFH,0F9H,0CFH,0FBH,0BFH,0C0H,007H
DB 0DEH,0F7H,0C0H,007H,0DEH,0F7H,0DEH,0F7H
DB 0C0H,007H,0DEH,0F7H,0FEH,0FFH,000H,001H
DB 0FEH,0FFH,0FEH,0FFH,0FEH,0FFH,0FEH,0FFH
TAB3: ;片
DB 0FFH,0BFH,0EFH,0BFH,0EFH,0BFH,0EFH,0BBH
DB 0E0H,001H,0EFH,0FFH,0EFH,0FFH,0EFH,0FFH
DB 0E0H,00FH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH
DB 0DFH,0EFH,0DFH,0EFH,0BFH,0EFH,07FH,0EFH
TAB4: ;伟
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
TAB5: ;纳
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
tab6: ; 电
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
tab7: ;子
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
;-------------------------------------------------------------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -