📄 cjtemp.asm
字号:
;******************************************************************************
D/I equ P1.2 ;
R/W equ P1.3 ;
E equ P1.4 ;
CS1 equ P1.0 ;
CS2 equ P1.1 ;
RSTB equ P1.6 ;
counter equ 32h ;范围计数器,掌握数值长度
hang equ 33h ;大循环行变量(页码)
lie equ 34h ;大循环行变量(列)
hangc equ 35h ;行计数器
liec equ 36h ;列计数器
menusel equ 39h ;菜单选中标志(底色反色)
dianliuh equ 50h;
dianliul equ 51h;;小数点之后的电流数字(BCD码)
vh equ 52h;
vl equ 53h;;小数点之后的电压数字(BCD码)
wenduh equ 54h ;
wendul equ 55h ;;小数点之后的温度数字(BCD码)
timeh equ 56h
timem equ 57h ;;
;******************************************************************************
ORG 0000H
aJMP START ;Power ON jump to start address
org 0060h
START: mov sp,#60h
lcall sysini
;-----------------------
mov dptr,#face1
lcall all32
lcall pause
lcall pause
lcall pause
lcall pause
mov dptr,#face2
lcall all32
lcall pause
lcall pause
lcall pause
lcall pause
mov menusel,#0feh
push menusel
main: ;-----------------------
pop menusel
inc menusel
inc menusel
anl menusel,#07h
push menusel
mov dptr,#mainmenu
lcall all32
lcall pause
lcall pause
lcall pause
lcall pause
;--------显示格式如下---------------------------------------
;电流:XXXmA(I)
;电压:X.XXV(voltage)
;温度:XX.X℃(wendu)
;时间:XX:XX(time)
;-----------------------------------------------------------
mov menusel,#0ffh
mov dianliuh,#06h
mov dianliul,#79h;679mA
mov vh,#04h
mov vl,#98h;4.98V
mov wenduh,#21h
mov wendul,#04h;21.4v
mov timeh,#14h
mov timem,#36h;14:36
;----------------------显示固定字符
mov dptr,#wendutab
lcall all32
;---------------------------------
;---disp I(left)------------------
mov hang,#0
mov lie,#48
mov a,dianliuh
lcall dispdigl
;---disp I(right)------------------
mov hang,#0
mov lie,#0
mov a,dianliul
swap a
anl a,#0fh
lcall dispdigr
mov hang,#0
mov lie,#16
mov a,dianliul
anl a,#0fh
lcall dispdigr
;---------------------------------------
;---disp voltage(left)------------------
mov hang,#2
mov lie,#48
mov a,vh
lcall dispdigl
;---disp voltage(right)------------------
mov hang,#2
mov lie,#16
mov a,vl
swap a
anl a,#0fh
lcall dispdigr
mov hang,#2
mov lie,#32
mov a,vl
anl a,#0fh
lcall dispdigr
;---------------------------------------
;---disp wendu(left)------------------
mov hang,#4
mov lie,#48
mov a,wenduh
swap a
anl a,#0fh
lcall dispdigl
;---disp wendu(right)------------------
mov hang,#4
mov lie,#0
mov a,wenduh
anl a,#0fh
lcall dispdigr
mov hang,#4
mov lie,#32
mov a,wendul
anl a,#0fh
lcall dispdigr
;---------------------------------------
;---disp time(left)------------------
mov hang,#6
mov lie,#48
mov a,timeh
swap a
anl a,#0fh
lcall dispdigl
;---disp time(right)------------------
mov hang,#6
mov lie,#0
mov a,timeh
anl a,#0fh
lcall dispdigr
mov hang,#6
mov lie,#32
mov a,timem
swap a
anl a,#0fh
lcall dispdigr
mov hang,#6
mov lie,#48
mov a,timem
anl a,#0fh
lcall dispdigr
lcall pause
;-------------模拟电压的变化过程
mov a,vl
inc a
da a
mov vl,a
;-------------------------------
lcall pause
ajmp main
;--------系统初始化---------------------
sysini: CLR D/I
CLR R/W
CLR E
SETB CS1
SETB CS2
CLR RSTB;lcd硬件复位
NOP
NOP
NOP
NOP
SETB RSTB
lCALL DELAY
MOV A,#00111111B ;Turn display on
lCALL CMDWR1
lCALL CMDWR2
MOV A,#11000000B ;Display start line (0)
lCALL CMDWR1
lCALL CMDWR2
;-------------
mov menusel,#0ffh
ret
;----------------------------------------------
;入口参数为ACC(左边显示)
dispdigl:rl a
mov dptr,#ptab1
jmp @a+dptr
startm: nop
ret
dispdigr:rl a
mov dptr,#ptab2
jmp @a+dptr
startn: nop
ret
;---------------------------------------
ptab1: ajmp sub0
ajmp sub1
ajmp sub2
ajmp sub3
ajmp sub4
ajmp sub5
ajmp sub6
ajmp sub7
ajmp sub8
ajmp sub9
sub0: mov dptr,#dig0 ;设置显示数字表格
lcall bloblx
ajmp STARTM
sub1: mov dptr,#dig1
lcall bloblx
ajmp STARTM
sub2: mov dptr,#dig2
lcall bloblx
ajmp STARTM
sub3: mov dptr,#dig3
lcall bloblx
ajmp STARTM
sub4: mov dptr,#dig4
lcall bloblx
ajmp STARTM
sub5: mov dptr,#dig5
lcall bloblx
ajmp STARTM
sub6: mov dptr,#dig6
lcall bloblx
ajmp STARTM
sub7: mov dptr,#dig7
lcall bloblx
ajmp STARTM
sub8: mov dptr,#dig8
lcall bloblx
ajmp STARTM
sub9: mov dptr,#dig9
lcall bloblx
ajmp STARTM
;--------------------------------------------
ptab2: ajmp subr0
ajmp subr1
ajmp subr2
ajmp subr3
ajmp subr4
ajmp subr5
ajmp subr6
ajmp subr7
ajmp subr8
ajmp subr9
subr0: mov dptr,#dig0 ;设置显示数字表格
lcall blobrx
ajmp STARTn
subr1: mov dptr,#dig1
lcall blobrx
ajmp STARTn
subr2: mov dptr,#dig2
lcall blobrx
ajmp STARTn
subr3: mov dptr,#dig3
lcall blobrx
ajmp STARTn
subr4: mov dptr,#dig4
lcall blobrx
ajmp STARTn
subr5: mov dptr,#dig5
lcall blobrx
ajmp STARTn
subr6: mov dptr,#dig6
lcall blobrx
ajmp STARTn
subr7: mov dptr,#dig7
lcall blobrx
ajmp STARTn
subr8: mov dptr,#dig8
lcall blobrx
ajmp STARTn
subr9: mov dptr,#dig9
lcall blobrx
ajmp STARTn
;------显示32个汉字(满屏)-------
;------输入的参数为1个:表格地址
;---------------------------------
all32: nop
mov hang,#0
mov hangc,#04
mov lie,#0
mov liec,#04
kkk: lCALL datawr1
mov a,lie
add a,#16
mov lie,a
djnz liec, kkk;cs1 enable
mov lie,#0
mov liec,#4
xxx: lCALL datawr2
mov a,lie
add a,#16
mov lie,a
djnz liec,xxx;cs2 enable
mov liec,#4
mov lie,#0
inc hang
inc hang
djnz hangc,kkk
ret
;--------横向显示8个汉字菜单-----------------------------------
;--------入口参数为hang(1个参数)-----------------------------
;--------------------------------------------------------------
heng8: nop ;--------------------
mov lie,#00 ;lie为常数(总是从第0列开始显示)
mov liec,#04
lll: lCALL datawr1
mov a,lie
add a,#16
mov lie,a
djnz liec, lll;cs1 enable(在左侧第一行显示4个汉字)
mov lie,#0
mov liec,#4
rrr:
lCALL datawr2
mov a,lie
add a,#16
mov lie,a
djnz liec,rrr;cs2 enable
ret
;--------左屏纵向显示8个汉字菜单-----------------------------------
;--------入口参数为lie(1个参数)-----------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -