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

📄 1602book.asm

📁 16x2字符液晶调试程序
💻 ASM
字号:
 RS  EQU P1.1	                        ;RS和硬件的P1.1脚相连
 RW EQU P1.3	                        ;RW和硬件的P1.3脚相连
 E EQU P1.2		                ;E和硬件的P1.2脚相连
 XPOS EQU 41H				;行号
 YPOS EQU 42H				;列号

 ORG 0000H				;复位的地址,跳转到主程序。
 LJMP MAIN
 ORG 0030H				;主程序入口。
 MAIN:
          MOV SP,#5FH						
	  LCALL RSTLCD			;调用LCD初始化函数。 

	  MOV XPOS,#0D			;屏幕上显示的起始位置。
	  MOV YPOS,#0D 

	  LCALL STARTADDRESS             ;调用显示的其始地址。

            MOV DPTR,#TABLE
            MOV A,#0D
            MOV R1,#0
WRITESTRING:MOVC A,@A+DPTR        
	    CJNE R1,#16D,SHOW
	    SJMP $
SHOW:       LCALL BUSYCHECK
            LCALL WRITECHAR
            MOV A,#0D
	    INC DPTR
            INC R1
	    LCALL WRITESTRING
	    SJMP $
/*-----------------------------------------------------------------------------------------------------*/
STARTADDRESS:MOV A,XPOS		  ;此处的三个函数是求出显示字符的函数的屏幕位置。
	     ANL A,#0FH		  ;求出X轴的值。范围是0-15
	     MOV XPOS,A
	     MOV A,YPOS
	     ANL A,#01H		  ;求出行值。0或者1
	     MOV YPOS,A
	     CJNE A,#0D,LPSLAY      ;如果是第1行
	     MOV A,XPOS
	     JMP LPSLAX

LPSLAY:      MOV A,XPOS
             ADD A,#40H

LPSLAX:      ORL A,#80H		  ;利用逻辑或命令,和写命令结合起来。
             PUSH ACC
             LCALL BUSYCHECK       ;确定显示的其始地址。
	     POP ACC
             LCALL LCDWC        
             RET
/*-----------------------------------------------------------------------------------------------------*/		
/*------------------------------写指令-----------------------------------------------------------------*/
LCDWC:      MOV P0,A		         ;首先这是初始化的需要,不是真正的写入命令。命令写入P0口 
            CLR RS			 ;最好用查询函数。LCDWCN函数读取数据线上的命令。RS=0,说明数据线上传送的是命令。
            CLR RW			 ;RW=0,说明允许写入命令。
	    CLR E		         ;命令写入SPLC78,片选。
	    NOP		                 ;给点读取的时间。
	    SETB E			 ;取消片选。
	    RET
/*-----------------------------------------------------------------------------------------------------*/
/*--------------------------------------写数据---------------------------------------------------------*/
WRITECHAR:  MOV P0,A
            SETB RS
	    CLR  RW
	    CLR E
	    NOP
	    SETB E
	    RET
/*-----------------------------------------------------------------------------------------------------*/
/*------------------------------------LCD初始化--------------------------------------------------------*/	    
RSTLCD:     MOV R6,#15D           ;调用延时。上电延时15MS. 完全按照数据手册来写指令
            LCALL DELAY1MS				  
	    MOV A,#38H
	    LCALL LCDWC
	    MOV R6,#5D
            LCALL DELAY1MS
	    MOV A,#38H
	    LCALL LCDWC
	    MOV R6,#5D
            LCALL DELAY1MS            
            MOV A,#38H
	    LCALL LCDWC
	    MOV R6,#5D
            LCALL DELAY1MS      ;以上指令是写指令38H,但是不检测忙信号。
            ;命令写入的开始。
            LCALL BUSYCHECK      ;写指令前检测LCD的状态。
            MOV A,#38H				  ;功能设置。00111000B,说明数据总线的长度是8位。
	                                          ;N=1,说明行数是两行。F=0,说明
     				                  ;字符点阵是5*7

	    LCALL LCDWC				  ;调用函数写入命令。
            LCALL BUSYCHECK
	    MOV A,#0CH				  ;显示控制,显示OFF,光标OFF,闪烁OFF
	    LCALL LCDWC				  ;调用函数写入指令。
            LCALL BUSYCHECK
	    MOV A,#01H				  ;清屏指令。
	    LCALL LCDWC
            LCALL BUSYCHECK
	    MOV A,#06H				  ;
	    LCALL LCDWC				  ;调用函数写入指令。
            LCALL BUSYCHECK            
	    RET
/*-----------------------------------------------------------------------------------------------------*/
/*------------------------------------------延时子程序-------------------------------------------------*/
DELAY1MS:   
D1:         MOV R5,#2D				
D2:         MOV R4,#250                            ;延时函数。用R6控制延时的长短。
            DJNZ R4,$
	    DJNZ R5,D2
	    DJNZ R6,D1
	    RET
/*-----------------------------------------------------------------------------------------------------*/ 
/*-----------------------------------读LCD状态---------------------------------------------------------*/      
BUSYCHECK:MOV P0,#0FFH ;判断液晶显示器是否忙的子程序
          CLR RS 
          SETB RW           
          SETB E 
          JB P0.7,BUSYCHECK ;如果P1.7为高电平表示忙就循环等待 
          RET
/*-----------------------------------------------------------------------------------------------------*/
TABLE: DB  "  1602TESTAGAIN  "
END																														

⌨️ 快捷键说明

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