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

📄 lcd.src

📁 F040 的一些软件学习
💻 SRC
📖 第 1 页 / 共 2 页
字号:
; .\Lcd.SRC generated from: ..\SourceFile\Lcd.c
; COMPILER INVOKED BY:
;        C:\Program Files\Keil\C51\BIN\C51.EXE ..\SourceFile\Lcd.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\Lcd.lst) SRC(.\Lcd.SRC)


NAME	LCD

?PR?_SetPage?LCD     SEGMENT CODE 
?PR?_SetColumn?LCD   SEGMENT CODE 
?PR?InitTg19264?LCD  SEGMENT CODE 
?PR?lcd_init?LCD     SEGMENT CODE 
?PR?lcd_clear?LCD    SEGMENT CODE 
?PR?_lcd_display_graphic?LCD             SEGMENT CODE 
?XD?_lcd_display_graphic?LCD             SEGMENT XDATA OVERLAYABLE 
?BI?_lcd_display_graphic?LCD             SEGMENT BIT OVERLAYABLE 
?PR?_lcd_display_char?LCD                SEGMENT CODE 
?XD?_lcd_display_char?LCD                SEGMENT XDATA OVERLAYABLE 
?BI?_lcd_display_char?LCD                SEGMENT BIT OVERLAYABLE 
?PR?_lcd_display_text?LCD                SEGMENT CODE 
?XD?_lcd_display_text?LCD                SEGMENT XDATA OVERLAYABLE 
?BI?_lcd_display_text?LCD                SEGMENT BIT OVERLAYABLE 
?PR?_lcd_display_byte?LCD                SEGMENT CODE 
?XD?_lcd_display_byte?LCD                SEGMENT XDATA OVERLAYABLE 
?BI?_lcd_display_byte?LCD                SEGMENT BIT OVERLAYABLE 
	EXTRN	XDATA (g_Graphic)
	EXTRN	CODE (g_ASCII)
	EXTRN	CODE (g_Data2Char)
	EXTRN	CODE (_strlen)
	EXTRN	CODE (?C?ILDIX)
	EXTRN	CODE (?C?CLDPTR)
	PUBLIC	?_lcd_display_byte?BIT
	PUBLIC	?_lcd_display_byte?BYTE
	PUBLIC	_lcd_display_byte
	PUBLIC	?_lcd_display_text?BIT
	PUBLIC	?_lcd_display_text?BYTE
	PUBLIC	_lcd_display_text
	PUBLIC	?_lcd_display_char?BIT
	PUBLIC	?_lcd_display_char?BYTE
	PUBLIC	_lcd_display_char
	PUBLIC	?_lcd_display_graphic?BIT
	PUBLIC	?_lcd_display_graphic?BYTE
	PUBLIC	_lcd_display_graphic
	PUBLIC	lcd_clear
	PUBLIC	lcd_init

	RSEG  ?XD?_lcd_display_byte?LCD
?_lcd_display_byte?BYTE:
     XStart?870:   DS   1
     YStart?871:   DS   1
      value?874:   DS   1
	ORG  3
      Shift?875:   DS   1
     Result?876:   DS   1

	RSEG  ?BI?_lcd_display_byte?LCD
?_lcd_display_byte?BIT:
       bHex?872:   DBIT   1
bReverseDisplay?873:   DBIT   1

	RSEG  ?XD?_lcd_display_text?LCD
?_lcd_display_text?BYTE:
     XStart?764:   DS   1
     YStart?765:   DS   1
      pText?767:   DS   3
	ORG  5
          i?768:   DS   1
        len?769:   DS   1

	RSEG  ?BI?_lcd_display_text?LCD
?_lcd_display_text?BIT:
bReverseDisplay?766:   DBIT   1

	RSEG  ?XD?_lcd_display_graphic?LCD
?_lcd_display_graphic?BYTE:
     XStart?544:   DS   1
     YStart?545:   DS   1
      Width?546:   DS   1
     Height?547:   DS   1
GraphicIndex?549:   DS   1
	ORG  5
  PageStart?552:   DS   1
    PageEnd?553:   DS   1

	RSEG  ?BI?_lcd_display_graphic?LCD
?_lcd_display_graphic?BIT:
bReverseDisplay?548:   DBIT   1

	RSEG  ?XD?_lcd_display_char?LCD
?_lcd_display_char?BYTE:
     XStart?655:   DS   1
     YStart?656:   DS   1
  character?658:   DS   1
	ORG  3
    PageEnd?662:   DS   1

	RSEG  ?BI?_lcd_display_char?LCD
?_lcd_display_char?BIT:
bReverseDisplay?657:   DBIT   1
; /*************************************************/
; 
; /**************液晶显示屏*******************/
; 
; /***************2003年1月20日*******************/
; 
; /************WROTE BY WANGSW********************/
; 
; 
; 
; 
; 
; #include <absacc.h>			/*XBYTE绝对外部内存空间头文件*/
; #include <string.h>
; #include <intrins.h>
; #include "define.h"
; #include "ascii.h"
; #include "lcd.h"
; 
; 
; #ifdef DP_51
; #define WLCD XBYTE[0xF800]		/*r定义WLCD为写LCD的内容*/
; #define RLCD XBYTE[0xF801]		/*r定义RLCD为读LCD的内容*/
; #define RS XBYTE[0xF802]		/*对于TG19264A1,RS=0为命令,RS=1为数据*/
; #endif
; 
; #ifdef TG19264
; #define MAX_COLUMN 			64
; #define MAX_PAGE      		8
; #endif
; 
; 
; #define SendCtr(value)	RS = 0; RS = 0; WLCD = value;
; #define SendData(value)	RS = 1; RS = 1; WLCD = value;
; 
; /*******************************************************************/
; //static void SendCtr(byte value);
; //static void SendData(byte value);
; static void SetPage(byte value);
; static void SetColumn(byte value);
; static void InitTg19264(void);
; 
; 
; 
; 
; /******************************************************************************************
; *函数名:		SetPage
; *参数:			value			设置的页码值,从0~7有效
; *返回值:		无
; *描述:			对于TG19264液晶屏,设置当前操作的页码值
; *编写:			王绍伟
; *版本信息:		V1.0			2003年8月15日
; ******************************************************************************************/
; static void SetPage(byte value)

	RSEG  ?PR?_SetPage?LCD
_SetPage:
			; SOURCE LINE # 54
;---- Variable 'value?040' assigned to Register 'R7' ----
; {
			; SOURCE LINE # 55
; #ifdef TG19264
; 	SendCtr(0xB8 + value);
			; SOURCE LINE # 57
	MOV  	DPTR,#0F802H
	CLR  	A
	MOVX 	@DPTR,A
	MOVX 	@DPTR,A
	MOV  	A,R7
	ADD  	A,#0B8H
	MOV  	DPTR,#0F800H
	MOVX 	@DPTR,A
; #endif
; }
			; SOURCE LINE # 59
	RET  	
; END OF _SetPage

; 
; 
; /******************************************************************************************
; *函数名:		SetColumn
; *参数:			value			设置的X坐标位置,从0~63有效
; *返回值:		无
; *描述:			设置当前液晶屏操作的X坐标位置
; *编写:			王绍伟
; *版本信息:		V1.0			2003年8月15日
; ******************************************************************************************/
; static void SetColumn(byte value)

	RSEG  ?PR?_SetColumn?LCD
_SetColumn:
			; SOURCE LINE # 70
;---- Variable 'value?141' assigned to Register 'R7' ----
; {
			; SOURCE LINE # 71
; #ifdef TG19264
; 	SendCtr(0x40 + value);
			; SOURCE LINE # 73
	MOV  	DPTR,#0F802H
	CLR  	A
	MOVX 	@DPTR,A
	MOVX 	@DPTR,A
	MOV  	A,R7
	ADD  	A,#040H
	MOV  	DPTR,#0F800H
	MOVX 	@DPTR,A
; #endif
; }
			; SOURCE LINE # 75
	RET  	
; END OF _SetColumn

; 
; 
; /******************************************************************************************
; *函数名:		InitTg19264
; *参数:			无
; *返回值:		无
; *描述:			初始化液晶屏Tg19264,对液晶屏从DDRAM中哪一行开始显示数
; 				据以及设置初始的页码值和X坐标位置
; *编写:			王绍伟
; *版本信息:		V1.0			2003年8月15日
; ******************************************************************************************/
; static void InitTg19264(void)

	RSEG  ?PR?InitTg19264?LCD
InitTg19264:
			; SOURCE LINE # 87
; {
			; SOURCE LINE # 88
; 	SendCtr(0xC0);		/*起始显示DDRAM行(D5-D0)为第0行*/
			; SOURCE LINE # 89
	MOV  	DPTR,#0F802H
	CLR  	A
	MOVX 	@DPTR,A
	MOVX 	@DPTR,A
	MOV  	DPTR,#0F800H
	MOV  	A,#0C0H
	MOVX 	@DPTR,A
; 	SendCtr(0xB8);		/*起始页位置(D2-D0)为第0页*/
			; SOURCE LINE # 90
	MOV  	DPTR,#0F802H
	CLR  	A
	MOVX 	@DPTR,A
	MOVX 	@DPTR,A
	MOV  	DPTR,#0F800H
	MOV  	A,#0B8H
	MOVX 	@DPTR,A
; 	SendCtr(0x40);		/*X方向起始位置(D5-D0)为0*/
			; SOURCE LINE # 91
	MOV  	DPTR,#0F802H
	CLR  	A
	MOVX 	@DPTR,A
	MOVX 	@DPTR,A
	MOV  	DPTR,#0F800H
	MOV  	A,#040H
	MOVX 	@DPTR,A
; }
			; SOURCE LINE # 92
	RET  	
; END OF InitTg19264

; 
; 
; /******************************************************************************************
; *函数名:		lcd_init
; *参数:			无
; *返回值:		无
; *描述:			液晶屏初始化程序,主要是清屏,开显示
; *编写:			王绍伟
; *版本信息:		V1.0			2003年8月15日
; ******************************************************************************************/
; extern void lcd_init(void)

	RSEG  ?PR?lcd_init?LCD
lcd_init:
	USING	0
			; SOURCE LINE # 103
; {
			; SOURCE LINE # 104
; #ifdef TG19264
; 	InitTg19264();
			; SOURCE LINE # 106
	LCALL	InitTg19264
; #endif
; 	lcd_clear();
			; SOURCE LINE # 108
	LCALL	lcd_clear
; 	SendCtr(0x3F);		/*显示ON/OFF	D0*/
			; SOURCE LINE # 109
	MOV  	DPTR,#0F802H
	CLR  	A
	MOVX 	@DPTR,A
	MOVX 	@DPTR,A
	MOV  	DPTR,#0F800H
	MOV  	A,#03FH
	MOVX 	@DPTR,A
; }
			; SOURCE LINE # 110
	RET  	
; END OF lcd_init

; 
; 
; /******************************************************************************************
; *函数名:		lcd_clear
; *参数:			无
; *返回值:		无
; *描述:			LCD清屏程序
; *编写:			王绍伟
; *版本信息:		V1.0			2003年8月15日
; ******************************************************************************************/
; extern void lcd_clear(void)					

	RSEG  ?PR?lcd_clear?LCD
lcd_clear:
	USING	0
			; SOURCE LINE # 121
; {
			; SOURCE LINE # 122
; 	byte page;
; 	byte column;
; 
; 	for(page = 0; page < MAX_PAGE; page++)
			; SOURCE LINE # 126
;---- Variable 'page?442' assigned to Register 'R7' ----
	CLR  	A
	MOV  	R7,A
?C0005:
; 	{
			; SOURCE LINE # 127
; 		RS = 0;				/*r发送命令*/
			; SOURCE LINE # 128
	MOV  	DPTR,#0F802H
	CLR  	A
	MOVX 	@DPTR,A
; 		WLCD = 0xB8 + page;		/*r设置清空的页码*/
			; SOURCE LINE # 129
	MOV  	A,R7
	ADD  	A,#0B8H
	MOV  	DPTR,#0F800H
	MOVX 	@DPTR,A
; 		_nop_();
			; SOURCE LINE # 130
	NOP  	
; 		WLCD = 0x40;			/*r设置清空的X坐标起始位置为0*/
			; SOURCE LINE # 131
	MOV  	A,#040H
	MOVX 	@DPTR,A
; 		_nop_();
			; SOURCE LINE # 132
	NOP  	
; 		RS = 1;				/*r发送数据*/
			; SOURCE LINE # 133
	MOV  	DPTR,#0F802H
	MOV  	A,#01H
	MOVX 	@DPTR,A
; 		_nop_();
			; SOURCE LINE # 134
	NOP  	
; 		for(column = 0; column < MAX_COLUMN; column++)
			; SOURCE LINE # 135
;---- Variable 'column?443' assigned to Register 'R6' ----
	CLR  	A
	MOV  	R6,A
?C0008:
; 		{
			; SOURCE LINE # 136
; 			WLCD = 0x00;		/*r相应显示寄存器清零*/
			; SOURCE LINE # 137
	MOV  	DPTR,#0F800H
	CLR  	A
	MOVX 	@DPTR,A
; 			_nop_();
			; SOURCE LINE # 138
	NOP  	
; 			_nop_();
			; SOURCE LINE # 139
	NOP  	
; 			_nop_();
			; SOURCE LINE # 140
	NOP  	
; 			_nop_();
			; SOURCE LINE # 141
	NOP  	
; 			_nop_();
			; SOURCE LINE # 142
	NOP  	
; 			_nop_();
			; SOURCE LINE # 143
	NOP  	
; 			_nop_();
			; SOURCE LINE # 144
	NOP  	
; 			_nop_();
			; SOURCE LINE # 145
	NOP  	
; 			_nop_();
			; SOURCE LINE # 146
	NOP  	
; 			_nop_();
			; SOURCE LINE # 147
	NOP  	
; 			_nop_();
			; SOURCE LINE # 148
	NOP  	
; 		}
			; SOURCE LINE # 149
	INC  	R6
	MOV  	A,R6
	CJNE 	A,#040H,?C0008
; 	}
			; SOURCE LINE # 150
?C0007:
	INC  	R7
	MOV  	A,R7
	CJNE 	A,#08H,?C0005
; }
			; SOURCE LINE # 151
?C0011:
	RET  	
; END OF lcd_clear

; 
; 
; /******************************************************************************************
; *函数名:		lcd_display_graphic
; *参数:			XStart		X轴起始位置,为像素点位置
; 				YStart		Y轴起始位置,为像素点位置
; 				Width		图像宽度像素值
; 				Height		图像高度像素值
; 				bReverseDisplay		标识是否反显
; 				GraphicIndex		图像显示索引
; *返回值:		无
; *描述:			显示一幅图像的程序
; *编写:			王绍伟
; *版本信息:		V1.0			2003年8月15日
; ******************************************************************************************/
;  extern void lcd_display_graphic(				/*为整个PAGE显示,不能任意位置*/

	RSEG  ?PR?_lcd_display_graphic?LCD
_lcd_display_graphic:
	USING	0
			; SOURCE LINE # 167
	MOV  	DPTR,#XStart?544
	MOV  	A,R7
	MOVX 	@DPTR,A
;---- Variable 'YStart?545' assigned to Register 'R5' ----
;---- Variable 'Width?546' assigned to Register 'R1' ----
	MOV  	R1,AR3
; 							 	byte XStart,
; 							 	byte YStart,
; 							 	byte Width,
; 							 	byte Height,
; 							 	bool bReverseDisplay,
; 							 	byte GraphicIndex)                        
; {	
			; SOURCE LINE # 174
; 	byte PageCounter;		/*页计数值*/
; 	byte ColumnCounter;		/*X位置计数值*/
; 	byte PageStart;			/*起始页码*/
; 	byte PageEnd;			/*终止页码*/
; 	byte code *pGraphic;	/*指向发送显示数据的指针*/
; 
; 	pGraphic = g_Graphic[GraphicIndex];	/*r取出要显示的图像区头地址给指针pGraphic*/
			; SOURCE LINE # 181
	MOV  	DPTR,#GraphicIndex?549
	MOVX 	A,@DPTR
	ADD  	A,ACC
	ADD  	A,#LOW (g_Graphic)
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (g_Graphic)
	MOV  	DPH,A
	MOVX 	A,@DPTR
	MOV  	R6,A
	INC  	DPTR
	MOVX 	A,@DPTR
;---- Variable 'pGraphic?554' assigned to Register 'R2/R3' ----
	MOV  	R3,A
	MOV  	R2,AR6
; 	PageStart = YStart >> 3;		/*r由于是整页显示,不能随意位置,所以指定除8*/
			; SOURCE LINE # 182
	MOV  	A,R5
	RRC  	A
	RRC  	A
	RRC  	A
	ANL  	A,#01FH
	MOV  	DPTR,#PageStart?552
	MOVX 	@DPTR,A
; 	PageEnd = (YStart + Height) >> 3;
			; SOURCE LINE # 183
	MOV  	DPTR,#Height?547
	MOVX 	A,@DPTR
	ADD  	A,R5
	MOV  	R7,A
	CLR  	A
	RLC  	A
	MOV  	R6,A
	MOV  	A,R7
	MOV  	R0,#03H
?C0040:
	XCH  	A,R6
	MOV  	C,ACC.7
	RRC  	A
	XCH  	A,R6
	RRC  	A
	DJNZ 	R0,?C0040
	MOV  	DPTR,#PageEnd?553
	MOVX 	@DPTR,A
; 
; 	
; 	for(PageCounter = PageStart; PageCounter < PageEnd; PageCounter++)
			; SOURCE LINE # 186
	MOV  	DPTR,#PageStart?552
	MOVX 	A,@DPTR
;---- Variable 'PageCounter?550' assigned to Register 'R6' ----
	MOV  	R6,A
?C0012:
	MOV  	DPTR,#PageEnd?553
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	A,R6
	CLR  	C
	SUBB 	A,R7
	JNC  	?C0020
; 	{
			; SOURCE LINE # 187
; 		SetColumn(XStart);
			; SOURCE LINE # 188
	MOV  	DPTR,#XStart?544
	MOVX 	A,@DPTR
	MOV  	R7,A
	LCALL	_SetColumn
; 		SetPage(PageCounter);
			; SOURCE LINE # 189
	MOV  	R7,AR6
	LCALL	_SetPage

⌨️ 快捷键说明

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