16X2字符型液晶显示模块Word格式文档下载.docx

上传人:b****5 文档编号:19888692 上传时间:2023-01-11 格式:DOCX 页数:10 大小:455.57KB
下载 相关 举报
16X2字符型液晶显示模块Word格式文档下载.docx_第1页
第1页 / 共10页
16X2字符型液晶显示模块Word格式文档下载.docx_第2页
第2页 / 共10页
16X2字符型液晶显示模块Word格式文档下载.docx_第3页
第3页 / 共10页
16X2字符型液晶显示模块Word格式文档下载.docx_第4页
第4页 / 共10页
16X2字符型液晶显示模块Word格式文档下载.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

16X2字符型液晶显示模块Word格式文档下载.docx

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

16X2字符型液晶显示模块Word格式文档下载.docx

(说明:

1为高电平、0为低电平)

指令1:

清显示,指令码01H,光标复位到地址00H位置

指令2:

光标复位,光标返回到地址00H

指令3:

光标和显示模式设置I/D:

光标移动方向,高电平右移,低电平左移S:

屏幕上所有文字是否左移或者右移。

高电平表示有效,低电平则无效

指令4:

显示开关控制。

D:

控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:

控制光标的开与关,高电平表示有光标,低电平表示无光标B:

控制光标是否闪烁,高电平闪烁,低电平不闪烁

指令5:

光标或显示移位S/C:

高电平时移动显示的文字,低电平时移动光标

指令6:

功能设置命令DL:

高电平时为4位总线,低电平时为8位总线N:

低电平时为单行显示,高电平时双行显示F:

低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符(有些模块是DL:

高电平时为8位总线,低电平时为4位总线)

指令7:

字符发生器RAM地址设置

指令8:

DDRAM地址设置

指令9:

读忙信号和光标地址BF:

为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。

指令10:

写数据

指令11:

读数据

DM-162液晶显示模块可以和单片机AT89C51直接接口,电路如图1所示。

液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。

要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,表3是DM-162的内部显示地址.

比如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?

这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)

以下是在液晶模块的第二行第一个字符的位置显示字母“A”的程序:

ORG0000H

RSEQUP3.7;

确定具体硬件的连接方式

RWEQUP3.6;

确定具体硬件的连接方式

EEQUP3.5;

MOVP1,#00000001B;

清屏并光标复位

ACALLENABLE;

调用写入命令子程序

MOVP1,#00111000B;

设置显示模式:

8位2行5x7点阵

ACALLENABLE;

MOVP1,#00001111B;

显示器开、光标开、光标允许闪烁

调用写入命令子程序

MOVP1,#00000110B;

文字不动,光标自动右移

MOVP1,#0C0H;

写入显示起始地址(第二行第一个位置)

MOVP1,#01000001B;

字母A的代码

SETBRS;

RS=1

CLRRW;

RW=0;

准备写入数据

CLRE;

E=0;

执行显示命令

ACALLDELAY;

判断液晶模块是否忙?

SETBE;

E=1;

显示完成,程序停车

AJMP$

ENABLE:

CLRRS;

写入控制命令的子程序

CLRRW

CLRE

ACALLDELAY

SETBE

RET

DELAY:

MOVP1,#0FFH;

判断液晶显示器是否忙的子程序

CLRRS

SETBRW

NOP

JBP1.7,DELAY;

如果P1.7为高电平表示忙就循环等待

RET

END

程序在开始时对液晶模块功能进行了初始化设置,约定了显示格式。

注意显示字符时光标是自动右移的,无需人工干预,每次输入指令都先调用判断液晶模块是否忙的子程序DELAY,然后输入显示位置的地址0C0H,最后输入要显示的字符A的代码41H。

1602字符液晶驱动函数库

关键词:

1602字符液晶驱动函数库 

 

/**************************************************************************

THE1602CHARLCDLIB

COPYRIGHT(c) 

2005BYJJJ.

-- 

ALLRIGHTSRESERVED 

--

FileName:

LCD.h

Author:

JiangJianJun

Created:

2005/4/3

Modified:

NO

Revision:

1.0

***************************************************************************/

#ifndefLCD_CHAR_1602_2005_4_9

#defineLCD_CHAR_1602_2005_4_9

#include<

REGX51.H>

intrins.h>

//PortDefinitions**********************************************************

sbitLcdRs 

=P3^0;

sbitLcdRw 

=P3^1;

sbitLcdEn 

=P3^2;

sfr 

DBPort 

=0xA0;

//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口

sbitLcdLight 

=DBPort^4;

voidDelay1ms(unsignedintcount)

{

unsignedinti,j;

for(i=0;

i<

count;

i++)

for(j=0;

j<

120;

j++);

}

//内部等待函数**************************************************************************

unsignedcharLCD_Wait(void)

LcdRs=0;

LcdRw=1;

_nop_();

LcdEn=1;

while(DBPort&

0x80);

//或do{ACC=DBPort;

}while(ACC_7==1);

LcdEn=0;

Delay1ms

(1);

returnACC;

//向LCD写入命令或数据************************************************************

#defineLCD_COMMAND 

0x00 

//Command

#defineLCD_DATA 

0x01 

//Data

#defineLCD_CLEAR_SCREEN 

//清屏

#defineLCD_HOMING 

0x02 

//光标返回原点

voidLCD_Write(unsignedcharstyle,unsignedcharinput)

LcdRs=style;

LcdRw=0;

DBPort=input;

LCD_Wait();

//设置显示模式************************************************************

#defineLCD_SHOW 

0x04 

//显示开

#defineLCD_HIDE 

//显示关 

#defineLCD_CURSOR 

0x02 

//显示光标

#defineLCD_NO_CURSOR 

//无光标 

#defineLCD_FLASH 

//光标闪动

#defineLCD_NO_FLASH 

//光标不闪动

voidLCD_SetDisplay(unsignedcharDisplayMode)

LCD_Write(LCD_COMMAND,0x08|DisplayMode);

//设置输入模式************************************************************

#defineLCD_AC_UP 

0x02

#defineLCD_AC_DOWN 

//default

#defineLCD_MOVE 

//画面可平移

#defineLCD_NO_MOVE 

//default

voidLCD_SetInput(unsignedcharInputMode)

LCD_Write(LCD_COMMAND,0x04|InputMode);

//移动光标或屏幕************************************************************

#defineLCD_SCREEN 

0x08

#defineLCD_LEFT 

0x00

#defineLCD_RIGHT 

0x04

voidLCD_Move(unsignedcharobject,unsignedchardirection)

if(object==LCD_CURSOR)

LCD_Write(LCD_COMMAND,0x10|direction);

if(object==LCD_SCREEN)

LCD_Write(LCD_COMMAND,0x18|direction);

//初始化LCD************************************************************

voidLCD_Initial()

Delay1ms(80);

LCD_Write(LCD_COMMAND,0x38);

//8位数据端口,2行显示,5*7点阵

Delay1ms(10);

LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);

//开启显示,无光标

LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);

//清屏

LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);

//AC递增,画面不动

//************************************************************************

voidGotoXY(unsignedcharx,unsignedchary)

if(y==0)

LCD_Write(LCD_COMMAND,0x80|x);

if(y==1)

LCD_Write(LCD_COMMAND,0x80|(x-0x40));

voidPrint(unsignedchar*str)

while(*str!

='

\0'

LCD_Write(LCD_DATA,*str);

str++;

voidLCD_LoadChar(unsignedcharuser[8],unsignedcharplace)

unsignedchari;

LCD_Write(LCD_COMMAND,0x40|(place*8));

i<

8;

i++)

LCD_Write(LCD_DATA,user[i]);

#endif

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

当前位置:首页 > 法律文书 > 调解书

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

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