📄 ocmc
字号:
;MODUL OCM4X8C
;RS=CS=CS
;R/W=STD=STD
;E=SCLK=SCLK
CS EQU P0.0
STD EQU P0.1
SCLK 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
DA_IN EQU 3AH
RS_STU EQU 20H
ORG 0000H
LJMP START
org 0100h
START: mov sp,#60h
MOV G_WID,#00H
MOV G_ROW,#00H
MOV P0,#00H
CLR PSB
setb RESET
QIU1: LCALL INITIL
MOV A, #0CH ;关显示
LCALL INPUT
LCALL DELAY01
MOV A, #01H
LCALL INPUT
LCALL DELAY01
;-----------
;WORD DISPLAY
;----------
MOV FIRST_ADD,#00H
MOV FIRST_LIN,#01H
MOV DPTR, #TAB
MOV word_WID,#08H
MOV word_LIN,#04H
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,#04H
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,#04H
MOV START_ADD,#00H
LCALL WORD_DISP
LCALL DELAY
LCALL DELAY
LCALL DELAY
MOV A, #01H
LCALL INPUT
LCALL DELAY01
;---------------------------
;GRAPHIC DISPLAY
;---------------------------
GRAPHIC_A:
MOV A, #34H
LCALL INPUT
LCALL DELAY01
MOV G_ROW, #80H
MOV G_COLUMN, #80H
MOV DPTR, #GRAPHICTAB
LCALL GRAPHIC_DISP
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
MOV G_ROW, #80H
MOV G_COLUMN, #80H
MOV DPTR, #GRAPHICTAB1
LCALL GRAPHIC_DISP
LCALL DELAY
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
MOV G_ROW, #80H
MOV G_COLUMN, #80H
GRA_DISP:
MOV A, #34H
LCALL INPUT
LCALL DELAY02
MOV A, G_COLUMN
LCALL INPUT
MOV A, G_ROW
LCALL INPUT
MOV A, #30H
LCALL INPUT
CLR A
MOVC A, @A+DPTR
LCALL DISPL
INC DPTR
CLR A
MOVC A, @A+DPTR
LCALL DISPL
INC DPTR
INC G_ROW
MOV A, G_ROW
CJNE A, #88H, GRA_DISP
MOV G_ROW, #80H
INC G_COLUMN
MOV A, G_COLUMN
CJNE A, #0A0H, GRA_DISP
MOV G_ROW, #88H
MOV G_COLUMN, #80H
GRA_DISP1:
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
MOVC A, @A+DPTR
LCALL DISPL
INC DPTR
CLR A
MOVC A, @A+DPTR
LCALL DISPL
INC DPTR
INC G_ROW
MOV A, G_ROW
CJNE A, #90H, GRA_DISP1
MOV G_ROW, #88H
INC G_COLUMN
MOV A, G_COLUMN
CJNE A, #0A0H, GRA_DISP1
MOV A, #36H
LCALL INPUT
LCALL DELAY02
RET
INITIL: LCALL DELAY01 ;延时
LCALL DELAY01
LCALL DELAY01
MOV A, #30H ;30---基本指令操作
LCALL INPUT
LCALL DELAY01
MOV A, #30H ;30---基本指令操作
LCALL INPUT
LCALL DELAY01
MOV A, #30H ;30---基本指令操作
LCALL INPUT
LCALL DELAY01
MOV A, #30H ;30---基本指令操作
LCALL INPUT
LCALL DELAY01
MOV A, #01H ;清除屏幕文字
LCALL INPUT
LCALL DELAY01
MOV A, #06H ;指定在资料写入或读取时,设定游标的移动方向及指定显示的移位
LCALL INPUT
LCALL DELAY01
RET
;-----------------
;SEARCH ADDRESS
;-----------------
DEADD: PUSH DPH
PUSH DPL
PUSH A
MOV DPTR,#LINE_ADD
MOV A,FIRST_LIN
MOVC A,@A+DPTR
ADD A,FIRST_ADD
MOV START_ADD,A
POP A
POP DPL
POP DPH
RET
LINE_ADD:
DB 00H,80H,90H,88H,98H.00H
DISPL: LCALL DELAY02
SETB RS_STU ;P0--CONTRAL I/O
MOV DA_IN,A ;WRITE DATA
LCALL SERIAL_WRITE
RET
INPUT: LCALL DELAY02
CLR RS_STU ;P0--CONTRAL I/O
MOV DA_IN,A ;WRITE INSTRUTION
LCALL SERIAL_WRITE
RET
;-------------------------
;Serial Mode Write Data/Write Instrution
;Use CS=RS\SCLK=E\STD=R/W
;rs_stu=1 Write Data
;Rs_stu=0 Write Instrution
;-------------------------
SERIAL_WRITE:
PUSH A
MOV A,DA_IN
SETB CS
SETB STD
CLR SCLK
SETB SCLK
CLR SCLK
SETB SCLK
CLR SCLK
SETB SCLK
CLR SCLK
SETB SCLK
CLR SCLK
SETB SCLK
CLR SCLK
CLR STD
SETB SCLK
CLR SCLK
JNB RS_STU,WSTU
SETB STD
SJMP WSTU1
WSTU: CLR STD
WSTU1: SETB SCLK
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -