您的位置 首页 电源

AT89S52与LCD1602(asm/c51)

LCD1602DDRAM地址映射表:第一行地址80H第二行地址C0H单片机与LCD1602接口;///////////////////////////////////////////////项目名称:

LCD1602 DDRAM地址映射表:

榜首行地址80H

第二行地址C0H

单片机与LCD1602接口

;///////////////////////////////////////////////
项目名称:AT89S52与LCD1602接口试验
功用:在LCD1602的榜首行显现WWW.LZY.EDU.CN:
在LCD1602的第二行显现0830–3150897
;///////////////////////////////////////////////
RS EQUP2.4;P2.4接LCD的RS

RW EQUP2.5;P2.5接LCD的RW

E EQUP2.6;P2.6接LCD的E
DRIR EQUP0;P0口接LCD的DB0-DB7
CWDK EQU 40H
DATK EQU 41H

ORG 0000H
SJMP START
ORG 0030H
;主程序
START:MOV SP,#80H
LCALL RESTE
LCALL TOPDA
LCALL BOTDA
SJMP $
;函数INCWD 指令写入程序
INCWD:CLR RS
CLR RW
MOV A,CWDK
MOV DRIR,A
SETB E
NOP
NOP
CLR E
LCALL DELAY
RET
;函数INDAT显现数据写入程序
INDAT:SETB RS
CLR RW
MOV A,DATK
MOV DRIR,A
SETB E
NOP
NOP
CLR E
LCALL DELAY
RET
;函数RESTELCD1602初始化程序
RESTE:MOV CWDK,#00111000B;工作方法 8位数据接口,二行显现,5*7点阵
LCALL INCWD
MOV CWDK,#00000001B;AC清0 光标复位
LCALL INCWD
MOV CWDK,#00001111B;开显现 开光标 开闪耀
LCALL INCWD
MOVCWDK,#00011100B;屏幕不动光标主动右移
LCALL INCWD
RET
;函数TOPDA LCD1602榜首行显现程序
TOPDA:MOV CWDK,#80H
LCALL INCWD
MOV R2,#10H
MOV R3,#00H
MOV DPTR,#TABL1
D1:MOV A,R3
MOVC A,@A+DPTR
MOV DATK,A
LCALL INDAT
LCALL DEL1S
INC R3
DJNZ R2,D1
RET
;函数BOTDA LCD1602第二行显现程序
BOTDA:MOV CWDK,#0C0H
LCALL INCWD
MOV R2,#10H
MOV R3,#00H
MOV DPTR,#TABL2
D2:MOV A,R3
MOVC A,@A+DPTR
MOV DATK,A
LCALL INDAT
LCALL DEL1S
INC R3
DJNZR2,D2
RET
;函数DELAY 480us延时
DELAY:MOV R1,#0A0H
E1:NOP
DJNZ R1,E1
RET
;函数DEL1S 1S延时
DEL1S:MOV R5,#20
E2:MOV R6,#20
E3:MOV R7,#248
DJNZ R7,$
DJNZ R6,E3
DJNZ R5,E2
RET

TABL1:DB “WWW.LZY.EDU.CN”
TABL2:DB ” 0830—3150897 “
END

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

付带闪耀光标的LCD1602字符显现

;///////////////////////////////////////////////////

;AT89S52与LCD1602接口

;意图:1602榜首行显现:WWW.SINA.COM.CN

;第二行显现:Visual Basic net

;//////////////////////////////////////////////////

RS EQU P2.4

RW EQU P2.5

EEQU P2.6

LDB EQU P0

DAT DATA 40H

COM DATA 41H

ORG 0000H

SJMP START

ORG 0030H

;主程序

START:MOV SP,#50H

LCALL DEL40;1602复位延时

LCALL LRET;LCD1602初始化

LCALL TOPD;显现榜首行

LCALL BOMD;显现第二行

LJMP START

;函数BUSY忙标志检测

BUSY: CLR RS

SETB RW

E1:MOV LDB,#0FFH

SETB E

MOV A,LDB

CLR E

JB ACC.7,E1

RET

;函数WCOM LCD1602指令写入子程序

WCOM: LCALL BUSY

CLR RS

CLR RW

MOV A,COM

MOV LDB,A

SETB E

NOP

CLR E

RET

;函数WDAT LCD1602显现数据写入子程序

WDAT: LCALL BUSY

SETB RS

CLR RW

MOV A,DAT

MOV LDB,DAT

SETB E

NOP

CLR E

RET

;函数LRET LCD1602初始化子程序

LRET: MOV COM,#00000001B;清屏

LCALL WCOM

MOV COM,#00111000B;功用设定8bit数据接口,两行显现,5*7点阵

LCALL WCOM

MOV COM,#00000110B;输入方法设定AC加一,画面不动

LCALL WCOM

MOV COM,#00001111B;开显现,开光标,开闪耀

LCALL WCOM

MOV COM,#00000010B;光标复位

LCALL WCOM

MOV COM,#00010100B;光标右移

LCALL WCOM

RET

;函数TOPD LCD1602榜首行显现子程序

TOPD: MOV COM,#80H

LCALL WCOM

MOV DPTR,#TAB1

MOV R3,#10H

MOV R4,#00H

E2:MOV A,R4

MOVC A,@A+DPTR

MOV DAT,A

LCALL WDAT

LCALL DEL05

INC R4

DJNZ R3,E2

RET

;函数BOMD LCD1602第二行显现子程序

BOMD: MOV COM,#0C0H

LCALL WCOM

MOV DPTR,#TAB2

MOV R3,#10H

MOV R4,#00H

E3:MOV A,R4

MOVC A,@A+DPTR

MOV DAT,A

LCALL WDAT

LCALL DEL05

INC R4

DJNZ R3,E3

RET

;函数DEL40 40MS延时

DEL40:MOV R0,#160

D1:MOV R1,#250

DJNZ R1,$

DJNZ R0,D1

RET

;函数DEL05 0.5S延时

DEL05:MOV R5,#2

D3:MOV R0,#200

D2:MOV R1,#248

DJNZ R1,$

DJNZ R0,D2

DJNZ R5,D3

RET

;显现数据表

TAB1:DB ” WWW.SINA.COM.CN”

TAB2:DB “Visual Basic net”

END

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/276187.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部