📄 7218__.txt
字号:
;四个子程序实现7218的各种显示。1.显示一个提示语句:将要显示的字符写到dis_table,调用DIS_NOTE,在调用
;DISPLAY显示;2.软件译码方式:先调用DIS_CHANGE,在调用DISPLAY显示;3.硬件译码:先调用DIS_MOV,再调
;用DISPLAY显示
;显示数据缓冲区30h-37h,7218工作地址:8000h
;一.DISPLAY子程序将30h-37h中的数据显示出来(软件译码的话还要在此前调用DIS_CHANGE,
;硬间译码需要在此之前调用DIS_MOV)
DISPLAY:
SETB P1.0 ;设置mode为高电平,准备写控制字
MOV A,#0B0H ;软件译码方式;如果采用硬件译码则B码控制字:D0h;十六进制译码为:90h
MOV DPTR,#8000H ;7218工作地址
MOVX @DPTR,A ;输出控制字
CLR P1.0 ;设置mode为低电平,准备写数据
;ret ;可以将初始化程序作为一个独立的子程序
;下面的程序段向7218写入8位数据
DIPLAY8:
;PUSH 00h ; 保存R0的值
;PUSH 01h ; 保存R1的值
MOV R0,#38H ;显示的数据的首地址
MOV R7,#08H ;8位显示,R1控制循环次数
MOV DPTR,#8000h ;7218工作地址
again: MOV A,@R0 ;取出显示的数据
MOVX @DPTR,A ;输出数据到7218
INC R0 ;指向下一位数据
DJNZ R7,again ;8位未显示完,继续循环
;POP 01H ;恢复R0,R1的值
;POP 00H
RET
;***********************************************************************************************
;二. DIS_NOTE子程序.用软件译码的方式将显示表中的8位数据转化位对应的显示码送入显示缓冲区
;用于软件译码,适合显示各种提示符号
DIS_NOTE:
MOV R0,#38H ;显示缓冲区首地址
MOV R7,#08h ;8位数据
MOV DPTR,#dis_table ;显示字符表首地址
tp: MOV A,#00h ;采用固定偏移量查表
MOVC A,@A+DPTR ;查显示字符表
PUSH DPH
PUSH DPL
MOV DPTR,#led_tab ;指向字形码(段选码)表首地址,准备将显示字符表中的数据转化位led字形码
MOVC A,@A+DPTR ;查表
MOV @R0,A ;转化位字形码后保存到显示缓冲区
POP DPL
POP DPH
INC DPTR ;指向下一个显示字符码地址
INC R0 ;指向显示缓冲区的下一地址
DJNZ R7,tp ;8位显示码没有送完继续
RET
;dis_table存放要显示的字符表,调用dis_store将此表得到的led字符码送入单片机内部显示缓冲区,再调用display程序就可以显示
dis_table: db 0h,10h,10h,10h,10h,10h,10h,10h ;字符1 2 3 4 5 6 7 8
led_tab: db 0fbh,0b0h,0edh,0f5h,0b6h,0d7h,0dfh, 0f0h ;0,1,2,3,4,5,6,7
db 0ffh,0f7h,0feh,9fh,0cbh,0bdh,0cfh,0ceh,80H ;8,9,a,b,c,d,e,f,熄灭
;*****************************************************************************************************
;三.将显示缓冲区的数据38H-3FH(每一单元都是一位的十六进制数)转化为对应的显示码,
;保存到30H-37H,供显示调用
DIS_CHANGE:
MOV R0,#30h ;显示缓冲区首地址
MOV R1,#38H
MOV R7,#08h ;8位数据
DC: MOV A,@R0
MOV DPTR,#led_tab1 ;指向字形码(段选码)表首地址,准备将显示字符表中的数据转化位led字形码
MOVC A,@A+DPTR ;查表
MOV @R1,A ;转化位字形码后保存到显示缓冲区
INC R1
INC R0 ;指向显示缓冲区的下一地址
DJNZ R7,DC ;8位显示码没有送完继续
RET
led_tab1: db 0fbh,0b0h,0edh,0f5h,0b6h,0d7h,0dfh, 0f0h ;0,1,2,3,4,5,6,7
db 0ffh,0f7h,0feh,9fh,0cbh,0bdh,0cfh,0ceh,80H ;8,9,a,b,c,d,e,f,熄灭
;**************************************************************************************************
;四.采用硬件译码将30H-37H中的内容送到显示缓冲区38-3FH
DIS_MOV:
MOV R0,#30H
MOV R1,#38H
MOV R7,#08H
DISM:
MOV A,@R0
MOV @R1,A
INC R0
INC R1
DJNZ R7,DISM
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -