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

📄 ex9-10.asm

📁 《单片机原理实用教程——基于Proteus虚拟仿真》一书的配套光盘
💻 ASM
字号:
COM EQU 50H ; LCD指令寄存器
DAT EQU 51H ; LCD数据寄存器

RS EQU P2.1 ; LCD寄存器选择信号
RW EQU P2.2 ; LCD读/写选择信号
E EQU P2.3  ; LCD使能信号

        ORG 0000H
        LJMP MAIN       ;主程序入口
        ORG 0030H       ;主程序
MAIN:	  
        MOV SP,#60H     ;主程序
        LCALL INT       ;调LCD间接控制方式下的初始化子程序
		MOV COM,#01H  ;LCd清0命令
   		LCALL PR1     ;调写指令代码子程序
   		MOV COM,#06H  ;输入方式命令,光标右移
   		LCALL PR1     ;调写指令代码子程序
   		MOV COM,#080H ;设置DDRAM地址
   		LCALL PR1     ;调写指令代码子程序
   		MOV DPTR,#TAB ;DPTR指向显示字符表首地址
   		MOV R2,#10H	  ;共显示16字符
   		MOV R3,#00H
WRIN:	MOV A,R3
   		MOVC A,@A+DPTR ;取出显示字符
   		MOV DAT,A
   		LCALL PR2     ;调写显示数据子程序
   		INC R3
   		DJNZ R2,WRIN 
		SJMP $         
TAB: 	DB "Hello Everybody!";


;LCD 间接控制方式下的初始化子程序
INT: 	LCALL DELAY ; 调延时子程序
		MOV P0,#38H ; 工作方式设置指令代码
		CLR RS      ; RS=0
		CLR RW      ; R/W=0
		MOV R2,#03  ; 循环量=3
INTT1: 	SETB E ; E=1
		CLR E         ; E=0
		DJNZ R2,INTT1
		MOV P0,#38H ; 设置工作方式*
		SETB E      ; E=1
		CLR E       ; E=0
		MOV COM,#38H ; 设置工作方式 
		LCALL PR1
		MOV COM,#01H ; 清屏
		LCALL PR1
		MOV COM,#06H ; 设置输入方式
		LCALL PR1
		MOV COM,#0EH ; 设置显示方式
		LCALL PR1
		RET

DELAY:	MOV R6,#0FH ; 延时子程序
DELAY2:	MOV R7,#10H
DELAY1: NOP
		DJNZ R7,DELAY1
		DJNZ R6,DELAY2
		RET
 
;LCD 间接控制方式的驱动子程序如下

;1 读BF和AC值
PR0: 	PUSH ACC
	    MOV P0,#0FFH ; P0置位, 准备读
	    CLR RS       ; RS=0
	    SETB RW      ; R/W=1
	    SETB E       ; E=1
	    LCALL DELAY
	    MOV COM,P0   ; 读BF和AC6-4值
	    CLR E        ; E=0
	    POP ACC
	    RET

;2 写指令代码子程序
PR1: 	PUSH ACC
	    CLR RS    ; RS=0
	    SETB RW   ; R/W=1
PR11:	MOV P0,#0FFH; P0置位, 准备读
	    SETB E    ; E=1
	    LCALL DELAY
	    NOP
	    MOV A,P0
	    CLR E
	    JB ACC.7,PR11;BF=1?
	    CLR RW    ; R/W=0
	    MOV P0,COM
	    SETB E    ; E=1
	    CLR E     ; E=0; E=0
	    POP ACC
	    RET

;3 写显示数据子程序
PR2:	PUSH ACC
    	CLR RS    ; RS=0
    	SETB RW   ; R/W=1
PR21:	MOV P0,#0FFH
    	SETB E    ; E=1
    	LCALL DELAY
    	MOV A,P0  ; 读BF和AC6-4值
    	CLR E     ; E=0
    	JB ACC.7,PR21
    	SETB RS
    	CLR RW
    	MOV P0,DAT; 写入数据高4位
    	SETB E    ; RS=1  
    	CLR E     ; R/W=0
    	POP ACC
    	RET

;4 读显示数据子程序
PR3:	PUSH ACC
    	CLR RS    ; RS=0
    	SETB RW   ; R/W=1
PR31:	MOV P0,#0FFH ; P0置位, 准备读
    	SETB E    ; E=1
    	LCALL DELAY
    	MOV A,P0  ; 读BF和AC6-4值
    	CLR E     ; E=0
    	JB ACC.7,PR31
    	SETB RS   ; E=1
    	SETB RW   ; R/W=1
    	MOV P0,#0FFH ; 读数据
    	SETB E    ; E=1
    	MOV DAT,P0 
    	CLR E     ; E=0
    	POP ACC
    	RET
    END

⌨️ 快捷键说明

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