📄 ocmc(并).asm
字号:
;MODUL OCM2X8C-2
;RS=P3.1
;RW=P3.3
;E=P3.0
;PSB=P3.4
;RESET=P3.5
;DATA/IO=P1
;显示汉字或图形方法步骤请参照说明书
E EQU P2.2 ;选择I/O口定义,E为使能端
RS EQU P2.0 ;选择I/O口定义,RS为指令/数据选择端
RW EQU P2.1
PSB EQU P2.3
RESET EQU P2.4
;RS EQU P0.0
;RW EQU P0.1
;E EQU P0.2
;PSB EQU P0.3
;RESET EQU P0.4
FIRST_COL EQU 30H ;定义字符/汉字显示起始行
FIRST_ROW EQU 31H ;定义字符/汉字显示起始列
WORD_WID EQU 32H ;定义字符/汉字显示长度
WORD_LIN EQU 33H ;定义字符/汉字显示行数
FIRST_ADD EQU 34H ;定义字符/汉字显示起始位置
START_ADD EQU 35H ;起始位置缓存单元
FIRST_LIN EQU 36H ;起始行位置缓存单元
G_COLUMN EQU 37H ;定义图形显示起始行
G_ROW EQU 38H ;定义图形显示起始列
G_WID EQU 39H ;定义图形显示宽度
ORG 0000H
LJMP START
org 0100h
START: mov sp,#60h
MOV G_WID,#00H
MOV G_ROW,#00H
setb RESET
setb PSB
CLR RW
QIU1: LCALL INITIL ;调用系统初始化程序
MOV A, #0CH ;开显示,关游标
LCALL INPUT
LCALL DELAY01
MOV A, #01H ;DDRAM清零,DDRAM地址计数器到00H
LCALL INPUT
LCALL DELAY01
;-----------
;WORD DISPLAY,显示汉字子程序
;----------
MOV FIRST_ADD,#00H ;设定字符/汉字显示起始位置为第一个显示单元
MOV FIRST_LIN,#01H ;设定字符/汉字显示起始位置为第一行
MOV DPTR, #TAB ;需要显示汉字机内码数据表
MOV word_WID,#08H ;每行显示汉字个数
MOV word_LIN,#02H ;显示行数
MOV START_ADD,#00H ;清首个显示地址缓存单元
LCALL WORD_DISP ;调用汉字显示子程序
LCALL DELAY
LCALL DELAY
LCALL DELAY
MOV A, #01H
LCALL INPUT
LCALL DELAY01
MOV FIRST_ADD,#00H
MOV FIRST_LIN,#01H
MOV DPTR, #TAB1
MOV word_WID,#08H
MOV word_LIN,#02H
MOV START_ADD,#00H
LCALL WORD_DISP
LCALL DELAY
LCALL DELAY
LCALL DELAY
MOV A, #01H
LCALL INPUT
LCALL DELAY01
MOV FIRST_ADD,#00H
MOV FIRST_LIN,#01H
MOV DPTR, #TAB2
MOV word_WID,#08H
MOV word_LIN,#02H
MOV START_ADD,#00H
LCALL WORD_DISP
LCALL DELAY
LCALL DELAY
LCALL DELAY
MOV A, #01H
LCALL INPUT
LCALL DELAY01
LCALL DELAY
;---------------------------
;GRAPHIC DISPLAY
;图形显示
;---------------------------
GRAPHIC_A:
MOV G_ROW, #80H ;定义列
MOV G_COLUMN, #80H ;定义行
MOV DPTR, #GRAPHICTAB ;设定图形显示数据区地址
LCALL GRAPHIC_DISP ;调用图形显示子程序
LCALL DELAY
LCALL DELAY
LCALL DELAY
MOV G_ROW, #80H
MOV G_COLUMN, #80H
MOV DPTR, #GRAPHICTAB2
LCALL GRAPHIC_DISP
LCALL DELAY
LCALL DELAY
LCALL DELAY
;-----------------**************
QIU: LJMP QIU1
;-----------------
;汉字显示子程序
;---------------
WORD_DISP:
MOV R1,WORD_WID
WORD10: LCALL DEADD ;调用调整地址单元子程序
MOV A, START_ADD ;设定DDRAM地址,显示位置地址
LCALL INPUT
WORD11: CLR A ;因为要连续输入机内码高位(区码)、低位(位码)
MOVC A, @A+DPTR ;所以要输入两次数据,如果是字符就是输入两个字符字符代码可以看说明书
LCALL DISPL ;DATA INPUT
INC DPTR ;显示地址会自动加一,如果连续写就不用再输入地址,空白可用某空白汉字或字符代替
CLR A
MOVC A, @A+DPTR
LCALL DISPL ;DATA INPUT
; LCALL DELAY01
INC DPTR
DJNZ R1,WORD11
MOV R1,WORD_WID ;调整显示长度
INC FIRST_LIN ;跳到下一行
DJNZ WORD_LIN,WORD10
RET
;-------------------
;图形显示子程序
;该子程序可简化为一个函数调用
;-----------------
GRAPHIC_DISP:
LCALL CLEAR_GRAPHIC ;清除图形显示RAM单元(GDRAM)
MOV G_ROW, #80H ;设定图形显示起始行单元
MOV G_COLUMN, #80H ;设定图形显示起始列单元
GRA_DISP:
MOV A, #34H ;选择扩充指令集关闭图形显示
;该指令在扩充指令集
LCALL INPUT
LCALL DELAY01
MOV A, G_COLUMN ;输入图形显示起始地址
LCALL INPUT
MOV A, G_ROW
LCALL INPUT
MOV A, #30H ;重新选择基本指令集
LCALL INPUT
CLR A ;输入显示数据(横向高8位数据)
MOVC A, @A+DPTR
LCALL DISPL
INC DPTR
CLR A ;输入显示数据(横向低8位数据)
MOVC A, @A+DPTR
LCALL DISPL
INC DPTR
INC G_ROW ;列地址加一
MOV A, G_ROW
CJNE A, #88H, GRA_DISP ;最后一列地址为88H
MOV G_ROW, #80H
INC G_COLUMN ;行地址加一
MOV A, G_COLUMN
CJNE A, #0A0H, GRA_DISP ;最后行地址为0A0H
MOV A, #36H ;打开图形显示
LCALL INPUT ;
LCALL DELAY01
RET
INITIL: LCALL DELAY ;延时
;首先选择基本指令集
MOV A, #30H ;30---基本指令操作
LCALL INPUT
LCALL DELAY01
MOV A, #01H ;指令#01H为:清除屏幕文字,把地址指针指向00H单元
LCALL INPUT ;
LCALL DELAY01
MOV A, #06H ;指定在资料写入或读取时,设定游标的移动方向及指定显示的移位
LCALL INPUT
LCALL DELAY01
RET
;-----------------
;SEARCH ADDRESS
;目的是为了转换地址单元为DDRAM地址单元,以方便
;定义显示位置
;汉字显示DDRAM位置为:第一行:80H----87H
; 第二行:90H----97H
;-----------------
DEADD: PUSH DPH ;地址转换子程序
PUSH DPL
PUSH ACC
MOV DPTR,#LINE_ADD ;LINE-ADD为地址表指针
MOV A,FIRST_LIN
MOVC A,@A+DPTR
ADD A,FIRST_ADD
MOV START_ADD,A
POP ACC
POP DPL
POP DPH
RET
LINE_ADD:
DB 00H,80H,90H,88H,98H.00H
READ: MOV P3, #0FBH ;读数据子程序
;P3--CONTRAL I/O
NOP ;P3=11111011B RS=1 R/W=1 READ DATA
SETB E ;E=E(I/O)
LCALL DELAY01
;MOV A, P1 ;P1=DATA(I/O)
mov a,P0
NOP
CLR E
RET
;--------------------------------------
CHK_BUSY: CLR RS ;读忙状态子程序
SETB RW
SETB E
HEHE1: ;JB P1.7,HEHE1
JB P0.7,HEHE1
CLR E
RET
;--------------------------------------
;写数据子程序
;----------------------------
DISPL: LCALL CHK_BUSY ;P3--CONTRAL I/O
NOP ;P3=11111001B RS=1 WRITE DATA
SETB RS
CLR RW
SETB E ;E=E(I/O)
mov p0,a;MOV P1, A ;P1=DATA(I/O)
LCALL DELAY01
NOP
CLR E
NOP
MOV p0,#0ffh; P1,#0FFH
RET
;--------------------------------------
;写指令子程序
;----------------------------
INPUT: LCALL CHK_BUSY ;以确保上一指令/数据模块已经接收处理完
;P3--CONTRAL I/O
NOP ;P3=11111000B RS=0 WRITE INSTRUTION
CLR RS
CLR RW
SETB E ;E=E(I/O)
MOV p0,a;P1, A ;P1=DATA(I/O)
LCALL DELAY01
NOP
CLR E
NOP
MOV p0,#0ffh;P1,#0FFH
RET
;----------------------
;DELAY TIME
;---------------------
DELAY: MOV R5,#03H
C0: MOV R6, #0FFH
C1: MOV R7, #0FFH
C2: DJNZ R7, C2
DJNZ R6, C1
NOP
NOP
DJNZ R5, C0
RET
DELAY01: MOV R6, #6
D5: MOV R7, #08h
D6: DJNZ R7, D6
DJNZ R6, D5
RET
;------------------
DELAY02: MOV R6, #6
D52: MOV R7, #18h
D62: DJNZ R7, D62
DJNZ R6, D52
RET
;---------------------------------------
;清除图形显示CGRAM
;-----------------
CLEAR_GRAPHIC:
MOV G_ROW, #80H
MOV G_COLUMN, #80H
CLR_GRAPHIC1:
MOV A, #34H
LCALL INPUT
LCALL DELAY01
MOV A, G_COLUMN
LCALL INPUT
MOV A, G_ROW
LCALL INPUT
CLR_GRAPHIC2:
MOV A, #30H
LCALL INPUT
MOV A,#00H
LCALL DISPL
MOV A,#00H
LCALL DISPL
INC G_ROW
MOV A, G_ROW
CJNE A, #88H,CLR_GRAPHIC1
MOV G_ROW, #80H
INC G_COLUMN
MOV A, G_COLUMN
CJNE A, #0A0H,CLR_GRAPHIC1
MOV A, #36H
LCALL INPUT
LCALL DELAY01
ret
;--------------------------------------
TAB: DB 0BDh,0F0h,0C5h,0F4h,0BFh,0C6h,0BCh,0BCh,0D3h,0D0h,0CFh,0DEh,0B9H,0ABH,0CBH,0BEH ;金鹏科技有限公司
DB 47h,6Fh,6Ch,64h,65h,6Eh,20H,50h,61h,6Ch,6Dh,20H,54H,45H,43H,48H
DB 0C4h,0A3h,0BFh,0E9h,0C4h,0DAh,0D6h,0C3h,0B6h,0FEh,0BCH,0B6H,0D7H,0D6H,0BFH,0E2H ;模块内置二级字库
DB 0CAh,0B9h,0D3h,0C3h,0B8h,0FCh,0B7h,0BDh,0B1h,0E3h,0B8H,0FCH,0C1H,0E9H,0BBH,0EEH ;使用更方便更灵活
DB 00H
TAB1: DB 0d5h,0d8h,0c7h,0ech,0b0h,0c2h,0bfh,0c9h,0c0h,0adh,0D2H,0BAH,0BEH,0A7H,0D7H,0FAH ;肇庆奥可拉液晶
DB 0CFh,0D4h,0CAh,0BEh,0C6h,0F7h,0D3h,0D0h,0CFh,0DEh,0B9H,0ABH,0CBH,0BEH,0D7H,0FAH ;显示器有限公司
DB 5Ah,48h,41h,4FH,20H,51h,49h,4Eh,47h,20H,4Fh,43h,55H,4CH,41H,52H
DB 20H,4Ch,43h,4Dh,20H,20H,43h,4Fh,2Eh,2Ch,20H,4Ch,54h,44H,20H,20H
DB 00H
TAB2: DB 0A2H,0b0H,0A2H,0b1H,0A2H,0b2H,0A2H,0b3H,0A2H,0b4H,0A2H,0b5H,0A2H,0b6H,0A2H,0b7H ;全屏黑
DB 0A2H,0b8H,0A2H,0b9H,0A2H,0baH,0A2H,0bbH,0A2H,0bcH,0A2H,0bdH,0A2H,0beH,0A2H,0bfH;
DB 0A2H,0d0H,0A2H,0d1H,0A2H,0d2H,0A2H,0d3H,0A2H,0d4H,0A2H,0d5H,0A2H,0d6H,0A2H,0d7H ;
DB 0A2H,0d8h,0A2H,0d9H,0A2H,0daH,0A2H,0dbH,0A2H,0dcH,0A2H,0ddH,0A2H,0deH,0A2H,0dfH;
DB 00H
TAB3: DB 5Ah,48h,41h,4FH,20H,51h,49h,4Eh,47h,20H,4Fh,43h,55H,4CH,41H,52H
DB 20H,4Ch,43h,4Dh,20H,20H,43h,4Fh,2Eh,2Ch,20H,4Ch,54h,44H,20H,20H
GRAPHICTAB: ;图形数据地址
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,1Fh,0C1h,0F8h,60h,1Fh,0E1h,0FFh,38h,30h,00h,00h,00h,00h
DB 00h,00h,00h,3Fh,0E3h,0FCh,60h,1Fh,0F1h,0FFh,3Ch,30h,00h,00h,00h,00h
DB 00h,00h,00h,79h,0E7h,9Eh,60h,18h,79h,80h,3Ch,30h,00h,00h,00h,00h
DB 00h,00h,00h,70h,0E7h,0Eh,60h,18h,39h,80h,3Eh,30h,00h,00h,00h,00h
DB 00h,00h,00h,70h,07h,0Eh,60h,18h,39h,80h,36h,30h,00h,00h,00h,00h
DB 00h,00h,00h,60h,06h,06h,60h,18h,19h,0FFh,37h,30h,00h,00h,00h,00h
DB 00h,00h,00h,63h,0E6h,06h,60h,18h,19h,0FFh,33h,0B0h,00h,00h,00h,00h
DB 00h,00h,00h,73h,0E6h,06h,60h,18h,39h,80h,31h,0B0h,00h,00h,00h,00h
DB 00h,00h,00h,70h,0E6H,0Eh,60h,18h,39h,80h,31h,0F0h,00h,00h,00h,00h
DB 00h,00h,00h,79h,0E7h,9Eh,60h,18h,79h,80h,30h,0F0h,00h,00h,00h,00h
DB 00h,00h,00h,3Fh,0E3h,0FCh,7Fh,9Fh,0F1h,0FFh,30h,0F0h,00h,00h,00h,00h
DB 00h,00h,00h,1Fh,81h,0F8h,7Fh,9Fh,0E1h,0FFh,30h,70h,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 01h,0FEh,07h,06h,01h,0E3h,0C0h,00h,1Fh,0FBh,0FEh,1Fh,0C6h,06h,00h,00h
DB 01h,0FFh,0Fh,86h,01h,0E3h,0C0h,00h,1Fh,0FBh,0FEh,3Fh,0E6h,06h,00h,00h
DB 01h,87h,0Fh,86h,01h,0E3h,0C0h,00h,01h,83h,00h,79h,0E6h,06h,00h,00h
DB 01h,83h,0Dh,86h,01h,0E3h,0C0h,00h,01h,83h,00h,70h,0E6h,06h,00h,00h
DB 01h,87h,1Dh,0C6h,01h,0F7h,0C0h,00h,01h,83h,00h,70h,06h,06h,00h,00h
DB 01h,0FFh,1Dh,0C6h,01h,0F7h,0C0h,00h,01h,83h,0FEh,60h,07h,0FEh,00h,00h
DB 01h,0FEh,38h,0E6h,01h,0B6h,0C0h,00h,01h,83h,0FEh,60h,07h,0FEh,00h,00h
DB 01h,80h,3Fh,0E6h,01h,0BEh,0C0h,00h,01h,83h,00h,70h,06h,06h,00h,00h
DB 01h,80h,3Fh,0E6h,01h,0BEh,0C0h,00h,01h,83h,00h,70h,0E6h,06h,00h,00h
DB 01h,80h,70h,76h,01h,9Ch,0C0h,00h,01h,83h,00h,79h,0E6h,06h,00h,00h
DB 01h,80h,70h,77h,0F9h,9Ch,0C0h,00h,01h,83h,0FEh,3Fh,0E6h,06h,00h,00h
DB 01h,80h,70h,77h,0F9h,9Ch,0C0h,00h,01h,83h,0FEh,1Fh,0C6h,06h,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
GRAPHICTAB2: ;图形数据地址
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -