8*8点阵显示程序(汇编)
//8*8点阵LED显示,用单片机AT89C51 驱动8*8点阵LED显示屏
//轮流显示0-9的数字,显示的方式采用自右向左拉幕式显示
//源程序和proteus仿真我一打包,地址:http://proteus.5d6d.com/thread-9031-1-1.html
R_CNTEQU31H
NUMBEQU32H
TCOUNTEQU33H
ORG0000H
LJMPSTART
ORG0BH ;定时器中断入口地址
LJMPINT_T0
ORG0030H
START:MOVR0,#00H ;显示的幕次(即每一幕显示的:行码起始序号)值0
MOVR_CNT,#00H;列码序列号置0
MOVTCOUNT,#00H ;行码序列号置0
MOVTMOD,#01H
MOVTH0,#(65536-5000)/256
MOVTL0,#(65536-5000)MOD 256
SETB TR0
MOVIE,#82H
SJMP$
//定时器中断处理函数
INT_T0:MOVTH0,#(65536-5000)/256
MOVTL0,#(65536-5000)MOD 256
MOVDPTR,#TAB ;取列码表 首地址
MOVA,R_CNT
MOVCA,@A+DPTR
MOVP3,A
MOVDPTR,#NUB ;取行码表 首地址
MOVA,NUMB
MOVCA,@A+DPTR
MOVP0,A ;输出行号
INCNUMB
NEXT1: INCR_CNT
MOVA,R_CNT
CJNEA,#8,NEXT2
MOVR_CNT,#0
MOVNUMB,R0
NEXT2: INCTCOUNT
MOVA,TCOUNT
CJNEA,#40,NEXT4 ;每个数字显示200ms
MOVTCOUNT,#00H
INC R0 ;上一幕显示行码的起始序列号+1
CJNER0,#88,NEXT3
MOVR0,#00H
NEXT3:MOVNUMB,R0 ;送新一幕显示行码的起始序列号
NEXT4:RETI
TAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH;列值
NUB: DB 00H,00H,00H,00H,00H,00H,00H,00H;空
DB 00H,00H,3EH,41H,41H,41H,3EH,00H;0
DB 00H,00H,00H,00H,21H,7FH,01H,00H;1
DB 00H,00H,27H,45H,45H,45H,39H,00H;2
DB 00H,00H,22H,49H,49H,49H,36H,00H;3
DB 00H,00H,0CH,14H,24H,7FH,04H,00H;4
DB 00H,00H,72H,51H,51H,51H,4EH,00H;5
DB 00H,00H,3EH,49H,49H,49H,26H,00H;6
DB 00H,00H,40H,40H,40H,4FH,70H,00H;7
DB 00H,00H,36H,49H,49H,49H,36H,00H;8
DB 00H,00H,32H,49H,49H,49H,3EH,00H;9
DB 00H,00H,00H,00H,00H,00H,00H,00H;空
END
8*8点阵显示程序汇 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)