昨天花了四五个小时,做到凌晨三点多钟,写了一个12232液晶模块的测试程序。告别了编程器调试的时代,仿真机上手容易多了!
/*MPU=PHILIPS P89C58X2FN OSC=6MH LCM=12232*/
/*http://wangchunyu.cublog.cn COPY RIGHT @2006*/
RESET equ P2.0
E1 equ P2.1
E2 equ P2.2
RW equ P2.3
DI equ P2.4 /*定义引脚接法*/
PAGE0 EQU 28H
NUM EQU 29H
COLUMN EQU 30H
OFFSET EQU 31H /*定义变量*/
ORG 00H
SJMP START
ORG 30H
START:
CLR RESET /*LCM RESET*/
SETB RESET
CLR E1
CLR E2
LCALL INITM /*调初始化程序*/
LCALL CLEAR /*调清屏程序*/
MOV DPTR,#CHINESE1
MOV PAGE0,#0B8H
MOV COLUMN,#15
LCALL DISP16 /*显示“欢”*/
LCALL DELAY
MOV DPTR,#CHINESE2
MOV PAGE0,#0B8H
MOV COLUMN,#35
LCALL DISP16 /*显示“迎”*/
LCALL DELAY
MOV DPTR,#CHINESE3
MOV PAGE0,#0B8H
MOV COLUMN,#55
LCALL DISP16 /*显示“光”*/
LCALL DELAY
MOV DPTR,#CHINESE4
MOV PAGE0,#0B8H
MOV COLUMN,#75
LCALL DISP16 /*显示“临”*/
LCALL DELAY
MOV DPTR,#CHINESE5
MOV PAGE0,#0B8H
MOV COLUMN,#95
LCALL DISP16 /*显示“!”*/
LCALL DELAY
RUN1:MOV R4,#32 /*滚屏程序*/
RUN:MOV A,#0DFH
SUBB A,R4
LCALL OUTMI
LCALL OUTSI
MOV R1,#2FH
LCALL L1
DJNZ R4,RUN
sjmp RUN1
DELAY:MOV R1,#0FFH /*延时子程序*/
L1:MOV R2,#0FFH
L2:MOV R3,#01H
L3:DJNZ R3,L3
DJNZ R2,L2
DJNZ R1,L1
RETI
DISP16:MOV R1,PAGE0 /*汉字上部分页*/
MOV R2,PAGE0
INC R2 /*汉字下部分页*/
MOV R3,#17 /*汉字行数*/
MOV R4,#00H
DISP1:
DJNZ R3,DISP2 /*16行显示完返回*/
RETI
DISP2:
MOV A,COLUMN
CLR C
SUBB A,#61
JNC SLA16 /*列数大于61转从*/
/*主显示*/
MOV A,#0E2H
LCALL OUTMI
MOV A,R1
LCALL OUTMI /*初始化上页*/
MOV A,COLUMN
LCALL OUTMI /*初始化列*/
MOV A,R4
MOVC A,@A+DPTR
LCALL DISP_S
LCALL OUTMD /*取数送上行*/
INC R4 /*地址增一*/
MOV A,R2
LCALL OUTMI /*初始化下页*/
MOV A,COLUMN
LCALL OUTMI /*初始化列*/
MOV A,R4
MOVC A,@A+DPTR
LCALL DISP_S
LCALL OUTMD /*取数送下行*/
INC COLUMN
INC R4
SJMP DISP1
SLA16: /*从显示*/
MOV A,#0E2H
LCALL OUTSI
MOV A,R1
LCALL OUTSI /*初始化上页*/
MOV A,COLUMN
CLR C
SUBB A,#61
LCALL OUTSI /*初始化列*/
MOV A,R4
MOVC A,@A+DPTR
LCALL DISP_S
LCALL OUTSD /*取数送上行*/
INC R4 /*地址增一*/
MOV A,R2
LCALL OUTSI /*初始化下页*/
MOV A,COLUMN
CLR C
SUBB A,#61
LCALL OUTSI /*初始化列*/
MOV A,R4
MOVC A,@A+DPTR
LCALL DISP_S
LCALL OUTSD /*取数送下行*/
INC COLUMN /*列加一*/
INC R4
SJMP DISP1
DISP_S:MOV B,A /*高低位调整子程序*/
MOV C,B.0
MOV ACC.7,C
MOV C,B.1
MOV ACC.6,C
MOV C,B.2
MOV ACC.5,C
MOV C,B.3
MOV ACC.4,C
MOV C,B.4
MOV ACC.3,C
MOV C,B.5
MOV ACC.2,C
MOV C,B.6
MOV ACC.1,C
MOV C,B.7
MOV ACC.0,C
RETI
INITM: /*初始化子程序*/
MOV A,#0E2H
LCALL OUTMI
LCALL OUTSI
MOV A,#0AEH
LCALL OUTMI
LCALL OUTSI
MOV A,#0A4H
LCALL OUTMI
LCALL OUTSI
MOV A,#0A9H
LCALL OUTMI
LCALL OUTSI
MOV A,#0A0H
LCALL OUTMI
LCALL OUTSI
MOV A,#0EEH
LCALL OUTMI
LCALL OUTSI
MOV A,#00H
LCALL OUTMI
LCALL OUTSI
MOV A,#0C0H
LCALL OUTMI
LCALL OUTSI
MOV A,#0AFH
LCALL OUTMI
LCALL OUTSI
RETI
CLEAR:MOV B,#0B8H /*清屏子程序*/
CLEAR0:PUSH B
MOV A,B
LCALL OUTMI
LCALL OUTSI
MOV A,#00H
LCALL OUTMI
MOV R2,#7AH
MOV A,#00H
CLEAR1:LCALL OUTMD
DEC R2
CJNE R2,#3DH,CLEAR1
MOV A,#00H
LCALL OUTSI
CLEAR2:LCALL OUTSD
DJNZ R2,CLEAR2
POP B
INC B
MOV A,B
CJNE A,#0BCH,CLEAR0
RETI
OUTMI:CLR DI /*指令送主驱动*/
SETB RW
MOV B,A
PR1:MOV P0,#0FFH
SETB E1
MOV A,P0
CLR E1
JB ACC.7,PR1
MOV A,B
CLR RW
MOV P0,A
SETB E1
CLR E1
SETB DI
RETI
OUTSI:CLR DI /*指令送从驱动*/
SETB RW
MOV B,A
PR2:MOV P0,#0FFH
SETB E2
MOV A,P0
CLR E2
JB ACC.7,PR2
MOV A,B
CLR RW
MOV P0,A
SETB E2
CLR E2
SETB DI
RETI
OUTMD:CLR DI /*数据送主驱动*/
SETB RW
MOV B,A
PR3:MOV P0,#0FFH
SETB E1
MOV A,P0
CLR E1
JB ACC.7,PR3
MOV A,B
SETB DI
CLR RW
MOV P0,A
SETB E1
CLR E1
RETI
OUTSD:CLR DI /*数据送从驱动*/
SETB RW
MOV B,A
PR4:MOV P0,#0FFH
SETB E2
MOV A,P0
CLR E2
JB ACC.7,PR4
MOV A,B
SETB DI
CLR RW
MOV P0,A
SETB E2
CLR E2
RETI
CHINESE1: /*欢*/
DB 20H,08H,2CH,10H,23H,60H,20H,80H
DB 23H,41H,3CH,31H,04H,02H,08H,0CH
DB 0F0H,30H,17H,0C0H,10H,30H,10H,08H
DB 14H,06H,18H,03H,00H,02H,00H,00H
CHINESE2: /*迎*/
DB 02H,00H,42H,02H,22H,04H,13H,0F8H
DB 00H,04H,3FH,0E2H,20H,42H,40H,82H
DB 41H,02H,3FH,0FEH,20H,02H,20H,42H
DB 20H,22H,7FH,0C6H,20H,04H,00H,00H
CHINESE3: /*光*/
DB 02H,00H,02H,01H,42H,02H,22H,04H
DB 1AH,18H,03H,0E0H,02H,00H,0FEH,00H
DB 02H,00H,03H,0FCH,0AH,02H,12H,02H
DB 62H,02H,26H,02H,02H,0EH,00H,00H
CHINESE4: /*临*/
DB 00H,00H,3FH,0F8H,00H,00H,0FFH,0FFH
DB 02H,00H,04H,0FFH,08H,82H,30H,82H
DB 0D4H,82H,12H,0FEH,13H,82H,10H,82H
DB 10H,82H,31H,0FFH,10H,80H,00H,00H
CHINESE5: /*!*/
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,38H,00H,7FH,0CCH
DB 7FH,0CCH,38H,00H,00H,00H,00H,00H
DB 00H,00H,00H,00H,00H,00H,00H,00H
END
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/18542/showart_108808.html |