📄 3200t.asm
字号:
COM DATA 29H
XH DATA 30H
XL DATA 31H
YH DATA 32H
YL DATA 33H
XH_L DATA 34H
XL_L DATA 35H
YH_L DATA 36H
YL_L DATA 37H
NUMBRH DATA 38H
NUMBRL DATA 39H
TIMER0 DATA 3AH ;延时时间的初值
TIMER1 DATA 3BH ;调用延时子程序的次数
COLOR DATA 3CH
ORG 0000H
LJMP MAIN
MAIN: MOV SP,#60H
LCALL INIT_SIO
;LCALL NEW_BUDE
;-------------------------------
;MOV SCON,#50H
;MOV TMOD,#20H
;MOV TH1,#0FFH
;MOV TL1,#0FFH
;MOV PCON,#80H
;SETB TR1
;-------------------------------
;SETB P3.5
LCALL SCREEN_CLR
LCALL DELAY100
LCALL BMP
LCALL DELAY20
LCALL SCREEN_CLR
LCALL DELAY1s
LCALL DOT
;LCALL DELAY1s
LCALL LINE
;LCALL DELAY1s
LCALL CIRCLE
;LCALL DELAY1s
;LCALL DELAY01
LCALL SQURE
;LCALL DELAY1s
LCALL INV
;LCALL DELAY1s
LCALL LIGHT_OFF
LCALL DELAY1S
LCALL LIGHT_ON
;LCALL DELAY01
LCALL BEEP_ON
LCALL DELAY1S
LCALL BEEP_OFF
;LCALL DELAY01
LCALL HAZ
;LCALL DELAY01
LCALL WRITE24C16
LCALL DELAY10
LCALL READ24C16
LCALL DELAY10
;clr p3.5
MOV R7,#0BH
MOV R0,#50H
LCOM1_1: MOV A,SBUF
MOV @R0,A
INC R0
CLR RI
DJNZ R7,LCON3
SJMP LCON2
LCON3: JB RI,LCOM1_1
SJMP LCON3
LCON2: AJMP $
AJMP $
;*****************************************************
;* 串口初始化,波特率9600 *
;*****************************************************
INIT_SIO:
MOV SCON,#50H
MOV TMOD,#20H
MOV TH1,#0FAH
MOV TL1,#0FAH
MOV PCON,#80H
SETB TR1
RET
;*****************************************************
;* 修改波特率(F0 5A 15 00 E1 00 A5 F0) 57600 *
;*****************************************************
NEW_BUDE:
MOV COM,#15H
LCALL COMMD_HEAD
MOV A,#00H
LCALL SEND_BYTE
MOV A,#0E1H
LCALL SEND_BYTE
MOV A,#00H
LCALL SEND_BYTE
LCALL COMMD_END
RET
;*****************************************************
;* 清屏(F0 5A 82 00 A5 F0) *
;*****************************************************
SCREEN_CLR:
MOV COM,#82H
LCALL COMMD_HEAD
MOV A,#00H ;00代表蓝色,01代表白色
LCALL SEND_BYTE
LCALL COMMD_END
RET
;*****************************************************
;* 显示图像(F0 5A 91 00 00 00 00 00 00 A5 F0) *
;*****************************************************
BMP:MOV COM,#91H
LCALL COMMD_HEAD
MOV NUMBRH,#00H
MOV A,NUMBRH
LCALL SEND_BYTE
MOV NUMBRL,#02H
MOV A,NUMBRL
LCALL SEND_BYTE
MOV XH,#00H
MOV A,XH
LCALL SEND_BYTE
MOV XL,#00H
MOV A,XL
LCALL SEND_BYTE
MOV YH,#00H
MOV A,YH
LCALL SEND_BYTE
MOV YL,#00H
MOV A,YL
LCALL SEND_BYTE
LCALL COMMD_END
RET
;*****************************************************
;* 画点(F0 5A 92 01 10 01 00 01 10 A5 F0) *
;*****************************************************
DOT:MOV COM,#92H
LCALL COMMD_HEAD
MOV XH,#01H
MOV A,XH
LCALL SEND_BYTE
MOV XL,#10H
MOV A,XL
LCALL SEND_BYTE
MOV YH,#01H
MOV A,YH
LCALL SEND_BYTE
MOV YL,#00H
MOV A,YL
LCALL SEND_BYTE
MOV COLOR,#0ffH
MOV A,COLOR
LCALL SEND_BYTE
MOV A,#10H
LCALL SEND_BYTE
LCALL COMMD_END
RET
;*****************************************************
;* 画线(F0 5A 93 01 00 01 20 02 00 01 20 01 A5 F0) *
;*****************************************************
LINE:MOV COM,#93H
LCALL COMMD_HEAD
MOV XH,#01H
MOV A,XH
LCALL SEND_BYTE
MOV XL,#00H
MOV A,XL
LCALL SEND_BYTE
MOV YH,#01H
MOV A,YH
LCALL SEND_BYTE
MOV YL,#20H
MOV A,YL
LCALL SEND_BYTE
MOV XH,#02H
MOV A,XH
LCALL SEND_BYTE
MOV XL,#00H
MOV A,XL
LCALL SEND_BYTE
MOV YH,#01H
MOV A,YH
LCALL SEND_BYTE
MOV YL,#20H
MOV A,YL
LCALL SEND_BYTE
MOV COLOR,#0ffH
MOV A,COLOR
LCALL SEND_BYTE
LCALL COMMD_END
RET
;*****************************************************
;* 画圆(F0 5A 94 01 60 01 20 01 00 01 A5 F0) *
;*****************************************************
CIRCLE:MOV COM,#94H
LCALL COMMD_HEAD
MOV XH,#01H
MOV A,XH
LCALL SEND_BYTE
MOV XL,#60H
MOV A,XL
LCALL SEND_BYTE
MOV YH,#01H
MOV A,YH
LCALL SEND_BYTE
MOV YL,#20H
MOV A,YL
LCALL SEND_BYTE
MOV A,#01H
LCALL SEND_BYTE
MOV A,#00H
LCALL SEND_BYTE
MOV A,#0ffH
LCALL SEND_BYTE
LCALL COMMD_END
RET
;********************************************************
;*画矩形(F0 5A 95 00 00 00 00 00 99 00 99 01 01 A5 F0)*
;********************************************************
SQURE:MOV COM,#95H
LCALL COMMD_HEAD
MOV XH,#00H
MOV A,XH
LCALL SEND_BYTE
MOV XL,#00H
MOV A,XL
LCALL SEND_BYTE
MOV YH,#00H
MOV A,YH
LCALL SEND_BYTE
MOV YL,#00H
MOV A,YL
LCALL SEND_BYTE
MOV XH,#00H
MOV A,XH
LCALL SEND_BYTE
MOV XL,#99H
MOV A,XL
LCALL SEND_BYTE
MOV YH,#00H
MOV A,YH
LCALL SEND_BYTE
MOV YL,#99H
MOV A,YL
LCALL SEND_BYTE
MOV A,#01H
LCALL SEND_BYTE
MOV A,#01H
LCALL SEND_BYTE
LCALL COMMD_END
RET
;*****************************************************
;*区域反色(F0 5A 96 01 50 01 00 02 00 01 99 A5 F0) *
;*****************************************************
INV:MOV COM,#96H
LCALL COMMD_HEAD
MOV XH,#01H
MOV A,XH
LCALL SEND_BYTE
MOV XL,#50H
MOV A,XL
LCALL SEND_BYTE
MOV YH,#01H
MOV A,YH
LCALL SEND_BYTE
MOV YL,#00H
MOV A,YL
LCALL SEND_BYTE
MOV XH,#02H
MOV A,XH
LCALL SEND_BYTE
MOV XL,#00H
MOV A,XL
LCALL SEND_BYTE
MOV YH,#01H
MOV A,YH
LCALL SEND_BYTE
MOV YL,#99H
MOV A,YL
LCALL SEND_BYTE
LCALL COMMD_END
RET
;*****************************************************
;* 背光关(F0 5A 36 00 a5 F0) *
;*****************************************************
LIGHT_OFF:
MOV COM,#36H
LCALL COMMD_HEAD
MOV A,#00H
LCALL SEND_BYTE
LCALL COMMD_END
RET
;*****************************************************
;* 背光开(F0 5A 36 01 a5 F0) *
;*****************************************************
LIGHT_ON:
MOV COM,#36H
LCALL COMMD_HEAD
MOV A,#01H
LCALL SEND_BYTE
LCALL COMMD_END
RET
;*****************************************************
;* 蜂鸣器关(F0 5A 35 00 A5 F0) *
;*****************************************************
BEEP_OFF:
MOV COM,#35H
LCALL COMMD_HEAD
MOV A,#00H
LCALL SEND_BYTE
LCALL COMMD_END
RET
;*****************************************************
;* 蜂鸣器开(F0 5A 35 01 A5 F0) *
;*****************************************************
BEEP_ON:
MOV COM,#35H
LCALL COMMD_HEAD
MOV A,#01H
LCALL SEND_BYTE
LCALL COMMD_END
RET
;*****************************************************
;* 显示汉字或ASCII码
;*F0 5A 89 4C 43 44 B2 E2 CA D4 B3 CC D0 F2 A5 F0
; ( L C D 测 试 程 序 )
;*****************************************************
HAZ:
MOV COM,#89H
LCALL COMMD_HEAD
MOV R7,#11
MOV DPTR,#TAB
NEXT_HAZ:
CLR A
MOVC A,@A+DPTR
LCALL SEND_BYTE
INC DPTR
DJNZ R7,NEXT_HAZ
LCALL COMMD_END
RET
;*****************************************************
;写24c16
;*****************************************************
WRITE24C16:
MOV COM,#21H
LCALL COMMD_HEAD
MOV A,#00H
LCALL SEND_BYTE
MOV A,#10H
LCALL SEND_BYTE
MOV A,#05H
LCALL SEND_BYTE
MOV A,#11H
LCALL SEND_BYTE
MOV A,#22H
LCALL SEND_BYTE
MOV A,#33H
LCALL SEND_BYTE
MOV A,#44H
LCALL SEND_BYTE
MOV A,#55H
LCALL SEND_BYTE
LCALL COMMD_END
RET
;*****************************************************
;读24c16
;*****************************************************
READ24C16:
MOV COM,#22H
LCALL COMMD_HEAD
MOV A,#00H
LCALL SEND_BYTE
MOV A,#10H
LCALL SEND_BYTE
MOV A,#05H
LCALL SEND_BYTE
LCALL COMMD_END
RET
;****************************************************
;* 数据包头+命令 *
;*****************************************************
COMMD_HEAD:
MOV A,#0F0H
LCALL SEND_BYTE
MOV A,#5AH
LCALL SEND_BYTE
MOV A,COM
LCALL SEND_BYTE
RET
;*****************************************************
;* 数据包尾 *
;*****************************************************
COMMD_END:
MOV A,#0A5H
LCALL SEND_BYTE
MOV A,#0F0H
LCALL SEND_BYTE
RET
;*****************************************************
;* 串口发送一个字节 *
;*****************************************************
SEND_BYTE: CLR ES
MOV SBUF,A
JNB TI,$
CLR TI
SETB ES
RET
;*****************************************************
TAB:DB "LCD测试程序"
;*****************************************************
;* 延时 *
;*****************************************************
DELAY: PUSH TIMER1 ;延时TIMER1*1 ms for 12MHz
PUSH TIMER0
DELAY1: MOV TIMER0,#250 ;循环一次需要4个机器周期,时间为4*1μS
DELAY2: NOP ; 1个周期
NOP ; 1个周期
DJNZ TIMER0,DELAY2 ;2个周期
DJNZ TIMER1,DELAY1
POP TIMER0
POP TIMER1
RET
NOP
;-------------------------------------------------------------------
DELAY01: NOP; 延时 1 ms
PUSH TIMER1
MOV TIMER1,#01H
LCALL DELAY
POP TIMER1
RET
NOP
;---------------------------------------------------------------------
DELAY10: NOP; 延时 10 ms
PUSH TIMER1
MOV TIMER1,#10
LCALL DELAY
POP TIMER1
RET
NOP
;--------------------------------------------------------------------
DELAY20: NOP; 延时 20 ms
PUSH TIMER1
MOV TIMER1,#20
LCALL DELAY
POP TIMER1
RET
NOP
;-------------------------------------------------------------------
DELAY100: NOP; 延时100 ms
PUSH TIMER1
MOV TIMER1,#100
LCALL DELAY
POP TIMER1
RET
NOP
;-------------------------------------------------------------------
DELAY250: NOP; 延时 250 ms
PUSH TIMER1
MOV TIMER1,#250
LCALL DELAY
POP TIMER1
RET
NOP
;---------------------------------------------------------------------
DELAY500: NOP; 延时 500 ms
PUSH TIMER1
MOV TIMER1,#250
LCALL DELAY
LCALL DELAY
POP TIMER1
RET
NOP
;--------------------------------------------------------------------
DELAY1S: NOP; 延时 1 sec
PUSH TIMER1
MOV TIMER1,#250
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
POP TIMER1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -