AT89S52并口驱动LCD12864(ST7920芯片组)

电子元件 4年前 (2022) aysz01
0

 

 

1.8-bit并口程序

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

;AT89S52与LCD12864接口实验

;LCD12864控制器为ST7920芯片组

;用12846显示汉字

;RS-P2.4,R/W-P2.5,E-P2.6

;/RET-P2.3,PSB-P2.1,P0-DB0~DB7

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

RS EQU P2.4

RW EQU P2.5

E EQU P2.6

LDB EQU P0

LRET EQU P2.3

PSB EQU P2.1

COM EQU 40H;写入指令暂存器

DAT EQU 41H;显示数据暂存器

ADDR EQU 42H;显示地址寄存器

ORG 0000H

SJMP START

ORG 0030H

;主程序

START:MOV SP,50H

MOV P2,#10000111B

LCALL DEL40 ;

SETB LRET

LCALL RESET;LCD12864初始化

MOV ADDR,#80H;显示第一页数据

MOV DPTR,#DISA1

LCALL LINE

MOV ADDR,#90H

MOV DPTR,#DISA2

LCALL LINE

MOV ADDR,#88H

MOV DPTR,#DISA3

LCALL LINE

MOV ADDR,#98H

MOV DPTR,#DISA4

LCALL LINE

LCALL DEL2S

MOV ADDR,#80H;显示第二页数据

MOV DPTR,#DISA5

LCALL LINE

MOV ADDR,#90H

MOV DPTR,#DISA6

LCALL LINE

MOV ADDR,#88H

MOV DPTR,#DISA7

LCALL LINE

MOV ADDR,#98H

MOV DPTR,#DISA8

LCALL LINE

LCALL DEL2S

MOV ADDR,#80H;显示第三页数据

MOV DPTR,#DISB1

LCALL LINE

MOV ADDR,#90H

MOV DPTR,#DISB2

LCALL LINE

MOV ADDR,#88H

MOV DPTR,#DISB3

LCALL LINE

MOV ADDR,#98H

MOV DPTR,#DISB4

LCALL LINE

LCALL DEL2S

MOV ADDR,#80H;显示第四页数据

MOV DPTR,#DISB5

LCALL LINE

MOV ADDR,#90H

MOV DPTR,#DISB6

LCALL LINE

MOV ADDR,#88H

MOV DPTR,#DISB7

LCALL LINE

MOV ADDR,#98H

MOV DPTR,#DISB8

LCALL LINE

LCALL DEL2S

LJMP START

;函数WCOM 写LCD指令

WCOM: CLR RS

SETB RW

D2:MOV LDB,#0FFH

SETB E

MOV A,LDB

CLR E

JB ACC.7,D2

CLR RW

MOV A,COM

MOV LDB,A

SETB E

NOP

CLR E

RET

;函数WDAT 写显示数据

WDAT: CLR RS

SETB RW

D3:MOV LDB,#0FFH

SETB E

MOV A,LDB

CLR E

JB ACC.7,D3

SETB RS

CLR RW

MOV A,DAT

MOV LDB,A

SETB E

NOP

CLR E

RET

;函数RESET LCD初始化程序

RESET:MOV COM,#00110000B;设置基本指令

LCALL WCOM

MOV COM,#00110000B;设置8bit并口

LCALL WCOM

MOV COM,#00001100B;开显示,关光标,关反白

LCALL WCOM

MOV COM,#00000001B;清屏,AC=0

LCALL WCOM

MOV COM,#00000110B;进入点设定

LCALL WCOM

RET

;函数LINE 写入一行的显示数据

LINE: MOV A,ADDR

MOV COM,A

LCALL WCOM

MOV R0,#10H

MOV R1,#00H

D1:MOV A,R1

MOVC A,@A+DPTR

MOV DAT,A

LCALL WDAT

INC R1

DJNZ R0,D1

RET

;函数DEL40 40MS延时D

DEL40:MOV R3,#10

E2:MOV R4,#100

E1:NOP

NOP

DJNZ R4,E1

DJNZ R3,E2

RET

;函数DEL2S 2S延时

DEL2S:MOV R2,#03

E5:MOV R5,#100

E4:MOV R6,#20

E3:MOV R7,#248

DJNZ R7,$

DJNZ R6,E3

DJNZ R5,E4

DJNZ R2,E5

RET

;显示内容区

DISA1:DB

DISA2:DB

DISA3:DB " 13210813637 "

DISA4:DB "128*64全点阵显示"

DISA5:DB "图形以及字符显示"

DISA6:DB "2009年 7月 29 日"

DISA7:DB "设计者:赵玉庆 "

DISA8:DB "AT89C52 与ST7920"

DISB1:DB "昨夜星辰昨夜风,"

DISB2:DB "画楼西畔桂堂东。"

DISB3:DB "身无彩凤双飞翼,"

DISB4:DB "心有灵犀一点通。"

DISB5:DB "隔座送钩春酒暖,"

DISB6:DB "分曹射覆蜡灯红。"

DISB7:DB "嗟余听鼓应官去,"

DISB8:DB "走马兰台类转蓬。"

END

版权声明:aysz01 发表于 2022-08-06 10:11:23。
转载请注明:AT89S52并口驱动LCD12864(ST7920芯片组) | 鳌游电工

暂无评论

暂无评论...