📄 16led.asm
字号:
;LED16x16的片选信号,其它数据信号,地址信号,写信号接开发板的相应信号.本例中片选信号通过1片138译码得到(相应的地址为0xb00x)。
RowLow equ 0B002h; 行低八位地址
RowHigh equ 0B003h; 行高八位地址
ColLow equ 0B000h; 列低八位地址
ColHigh equ 0B001h; 列高八位地址
bitmask equ 40h
base equ 42h
org 0
jmp main
main:
mov bitmask, #0
mov bitmask+1,#0
;清屏
mov a,#00h ;列驱动低有效
mov dptr,#RowLow
movx @dptr,a
mov dptr,#RowHigh
movx @dptr,a
mov a,#0ffh ;行驱动高有效
mov dptr,#ColLow
movx @dptr,a
mov dptr,#ColHigh
movx @dptr,a
mov r5, #0 ;汉字个数
loop0:
mov r4, #50 ;每个字显示的时间
loop:
mov bitmask, #01 ;选择显示行
mov r2, #16 ;每行16列
mov a,r5 ;字模的起始地址
mov b,#32
mul ab
mov dptr,#Font
add a,dpl
mov base, a
mov a,b
addc a,dph
mov base+1,a
nextrow:
mov a,#00h ;先关闭显示
mov dptr,#RowLow
movx @dptr,a
mov dptr,#RowHigh
movx @dptr,a
mov dpl, base ;取出该行字模
mov dph, base+1
clr a
movc a, @a+dptr
mov r0,a
inc dptr
clr a
movc a,@a+dptr
mov r1,a
inc dptr
mov base , dpl ;指向下行字模
mov base+1, dph
mov dptr,#ColLow ;输出字模数据
mov a,r0
cpl a
movx @dptr,a
mov dptr,#ColHigh
mov a,r1
cpl a
movx @dptr,a
mov a,bitmask ;点亮该行
mov dptr,#RowLow
movx @dptr,a
mov a,bitmask+1
mov dptr,#RowHigh
movx @dptr,a
clr c
mov a,bitmask
rlc a
mov bitmask,a
mov a,bitmask+1
rlc a
mov bitmask+1,a ;指向下一行
mov r7,10
call delay
djnz r2, nextrow
djnz r4, loop ;每个字要重复显示
inc r5 ;指向下个汉字
mov a,r5
cjne r5,#10, nextchar
jmp main ;
nextchar:
jmp loop0
delay:
ddd:
djnz r7,ddd
ret
;字模 每个16x16点阵汉字为: 8位x2x16 = 256位, 32字节
Font:
;南
DB 008H, 040H, 014H, 041H, 004H, 041H, 004H, 041H
DB 0F4H, 05FH, 004H, 041H, 004H, 041H, 0F4H, 05FH
DB 044H, 044H, 024H, 048H, 0FEH, 07FH, 004H, 001H
DB 000H, 001H, 0FEH, 0FFH, 004H, 001H, 000H, 001H
;京
DB 000H, 002H, 008H, 025H, 018H, 011H, 030H, 009H
DB 040H, 009H, 000H, 001H, 0F0H, 01FH, 010H, 010H
DB 010H, 010H, 010H, 010H, 0F8H, 01FH, 010H, 000H
DB 0FEH, 0FFH, 004H, 001H, 000H, 001H, 000H, 002H
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -