📄 lcd.asm
字号:
;*****************************************************************************************
; MCS8051-III学习板演示程序
;
; (c) Copyright 2007-2007,广州恒芯电子
; All Rights Reserved
;*****************************************************************************************
;*****************************************************************************************
;程序说明
;*****************************************************************************************
;名称: MCS8051-III学习板演示程序(LCD演示内容)
;功能: 在LCD上显示内容
;版本:2007-07-01
;*****************************************************************************************
;硬件说明
;*****************************************************************************************
;单片机: 兼容MCS-51单片机/STC89C51
;晶振频率: 12MHz
;*****************************************************************************************
;说明:程序预定义
;*****************************************************************************************
LCD_DATA EQU P0 ;LCD数据引脚
LCD_RW EQU P3.5 ;LCD读写引脚(0:读数据,1:写数据)
LCD_E EQU P3.6 ;LCD使能引脚
LCD_A0 EQU P3.4 ;LCD数据/指令引脚(0:指令,1:数据)
;*****************************************************************************************
;说明:程序开始
;*****************************************************************************************
ORG 0000H ;程序首地址 PC=0000H
JMP START ;程序跳转至START PC=0030H
ORG 0030H ;程序开始
START:
CALL DELAY ;LCD延时
MOV A, #030H ;配置LCD参数
CALL LCD_WRITE_ORDER
MOV A, #004H
CALL LCD_WRITE_ORDER
MOV A, #00CH
CALL LCD_WRITE_ORDER
MOV A, #001H
CALL LCD_WRITE_ORDER
MOV A, #002H
CALL LCD_WRITE_ORDER
MOV A, #080H ;光标定位到第一行左边第一个字节
CALL LCD_WRITE_ORDER
MOV DPTR, #LCDTAB1 ;写数据
MOV A, #0
MOV R6, A
L1:
MOVC A, @A+DPTR
CALL LCD_WRITE_DATA
MOV A, R6
INC A
MOV R6, A
CJNE A, #14, L1
MOV A, #090H ;光标定位到第二行左边第一个字节
CALL LCD_WRITE_ORDER
MOV DPTR, #LCDTAB2 ;写数据
MOV A, #0
MOV R6, A
L2:
MOVC A, @A+DPTR
CALL LCD_WRITE_DATA
MOV A, R6
INC A
MOV R6, A
CJNE A, #13, L2
JMP $ ;程序等待
;*****************************************************************************************
;函数:LCD_WRITE_DATA
;说明:LCD写数据
;参数: 无
;返回: 无
;*****************************************************************************************
LCD_WRITE_DATA:
SETB LCD_E
SETB LCD_A0
CLR LCD_RW
MOV LCD_DATA, A
CLR LCD_E
CALL DELAY
RET
;*****************************************************************************************
;函数:LCD_WRITE_ORDER
;说明:LCD写数据
;参数: 无
;返回: 无
;*****************************************************************************************
LCD_WRITE_ORDER:
SETB LCD_E
CLR LCD_A0
CLR LCD_RW
MOV LCD_DATA, A
CLR LCD_E
CALL DELAY
RET
;*****************************************************************************************
;函数:DELAY
;说明:程序延时
;参数: 无
;返回: 无
;*****************************************************************************************
DELAY:
MOV R7, #0FFH
DELAY_1:
DJNZ R7, DELAY_1
RET
;*****************************************************************************************
;说明:LCD数据显示表
;*****************************************************************************************
LCDTAB1:
DB "MCU8051 学习板"
LCDTAB2:
DB "LCD 演示程序"
;*****************************************************************************************
;说明:程序结束
;*****************************************************************************************
END ;程序结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -