LCD1602液晶显示实验实验报告及程序.docx

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

LCD1602液晶显示实验实验报告及程序.docx

《LCD1602液晶显示实验实验报告及程序.docx》由会员分享,可在线阅读,更多相关《LCD1602液晶显示实验实验报告及程序.docx(20页珍藏版)》请在冰点文库上搜索。

LCD1602液晶显示实验实验报告及程序.docx

LCD1602液晶显示实验实验报告及程序

实验三LCD1602液晶显示实验

姓名专业学号成绩

实验目的

掌握KeilC51软件与proteus软件联合仿真调试的方法;

掌握LCD1602液晶模块显示西文的原理及使用方法;

掌握用8位数据模式驱动LCM1602液晶的C语言编程方法;

掌握用LCM1602液晶模块显示数字的C语言编程方法。

实验仪器与设备

1.微机一台C51集成开发环境仿真软件

实验内容

用Proteus设计一LCD1602液晶显示接口电路。

要求利用P0口接LCD1602液晶的数据端,~做LCD1602液晶的控制信号输入端。

~口扩展3个功能键K1~K3。

参考电路见后面。

编写程序,实现字符的静态和动态显示。

显示字符为

第一行:

“1.姓名全拼”,第二行:

“2.专业全拼+学号”。

编写程序,利用功能键实现字符的垂直滚动和水平滚动等效果显示。

显示字符为:

“1.姓名全拼2.专业全拼+学号EXP8DISPLAY”

主程序静态显示“Myinformation!

实验原理

液晶显示的原理:

采用的LCD显示屏都是由不同部分组成的分层结构,位于最后面的一层是由荧光物质组成的可以发射光线的背光层,背光层发出的光线在穿过第一层偏振过滤层之后进入包含成千上万水晶液滴的液晶层,液晶层中的水晶液滴都被包含在细小的单元格结构中,一个或多个单元格构成屏幕上的一个像素。

当LCD中的电极产生电场时,液晶分子就会产生扭曲,从而将穿越其中的光线进行有规则的折射,然后经过第二层过滤层的过滤在屏幕上显示出来。

LCD1602采用标准的14引脚(无背光)或16引脚(带背光)接口,各引脚接口说明如表:

编号

符号

引脚说明

编号

符号

引脚说明

1

VSS

电源地

9

D2

数据

2

VDD

电源正极

10

D3

数据

3

VL

液晶显示偏压

11

D4

数据

4

RS

数据/命令选择

12

D5

数据

5

R/W

读/写选择

13

D6

数据

6

E

使能信号

14

D7

数据

7

D0

数据

15

BLA

背光源正极

8

D1

数据

16

BLK

背光源负极

1602液晶模块内部的控制器共有11条控制指令,如表所示:

芯片时序表:

4.1602LCD的一般初始化(复位)过程

(1)延时15ms。

(2)写指令38H(不检测忙信号)。

(3)延时5ms。

(4)写指令38H(不检测忙信号)。

(5)延时5ms。

(6)写指令38H(不检测忙信号)。

(7)以后每次写指令、读/写数据操作均需要检测忙信号。

(8)写指令38H:

显示模式设置。

(9)写指令08H:

显示关闭。

(10)写指令01H:

显示清屏。

(11)写指令06H:

显示光标移动设置。

(12)写指令0CH:

显示开及光标设置。

五、实验步骤

用Proteus设计1602液晶显示接口电路;

在KeilC51中编写液晶显示控制程序,编译通过后,与Proteus联合调试;

按动功能键,观察字符及效果是否正确显示。

六、电路设计调试及程序

实验电路

程序设计与调试

静态显示

#include<>

#defineucharunsignedchar

#defineuintunsignedint

ucharcodetable[]="Xin";

ucharcodetable1[]="412381";

sbitlcden=P2^2;

sbitlcdrw=P2^1;

sbitlcdrs=P2^0;

ucharnum;

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

voidwrite_com(ucharcom)

{

lcdrs=0;

P0=com;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

voidwrite_data(uchardate)

{

lcdrs=1;

P0=date;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

voidinit()

{

lcden=0;

lcdrw=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

write_com(0x80+0x00);

}

voidmain()

{

init();

delay(100);

while

(1)

{

for(num=0;num<12;num++)

{

write_data(table[num]);

delay(200);

}

write_com(0x02);

write_com(0x80+0x40);

for(num=0;num<16;num++)

{

write_data(table1[num]);

delay(200);

}

while

(1);

}

}

 

动态显示

#include<>

#defineucharunsignedchar

#defineuintunsignedint

ucharcodetable[]="Xin";

ucharcodetable1[]="412381";

sbitlcden=P2^2;

sbitlcdrw=P2^1;

sbitlcdrs=P2^0;

ucharnum;

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

voidwrite_com(ucharcom)

{

lcdrs=0;

P0=com;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

voidwrite_data(uchardate)

{

lcdrs=1;

P0=date;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

voidinit()

{

lcden=0;

lcdrw=0;

write_com(0x38);

write_com(0x0f);

write_com(0x06);

write_com(0x01);

write_com(0x80+0x00);

}

voidmain()

{

init();

delay(100);

while

(1)

{

for(num=0;num<12;num++)

{

write_data(table[num]);

delay(200);

}

write_com(0x02);

write_com(0x80+0x40);

for(num=0;num<16;num++)

{

write_data(table1[num]);

delay(200);

}

write_com(0x01);

}

}

 

按键实现不同效果

#include<>

#defineucharunsignedchar

#defineuintunsignedint

ucharcodetable[]="Myinformation!

";

ucharcodetable1[]="Xin";

ucharcodetable2[]="412381";

ucharcodetable3[]="EXP8";

ucharcodetable4[]="DISPLAY";

ucharnum,i,j;

ucharflag1,flag2,flag3,flag4;

sbitk1=P3^0;

sbitk2=P3^1;

sbitk3=P3^2;

sbitk4=P3^3;

sbitlcden=P2^2;

sbitlcdrw=P2^1;

sbitlcdrs=P2^0;

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

voidwrite_com(ucharcom)

{

lcdrs=0;

P0=com;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

voidwrite_data(uchardate)

{

lcdrs=1;

P0=date;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

voidinit()

{

lcden=0;

lcdrw=0;

write_com(0x38);

write_com(0x0f);

write_com(0x06);

write_com(0x01);

}

voidmain()

{

init();

TMOD=0x01;

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

EA=1;

ET0=1;

TR0=1;

EX0=1;

IT0=1;

IP=0x05;

EX1=1;

IT1=1;

delay(100);

while

(1)

{flag3=0;

write_com(0x01);

write_com(0x80+0x01);

delay(50);

for(num=0;num<15;num++)

{

write_data(table[num]);

delay(200);

}

delay(200);

write_com(0x01);

}

}

voiddisplay()

{

if(k1==0)

{

while

(1)

{

if(flag1==1)break;

if(flag3==0)//

{

if(flag1==1)break;//控制返回

write_com(0x01);

write_com(0x80+0x00);

delay(50);

for(num=0;num<11;num++)//显示"Xin"

{

if(flag1==1)break;

while(flag3==1)

{

if(flag1==1)break;

}

write_data(table1[num]);

delay(200);

}

write_com(0x80+0x40);

for(num=0;num<16;num++)//显示"412381"

{

if(flag1==1)break;

while(flag3==1)

{

if(flag1==1)break;

}

write_data(table2[num]);

delay(200);

}

write_com(0x01);

delay(200);

write_com(0x80+0x00);

for(num=0;num<16;num++)//显示"412381"

{

if(flag1==1)break;

while(flag3==1)

{

if(flag1==1)break;

}

write_data(table2[num]);

delay(200);

}

write_com(0x80+0x40);

for(num=0;num<13;num++)//显示"EXP8"

{

if(flag1==1)break;

while(flag3==1)

{

if(flag1==1)break;

}

write_data(table3[num]);

delay(200);

}

write_com(0x01);

write_com(0x80+0x00);

for(num=0;num<13;num++)//显示"EXP8"

{

if(flag1==1)break;

while(flag3==1)

{

if(flag1==1)break;

}

write_data(table3[num]);

delay(200);

}

delay(200);if(flag1==1)break;

write_com(0x80+0x40);

for(num=0;num<13;num++)//显示"DISPLAY"

{

if(flag1==1)break;

while(flag3==1)

{

if(flag1==1)break;

}

write_data(table4[num]);

delay(200);

}

write_com(0x01);

write_com(0x80+0x00);

for(num=0;num<13;num++)//显示"DISPLAY"

{

if(flag1==1)break;

while(flag3==1)

{

if(flag1==1)break;

}

write_data(table4[num]);

delay(200);

}

write_com(0x80+0x40);

for(num=0;num<11;num++)//显示"Xin"

{

if(flag1==1)break;

while(flag3==1)

{

if(flag1==1)break;

}

write_data(table1[num]);

delay(200);

}

}

}

flag3=0;

flag1=0;//清标志位

write_com(0x01);//清屏

}

if(k2==0)

{

//if(flag1==1)break;

write_com(0x01);//清屏

write_com(0x80+0x00);

for(num=0;num<11;num++)//显示"Xin"

{

if(flag1==1)break;

write_data(table1[num]);

delay(50);

}

write_com(0x80+0x10);

for(num=0;num<16;num++)//显示"412381"

{

if(flag1==1)break;

write_data(table2[num]);

delay(50);

}

write_com(0x02);

write_com(0x80+0x40);

for(num=0;num<13;num++)//显示"EXP8"

{

if(flag1==1)break;

write_data(table3[num]);

delay(50);

}

write_com(0x80+0x50);

for(num=0;num<13;num++)//显示"DISPLAY"

{

if(flag1==1)break;

write_data(table4[num]);

delay(50);

}

while

(1)

{

if(flag1==1)break;

while(flag3==1)

{

if(flag1==1)break;

}

if(flag3==0)

{

write_com(0x1c);//整屏左移或右移

delay(100);

if(flag1==1)break;

}

}

flag3=0;

flag1=0;//清除标志位

write_com(0x01);//清屏

}

}

voidtime0()interrupt1

{

TH0=(65536-1000)/256;

TL0=(65536-1000)%256;

display();

}

voidINT_0()interrupt0

{

EX0=0;

delay(20);

EX0=1;

flag3=!

flag3;

}

voidINT_1()interrupt2

{

EX1=0;

delay(20);

EX1=1;

flag1=1;

}

 

七、实验问题解决及总结

实验中出现了运行垂直或水平效果时若按下暂停/继续按键再按返回按键后,再按垂直或水平按键不继续运行的情况。

主要原因是标志位设置及功能不明确造成,应在执行完效果程序后将暂停与返回的标志位都清零。

最好对每个按键设置一个标志位,容易控制。

将效果函数与标志位的处理放在主函数中,不涉及中断嵌套等问题。

通过本次实验,掌握了对LCD1602编程的方法,学会了运用标志位对程序进行更好的控制,并进一步培养了编程似的逻辑思维。

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

当前位置:首页 > 总结汇报 > 学习总结

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

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