液晶显示模块应用系统Word格式文档下载.docx

上传人:b****6 文档编号:17603210 上传时间:2022-12-07 格式:DOCX 页数:33 大小:112.84KB
下载 相关 举报
液晶显示模块应用系统Word格式文档下载.docx_第1页
第1页 / 共33页
液晶显示模块应用系统Word格式文档下载.docx_第2页
第2页 / 共33页
液晶显示模块应用系统Word格式文档下载.docx_第3页
第3页 / 共33页
液晶显示模块应用系统Word格式文档下载.docx_第4页
第4页 / 共33页
液晶显示模块应用系统Word格式文档下载.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

液晶显示模块应用系统Word格式文档下载.docx

《液晶显示模块应用系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《液晶显示模块应用系统Word格式文档下载.docx(33页珍藏版)》请在冰豆网上搜索。

液晶显示模块应用系统Word格式文档下载.docx

读写数据指令每执行完一次读写操作,列地址就自动加一。

必须注意的是,进行读操作之前,必须有一次空读操作,紧接着再读才会读出所要读的单元中的数据。

八、程序原理图设计:

HD61202共有20个引脚。

/CSA,/CSB分别为芯片片选端低电平有效。

E为读写使能端其在下降沿时,数据被锁存即写入HD61202;

高电平期间,数据被读出。

R/W为读写选择信号端,当R/W=1时为读选通,当R/W=0时为写选通。

D/I为数据,指令选择信号端,当D/I=1时为数据操作,D/I=0时为写指令或读状态。

RST为复位端。

DB0~DB7为数据总线。

GXM—12864液晶显示的明暗度是可调节的,主要是通过调节连接在LEDK,VEE.V0上的电位器连入电路的电阻就可以了。

另外还有电源和接地端。

其和单片机的连接如下图所示:

九、系统流程图:

本系统采用模块化设计。

GXM—12864共64行,分为8页每页又包含8行,在编程过程当中汉字采用16*16的点阵符,英文采用8*8点阵。

因此,每个汉字占2页用寄存器R0设置其值。

本程序先给程序初始化再清显示RAM区,为了使程序结构简单化,在汉字库对输入的汉字生成的点阵ASM数据前添加三个数据,其分别为显示起始页显示起始列所写入的汉字的长度。

用查表指针取得相应的数据,并把它放在寄存器中保存起来。

为了便于区别还设置了一个当前的列寄存器,以实现字符的左移,右移。

设置了一个行寄存器,通过加减其值实现上下移动。

本程序通过查表取得相应字符的点阵ASM数据,并根据这个数据确定查表指针应该指向哪个表确定表的地址。

从显示起始列寄存器取得起始列的值,由这个值判断它在哪个区,如果它小于#40H则在左区,如果它大于#40H小于80H则在右区,大于80H则转为左区。

通过定时器定时,控制字符移动的速度。

由于GXM—12864共128列,64行,所以显示区一次一行只能写8个汉字。

在给每个区写数据和指令代码时,首先要判断状态字的标志位是否“忙”。

如果不忙则继续写指令代码或显示数据,反之,则继续读状态字。

为了避免出现从复,还设置了完成标志位,通过判断标志位是否为“0”来确定其是否已经写完了。

其具体流程图如下:

主程序流程图:

清显示RAM区

设置列地址间接寄存器

COLADD#0

设置完成标志位

查表取数据

指针指向字符表并设置字高

判完成标志位是否为0

写各区的代码

进入另一页

判是否在左区?

判是否在右区?

(2)

 

N

Y

YN

写代码直到字符长度和页数均为0

判是否为表的最后一个数?

据?

指针指向下一个表

取数据给各区写代码把字符长度放在计数器中

指向另1字符数据表

实现左移

设置定时长度定时

26H=?

END

取字符长度值指针入堆栈

指针指向西文字符表

确定字符表地址

取字符表数据和列地址值

是否在右区?

Y

(1)

(1)

Y

(4)

Y

(2)

Y

(3)

字符长度是否为0

返回到“实现左移”

返回到(4)

(3)

十、程序如下:

ORG0000H

COMEQU20H

COLUMNEQU21H

MODLEEQU22H

DATEQU23H

COLADDEQU24H

START_LINEEQU25H

COUNTEQUR5

CWADD2EQU0800H

CRADD2EQU0A00H

DWADD2EQU0900H

DRADD2EQU0B00H

CWADD3EQU0400H

CRADD3EQU0600H

DWADD3EQU0500H

DRADD3EQU0700H

;

/////////////////////主程序

MAIN:

MOVSP,#40H

LCALLINT;

///////////调初始化子程序

LCALLCLEAR;

///////////调清显示RAM区子程序

MOVCOLADD,#0

OOO0:

MOVDPTR,#CHAR

LCALLZHONGWEN

MOVDPTR,#TABLE

LCALLDISPLAY

DECCOLADD

MOV27H,#20

LCALLAAL

SJMPOOO0

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

MOVE_R:

INCCOLADD

MOV27H,#100

DJNZR1,MOVE_R

RET

MOVE_L:

DECCOLADD

DJNZR1,MOVE_L

MOVE_UP:

INCSTART_LINE

MOVA,START_LINE

MOVCOM,A

LCALLLI

LCALLRIT

MOV27H,#250

LCALLAAL

CJNEA,#0FFH,HH

HH:

JCMOVE_UP

RET

MOVE_DOWN:

DECSTART_LINE

CJNEA,#0C0H,HHF

HHF:

JNCMOVE_DOWN

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

MOVE_WEN:

MOV27H,#50

LCALLINT

MOVDPTR,#CHAR

LCALLZHONGWEN

DJNZR1,MOVE_WEN

/////////////////////WEST_DISPLAY

DISPLAY1:

INCDPTR

DISPLAY:

CLRA;

WRITE_PAGE

MOVCA,@A+DPTR

ORLA,#0B8H

MOVCOM,A

LCALLLI

LCALLRIT

////////////////////////////写起始页

CLRA;

FIND_COLUMN&

INCDPTR

ADDA,COLADD

MOVCOLUMN,A

///////////////////////////写起始列

FIND_MODLE

MOVMODLE,A

//////////////////////////写字符总长

QQ:

MOVCOUNT,MODLE

CLRA

CJNEA,#0FFH,PART1

PART1:

JNCGIVE_UP

CJNEA,#0FEH,PART2

PART2:

JNCDISPLAY1;

NEXTLINE

NEXT:

MOVB,MODLE

PUSHDPL

PUSHDPH

MOVDPTR,#TAB

MULAB

ADDA,DPL;

//////////字符字模块首地址

MOVDPL,A

MOVA,B

ADDCA,DPH

MOVDPH,A

UU:

MOVDAT,A

MOVA,COLUMN;

/////////判断列地址是否超出区域范围

CJNEA,#40H,AA

AA:

JNCBB;

/////////未超出则继续

ORLA,#40H

LCALLLD

SJMPKK

BB:

MOVA,COLUMN;

////////超出则判在何区域

CJNEA,#80H,CC

CC:

JNCKK

CLRC

SUBBA,#40H

LCALLRD

KK:

INCCOLUMN

DJNZCOUNT,UU

POPDPH

POPDPL

SJMPQQ

GIVE_UPL:

POPDPH

POPDPL

GIVE_UP:

RET

//////////////////////////////CHARACTERDISPLAY

ZHONGWEN:

MOVR0,#2;

/////////字的高度

CLRPSW.5

XXL:

PUSHDPH

PUSHDPL

XX:

POPDPH

CLRA

MOVCA,@A+DPTR

JNBPSW.5,ZZ;

/////////判完成标志位是否为“1”

DECA

ZZ:

ORLA,#0B8H

INCDPTR

ADDA,COLADD

MOVCOLUMN,A

MOVR7,A;

/////////总字符长

JBPSW.5,AGAINE

SJMPAGAIN

AGAINE:

INCDPTR

AGAIN:

CLRA

MOVA,COLUMN;

///////判列地址是否超出区域范围

CJNEA,#40H,D1

D1:

JNCD2

ORLA,#40H;

//////未超出则继续

SJMPOLE

D2:

CJNEA,#80H,D3;

/////超出则判在何区域

D3:

JNCOLE

OLE:

INCCOLUMN

DJNZR7,AGAINE

SETBPSW.5;

/////设置完成标志位

DJNZR0,XX

CJNEA,#0FFH,W1

W1:

JNCWANGLE

MOVR0,#2

CLRPSW.5

SJMPXXL

WANGLE:

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

LEFT_INSTRUTION&

DATA

LI:

PUSHDPL;

/////////片选左区

MOVDPTR,#CRADD3;

/////////设置读状态字地址

LII:

MOVXA,@DPTR;

/////////读状态字

JBACC.7,LII;

//////////判“忙”标志为“0”否,否再读

MOVDPTR,#CWADD3;

//////////设置写指令代码地址

MOVA,COM;

//////////取指令代码

MOVX@DPTR,A;

///////////写指令代码

LD:

PUSHDPH

LDD:

JBACC.7,LDD;

MOVDPTR,#DWADD3;

//////////设置写显示数据地址

MOVA,DAT;

////////取数据

//////////写数据

///////////////////////RIGHT_INSTRUTION&

RIT:

/////////片选右区

MOVDPTR,#CRADD2;

RII:

JBACC.7,RII;

MOVDPTR,#CWADD2;

RD:

RDD:

JBACC.7,RDD;

MOVDPTR,#DWADD2;

/////////////////////////ON_TIME

AAL:

MOVTH0,#0DCH

MOVTL0,#0

SETBTR0

CLRTF0

JNBTF0,$

DJNZ27H,AAL

CLRTR0

///////////////////////初始化程序

INT:

MOVCOM,#0C0H;

/////////////设置显示起始行

MOVSTART_LINE,COM

MOVCOM,#3FH;

////////////开显示设置

//////////////////////清显示RAM区程序

CLEAR:

MOVR4,#00H;

/////////////////页面地址暂存器设置

CLEAR1:

MOVA,R4

MOVCOM,A;

////////////////页面地址设置

MOVCOM,#40H;

///////////////列地址设置为“0”

MOVR3,#40H;

///////////////一页清64各字节

CLEAR2:

MOVDAT,#00H;

////////////////显示数据为“0”

DJNZR3,CLEAR2;

///////////////页内字节清零循环

INCR4

CJNER4,#08H,CLEAR1;

/////////RAM区清零循环

RET

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

TABLE:

DB7,0,8,37H,25H,2CH,23H,2FH,2DH,25H,00H;

PAGE,COLUMN_START,MODLE,DATA

DB34H,2FH,00H,2FH,35H,32H,00H,33H,23H

DB28H,2FH,2FH,2CH,01H,0FFH

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

TAB:

DB000H,000H,000H,000H,000H,000H,000H,000H;

空格=00H

DB000H,000H,000H,04FH,000H,000H,000H,000H;

!

=01H

DB000H,000H,007H,000H,007H,000H,000H,000H;

"

=02H

DB000H,014H,07FH,014H,07FH,014H,000H,000H;

#=03H

DB000H,024H,02AH,07FH,02AH,012H,000H,000H;

$=04H

DB000H,023H,013H,008H,064H,062H,000H,000H;

%=05H

DB000H,036H,049H,055H,022H,050H,000H,000H;

&

=06H

DB000H,000H,005H,003H,000H,000H,000H,000H;

'

=07J

DB000H,000H,01CH,022H,041H,000H,000H,000H;

(=08H

DB000H,000H,041H,022H,01CH,000H,000H,000H;

)=09H

DB000H,014H,008H,03EH,008H,014H,000H,000H;

*=0AH

DB000H,008H,008H,03EH,008H,008H,000H,000H;

+=0BH

DB000H,000H,050H,030H,000H,000H,000H,000H;

;

=0CH

DB000H,008H,008H,008H,008H,008H,000H,000H;

-=0DH

DB000H,000H,060H,060H,000H,000H,000H,000H;

.=0EH

DB000H,020H,010H,008H,004H,002H,000H,000H;

/=0FH

DB000H,03EH,051H,049H,045H,03EH,000H,000H;

0=10H

DB000H,000H,042H,07FH,040H,000H,000H,000H;

1=11H

DB000H,042H,061H,051H,049H,046H,000H,000H;

2=12H

DB000H,021H,041H,045H,04BH,031H,000H,000H;

3=13H

DB000H,018H,014H,012H,07FH,010H,000H,000H;

4=14H

DB000H,027H,045H,045H,045H,039H,000H,000H;

5=15H

DB000H,03CH,04AH,049H,049H,030H,000H,000H;

6=16H

DB000H,001H,001H,079H,005H,003H,000H,000H;

7=17H

DB000H,036H,049H,049H,049H,036H,000H,000H;

8=18H

DB000H,006H,049H,049H,029H,01EH,000H,000H;

9=19H

DB000H,000H,036H,036H,000H,000H,000H,000H;

:

=1AH

DB000H,000H,056H,036H,000H,000H,000H,000H;

=1BH

DB000H,008H,014H,022H,041H,000H,000H,000H;

<

=1CH

DB000H,014H,014H,014H,014H,014H,000H,000H;

==1DH

DB000H,000H,041H,022H,014H,008H,000H,000H;

>

=1EH

DB000H,002H,001H,051H,009H,006H,000H,000H;

?

=1FH

DB000H,032H,049H,079H,041H,03EH,000H,000H;

@=20H

DB000H,07EH,011H,011H,011H,07EH,000H,000H;

A=21H

DB000H,041H,07FH,049H,049H,036H,000H,000H;

B=22H

DB000H,03EH,041H,041H,041H,022H,000H,000H;

C=23H

DB000H,041H,07FH,041H,041H,03EH,000H,000H;

D=24H

DB000H,07FH,049H,049H,049H,049H,000H,000H;

E=25H

DB000H,07FH,009H,009H,009H,001H,000H,000H;

F=26H

DB000H,03EH,041H,041H,04

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 法语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1