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

📄 for 240.txt

📁 TMS32LF2812与液晶接口的程序实例
💻 TXT
字号:
************************************************************
;液晶显示屏通用子程序
************************************************************
;除法子程序
;输入:LCDAX(被除数)!=0,LCDBX(除数)!=0    lcdbx<lcdax
;输出:ACCL(商),ACCH(余数)

DIVISION:	POINT_B11					;change data page
			SPLK    #0,DIVSHIFT			;wwa							  
DIV_TEST:	LACL	LCDAX
			BCND	DIV_RET,EQ 
			LACL    LCDBX
			BCND    DIV_RET,EQ
				
			BIT		LCDAX,0				
   			BCND	DIV_LACC,TC	        ;TC=1,branch to	load ACC
			LACL	LCDAX
			SACL	LCDAX,1    
			LACC    DIVSHIFT
			ADD     #1
			SACL    DIVSHIFT   
			
			B		DIV_TEST			;repeat until ACC(15) is 1

DIV_LACC:	 LACC   #15
             SUB    DIVSHIFT 
            SACL   DIVSHIFT 
            BCND   OPEONCE,EQ 
            
            LACL	LCDAX				;division 
            RPT		DIVSHIFT           ;#15 wwa
            SUBC	LCDBX     
            B       DIV_RET
            
OPEONCE:    LACL   LCDAX
            SUBC   LCDBX            
			
DIV_RET:    RET
			              
************************************************************
;十六进制到十进制转换子程序
;输入:LCDAX
;输出:LCDGX,LCDFX,LCDEX,LCDDX,LCDCX (从高位到低位)

HEXTODEC:	SPLK	#10000,LCDBX
			CALL	DIVISION
			SACL	LCDGX				
			SACH	LCDAX
			SPLK	#1000,LCDBX
			CALL	DIVISION
			SACL	LCDFX
			SACH	LCDAX
			SPLK	#100,LCDBX
			CALL	DIVISION
			SACL	LCDEX
			SACH	LCDAX
			SPLK	#10,LCDBX
			CALL	DIVISION
			SACL	LCDDX
			SACH	LCDCX
			RET						

************************************************************
;滚动刷新一行子程序
;输入:LCD_O_Y

R_DISPLAY:	SPLK	#0,LCD_O_X
			SPLK	#16,LCDBX
			SPLK	#15,LCDAX	
			SPLK	#8000,LCDCX
			MAR		*,AR6
RD_LOOP2:	LAR		AR6,LCDCX	
			LACL	LCDCX
			ADD		#1
			SACL	LCDCX 
						
RD_LOOP1:	LACL	*+
			SACL	LCD_CODE
			CALL	LCDWRI_CC
			LACL	LCD_O_X
			ADD		#2
			SACL	LCD_O_X
			LACL	LCDAX
			SUB		#1
			SACL	LCDAX
			BCND	RD_LOOP1,NEQ 
			;CALL	mS_DELAY
			SPLK	#15,LCDAX
			SPLK	#0,LCD_O_X
			LACL	LCDBX
			SUB		#1
			SACL	LCDBX
			BCND	RD_LOOP2,NEQ
			RET
								        	
************************************************************
;满屏刷新子程序(15*4)

P_DISPLAY:	SPLK	#0,LCD_O_Y
			SPLK	#0,LCD_O_X
			SPLK	#4,LCDBX
			SPLK	#15,LCDAX
			MAR		*,AR6
			LAR		AR6,#8100H                             	
PD_LOOP:	LACL	*+
			SACL	LCD_CODE
			CALL	LCDWRI_CC
			LACL	LCD_O_X
			ADD		#2
			SACL	LCD_O_X
			LACL	LCDAX
			SUB		#1
			SACL	LCDAX
			BCND	PD_LOOP,NEQ 
			SPLK	#0,LCD_O_X
			LACL	LCD_O_Y
			ADD		#16
			SACL	LCD_O_Y	
			SPLK	#15,LCDAX
			LACL	LCDBX
			SUB		#1
			SACL	LCDBX
			BCND	PD_LOOP,NEQ 
			RET
			
************************************************************
;液晶屏初始化子程序

LCDINT:		SPLK	#0,LCDDAT1
			SPLK	#0,LCDDAT2
			SPLK	#40H,LCDCOM
			CALL	LCDPR1
			SPLK	#1EH,LCDDAT1
			SPLK	#0,LCDDAT2
			SPLK	#41H,LCDCOM
			CALL	LCDPR1
			SPLK	#0,LCDDAT1
			SPLK	#10H,LCDDAT2
			SPLK	#42H,LCDCOM
			CALL	LCDPR1
			SPLK	#1EH,LCDDAT1
			SPLK	#0,LCDDAT2
			SPLK	#43H,LCDCOM
			CALL	LCDPR1
			SPLK	#0A7H,LCDCOM
			CALL	LCDPR12
			SPLK	#81H,LCDCOM
			CALL	LCDPR12
			SPLK	#09CH,LCDCOM
			CALL	LCDPR12  
			RET

************************************************************
;清屏子程序

LCDCLEAR:	SPLK	#0,LCDDAT1
			SPLK	#0,LCDDAT2
			SPLK	#24H,LCDCOM	
			CALL	LCDPR1
			SPLK	#0F0H,LCDCOUNT1
			SPLK	#0B0H,LCDCOM
			CALL	LCDPR12
LCDCLEAR1:	CALL	LCDST03
			SPLK	#0,LCDAX
			OUT		LCDAX,0000
			LACL	LCDCOUNT1
			SUB		#1
			SACL	LCDCOUNT1
			BCND	LCDCLEAR1,NEQ
			SPLK	#0B2H,LCDCOM
			CALL	LCDPR12	
			
			SPLK	#0,LCDDAT1
			SPLK	#10H,LCDDAT2
			SPLK	#24H,LCDCOM	
			CALL	LCDPR1
			SPLK	#8,LCDCOUNT2
			SPLK	#0F0H,LCDCOUNT1
			SPLK	#0B0H,LCDCOM
			CALL	LCDPR12
LCDCLEAR2:	CALL	LCDST03
			SPLK	#0,LCDAX
			OUT		LCDAX,0000
			LACL	LCDCOUNT1
			SUB		#1
			SACL	LCDCOUNT1
			BCND	LCDCLEAR2,NEQ     ;TEST 0908
			SPLK	#0F0H,LCDCOUNT1
			LACL	LCDCOUNT2
			SUB		#1
			SACL	LCDCOUNT2
			BCND	LCDCLEAR2,NEQ
			SPLK	#0B2H,LCDCOM
			CALL	LCDPR12             
			RET
			
************************************************************
;建立CGRAM子程序
;输入:LCDCOUNT1(汉字数*4)

CGRAM:		SPLK	#3,LCDDAT1
			SPLK	#0,LCDDAT2
			SPLK	#22H,LCDCOM
			CALL	LCDPR1
			SPLK	#0,LCDDAT1
			SPLK	#1CH,LCDDAT2
			SPLK	#24H,LCDCOM
			CALL	LCDPR1
			SPLK	#0B0H,LCDCOM
			CALL	LCDPR12	
			LT		LCDCOUNT1
			SPLK    #8,LCDTEMP4
			MPYU	LCDTEMP4
			SPM		0
			PAC
			ADD		#100H
			SACL	LCDTEMP1
			AND		#0FFH
			SACL	LCDCOUNT1
			LACL	LCDTEMP1
			AND		#0FFH,8
			CLRC	SXM
			RPT		#7
			SFR
			SACL	LCDCOUNT2
			MAR		*,AR6
			LAR		AR6,#8200H	    
CGRAM1:		CALL	LCDST03
			OUT		*+,0000H
			LACL	LCDCOUNT1
			SUB		#1
			SACL	LCDCOUNT1
			BCND	CGRAM1,NEQ	
			LACL	LCDCOUNT2
			SUB		#1
			SACL	LCDCOUNT2
			BCND	CGRAM1,NEQ
			SPLK	#0B2H,LCDCOM
			CALL	LCDPR12
			RET
			
************************************************************
;图形方式下写中文子程序
;输入:LCD_O_Y,LCD_O_X,LCD_CODE

LCDWRI_CC:	LT		LCD_O_Y
			SPLK    #1EH,LCDTEMP4
			MPYU	LCDTEMP4
			SPM		0
			PAC
			ADD		LCD_O_X
			ADD		#1000H
			SACL	LCDTEMP3
			AND		#0FFH
			SACL	LCDTEMP1
			LACL	LCDTEMP3
			AND		#0FFH,8
			CLRC	SXM
			RPT		#7
			SFR
			SACL	LCDTEMP2
			LT		LCD_CODE
			SPLK    #20H,LCDTEMP4
			MPYU	LCDTEMP4
			SPM		0
			PAC
			ADD		#8300H
			SACL	LCD_DPTR
			LAR		AR7,LCD_DPTR
			MAR		*,AR7
		    SPLK	#16,LCDCOUNT1
LCDWRI_CC1:	LACL	LCDTEMP1
			SACL	LCDDAT1
			LACL	LCDTEMP2
			SACL	LCDDAT2
			SPLK	#24H,LCDCOM
			CALL	LCDPR1
			LACL	*
			SACL	LCDDAT2
			ADRK	#16
			LACL	* 
			SACL	LCDDAT1
			SBRK	#16
			LACL	*+
			SPLK	#0C0H,LCDCOM
			CALL	LCDPR11
			LACL	LCDDAT1
			SACL	LCDDAT2
			CALL	LCDPR11
			CLRC	SXM
			LACC	LCDTEMP2,8
			OR		LCDTEMP1
			ADD		#1EH
			SACL	LCDTEMP3
			AND		#0FFH
			SACL	LCDTEMP1
			LACL	LCDTEMP3
			AND		#0FFH,8
			CLRC	SXM
			RPT		#7
			SFR
			SACL	LCDTEMP2
			LACL	LCDCOUNT1
			SUB		#1
			SACL	LCDCOUNT1
			BCND	LCDWRI_CC1,NEQ	
			MAR		*,AR6
			RET	
			
************************************************************
;文本方式下写中文子程序
;输入:LCD_O_Y,LCD_O_X,LCD_CODE	

LCDWRI_CT:	LT		LCD_O_Y
			SPLK    #1EH,LCDTEMP4
			MPYU	LCDTEMP4
			SPM		0
			PAC
			ADD		LCD_O_X
			SACL	LCDTEMP1
			AND		#0FFH
			SACL	LCDDAT1
			LACL	LCDTEMP1
			AND		#0FFH,8
			CLRC	SXM
			RPT		#7
			SFR
			SACL	LCDDAT2
			SPLK	#024H,LCDCOM
			CALL	LCDPR1
			LACL	LCD_CODE
			SACL	LCDDAT2
			SPLK	#0C0H,LCDCOM
			CALL	LCDPR11
			ADD		#2
			SACL	LCDDAT2
			CALL	LCDPR11
			LACL	#0
			ADD		LCDTEMP2
			ADD		#1000H 
			SACL	LCDTEMP2
			AND		#0FFH
			SACL	LCDDAT1
			LACL	LCDTEMP1
			AND		#0FFH,8
			CLRC	SXM
			RPT		#7
			SFR
			SACL	LCDDAT2
			SPLK	#24H,LCDCOM
			CALL	LCDPR1
			
			LACL	#0
			ADD		LCDTEMP1
			ADD		#1EH
			SACL	LCDTEMP1
			AND		#0FFH
			SACL	LCDDAT1
			LACL	LCDTEMP1
			AND		#0FFH,8
			CLRC	SXM
			RPT		#7
			SFR
			SACL	LCDDAT2
			SPLK	#24H,LCDCOM
			CALL	LCDPR1
			LACL	LCD_CODE
			ADD		#1
			SACL	LCDDAT2
			SPLK	#0C0H,LCDCOM
			CALL	LCDPR11
			ADD		#2
			SACL	LCDDAT2
			CALL	LCDPR11
			LACL	#0
			ADD		LCDTEMP1
			ADD		#1000H
			SACL	LCDTEMP1
			AND		#0FFH
			SACL	LCDDAT1
			LACL	LCDTEMP1
			AND		#0FFH,8
			CLRC	SXM
			RPT		#7
			SFR
			SACL	LCDDAT2
			SPLK	#24H,LCDCOM
			CALL	LCDPR1
			RET
			
************************************************************
;文本方式下写西文子程序
;输入:LCD_O_Y,LCD_O_X,LCD_CODE

LCDWRI_C:	LT		LCD_O_Y
			SPLK    #1EH,LCDTEMP4
			MPYU	LCDTEMP4
			SPM		0
			PAC
			ADD		LCD_O_X
			SACL	LCDTEMP1
			AND		#0FFH
			SACL	LCDDAT1
			LACL	LCDTEMP1
			AND		#0FFH,8
			CLRC	SXM
			RPT		#7
			SFR
			SACL	LCDDAT2
			SPLK	#24H,LCDCOM
			CALL	LCDPR1
			LACL	LCDDAT2
			SACL	LCDTEMP1
			LACL	LCD_CODE
			SACL	LCDDAT2
			SPLK	#0C4H,LCDCOM
			CALL	LCDPR11
					
************************************************************
;液晶屏写指令和写数据子程序
;输入:LCDDAT1,LCDDAT2,LCDCOM

LCDPR1:		CALL	LCDST01        
			OUT		LCDDAT1,0000H  
LCDPR11:	CALL	LCDST01
			OUT		LCDDAT2,0000H
LCDPR12:	CALL	LCDST01
			OUT		LCDCOM,0001H
			RET
			
************************************************************
;液晶屏读数据子程序
;output:LCDDAT2

LCDPR2:		CALL	LCDST01
			IN		LCDDAT2,0000H
			RET
			
************************************************************
;液晶屏判断读写指令/数据状态位子程序

LCDST01:   IN		LCD_STA,0001H 
           	BIT		LCD_STA,15
			BCND	LCDST01,NTC
			BIT		LCD_STA,14
			BCND	LCDST01,NTC
			RET
			
************************************************************
;液晶屏判断数据自动读状态子程序

LCDST02:	IN		LCD_STA,0001H
			BIT		LCD_STA,13
			BCND	LCDST02,NTC
			RET
			
************************************************************
;液晶屏判断数据自动写状态子程序

LCDST03:	IN		LCD_STA,0001H
			BIT		LCD_STA,12
			BCND	LCDST03,NTC
			RET
			
************************************************************
;液晶屏判断屏读/屏拷状态位子程序

LCDST06:	IN		LCD_STA,0001H
			BIT		LCD_STA,9
			BCND	LCDST06,NTC
			RET              

⌨️ 快捷键说明

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