⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 26驱动8x8led点阵显示图形.asm

📁 这是2008年stc程序个人设计汇总
💻 ASM
字号:
;本程序的任务是要让8个数管能分别显示不同的数字,以前的例子中,更改P1口听数据,8个数码管会同时变成另一数字,本程序需要观看LED显示,请将CZ2和P1口用排线连接起来
;本程序先在30-37h放入0-7,在数码管中显示出来
;根据电路原理图可知,本实验板是用一只74HC164扩展IO来控制8个数码管点亮,这种方法又经济,又方便,


org 00h
mov dptr,#ledtab
mov r1,#0
mov r5,#0

mov 30h,#0
mov 31h,#1
mov 32h,#2
mov 33h,#3
mov 34h,#4
mov 35h,#5
mov 36h,#6
mov 37h,#7   ;先将要显示的数放入寄存器内,以后做产品时,你要显示什么数就由你的程序自动计算自动放进这里


main:

;LED动态扫描程序显示开始,说明有8只LED数码管,就需要分别显示8只数码管,r7表示是轮到显示第几只

inc r7
disp0:cjne r7,#8,disp1
mov r7,#0
disp1:cjne r7,#0,disp2
	mov 38h,#10000000b    ;将要显的那只数码管的共阳极数据,通过串行口向74HC164发送数据,只让一个数码管的阳极有电,即只点亮一只数码管
	mov 39h,30h  		;将要显示的数码管的笔画数据
	call ddpp               ;调用显示子程序,对上面的数码管数据显示    
disp2:cjne r7,#1,disp3
	mov 38h,#01000000b    ;将要显的那只数码管的共阳极数据,通过串行口向74HC164发送数据,只让一个数码管的阳极有电,即只点亮一只数码管
	mov 39h,31h  		;将要显示的数码管的笔画数据
	call ddpp               ;调用显示子程序,对上面的数码管数据显示    
disp3:cjne r7,#2,disp4
	mov 38h,#00100000b    ;将要显的那只数码管的共阳极数据,通过串行口向74HC164发送数据,只让一个数码管的阳极有电,即只点亮一只数码管
	mov 39h,32h  		;将要显示的数码管的笔画数据
	call ddpp               ;调用显示子程序,对上面的数码管数据显示    
disp4:cjne r7,#3,disp5
	mov 38h,#00010000b    ;将要显的那只数码管的共阳极数据,通过串行口向74HC164发送数据,只让一个数码管的阳极有电,即只点亮一只数码管
	mov 39h,33h  		;将要显示的数码管的笔画数据
	call ddpp               ;调用显示子程序,对上面的数码管数据显示    
disp5:cjne r7,#4,disp6
	mov 38h,#00001000b    ;将要显的那只数码管的共阳极数据,通过串行口向74HC164发送数据,只让一个数码管的阳极有电,即只点亮一只数码管
	mov 39h,34h  		;将要显示的数码管的笔画数据
	call ddpp               ;调用显示子程序,对上面的数码管数据显示    
disp6:cjne r7,#5,disp7
	mov 38h,#00000100b    ;将要显的那只数码管的共阳极数据,通过串行口向74HC164发送数据,只让一个数码管的阳极有电,即只点亮一只数码管
	mov 39h,35h  		;将要显示的数码管的笔画数据
	call ddpp               ;调用显示子程序,对上面的数码管数据显示    
disp7:cjne r7,#6,disp8
	mov 38h,#00000010b    ;将要显的那只数码管的共阳极数据,通过串行口向74HC164发送数据,只让一个数码管的阳极有电,即只点亮一只数码管
	mov 39h,36h  		;将要显示的数码管的笔画数据
	call ddpp               ;调用显示子程序,对上面的数码管数据显示    
disp8:cjne r7,#7,disp9
	mov 38h,#00000001b    ;将要显的那只数码管的共阳极数据,通过串行口向74HC164发送数据,只让一个数码管的阳极有电,即只点亮一只数码管
	mov 39h,37h  		;将要显示的数码管的笔画数据
	call ddpp               ;调用显示子程序,对上面的数码管数据显示    
disp9:


djnz r4,$
djnz r4,$
djnz r4,$
djnz r4,$
djnz r4,$
djnz r4,$
djnz r4,$
djnz r4,$
djnz r4,$
djnz r4,$
djnz r4,$
djnz r4,$
djnz r4,$
djnz r4,$
djnz r4,$
djnz r4,$
djnz r4,$
djnz r4,$
djnz r4,$
djnz r4,$
djnz r4,$


djnz r6,mend
mov r6,#20
inc r5
cjne r5,#8,mend
mov r5,#0

mend:jmp main 



ddpp:	mov a,38h    ;通过串行口向74HC164发送数据,只让一个数码管的阳极有电,即只点亮一只数码管
	mov p1,#0ffh    ;向74HC164送数据前要先熄灭LED数码管显示,否则,会出"鬼影",因为要确保每一位管对应每一位管的数据
	mov sbuf,a
	nop
	nop
	nop
	nop
	mov a,39h  		;累加器读入要显示的第一个数

mov dptr,#ledtab
movc a,@a+dptr  ;这是唯一的查表指令,作用就是读出DPTR中的表名中的第几个数的数据.
	cpl a ;可以显示阴文或者阳文,ledtab是顺序存放的0123456789abcdef的LED笔画关系,根据数码管的共阴或者共阳,有时高电平是点亮,有时低电平是点亮.
	mov p1,a ;放到P1口,显示出字符


	mov p2,#000h  
	mov a,r5  		;累加器读入要显示的第一个数
add a,r7
cjne a,#8,$+3
jc $+4
subb a,#8

nop
nop

;mov dptr,#tab1
;mov dptr,#tab2
;mov dptr,#tab3
mov dptr,#tab4
;mov dptr,#tab5
;mov dptr,#tab6

movc a,@a+dptr  ;这是唯一的查表指令,作用就是读出DPTR中的表名中的第几个数的数据.
	cpl a ;可以显示阴文或者阳文,ledtab是顺序存放的0123456789abcdef的LED笔画关系,根据数码管的共阴或者共阳,有时高电平是点亮,有时低电平是点亮.
	mov p2,a ;放到P1口,显示出字符


	ret


ledtab: db 11101101b,00000101b,11100011b,01100111b,00001111b,01101110b,11101110b,00100101b,11101111b,01101111b,10101111b,11001110b,11101000b,11000111b,11101010b,10101010b


tab1:;四边形加中心四点
db 00011000b
db 00100100b
db 01000010b
db 10011001b
db 10011001b
db 01000010b
db 00100100b
db 00011000b
tab2:;叉叉
db 10000001b
db 01000010b
db 00100100b
db 00011000b
db 00011000b
db 00100100b
db 01000010b
db 10000001b
tab3:;箭头1
db 00011000b
db 00111100b
db 01011010b
db 10011001b
db 00011000b
db 00011000b
db 00011000b
db 00011000b
tab4:;箭头2
db 00010000b
db 00111000b
db 01010100b
db 10010010b
db 00010000b
db 00010000b
db 00010000b
db 00000000b
tab5:;四边形加中心四点
db 00011000b
db 00100100b
db 01000010b
db 10011001b
db 10011001b
db 01000010b
db 00100100b
db 00011000b
tab6:;四边形加中心四点
db 00011000b
db 00100100b
db 01000010b
db 10011001b
db 10011001b
db 01000010b
db 00100100b
db 00011000b






end


;最后告诉大家:这个程序功能是非常正确的,这个程序比起上一个程序来说,短多了,又好读又好理解,又好维护

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -