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

📄 tg19264.asm

📁 有关单片机仿真软件的例子建议 结合例子
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;********************************************************************************
;* 文件名:TG19264.ASM
;* 功  能:TG19264液晶模块驱动程序
;* 作  者:SZN
;* 日  期:2005.07.10
;* 备  注:
;*********************************************************************************

 ;LCM 型号: TG19264A (192*64)

 ;LCM 接口: 1:GND 2:VCC 3:V0 4.RS 5:RW 6:E 7--14:DB0-DB7
 ;          15:CS1 16:RST 17:CS2 18:CS3 19:Vee 20:LED+

;***************************************************************************

;---端口地址定义----------------
CMD_BLK1    EQU    0x18	   
CMD_BLK2    EQU    0x14
CMD_BLK3    EQU    0x0C
CMD_READ    EQU	   0x02
CMD_WRITE   EQU	   0x00	
CMD_DATA    EQU	   0x01
CMD_CMD     EQU	   0x00

BLK1_WR_CMD 	EQU		(CMD_BLK1|CMD_WRITE|CMD_CMD) 
BLK2_WR_CMD 	EQU		(CMD_BLK2|CMD_WRITE|CMD_CMD)
BLK3_WR_CMD 	EQU		(CMD_BLK3|CMD_WRITE|CMD_CMD)
											 
BLK1_WR_DATA 	EQU		(CMD_BLK1|CMD_WRITE|CMD_DATA) 
BLK2_WR_DATA 	EQU		(CMD_BLK2|CMD_WRITE|CMD_DATA)
BLK3_WR_DATA 	EQU		(CMD_BLK3|CMD_WRITE|CMD_DATA)


;---全局变量定义----------------
XPOS    EQU     30H		;X坐标
YPOS    EQU     31H		;Y坐标

;---常量定义----------------
PD1	 EQU	40H		;每一个分区宽64点(液晶片分区参数)


       ORG 0000H
       LJMP MAIN
       ORG 0040H
MAIN:  MOV SP,#60H
K1:    
       LCALL    LCDRESET	;LCD复位

       MOV      R7,#0       ;XPOS
       MOV      R5,#0       ;YPOS
       MOV	DPTR,#STRING1	;       uchar *p = *string1;
       MOV      R3,DPH
       MOV      R4,DPL
       LCALL	_PUTSTR		;显示STRING1
       
	   MOV R7,#250
	   LCALL _DelayXms	
	   MOV R7,#250
	   LCALL _DelayXms		;DELAY 500ms

	   MOV      R7,#0       ;XPOS
       MOV      R5,#2       ;YPOS
       MOV	DPTR,#STRING2	;       uchar *p = *string2;
       MOV      R3,DPH
       MOV      R4,DPL
       LCALL    _PUTSTR		;显示STRING2
						
	   MOV R7,#250
	   LCALL _DelayXms	
	   MOV R7,#250
	   LCALL _DelayXms		;DELAY 500ms

       MOV      R7,#0
       LCALL    _LCDFILL	;清屏
					  	   
	   MOV R7,#250
	   LCALL _DelayXms	
	   MOV R7,#250
	   LCALL _DelayXms		 ;DELAY 500ms

       MOV      R6,#0
       MOV      R7,#0
       MOV      R4,#30H
       MOV      R5,#03H
       MOV      DPTR,#TUDOT2 ;#TUKDOT
       MOV      R2,DPH
       MOV      R3,DPL
       LCALL    _DispIcon32	 ;显示半圆
	   	 
	   MOV R7,#250
	   LCALL _DelayXms	
	   MOV R7,#250
	   LCALL _DelayXms
	   MOV R7,#250
	   LCALL _DelayXms	
	   MOV R7,#250			   ;DELAY 1s
	   LCALL _DelayXms
       AJMP	K1;$		;      while(1);
       
	   
       $INCLUDE(HZK16.ASM)      ;16*16汉字点阵字库

;--------------------------------外部接口函数--------------------------------
;
; 说明:考虑和C51的兼容性,更改入口参数为标准A51形式
;
; 函数原型:
; void LCDRESET(void);   //LCM系统复位子程序
; void LCDFILL(uchar);   //LCD全屏填充程序
; void PUTSTR(uchar x, uchar y, uchar *str);  //16*16字符点阵输出
; void DispIcon32(uint xy, uint lw, uchar *str);  //图标点阵输出
;
;****************************************************************
;功能:LCM系统复位子程序
;标号:    (1)ASM: LCDRESET      (2) C : LCDRESET(void)
;入口参数:无
;出口参数:无
;堆栈需求:>5 字节
;影响资源:XPOS, YPOS
;****************************************************************
LCDRESET:
        PUSH    ACC
        MOV     A,R7
        PUSH    ACC
        MOV     A,#3EH          ;关LCD显示
		CALL	LCDWC1
		CALL	LCDWC2
		CALL    LCDWC3
        MOV     A,#3FH          ;打开LCD显示
		CALL	LCDWC1
		CALL    LCDWC2
		CALL	LCDWC3
        MOV     A,#0C0H         ;设首址
		CALL    LCDWC1
		CALL    LCDWC2
		CALL    LCDWC3
        MOV	R7,#00H
        LCALL	_LCDFILL		;	void  lcdfill( uchar a );
        POP     ACC
        MOV     R7,A
        POP     ACC
		RET

;****************************************************************
;功能:全屏填充程序
;标号:    (1)ASM: _LCDFILL     (2) C : LCDFILL(uchar)
;入口参数:(1)ASM: R7
;出口参数:无
;堆栈需求:4 字节
;影响资源:XPOS, YPOS
;****************************************************************
_LCDFILL:                        ;LCD整屏显示R7的内容
        PUSH    ACC
        MOV     YPOS,#0
LFL_PB: MOV     XPOS,#0
LFL_PA: MOV     A,R7
        CALL    LCDWRITE        ;定位并写数据
        CALL    CUSORNEXT
        MOV     A,XPOS
        JNZ     LFL_PA
        MOV     A,YPOS
        JNZ     LFL_PB
        POP     ACC
        RET

;********************************************************************
;功能:字符数据输出子程序
;标号:    (1)ASM: _PUTSTR       (2) C : PUTSTR(uchar,uchar,uchar*)
;入口参数:(1)ASM: R7, R5, (R3,R4)
;出口参数:无
;子程序调用:无
;堆栈需求:4 字节
;影响资源:XPOS,YPOS
;********************************************************************
_PUTSTR:
        PUSH    DPL    ;内部使用DPTR, A, B, R7
        PUSH    DPH
        PUSH    ACC
        PUSH    B
        MOV     A,R7
        PUSH    ACC    ;SAVE

        MOV     XPOS,R7
        MOV     YPOS,R5
        MOV     DPH,R3
        MOV     DPL,R4
PUTSTR:
;	CALL	DELAY           ;用于显示演示速度
	CALL	GETSTRCHAR	;取字符串中的字符码
	PUSH	DPL
	PUSH	DPH
	JNC	PSR_LAX		;显示结束
	JNB	B.7,PSR_LBY	;编码<128,英文
;CHINESE:			;汉字输出16*16=8*16 + 8*16
	CALL	HZKPOS		;点阵码偏移量换算
	CALL	PUTCWDOT	;16*16点阵输出
	JMP	PSR_LBX
PSR_LBY:
;ENGLISH:			;英文(数字)半角字符输出
	CALL	EZKPOS		;点阵码偏移量换算
	CALL	PUTCHARDOT	;8*16点阵输出
PSR_LBX:
	POP	DPH
	POP	DPL
	JMP	PUTSTR		;继续下一位
PSR_LAX:POP	DPH
	POP	DPL

    POP     ACC       ;RECOVER
    MOV     R7,A
    POP     B
    POP     ACC
    POP     DPH
    POP     DPL
	RET

;********************************************************************
;功能:图标点阵输出子程序
;标号:    (1)ASM: _DispIcon32   (2)C: DispIcon32(uint xy,uint lw,uchar *str)
;入口参数:(1)ASM: (R6,R7), (R4,R5), (R2,R3)
;          (2)C: xy--坐标, lw--图片长宽, str--数据
;出口参数:无
;子程序调用:无
;堆栈需求:4 字节
;影响资源:XPOS,YPOS
;********************************************************************
_DispIcon32:
        PUSH    DPL    ;内部使用DPTR, A, B, R7
        PUSH    DPH
        PUSH    ACC
        PUSH    B
        MOV     A,R7
        PUSH    ACC    ;SAVE

        MOV     XPOS,R6
        MOV     YPOS,R7
        MOV     DPH,R2
        MOV     DPL,R3
        MOV     B,R5       ;WIDTH
PCW_PA1:MOV     A,R4
        MOV	R7,A       ;LENGTH
PCW_PA2:				;上半个字符
		CLR	A
		MOVC	A,@A+DPTR	;获取点阵码
		CALL	LCDWRITE	;写入LCM(上半个字部分)
		INC	XPOS		;X坐标加1
		INC	DPTR		;指向下一个点阵码
		DJNZ	R7,PCW_PA2
        DEC     B
        MOV     A,B
        JZ      ICON_END
        INC	YPOS
	    MOV     XPOS,R6   ;
        AJMP    PCW_PA1
ICON_END:
        POP     ACC       ;RECOVER
        MOV     R7,A
        POP     B
        POP     ACC
        POP     DPH
        POP     DPL
	    RET

;--------------------------------内部调用函数--------------------------------

;****************************************************************
;获取字串内字符编码,C=0显示结束,字符串以0FFH结尾作为结束标志
;以两字节组成一个字符:前一字节表示是全角(>=80H)还是半角(<80H)
;                      后一字节字符点阵表内偏移量"内码"
;****************************************************************
GETSTRCHAR:             ;IN: DPTR
GSC_PA:
	CLR	A
	MOVC	A,@A+DPTR	;先读取字头
	INC	DPTR
	MOV	B,A
	INC	A
	CLR	C		;置程序出口标志(表示已经结束)
	JZ	GSC_LAX		;如果是结束码(0ffh+1=00h)
	CLR	A
	MOVC	A,@A+DPTR	;真正读取"内码"
	INC	DPTR
	SETB	C		;编码有效
GSC_LAX:

⌨️ 快捷键说明

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