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

📄 12864_chs.asm

📁 液晶测试程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:

   
                               
;****************TS12864A-3 并口****************
                                   
          RS	EQU	P3.5       
          RW	EQU	P3.6
          E 	EQU	P3.4
          PSB	EQU	P3.7
          RST	EQU	P2.5
;-----------------------------------------------
          LCD_X	 EQU	30H
          LCD_Y	 EQU	31H
          COUNT	 EQU	32H
          COUNT1 EQU	33H
          COUNT2 EQU	34H
          COUNT3 EQU	35H
;-----------------------------------------------
       LCD_DATA  EQU	36H
       LCD_DATA1 EQU	37H
       LCD_DATA2 EQU	38H
          STORE	 EQU	39H

;-----------------------------------------------
		ORG	0000H
		LJMP	MAIN
		ORG	0100H
;-----------------------------------------------
MAIN:
           clr P2.6
	   clr P2.7
	    MOV	SP,#5FH
            CLR  RST             ;复位
            LCALL DELAY4
            SETB RST
	    NOP
            SETB PSB             ;通讯方式为8位数据并口

;********************初始化**********************
LGS0:	    MOV	A,#34H		;34H--扩充指令操作
	    LCALL SEND_I
	    MOV	A,#30H		;30H--基本指令操作
	    LCALL SEND_I
	    MOV	A,#01H		;清除显示
	    LCALL SEND_I
            MOV	A,#06H		;指定在资料写入或读取时,光标的移动方向
	    LCALL SEND_I        ;DDRAM 的地址计数器(AC)加1
	    MOV	A,#0CH		;开显示,关光标,不闪烁
	    LCALL SEND_I
;===============================================
TU_PLAY1:
            MOV  DPTR,#TU_TAB3	     ;显示图形
	    LCALL PHO_DISP
	    LCALL DELAY3
            
;===============================================
;显示汉字和字符
;加入80ms的延时,使你能够看清楚显示的过程
;根据汉字显示坐标写入 (隔行写入)
;===============================================
HAN_WR1:
            LCALL CLEAR_P
            MOV	DPTR,#TAB1      ;显示汉字和字符
	    MOV	COUNT,#40H      ;地址计数器设为最大值 64。
	    MOV	A,#80H          ;起始地址
	    LCALL SEND_I
            LCALL QUSHU
 	    LCALL DELAY3
            LCALL FLASH
;=================================================
;;显示汉字和字符
;加入80ms的延时,使你能够看清楚显示的过程
;根据汉字显示坐标分段写入(顺序写入)
;=================================================
HAN_WR2:
            LCALL CLEAR_P
HAN_WR2A:
            MOV	DPTR,#TAB1A	;显示汉字和字符
	    MOV	COUNT,#10H      ;地址计数器设为16。
	    MOV	A,#80H          ;第一行起始地址
	    LCALL SEND_I
            LCALL   QUSHU
HAN_WR2B:
            MOV	DPTR,#TAB1B	;显示汉字和字符
	    MOV	COUNT,#10H      ;地址计数器设为16。
	    MOV	A,#90H          ;第二行起始地址
	    LCALL SEND_I
            LCALL QUSHU
HAN_WR2C:
            MOV	DPTR,#TAB1C	;显示汉字和字符
	    MOV	COUNT,#10H      ;地址计数器设为16。
	    MOV	A,#88H          ;第三行起始地址
	    LCALL SEND_I
            LCALL QUSHU
HAN_WR2D:
            MOV	DPTR,#TAB1D	 ;显示汉字和字符
	    MOV	COUNT,#10H       ;地址计数器设为16。
	    MOV	A,#98H           ;第四行起始地址
	    LCALL SEND_I
            LCALL QUSHU
            LCALL DELAY3
            LCALL FLASH
            LCALL CLEAR_P
            JMP  TU_PLAY2
;----------------------------------------------
;TU_PLAY1:
            MOV  DPTR,#TU_TAB4	     ;显示图形
	    LCALL PHO_DISP
	    LCALL DELAY3
            ;LCALL   FLASH
;----------------------------------------------
TU_PLAY2:
	    MOV	DPTR,#TU_TAB3   ;显示图形
	    LCALL PHO_DISP
	    LCALL DELAY3
            ;LCALL   FLASH
;----------------------------------------------
TU_PLAY3:
	    MOV	DPTR,#TU_TAB4   ;显示图形
	    LCALL PHO_DISP
	    LCALL DELAY3
            ;LCALL   FLASH
;-----------------------------------------------
;显示点阵
;-----------------------------------------------
LATPLAY1:
            MOV	A,#01H         ;清屏
            LCALL SEND_I
	    MOV	LCD_DATA1,#0CCH	 ;显示点阵
	    MOV	LCD_DATA2,#0CCH
	    LCALL LAT_DISP
	    LCALL DELAY3
            LCALL CLEAR_P
	    ;LJMP  TU_PLAY1
;===============================================
;调字库半角字符显示
;===============================================
KU_PLAY1:
            LCALL  CLEAR_P
            MOV  COUNT,#40H
            MOV  A,#80H
            LCALL SEND_I
            MOV  R1,#10H
LATPLAY11:
            MOV  A,R1
            LCALL  SEND_D
            INC  R1
            DJNZ  COUNT,LATPLAY11
            LCALL  DELAY3
            LCALL  CLEAR_P
            ;LJMP  TU_PLAY1

;===============================================
;调字库汉字显示
;从 B9F3 “贵”字处开始显示
;===============================================
KU_PLAY2:
            LCALL  CLEAR_P
            MOV  COUNT,#40H
            MOV  A,#80H
            LCALL SEND_I
            MOV  R1,#0F3H
KU_PLAY21:
            MOV  A,#0B9H
            LCALL  SEND_D        ;写入第一字节数据(高位)
            MOV  A,R1
            LCALL  SEND_D        ;写入第二字节数据(低位)
            INC  R1
            DJNZ  COUNT,KU_PLAY21
            LCALL  DELAY3
            LCALL  CLEAR_P
            LJMP  TU_PLAY1
            ;JMP  $
;===============================================
;全屏显示图形子程序
;===============================================
PHO_DISP:
    	    MOV  COUNT3,#02H
	    MOV  LCD_X,#80H
PHO_DISP1:
    	    MOV  LCD_Y,#80H
	    MOV  COUNT2,#20H
PHO_DISP2:
    	    MOV  COUNT1,#10H
	    LCALL WR_ZB
PHO_DISP3:
            CLR	A
	    MOVC A,@A+DPTR
	    LCALL SEND_D
	    INC	DPTR
	    DJNZ COUNT1,PHO_DISP3
	    INC	LCD_Y
	    DJNZ COUNT2,PHO_DISP2
	    MOV	LCD_X,#88H
	    DJNZ COUNT3,PHO_DISP1

	    MOV	A,#36H
	    LCALL SEND_I
	    MOV	A,#30H
	    LCALL SEND_I
            RET
;----------------------------------------------
CLRRAM:
     	    MOV	LCD_DATA1,#00H		;GDRAM写0子程序
	    MOV	LCD_DATA2,#00H
	    LCALL LAT_DISP
	    RET
;==============================================
;显示点阵子程序
;==============================================
LAT_DISP:
    	    MOV	COUNT3,#02H
	    MOV	LCD_X,#80H
LAT_DISP1:
    	    MOV	LCD_Y,#80H
	    CLR	F0
	    MOV	COUNT2,#20H
LAT_DISP2:
    	    MOV	COUNT1,#10H
	    LCALL WR_ZB
LAT_DISP3:
    	    JB	F0,LAT_DISP32
	    MOV	LCD_DATA,LCD_DATA1
	    AJMP LAT_DISP31
LAT_DISP32:
    	    MOV	LCD_DATA,LCD_DATA2
LAT_DISP31:
    	    MOV	A,LCD_DATA
	    LCALL SEND_D
	    DJNZ COUNT1,LAT_DISP31
	    INC	LCD_Y
	    CPL	F0
	    DJNZ COUNT2,LAT_DISP2
	    MOV	LCD_X,#88H
	    DJNZ COUNT3,LAT_DISP1

	    MOV	A,#36H
	    LCALL SEND_I
	    MOV	A,#30H
	    LCALL SEND_I
	    RET
;---------------------------------------------
WR_ZB:
    	    MOV	A,#34H
	    LCALL SEND_I
	    MOV	A,LCD_Y
	    LCALL SEND_I
	    MOV	A,LCD_X
	    LCALL SEND_I
	    MOV	A,#30H
	    LCALL SEND_I
	    RET

;===============================================
FLASH:
            MOV  A,#08H       ;关闭显示
            LCALL SEND_I
            LCALL  DELAY5
            MOV  A,#0CH	  ;开显示,关光标,不闪烁
	    LCALL SEND_I
            LCALL  DELAY5
            MOV  A,#08H       ;关闭显示
            LCALL SEND_I
            LCALL  DELAY5
            MOV  A,#0CH	  ;开显示,关光标,不闪烁
	    LCALL SEND_I
            LCALL  DELAY5
            MOV  A,#08H       ;关闭显示
            LCALL SEND_I
            LCALL  DELAY5
                RET

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -