LCD12864图形液晶并口显示.docx

上传人:b****8 文档编号:29266052 上传时间:2023-07-21 格式:DOCX 页数:17 大小:1.17MB
下载 相关 举报
LCD12864图形液晶并口显示.docx_第1页
第1页 / 共17页
LCD12864图形液晶并口显示.docx_第2页
第2页 / 共17页
LCD12864图形液晶并口显示.docx_第3页
第3页 / 共17页
LCD12864图形液晶并口显示.docx_第4页
第4页 / 共17页
LCD12864图形液晶并口显示.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

LCD12864图形液晶并口显示.docx

《LCD12864图形液晶并口显示.docx》由会员分享,可在线阅读,更多相关《LCD12864图形液晶并口显示.docx(17页珍藏版)》请在冰豆网上搜索。

LCD12864图形液晶并口显示.docx

LCD12864图形液晶并口显示

LCD12864图形液晶并口显示

【教学引入】

液晶屏,在生活中很常见,我们常见的液晶显示器,如电脑的显示器,电视机,手机等等。

液晶屏在生活中已得到了普遍应用,它显示个各种各样的画面。

【教学目标】

1、掌握LCD12864液晶屏的用法;

2、编写LCD12864液晶屏的指令代码;

【知识目标】

1、掌握LCD12864液晶屏的用法;

2、掌握LCD12864液晶屏指令代码;

【教学准备】

电脑、Proteus、Keil

【教学方法】

教法:

讲授法、讨论法

学法:

练习法、探究法

【教学课时】

四课时

【教学过程】

一、12864液晶介绍

(1)12864是128*64点阵液晶模块的点阵数简称,业界约定俗成的简称。

12864点阵的屏显成本相对较低,适用于各类仪器,小型设备的显示领域。

12864M汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。

12864引脚说明

引脚号

引脚名称

方向

功能说明

1

VSS

-

模块的电源地

2

VDD

-

模块的电源正端

3

VO

-

液晶显示对比度调节端

4

RS(CS)

H/L

数据/命令选择端(H/L)(串片选)

5

R/W(SID)

H/L

读/写选择端(H/L)(串数据口)

6

E(SCLK)

H/L

使能信号(串同步时钟信号)

7

D0

H/L

数据口

8

D1

H/L

数据口

9

D2

H/L

数据口

10

D3

H/L

数据口

11

D4

H/L

数据口

12

D5

H/L

数据口

13

D6

H/L

数据口

14

D7

H/L

数据口

15

PSB

H/L

并/串选择:

H并行L串行

16

NC

空脚

17

RST

H/L

复位,低电平有效

18

NC

空脚

19

BLA

-

背光电源正极

20

BLK

-

背光电源负极

主要技术参数

显示容量

128X64

芯片工作电压

3.3~5.5V

模块最佳工作电压

5.0V

与MCU接口

8位或4位并行/3位串行

工作温度(常温型)

-10°C~+60°C

工作温度(宽温型)

-20°C~+70°C

查阅“12864M.PDF”12864M液晶显示模块技术手册——四、用户指令集

1、指令表1:

(RE=0:

基本指令表),如下图,讲解了12864的基本指令集和扩充指令集。

当模块在接受指令前,微处理器必须先确认模块内部处于非忙碌状态,即读取BF标志时BF需为0。

“RE”为基本指令集与扩充指令集的选择控制位元,往后的指令集将维持在最后的状态。

当选择G=0:

绘图显示OFF,汉字显示的时,12864屏只能显示8X4=32个汉字,下面是汉字显示的坐标

二、12864液晶屏驱动电路

所需原件清单

原件名称

所属类(Category)

所属子类(Sub-category)

AT89C52

MicroprocessorICs

8051Family

POT-HG

Resistors

Variable

RESPACK-8

Resistors

ResistorPacks

LCD12864A

自制

-

将表格所列原件添加到对象选择器窗口,绘制如下12864液晶屏驱动电路。

AT89C52的P0口连接12864的并行数据口,RP1为P0口的上拉排阻。

三、52代码编写

(1)打开keiluVision4,建立一个新的工程,工程名为"12864graphicLCDparalleldisplay",保存类型*.uvproj,单片机型号AT89C52。

在工程中添加12864graphicLCDparalleldisplay.c文件,如下图

(2)代码编写

/*********************12864液晶显示***********************

*功能说明:

将数组内的字符串显示到12864上面

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

#include//52系列单片机头文件

#include

#defineucharunsignedchar//define宏定义

#defineuintunsignedint//define宏定义

/*12864端口定义*/

#defineLCD_dataP0//数据口

sbitLCD_RS=P1^0;//寄存器选择输入

sbitLCD_RW=P1^1;//液晶读/写控制

sbitLCD_EN=P2^5;//液晶使能控制

sbitLCD_PSB=P1^2;//串/并方式控制

ucharcodeTABROW1[][17]={//字符串的末尾都有一个ASCIII的\0,所以为17

"去年今日此门中,",

"人面桃花相映红。

",

"人面不知何处去,",

"桃花依旧笑春风。

"

};

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

*毫秒级延时函数

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

voidDelay_ms(ucharms)

{

uchari,j;

for(i=ms;i>0;i--)

for(j=112;j>0;j--);

}

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

*检测12864是否忙标志位

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

bitCheck_12864_busy()

{

bitfgbusy;//忙标志位名称

LCD_RS=0;//命令选择

LCD_RW=1;//液晶读控制

LCD_EN=1;//使能开

_nop_();//空指令

fgbusy=(bit)(LCD_data&0x80);//获取忙碌标志BF的值,BF=1忙

LCD_EN=0;//使能关

returnfgbusy;//返回标志位数值,判断12864内部动作是否完成

}

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

*向12864写命令

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

voidWrite_12864_cmd(ucharcmd)

{

while(Check_12864_busy());//忙则一直等待

LCD_RS=0;//命令选择

LCD_RW=0;//液晶写控制

LCD_data=cmd;//发送命令

LCD_EN=1;//使能开

_nop_();//空指令

_nop_();

LCD_EN=0;//使能关

}

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

*向12864写要显示的数据

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

voidWrite_12864_data(uchardat)

{

while(Check_12864_busy());//忙则一直等待

LCD_RS=1;//数据选择

LCD_RW=0;//液晶写控制

LCD_data=dat;//发送数据

LCD_EN=1;//使能开

_nop_();//空指令

_nop_();

LCD_EN=0;//使能关

}

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

*12864初始化

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

voidinit_12864()

{

LCD_PSB=1;//8位并口方式

Write_12864_cmd(0x30);//扩充指令集设置:

8位设置,RE=0:

基本指令集设置,G=0:

绘图显示OFF

Delay_ms(5);

Write_12864_cmd(0x30);//基本指令集设置:

DL=1,RE=0基本指令集动作

Delay_ms(5);

Write_12864_cmd(0x0c);//显示状态开/关,D=1整体显示ON,C=B=0游标、游标位置关。

Delay_ms(5);

Write_12864_cmd(0x01);//清除显示

Delay_ms(5);

}

voiddisplay_row(ucharrow)//显示一行文字

{

uchari=0,row_ad[4]={0x80,0x90,0x88,0x98};//row_ad为四行汉字的第一个字的X坐标

Write_12864_cmd(row_ad[row]);//设定汉字显示坐标,第row行、第一个

while(TABROW1[row][i]!

='\0')//到了字符串末尾,跳出while循环

{

Write_12864_data(TABROW1[row][i]);//写第row行,第i个数据

i++;

}

}

voidmain()

{

ucharrow;

init_12864();//调用12864初始化函数

while

(1)

{

for(row=0;row<4;row++)//依次显示4行文字

display_row(row);

}

}

代码写好后,单击

按钮,打开{OptionsforTarget}对话框,点选{Target}选项卡,在{Xtal(MHz):

}后面的框格里,填写"12.0",设置单片机的频率为12M,如下图

点选{Output}选项卡,勾选{CreateHEXFile}前面的复选框,如下图

编译时生成.HEX文件。

单击OK按钮,关闭对话框。

单击全部编译

按钮,结果如下

0错误,0警告,编译通过,并生成12864graphicLCDparalleldisplay.HEX文件。

把12864graphicLCDparalleldisplay.hex文件添加到AT89C52。

仿真:

单击仿真进程控制按钮

里面的运行按钮

,查看仿真结果。

四、操作实验箱

(1)硬件连接

采用USBISP下载方式,下载器如下图,实验箱采用USB窃电,无需外接电源

将下载器一端连接USB接口,如下图,指示灯亮

另一端连接“单片机核心板”的ISP插座(防呆的),如下图

单片机核心板上单片机引脚EA需要拉高,拉高选择单片机内部程序执行,而不是外部程序执行,如下图

(2)软件操作

双击“烧录软件”文件夹下

图标,打开软件烧录界面,如下图

在SelectChip下面选择AT89S52芯片

,其它默认。

单击右侧“文件”下的

图标按钮,如图

,打开文件选取对话框,选取"12864graphicLCDparalleldisplay.hex"文件,如下图

单击

图标按钮,回到软件烧录界面,下面空白处显示调入Flash文件:

matrixkeyboard.hex。

如下图

单击

图标按钮,下面空白处显示1:

擦除,写Flash,效验Flash,成功,(2015/12/2217:

06:

38),如下图

下载完成。

(3)“单片机核心板”模块连接“LCD12864”模块。

将“单片机核心板”模块上的“12864-1”接线座与“LCD12864”模块上的“12864-1”接线座相连;

将“单片机核心板”模块上的“12864-2”接线座与“LCD12864”模块上的“12864-2”接线座相连.

操作程序的运行状况。

五、作业练习

1、改动LCD12864液晶并口显示代码,让12864显示图形。

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

当前位置:首页 > 工程科技 > 电子电路

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

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