📄 003.asm
字号:
RS EQU P2.0
RW EQU P2.1
E EQU P2.2
;-----------------------------------------------
LCD_X EQU 30H
LCD_Y EQU 31H
COUNT EQU 32H
COUNT1 EQU 33H
COUNT2 EQU 34H
COUNT3 EQU 35H
;-----------------------------------------------
LCD_DATA EQU 36H
LCD_DATA1 EQU 37H
LCD_DATA2 EQU 38H
STORE EQU 39H
;-----------------------------------------------
;ad输出口
out equ p0
;-----------------------------------------------
;-----------------------------------------------
ORG 0000H
LJMP MAIN
ORG 0030H
;-----------------------------------------------
MAIN:
MOV SP,#5FH
LCALL DELAY4
;通讯方式为8位数据并口
;********************初始化**********************
LGS0: MOV A,#34H ;34H--扩充指令操作
LCALL SEND_I
MOV A,#30H ;30H--基本指令操作
LCALL SEND_I
MOV A,#01H ;清除显示
LCALL SEND_I
MOV A,#06H ;指定在资料写入或读取时,光标的移动方向
LCALL SEND_I ;DDRAM 的地址计数器(AC)加1
MOV A,#0CH ;开显示,关光标,不闪烁
LCALL SEND_I
;===============================================
TU_PLAY1:
MOV DPTR,#TU_TAB1 ;显示图形
LCALL PHO_DISP
han1:
mov dptr ,#zz1 ;显示"液体"
mov count,#04h
mov a ,#86h
lcall send_i
lcall qushu
han2:
mov dptr ,#zz2 ;显示"电压"
mov count,#04h
mov a ,#96h
lcall send_i
lcall qushu
han3:
mov dptr ,#zz3 ;显示"程序"
mov count,#04h
mov a ,#8eh
lcall send_i
lcall qushu
han4:
mov dptr ,#zz4 ;显示"现在的电压是 . V"
mov count,#10h
mov a ,#98h
lcall send_i
lcall qushu
;AD转换 程序
start:
LCALL STARTAD ;假程序
LCALL DELAY3
LCALL READAD
;取结果乘C4约得50000(5V)
MOV B,#0C4H
MUL AB
MOV 50H,B ;高位
MOV 51H,A ;低位
LCALL BCDMA ;取BCD码
;显个位多少V
MOV DPTR,#BM
MOV COUNT,#01H
MOV A,#9EH
LCALL SEND_I
MOV A,48H
ANL A,#0FH
LCALL ADSHU
;显示小数一位,0.几V
MOV DPTR,#BM
MOV COUNT,#01H
MOV A,#9FH
LCALL SEND_I
MOV A,47H
ANL A,#0F0H
SWAP A
LCALL ADSHU
ajmp START
;-----------------------------------------------
;BCD转换程序 IN:50,51H OUT:48,47,46H
;-----------------------------------------------
BCDMA:
MOV R0,#44H
MOV A,51H
MOV @R0,A
INC R0
MOV A,50H
MOV @R0,A
INC R0
MOV @R0,#00H
INC R0
MOV @R0,#00H
INC R0
MOV @R0,#00H
INC R0
MOV @R0,#00H
MOV 49H,#16
S1:
MOV R0,#44H
MOV R2,#02H
CLR C
S2:
MOV A,@R0
RLC A
MOV @R0,A
INC R0
DJNZ R2,S2
MOV R2,#03H
S3:
MOV A,@R0
MOV B,A
ADDC A,B
DA A
MOV @R0,A
INC R0
DJNZ R2,S3
DJNZ 49H,S1
MOV R2,48H
MOV R3,47H
MOV R4,46H
RET
;-----------------------------------------------
;开始转换AD程序 ;假程序
;-----------------------------------------------
startad:
nop
;clr WRAD
nop
;setb WRAD
nop
ret
;-----------------------------------------------
;读取AD程序
;-----------------------------------------------
readad:
mov out,#0ffh
nop
;clr RDAD ;假
nop
CLR A
mov a,out
nop
;setb RDAD ;假
ret
;-----------------------------------------------
;显示点阵
;-----------------------------------------------
LATPLAY1:
MOV A,#01H ;清屏
LCALL SEND_I
MOV LCD_DATA1,#0CCH ;显示点阵
MOV LCD_DATA2,#0CCH
LCALL LAT_DISP
LCALL DELAY3
LCALL CLEAR_P
KU_PLAY2:
LJMP TU_PLAY1
;===============================================
;全屏显示图形子程序
;===============================================
PHO_DISP:
MOV COUNT3,#02H
MOV LCD_X,#80H
PHO_DISP1:
MOV LCD_Y,#80H
MOV COUNT2,#20H
PHO_DISP2:
MOV COUNT1,#10H
LCALL WR_ZB
PHO_DISP3:
CLR A
MOVC A,@A+DPTR
LCALL SEND_D
INC DPTR
DJNZ COUNT1,PHO_DISP3
INC LCD_Y
DJNZ COUNT2,PHO_DISP2
MOV LCD_X,#88H
DJNZ COUNT3,PHO_DISP1
MOV A,#36H
LCALL SEND_I
MOV A,#30H
LCALL SEND_I
RET
;----------------------------------------------
CLRRAM:
MOV LCD_DATA1,#00H ;GDRAM写0子程序
MOV LCD_DATA2,#00H
LCALL LAT_DISP
RET
;==============================================
;显示点阵子程序
;==============================================
LAT_DISP:
MOV COUNT3,#02H
MOV LCD_X,#80H
LAT_DISP1:
MOV LCD_Y,#80H
CLR f0
MOV COUNT2,#20H
LAT_DISP2:
MOV COUNT1,#10H
LCALL WR_ZB
LAT_DISP3:
JB F0,LAT_DISP32
MOV LCD_DATA,LCD_DATA1
AJMP LAT_DISP31
LAT_DISP32:
MOV LCD_DATA,LCD_DATA2
LAT_DISP31:
MOV A,LCD_DATA
LCALL SEND_D
DJNZ COUNT1,LAT_DISP31
INC LCD_Y
CPL F0
DJNZ COUNT2,LAT_DISP2
MOV LCD_X,#88H
DJNZ COUNT3,LAT_DISP1
MOV A,#36H
LCALL SEND_I
MOV A,#30H
LCALL SEND_I
RET
;---------------------------------------------
WR_ZB:
MOV A,#34H
LCALL SEND_I
MOV A,LCD_Y
LCALL SEND_I
MOV A,LCD_X
LCALL SEND_I
MOV A,#30H
LCALL SEND_I
RET
;===============================================
FLASH:
MOV A,#08H ;关闭显示
LCALL SEND_I
LCALL DELAY5
MOV A,#0CH ;开显示,关光标,不闪烁
LCALL SEND_I
LCALL DELAY5
MOV A,#08H ;关闭显示
LCALL SEND_I
LCALL DELAY5
MOV A,#0CH ;开显示,关光标,不闪烁
LCALL SEND_I
LCALL DELAY5
MOV A,#08H ;关闭显示
LCALL SEND_I
LCALL DELAY5
RET
;==================================================
;清屏
;==================================================
CLEAR_P:
MOV A,#01H ;清屏
LCALL SEND_I
MOV A,#34H
LCALL SEND_I
MOV A,#30H
LCALL SEND_I
RET
;==================================================
;查表取数据送显示
;==================================================
QUSHU:
CLR A
MOVC A,@A+DPTR ;查表取数据
LCALL SEND_D ;送显示
INC DPTR
;延时80ms,
DJNZ COUNT,QUSHU
RET
;==================================================
;查表取AD数据送显示
;==================================================
ADSHU:
MOVC A,@A+DPTR ;查表取数据
LCALL SEND_D ;送显示
DJNZ COUNT,ADSHU
RET
;===============================================
;写数据子程序
;RS=1,RW=0,E=高脉冲,D0-D7=数据
;===============================================
SEND_D:
LCALL CHK_BUSY ;写数据子程序
SETB RS
CLR RW
MOV P1,A
SETB E
NOP
NOP
CLR E
RET
;===============================================
;写指令子程序
;RS=0,RW=0,E=高脉冲,D0-D7=指令码
;===============================================
SEND_I:
LCALL CHK_BUSY
CLR RS
CLR RW
MOV P1,A
SETB E
NOP
NOP
CLR E
RET
;================================================
;读数据子程序
;RS=1,RW=1,E=H,D0-D7=数据
;================================================
READ_D:
LCALL CHK_BUSY ;读数据子程序
SETB RS
SETB RW
SETB E
NOP
MOV A,P1
CLR E
MOV STORE,A
RET
;================================================
;;测忙碌子程序
;RS=0,RW=1,E=H,D0-D7=状态字
;================================================
CHK_BUSY:
MOV P1,#0FFH ;测忙碌子程序
CLR RS
SETB RW
SETB E
JB P1.7,$
CLR E
RET
;================================================
;延时子程序
DELAY3:
MOV R5,#16H
DEL31: MOV R6,#100
DEL32: MOV R7,#0FFH
DEL33: DJNZ R7,DEL33
DJNZ R6,DEL32
DJNZ R5,DEL31
RET
DELAY2:
MOV R6,#0CH
DEL21: MOV R7,#18H
DEL22: DJNZ R7,DEL22
DJNZ R6,DEL21
RET
DELAY1:
MOV R6,#06H
DEL11: MOV R7,#08H
DEL12: DJNZ R7,DEL12
DJNZ R6,DEL11
RET
DELAY4:
MOV R6,#100
DEL41: MOV R7,#200
DEL42: DJNZ R7,DEL42
DJNZ R6,DEL41
RET
DELAY5:
MOV R5,#05H
DEL51: MOV R6,#100
DEL52: MOV R7,#0FFH
DEL53: DJNZ R7,DEL53
DJNZ R6,DEL52
DJNZ R5,DEL51
RET
;***********************************************
TAB1:
zz1: db '液晶'
zz2: db '电压'
zz3: db '程序'
zz4: db '现在的电压是 . V'
BM: DB '0123456789'
;*-------------------------------------------------------------------- *
;* Bitmap点阵数据表 *
;* 图片: E:\图形8.bmp,横向取模左高位,数据排列:从左到右从上到下 *
;* 图片尺寸: 128 * 64 *
;*-------------------------------------------------------------------- *
TU_TAB1: ; 数据表
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,14H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 06H,30H,01H,0E0H,00H,00H,2AH,00H,00H,0D8H,00H,00H,00H,00H,00H,00H
DB 0FH,7BH,63H,0E0H,00H,00H,22H,00H,01H,24H,00H,00H,00H,00H,00H,00H
DB 0FH,0FBH,63H,07H,34H,00H,14H,00H,01H,04H,00H,00H,00H,00H,00H,00H
DB 0DH,0DBH,63H,01H,0BCH,00H,08H,00H,00H,88H,00H,00H,00H,00H,00H,00H
DB 0CH,1BH,63H,07H,0B0H,00H,00H,00H,00H,50H,00H,00H,00H,00H,00H,00H
DB 0CH,1BH,63H,0EDH,0B0H,0DBH,00H,01H,00H,20H,00H,00H,00H,00H,00H,00H
DB 0CH,19H,0E1H,0E7H,0B0H,0DBH,00H,02H,00H,00H,00H,00H,00H,00H,00H,00H
DB 0CH,19H,0E1H,0E7H,0B0H,0DBH,00H,02H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,60H,00H,00H,00H,00H,04H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,03H,0C0H,00H,00H,00H,00H,08H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,08H,05H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,10H,0AH,80H,00H,00H,00H,00H,00H,00H
DB 00H,00H,0AH,00H,00H,0FFH,0F8H,0E0H,05H,00H,00H,00H,00H,00H,00H,00H
DB 06H,0C0H,15H,00H,1FH,0FFH,0FFH,0C0H,02H,00H,00H,00H,00H,00H,00H,00H
DB 09H,20H,11H,00H,0FBH,0FFH,0E1H,0F8H,00H,00H,00H,00H,00H,00H,00H,00H
DB 08H,20H,0AH,03H,9FH,00H,9EH,3EH,00H,00H,00H,00H,00H,00H,00H,00H
DB 04H,40H,04H,0EH,70H,00H,81H,0C7H,80H,01H,40H,00H,00H,00H,00H,00H
DB 02H,80H,00H,1DH,80H,00H,0E0H,61H,0E0H,02H,0A0H,00H,00H,00H,00H,00H
DB 01H,00H,00H,77H,9FH,0FCH,0F0H,18H,0F8H,02H,20H,00H,00H,00H,00H,00H
DB 00H,00H,01H,0DFH,00H,00H,0F3H,0CH,3CH,01H,40H,00H,00H,00H,00H,00H
DB 00H,00H,03H,9EH,00H,00H,0F8H,06H,1EH,00H,80H,00H,00H,00H,00H,00H
DB 00H,00H,07H,0EH,30H,01H,0FCH,7FH,07H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,07H,0EH,30H,01H,0FCH,7FH,07H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,7EH,0FFH,0FFH,0FFH,0FFH,0FFH,83H,0C0H,00H,00H,00H,00H,00H,00H
DB 00H,0FH,0FDH,0FFH,0FFH,0FFH,0FFH,0FCH,01H,0F0H,00H,00H,00H,00H,00H,00H
DB 00H,3FH,81H,0FFH,00H,00H,00H,00H,1FH,0F0H,00H,00H,00H,00H,00H,00H
DB 00H,0FEH,0F0H,00H,00H,01H,00H,00H,0C0H,1CH,00H,00H,00H,00H,00H,00H
DB 03H,0C0H,07H,80H,00H,03H,0E0H,07H,00H,1CH,00H,00H,00H,00H,00H,00H
DB 03H,80H,03H,40H,00H,03H,0E0H,0CH,00H,0EH,00H,00H,00H,00H,00H,00H
DB 07H,00H,00H,0C0H,00H,00H,20H,18H,00H,07H,00H,00H,00H,00H,00H,00H
DB 09H,01H,80H,60H,00H,00H,20H,73H,9FH,03H,80H,00H,00H,00H,00H,00H
DB 1EH,0FH,0F2H,20H,00H,00H,20H,67H,0FFH,0C1H,0C0H,00H,00H,00H,00H,00H
DB 1EH,1FH,0F9H,30H,00H,00H,20H,0EFH,0FFH,0E0H,0E0H,00H,00H,00H,00H,00H
DB 38H,3FH,0FCH,90H,00H,00H,20H,0CBH,0FFH,0F9H,0F0H,00H,00H,00H,00H,00H
DB 7FH,7FH,0FEH,10H,00H,00H,20H,0DBH,0FFH,0FFH,0F0H,00H,00H,00H,00H,00H
DB 6EH,0F9H,0BFH,10H,00H,00H,20H,0F7H,0EDH,0FFH,0F0H,00H,00H,00H,00H,00H
DB 7CH,0FCH,3FH,10H,00H,00H,20H,67H,0E1H,0FDH,0E0H,00H,00H,00H,00H,00H
DB 7CH,0FCH,3FH,10H,00H,00H,20H,67H,0E1H,0FDH,0E0H,00H,00H,00H,00H,00H
DB 38H,0FCH,3FH,18H,00H,00H,20H,87H,0E0H,0FDH,0C0H,00H,00H,00H,00H,00H
DB 38H,0F1H,8FH,18H,00H,1FH,0E7H,87H,9CH,7DH,0C0H,00H,00H,00H,00H,00H
DB 1CH,0FEH,1FH,81H,0FFH,0FFH,0C0H,0FH,0E0H,0FFH,80H,00H,00H,00H,00H,00H
DB 0CH,0FCH,3FH,80H,00H,00H,00H,0FH,0E1H,0F8H,00H,00H,00H,00H,00H,00H
DB 00H,0F9H,0BFH,0FFH,0FFH,0FFH,0FFH,0FFH,0ECH,0FEH,00H,00H,00H,00H,00H,00H
DB 03H,0F9H,0BFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0C0H,00H,00H,00H,00H,00H
DB 0FH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0C0H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H
;*-------------------------------------------------------------------- *
;* Bitmap点阵数据表 *
;* 图片: E:\图形12.bmp,横向取模左高位,数据排列:从左到右从上到下 *
;* 图片尺寸: 128 * 64 *
;*-------------------------------------------------------------------- *
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -