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

📄 wl009.asm

📁 此程序为单片机开发中的lcd 液晶演示 程序
💻 ASM
字号:
;********************************************************************************
;*  标题:  伟纳电子ME300B单片机开发系统演示程序 - 1602LCD显示演示程序           *
;*  文件:  wl009.asm                                                            *
;*  日期:  2005-1-20                                                             *
;*  版本:  1.0                                                                  *
;*  作者:  伟纳电子 - Freeman                                                   *
;*  邮箱:  freeman@willar.com                                                   *
;*  网站: http://www.willar.com                                                *
;********************************************************************************
;*  描述:                                                                       *
;*         1602字符型LCD显示演示程序                                            *
;*         在第一行显示     welcome                                             *
;*         在第二行显示  www.willar.com                                         *
;*                                                                              *
;*                                                                              *
;********************************************************************************
;* 【版权】 Copyright(C)伟纳电子 www.willar.com  All Rights Reserved            *
;* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                  *
;********************************************************************************


; 端口定义
RS	EQU	P2.0
RW	EQU	P2.1
EP	EQU	P2.2

	ORG	0000H
	LJMP	MAIN


MAIN:
	LCALL	LCD_INIT		; 初始化LCD
	MOV	A,#15
	LCALL	DELAY_MS		;

MAIN_LOOP:	
;  在第一行显示字符串"welcome!"
	MOV	A,#4
	LCALL	SET_LCD_POS		; 设置LCD光标到第一行的第5个字符
	
	MOV	DPTR,#TAB_WELCOME	; "welcome!"字串表格地址
	LCALL	DISPLAY_STRING		; 显示字符串
; 在第二行显示字符串"www.willar.com"	
	MOV	A,#41H			; 
	LCALL	SET_LCD_POS		; 设置LCD光标到第二行第二个字符
	
	MOV	DPTR,#TAB_WILLAR
	LCALL	DISPLAY_STRING

; 闪烁显示内容	
	MOV	A,#200			; 
	LCALL	DELAY_MS		; 
	
	LCALL	LCD_TURN_OFF	
	MOV	A,#200			; 
	LCALL	DELAY_MS		; 
	
	LCALL	LCD_TURN_ON
	
	MOV	A,#200			; 
	LCALL	DELAY_MS		; 
	
	LCALL	LCD_TURN_OFF
		
	MOV	A,#200			; 
	LCALL	DELAY_MS		; 
	
	LCALL	LCD_TURN_ON
	
	MOV	A,#200			; 
	LCALL	DELAY_MS		; 
;清屏
	LCALL	LCD_CLEAR
	MOV	A,#1
	LCALL	DELAY_MS
; 重新显示	
	JMP	MAIN_LOOP	

;显示字符串函数
;传入参数:DPTR(字符串表格地址)
;返回值:无
DISPLAY_STRING:	
	CLR	A
	MOVC	A,@A+DPTR		; 
	JZ	END_DISPLAY_STRING	; 如果遇到00H表示表格结束
	LCALL	LCD_WRITE_DATA		; 写数据到LCD
	INC	DPTR			; 指向表格的下一字符
	MOV	A, #200			; 
	LCALL	DELAY_MS		; 
	SJMP	DISPLAY_STRING		; 循环直到字符串结束
END_DISPLAY_STRING:
	RET
	
	
; 初始化LCD
LCD_INIT:

; 设置显示格式---
	MOV	A,#38H			; 38H --- 16*2行显示,5*7点阵,8位数据接口
	LCALL	LCD_WRITE_COMMAND
	MOV	A,#1
	LCALL	DELAY_MS
;开显示
	LCALL	LCD_TURN_ON
;读写后指针加1
	MOV	A,#06H			; 06H --- 读写后指针加1
	LCALL	LCD_WRITE_COMMAND
	MOV	A,#1
	LCALL	DELAY_MS
; 清除LCD屏幕
	LCALL	LCD_CLEAR
	RET


;开显示
LCD_TURN_ON:
	MOV	A,#0CH			; 0CH --- 开显示,无光标
	LCALL	LCD_WRITE_COMMAND
	MOV	A,#1
	LCALL	DELAY_MS
	RET
	
; 关显示
LCD_TURN_OFF:
	MOV	A,#08H			; 08H --- 关显示
	LCALL	LCD_WRITE_COMMAND
	MOV	A,#1
	LCALL	DELAY_MS
	RET

; 清除LCD屏幕
LCD_CLEAR:
	MOV	A,#01H			; 01H清屏指令			
	LCALL	LCD_WRITE_COMMAND
	MOV	A,#1
	LCALL	DELAY_MS
	RET

;设置LCD当前光标的位置

SET_LCD_POS:
	ORL	A,#80H		; 
	LCALL	LCD_WRITE_COMMAND
	RET

; 写入控制指令到LCD
; 传入参数: ACC(要写入的命令)
; 返回值: 无
LCD_WRITE_COMMAND:
	LCALL	CHECK_LCD_BUSY
	CLR	RS
	CLR	RW
	CLR	EP
	NOP
	NOP
	MOV	P0,A			; 写入数据到LCD端口
	NOP
	NOP
	NOP
	NOP
	SETB	EP
	NOP
	NOP
	NOP
	NOP
	CLR	EP
	RET
	
; 写入显示数据到LCD
; 传入参数: ACC(要写入的数据)
; 返回值: 无
LCD_WRITE_DATA:
	LCALL	CHECK_LCD_BUSY
	SETB	RS
	CLR	RW
	CLR	EP
	NOP
	NOP
	MOV	P0,A			; 写入数据到LCD端口
	NOP
	NOP
	NOP
	NOP
	SETB	EP
	NOP
	NOP
	NOP
	NOP
	CLR	EP
	RET
	
CHECK_LCD_BUSY:
	CLR	RS
	SETB	RW
	SETB	EP
	NOP
	NOP
	NOP
	NOP
	MOV	C,P0.7			; 读取忙碌位
	NOP
	NOP
	CLR 	EP
	NOP
	NOP
	JC	CHECK_LCD_BUSY		; 等待LCD空闲(P0.7=0)
	
	RET


; 延时子程序
; 传入参数: ACC(延时时间,单位毫秒)
; 返回值: 无
DELAY_MS:
	MOV	R7,A
DELAY_LOOP1:
	MOV	R6,#0E8H
DELAY_LOOP2:
	NOP
	NOP
	DJNZ	R6,DELAY_LOOP2
	DJNZ	R7,DELAY_LOOP1
	RET
		

TAB_WILLAR:
	DB	"www.willar.com"
	DB	00			; 字符结束标志
	
TAB_WELCOME:
	DB	"welcome!"
	DB	00			; 字符结束标志

	END

⌨️ 快捷键说明

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