LCD12232液晶显示实验Word下载.docx

上传人:b****6 文档编号:8473550 上传时间:2023-05-11 格式:DOCX 页数:16 大小:387.06KB
下载 相关 举报
LCD12232液晶显示实验Word下载.docx_第1页
第1页 / 共16页
LCD12232液晶显示实验Word下载.docx_第2页
第2页 / 共16页
LCD12232液晶显示实验Word下载.docx_第3页
第3页 / 共16页
LCD12232液晶显示实验Word下载.docx_第4页
第4页 / 共16页
LCD12232液晶显示实验Word下载.docx_第5页
第5页 / 共16页
LCD12232液晶显示实验Word下载.docx_第6页
第6页 / 共16页
LCD12232液晶显示实验Word下载.docx_第7页
第7页 / 共16页
LCD12232液晶显示实验Word下载.docx_第8页
第8页 / 共16页
LCD12232液晶显示实验Word下载.docx_第9页
第9页 / 共16页
LCD12232液晶显示实验Word下载.docx_第10页
第10页 / 共16页
LCD12232液晶显示实验Word下载.docx_第11页
第11页 / 共16页
LCD12232液晶显示实验Word下载.docx_第12页
第12页 / 共16页
LCD12232液晶显示实验Word下载.docx_第13页
第13页 / 共16页
LCD12232液晶显示实验Word下载.docx_第14页
第14页 / 共16页
LCD12232液晶显示实验Word下载.docx_第15页
第15页 / 共16页
LCD12232液晶显示实验Word下载.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

LCD12232液晶显示实验Word下载.docx

《LCD12232液晶显示实验Word下载.docx》由会员分享,可在线阅读,更多相关《LCD12232液晶显示实验Word下载.docx(16页珍藏版)》请在冰点文库上搜索。

LCD12232液晶显示实验Word下载.docx

2、RES,复位信号。

这个大家都知道,一般应用中直接接到高平就行了;

3、E1,E2为控制器选择线,高电平时为选中;

4、R/W=0时为写选通,R/W=1时为读选通,一般我们只是向液晶发送数据,不读液晶内部的数据,所以该脚可以直接接地(低电平);

5、A0=1时表示所发的数据是显示数据,A0=0时表示所发数据是指令(Instruction);

6、DB0~DB7为数据线;

7、LED-,LED+为背光灯电源,一个接正,一个接地就行。

17.2.1、DM12232B型液晶的读写时序

DM12232B型液晶的读写时序如图2所示,

应用中主要有两种读写时序:

写指令和写数据,分别描述如下:

写指令:

E选通—A0=0—读写使能(直接接地就不用设置了)—数据的发送—状态释放

写数据

E选通—A0=1—读写使能(直接接地就不用设置了)—数据的发送—状态释放

图1DM12232B型液晶的管脚排列及说明

图2DM12232B型液晶的读写时序

17.2.3、DM12232B型液晶的指令介绍

DM12232B型液晶的指令如表1所示

表1DM12232B型液晶的指令

表1(续)DM12232B型液晶的指令

17.2.4、DM12232B型液晶的原理图

DM12232B型液晶的原理图如图3所示

17.2.5、DM12232B型液晶的地址表

DM12232B型液晶的地址表如图4所示

图3DM12232B型液晶的原理图

图4DM12232B型液晶的地址表

10.1.3、电路和连接

图5所示为DM12232B型液晶与单片机之间进行并口通讯的典型接法

本实例是在LT_Mini_M16学习板的基础上做的扩展实验,具体连线如下。

引脚连接

mculcd引脚说明

VccVDD电源电压

GNDVSS电源地

偏压信号,接可调电阻VEE(VLCD)LCD外接驱动负电压

PA1RES复位信号(低电平有效),低电平复位

PA6E1读写使能信号1

PA7E2读写使能信号2

PA5R/W读写选择信号

PA4A0H-显示数据。

L-显示指令数据(指令数据选择)

PB0DB0数据线

PB1DB1

PB2DB2

PB3DB3

PB4DB4

PB5DB5

PB6DB6

PB7DB7

VccVLED+LED(+5V)或EL背光源

GNDVLED-LED(0V)或EL背光源

图512232B液晶与单片机的一种接口图

17.4、程序设计

1、程序功能

程序的功能是使用单片机控制12232B液晶显示字符,程序比较简单,直接看程序就能明白原理了。

2函数说明

本程序多个功能函数,分别是:

●DM12232B液晶处理相关函数:

externvoidLCDPort_Init(void);

//液晶端口初始化

externvoidLCD_Init(void);

//LCD初始化

externvoidWriteCommand(unsignedcharchip_select,unsignedcharcmd);

//写命令

externvoidWriteData(unsignedcharchip_select,unsignedchardata);

//写数据

externvoidclear_lcd(void);

//清屏

externvoidtex_Write(unsignedchar*pt);

//写字符

externvoidWriteCharacter(unsignedchar*pt);

//写汉字

externvoidDrawing_Map(unsignedchar*pt);

//绘图

●延时相关函数:

voidDelayus(unsignedintlus);

//us延时函数

voidDelayms(unsignedintlms);

//ms延时函数

由于WINAVR自带函数库中的延时函数使用起来很不方便,并且晶振频率不同,延时时间也有区别,所以本实例中自己写了两个延时函数。

3、使用WINAVR开发环境,使用的是外部12M的晶振,所以需要将makefile文件中的时钟频率修改为12M。

另外在程序烧录到单片机的时候,熔丝位也要选择为外部12M晶振(注意是晶振,不是外部振荡器,一定不要选择错了,否则会导致单片机不能再烧写程序)。

4、程序代码

由于本程序代码比较长,所以在此只列出与控制液晶DM12232B相关的部分代码,完整程序放在附件中

//端口初始化

voidLCDPort_Init()

{

//LCD数据端口设置

PORTB=0xff;

//

DDRB=0xFF;

//配置端口PB全部为输出口,LCD数据端口

//LCD控制端口设置

SET_RES;

SET_A0;

SET_RW;

SET_E1;

SET_E2;

DDRA=0xff;

Delayms(15);

}

//LCD初始化

voidLCD_Init()

{

WriteCommand(0x01,0xe2);

//rest复位

WriteCommand(0x02,0xe2);

//WriteCommand(0x01,0xae);

//closedisplay关显示

//WriteCommand(0x02,0xae);

//WriteCommand(0x01,0xa4);

//staticdriver关静态驱动

//WriteCommand(0x02,0xa4);

WriteCommand(0x01,0xa9);

//duty1/32占空比1/32

WriteCommand(0x02,0xa9);

//WriteCommand(0x01,0xa0);

//clockwiseoutputADC选择,顺时针还是逆时针读取RAM数据

//WriteCommand(0x02,0xa0);

//WriteCommand(0x01,0xee);

//end关闭读修改写,无论读或写操作后,列地址都加1

//WriteCommand(0x02,0xee);

//WriteCommand(0x01,0x00);

//行地址设置,设置显示RAM的行地址(Y地址)

//WriteCommand(0x02,0x00);

//WriteCommand(0x01,0xc0);

//显示起始行设置。

指定显示器从显示RAM中的那一行开始显示

//数据,(起始行=0)

//WriteCommand(0x02,0xc0);

WriteCommand(0x01,0xaf);

//openddisplay开显示

WriteCommand(0x02,0xaf);

//LCD写指令,

voidWriteCommand(unsignedcharchip_select,unsignedcharcmd)

{

if(chip_select&

1)//判断对左页还是右页的操作

{

SET_E1;

//如果是左页,E1使能

}

elseif(chip_select&

2)//

SET_E2;

//右页,E2使能

CLR_A0;

//A0=0写命令

CLR_RW;

//RW=0写操作

PORTB=cmd;

//写命令数据到数据端口

1)//

CLR_E1;

//关闭左右页使能

CLR_E2;

//

voidWriteData(unsignedcharchip_select,unsignedchardata)

1)//判断左右页

//A0=1,写数据

//RW=0,写操作

PORTB=data;

//写数据到数据端口

//结束使能

voidclear_lcd(void)

unsignedchara,b,c;

for(a=0xb8;

a<

0xbc;

a++)//清屏0-3页,指令分别是b8,b9,ba,bb(X地址)

b=0;

WriteCommand(0x01,a);

//左,第0页开始

WriteCommand(0x02,a);

//右,第0页开始

WriteCommand(0x02,b);

//右,第0行开始(Y地址)

WriteCommand(0x01,b);

//左,第0行开始

for(c=0;

c<

61;

c++)//总共122列,左右各61列

{

WriteData(0x01,0x00);

//左,每列均填充0

WriteData(0x02,0x00);

//右,每列均填充0

}

//写字符

voidtex_Write(unsignedchar*pt)

unsignedchara,b;

if(SEL_E1)//左选中?

{

WriteCommand(0x01,0xb8);

//页设置,第0页(X地址)

WriteCommand(0x01,Add1);

//第0行开始(Y)地址

for(a=8;

16;

a++)//

{

WriteData(0x01,*(pt+a));

//上半部分8-16,总高度16,

WriteCommand(0x01,0xb9);

//第一页

for(b=0;

b<

8;

b++)//

WriteData(0x01,*(pt+b));

//下半部分

elseif(SEL_E1==0)//若为0,写右半边

WriteCommand(0x02,0xb8);

WriteCommand(0x02,Add1);

WriteData(0x02,*(pt+a));

WriteCommand(0x02,0xb9);

WriteData(0x02,*(pt+b));

if((Add1+8)<

61)

Add1+=8;

//如果不超过61列列地址+8

else//

Add1=0;

//超过61列,则列地址置0,写右半边

for(a=12;

a++)//一个字符占8列,所以在61列之后还要写4列

for(b=4;

WriteData(0x02,*(pt+b));

Add1+=4;

SEL_E1=0;

//写汉字

voidWriteCharacter(unsignedchar*pt)

if(SEL_E2)//

WriteCommand(0x01,0xba);

WriteCommand(0x01,Add2);

for(a=16;

a<

32;

WriteData(0x01,*(pt+a));

WriteCommand(0x01,0xbb);

for(b=0;

b<

16;

WriteData(0x01,*(pt+b));

elseif(SEL_E2==0)//

WriteCommand(0x02,0xba);

WriteCommand(0x02,Add2);

WriteData(0x02,*(pt+a));

WriteCommand(0x02,0xbb);

WriteData(0x02,*(pt+b));

if((Add2+16)<

61)

Add2+=16;

else

Add2=0;

for(a=29;

a++)

WriteData(0x02,*(pt+a));

//一个汉字16列,写完61列之后还要写3列

for(b=13;

b++)

WriteData(0x02,*(pt+b));

Add2+=3;

SEL_E2=0;

voidDrawing_Map(unsignedchar*pt)

unsignedcharhalf,seg,page;

unsignedcharflag=1;

for(page=0xb8;

page<

page++)

for(half=0;

half<

2;

half++)

flag=!

flag;

if(flag)

{

WriteCommand(0x02,page);

WriteCommand(0x02,0x00);

}

else

WriteCommand(0x01,page);

WriteCommand(0x01,0x00);

for(seg=0;

seg<

seg++)

if(flag)

{

WriteData(0x02,*pt++);

}

else

WriteData(0x01,*pt++);

}

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2