这是我的程序,还没写完,你可以先看看。
;p0 equ 80h ;
;p1 equ 90h ;
;p2 equ 0a0h ;
;p3 equ 0b0h ;
;psw equ 0d0h ;
;acc equ 0e0h ;
;b equ 0f0h ;
;sp equ 81h ;
;dpl equ 82h ;
;dph equ 83h ;
pcon equ 87h ;
;tcon equ 88h ;
;tmod equ 89h ;
;tl0 equ 8ah ;
;tl1 equ 8bh ;
;th0 equ 8ch ;
;th1 equ 8dh ;
;ie equ 0a8h ;
;ip equ 0b8h ;
;scon equ 98h ;
;sbuf equ 99h ;
;-----------------------------------------
;-----------------------------------------
;-----------------------------------------
;-----------------------------------------
;-----------------------------------------
;---BIT_LCD12232--------------------------
LCD12232_E1 BIT P3.6
LCD12232_E2 BIT P3.5
LCD12232_A0 BIT P3.7
;-----------------------------------------
;---BYTE_LCD12232-------------------------
LCD12232_DATA_PORT EQU P2
LCD12232_SLAVER_PAGE EQU 030H
LCD12232_MASTER_PAGE EQU LCD12232_SLAVER_PAGE+1
LCD12232_SLAVER_ADDRESS EQU LCD12232_MASTER_PAGE+1
LCD12232_MASTER_ADDRESS EQU LCD12232_SLAVER_ADDRESS+1
;-----------------------------------------
;-----------------------------------------
;-----------------------------------------
;-----------------------------------------
;-----------------------------------------
DELAY5US:
NOP
NOP
NOP
RET
;-----------------------------------------
LCD12232_OUTMI: ;将ACC中数据送MI
SETB LCD12232_E1
LCALL DELAY5US
CLR LCD12232_A0
LCALL DELAY5US
MOV LCD12232_DATA_PORT,A
LCALL DELAY5US
CLR LCD12232_E1
LCALL DELAY5US
RET
;-----------------------------------------
LCD12232_OUTMD: ;将ACC中数据送MD
SETB LCD12232_E1
LCALL DELAY5US
SETB LCD12232_A0
LCALL DELAY5US
MOV LCD12232_DATA_PORT,A
LCALL DELAY5US
CLR LCD12232_E1
LCALL DELAY5US
RET
;-----------------------------------------
LCD12232_OUTSI: ;将ACC中数据送SI
CLR LCD12232_A0
LCALL DELAY5US
SETB LCD12232_E2
LCALL DELAY5US
MOV LCD12232_DATA_PORT,A
LCALL DELAY5US
CLR LCD12232_E2
LCALL DELAY5US
RET
;-----------------------------------------
LCD12232_OUTSD: ;将ACC中数据送SD
SETB LCD12232_A0
LCALL DELAY5US
SETB LCD12232_E2
LCALL DELAY5US
MOV LCD12232_DATA_PORT,A
LCALL DELAY5US
CLR LCD12232_E2
LCALL DELAY5US
RET
;-----------------------------------------
LCD12232_INI: ;LCD12232_12232点阵液晶初始化,开机后仅调用一
次。
;复位
MOV A,#0E2H
LCALL LCD12232_OUTMI
LCALL LCD12232_OUTSI
;
MOV A,#0AEH ;POWER SAVE
LCALL LCD12232_OUTMI
LCALL LCD12232_OUTSI
;
MOV A,#0A4H ;动态驱动
LCALL LCD12232_OUTMI
LCALL LCD12232_OUTSI
;
MOV A,#0A9H ;1/32占空比
LCALL LCD12232_OUTMI
LCALL LCD12232_OUTSI
;
MOV A,#0A0H ;时钟线输出
LCALL LCD12232_OUTMI
LCALL LCD12232_OUTSI
;
MOV A,#0EEH ;写模式
LCALL LCD12232_OUTMI
LCALL LCD12232_OUTSI
;;;;;;;;;;;
MOV A,#000H
LCALL LCD12232_OUTMI
MOV A,#0C0H
LCALL LCD12232_OUTMI
;
MOV A,#000H
LCALL LCD12232_OUTSI
MOV A,#0C0H
LCALL LCD12232_OUTSI
;;;;;;;;;;;
MOV A,#0AFH
LCALL LCD12232_OUTMI
LCALL LCD12232_OUTSI
RET
;-----------------------------------------
LCD12232_SETPAGE: ;同时设置主从显示页为0-3页
;LCD12232_MASTER_PAGE=0--3
;LCD12232_SLAVER_PAGE=0--3
MOV A,LCD12232_MASTER_PAGE
ORL A,#0B8H
LCALL LCD12232_OUTMI
;
MOV A,LCD12232_SLAVER_PAGE
ORL A,#0B8H
LCALL LCD12232_OUTSI
RET
;-----------------------------------------
LCD12232_SETADDRESS: ;同时设置主从列地址为0-121
;LCD12232_MASTER_ADDRESS
;LCD12232_SLAVER_ADDRESS
MOV A,LCD12232_MASTER_ADDRESS
ANL A,#07FH
LCALL LCD12232_OUTMI
;
MOV A,LCD12232_SLAVER_ADDRESS
ANL A,#07FH
LCALL LCD12232_OUTSI
RET
;-----------------------------------------
LCD12232_PUTCHAR_SLAVER:
;在左页当前地址画一个字节8个点
;输入数据在ACC中
LCD12232_PUTCHAR0:
LCALL LCD12232_OUTSD
RET
;-----------------------------------------
LCD12232_PUTCHAR_MASTER:
;在右页当前地址画一个字节8个点
;输入数据在ACC中
LCD12232_PUTCHAR1:
LCALL LCD12232_OUTMD
RET
;-----------------------------------------
LCD12232_DRAWBMP:
RET
;-----------------------------------------
LCD12232_CLR:
MOV LCD12232_SLAVER_PAGE,#00H
MOV LCD12232_MASTER_PAGE,#00H
LCALL LCD12232_SETPAGE
;
MOV LCD12232_SLAVER_ADDRESS,#00H
MOV LCD12232_MASTER_ADDRESS,#00H
LCALL LCD12232_SETADDRESS
;
MOV B,#61D
LCD12232_CLR_0:
MOV A,#01010101B
LCALL LCD12232_PUTCHAR_SLAVER
LCALL LCD12232_PUTCHAR_MASTER
DJNZ B,LCD12232_CLR_0
;------------
MOV LCD12232_SLAVER_PAGE,#01H
MOV LCD12232_MASTER_PAGE,#01H
LCALL LCD12232_SETPAGE
;
MOV LCD12232_SLAVER_ADDRESS,#00H
MOV LCD12232_MASTER_ADDRESS,#00H
LCALL LCD12232_SETADDRESS
;
MOV B,#61D
LCD12232_CLR_1:
MOV A,#01010101B
LCALL LCD12232_PUTCHAR_SLAVER
LCALL LCD12232_PUTCHAR_MASTER
DJNZ B,LCD12232_CLR_1
;------------
MOV LCD12232_SLAVER_PAGE,#02H
MOV LCD12232_MASTER_PAGE,#02H
LCALL LCD12232_SETPAGE
;
MOV LCD12232_SLAVER_ADDRESS,#00H
MOV LCD12232_MASTER_ADDRESS,#00H
LCALL LCD12232_SETADDRESS
;
MOV B,#61D
LCD12232_CLR_2:
MOV A,#01010101B
LCALL LCD12232_PUTCHAR_SLAVER
LCALL LCD12232_PUTCHAR_MASTER
DJNZ B,LCD12232_CLR_2
;------------
MOV LCD12232_SLAVER_PAGE,#03H
MOV LCD12232_MASTER_PAGE,#03H
LCALL LCD12232_SETPAGE
;
MOV LCD12232_SLAVER_ADDRESS,#00H
MOV LCD12232_MASTER_ADDRESS,#00H
LCALL LCD12232_SETADDRESS
;
MOV B,#61D
LCD12232_CLR_3:
MOV A,#01010101B
LCALL LCD12232_PUTCHAR_SLAVER
LCALL LCD12232_PUTCHAR_MASTER
DJNZ B,LCD12232_CLR_3
;------------
RET
;-----------------------------------------
END
发表时间:2002年3月28日18:23:00