MOV P0,A ;关显示数据
MOV P2,A ;关扫描
MOV R6,#0FEH ;赋扫描字
MOV R0,B ;赋显示数据首地址
MOV R7,#08H ;一次扫描8行
DISLOOP: MOV A,@R0 ;取显示数据
MOV P0,A ;放入P0口
MOV P2,R6 ;扫描输出(显示某一行)
LCALL DL1MS ;亮1毫秒
INC R0 ;指向下一行数据地址
MOV A,R6 ;扫描字移入A
RL A ;循环左移一位
MOV R6,A ;放回R6
DJNZ R7,DISLOOP ;8行扫描未完转DISLOOP继续
RET ;8行扫描结束
;
;左移显示控制程序
DISP2: MOV R5,#32 ; 左移32次
DISP22: LCALL DISPP ;调用左移显示控制子程序
LCALL MOVH ;调用高位移出处理子程序MOVH
LCALL MOVH1 ;调用高位移出处理子程序MOVH1
DJNZ R5,DISP22 ;左移显示32次控制
LJMP START1 ;跳回主程序
;
; 左移显示控制子程序
DISPP: MOV B,#50H ;第一显示字符首址
MOV R4,#25H ;1帧显示时间控制
DISPP1: LCALL DISPLAY ;调用显示子程序一次
DJNZ R4,DISPP1 ;1帧显示时间不到转DISPP再循环
RET
;
; 高位移出处理子程序。将"电子设计"四个字符数据的最高位移出至21H-24H单元内
MOVH: MOV R1,#21H ;最高位移出存放单元首址
MOV R0,#50H ;"电子设计"字符数据首址
MOV R2,#08H ;每"字"移8次
MOV1: MOV A,@R0 ;取"电子设计"字符数据
CLR C ;清进位C
RLC A ;带进位循左移
MOV @R0,A ;放回原单元
MOV A,@R1 ;存放单元数据入A
RRC A ;带进位循右移
MOV @R1,A ;放回存放单元
INC R0 ;字符数据地址加1
DJNZ R2,MOV1 ;移8次未完转MOV1再移
MOV R2,#08H ;8次移完赋初值
INC R1 ;存放单元地址加1
上一页 [1] [2] [3] [4] [5] 下一页
本文关键字:程序 显示器 LED电子屏 51单片机,单片机-工控设备 - 51单片机