- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验八 LCM1602液晶显示实验
实验八 LCM1602液晶显示实验
姓名 牟甜鸽 专业 通信工程 学号 2011412489 成绩
一、实验目的
掌握keil C51软件与protues软件联合仿真调试的方法;
掌握LCM1602液晶模块显示西文的原理及使用方法;
掌握用8位数据模式驱动LCM1602液晶的C语言编程方法。
二、实验内容
用protues设计一LCM1602液晶显示接口电路。要求利用P0接LCM1602液晶的数据端,P2.0~P2.2做LCM1602液晶的控制信号输入端。P3.0~P3.4口扩展4个功能键K1~K4,电路如下
编写程序,实现字符的静态和动态显示,字符为第一行“姓名全拼”第二行“专业全拼+学号”。液晶的初始化,字符显示程序可参考官网的程序文件也可参考课本程序。
编写程序,利用功能键实现字符的纵向滚动和横向滚动等效果显示,主程序静态显示“My Informatiom”,显示字符如下:
姓名全拼 2.专业全拼+学号 3.MCS-51 EXP8 4.LCD DISPLAY
三、实验原理及步骤
液晶显示的原理:采用的LCDxianshiping都是由不同部分组成的分层结构,位于最后面的一层是由荧光物质组成的可以发射光线的背景层,背景层发出的光线在穿过第一层偏振过滤层之后进入包含成千上万水晶液滴的液晶层,液晶层中的水晶液滴都被包含在细小的单元格结构中,一个或多个单元产生扭曲,从而经穿过其中的光线进行有规则的折射,然后经过第二层过滤在屏幕生显示出来。
1、LCM1602采用标准的14脚(无背光)或16脚(带背光)接口,1602液晶模块内部的控制器共有11条控制指令,参考课本的指令代码。
2、1602LCD的一般初始化(复位)过程
(1)延时15ms (2)写指令38H(不检测忙信号) (3)延时5ms (4)写指令38H(不检测忙信号) (5)延时5ms (6)写指令38H(不检测忙信号)以后每次写指令 读/写数据操作均需要检测忙信号 (7)写指令38H:显示模式设备 (8)写指令08H:显示关闭 (9)写指令01H:显示清屏 (10)写指令06H:显示光标移动设置 (11)写指令0CH:显示开关及移动光标设置
实验步骤:
1.用protues设计1602液晶显示接口电路;
2.在KeilC51中编写液晶显示控制程序;编译通过后,与protues联合调试;
3.按动功能键,观察字符及效果是否正确显示。
四、电路设计及调试
实验电路:
实验程序:
1.动态显示
#includereg51.h
#define uchar unsigned char
#define uint unsigned int
uchar code table[]=mou tian ge;
uchar code table1[]=tongxin 2011412489;
sbit E=P2^2;
sbit RW=P2^1;
sbit RS=P2^0;
uchar num;
void delay(uint c)
{
uchar a,b;
for(;c0;c--)
for(b=142;b0;b--)
for(a=2;a0;a--);
}
void write_com(uchar com)
{
RS=0;
RW=0;
P0=com;
delay(5);
E=1;
delay(5);
E=0;
}
void write_dat(uchar dat)
{
RS=1;
RW=0;
P0=dat;
delay(5);
E=1;
delay(5);
E=0;
}
void init()
{
E=0;
write_com(0x38);
write_com(0x0e);
write_com(0x06);
write_com(0x01);
write_com(0x80);
}
void main()
{
init();
delay(1000);
while(1)
{
write_com(1);
for(num=0;num12;num++)
{
write_dat(table[num]);
delay(200);
}
write_com(2);
write_com(0x80+0x40);
for(num=0;num20;num++)
{
write_dat(table1[num]);
delay(200);
}
write_com(0x1c);
delay(200);
write_com(0x1c);
delay(200);
write_com(0x1c);
delay(2000);
}
}
2.静态显示
#includereg51.h
#def
文档评论(0)