⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ocmc

📁 小型lcd 的汇编显示源代码
💻
📖 第 1 页 / 共 2 页
字号:
;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 + -