说明:此文章仅是我学习过程中的一些记录,如有侵权,请联系我删除,文章中难免有遗漏错误之处,欢迎指出。

一、1602液晶介绍

液晶属于扩展内容,但是,很多时候都会用到,毕竟需要一个可视化的结果提供给用户,所以我们需要掌握液晶的使用。

1602型号的液晶,其中16表示1行可以显示16个字符,02表示共有2行。

类似的,还有1601、0801、0802...

还有一些型号是12864、12232这种图形液晶,例如12864就是横的有128个点,竖的有64个点,由这些点构成一个图形。而前面提到的是字符液晶,只能显示字符。这些都可以在说明文档里了解到。

注:老师说,既然已经学会液晶了,那么能用液晶就尽量不用数码管了,因为相比较而言,液晶更简单,并且更有趣。

二、通过文档学习如何操作1602液晶

1.老师发的资料里有一个中文的文档,先看液晶的引脚功能:

再看开发板的连接图:

可以看到第5引脚直接连接着地,因为这里我们仅需往液晶里写数据,并不需要读数据。所以只需操纵第4和第6引脚即可。

2.接着再往下看详细的接口说明:

之所以要确保STA7 = 0,是因为STA7是读写操作使能,只有处于允许位了,才能进行读写操作。在单片机中由于晶振的频率不是很高,因此也不需要太过考虑。主要是液晶写数据是需要一定时间的,而在使用DSP、嵌入式芯片等高速运行时,有时候上一次液晶还没显示完全,下一次显示请求就到来了,而如果不管读写操作使能,则可能导致显示数据的丢失。因此我们要通过读写检测来进行相应处理。

注:

高脉冲:由低到高到低就是一个高脉冲。

低脉冲:反过来,高低高则是一个低脉冲。

3.接着我们详细看写操作时序:

由前面的文档说明知道,RS的不同代表的是写指令以及写数据的不同。

而R/W我们已经默认接地。所以通过对RS、E的操作可以实现指令或者数据的写入。

因此我们编写两个函数,分别用来写指令以及写数据:

写指令函数如下:

void write_com(uchar com)//写指令/命令
{lcdrs = 0;//RW = 0;//开发板已经默认接地了P0 = com;//com代表指令delay(5);lcden = 1;delay(5);lcden = 0;
}

写数据函数如下:

void write_data(uchar date)//写数据
{lcdrs = 1;//RW = 0;//开发板已经默认接地了P0 = date;//date代表数据delay(5);lcden = 1;delay(5);lcden = 0;
}

因为对实时性的要求不高,所以时序参数只用简单的delay函数替代即可,实际开发过程可能需要注意。

还有就是上面提到的读写检测,在简单的单片机程序中也可以不进行,我们仅需简单的delay函数延时,延时的时间大于液晶写的速度即可。

4.RAM地址映射图

其中每一格代表一个地址,往该地址中写数据内容,则内容会显示到该地方。而后面的第一行的10到27以及第二行的50到67不属于显示内容,但是我们可以选择先把内容写在这后面,然后进行整屏移动,把这后面的内容移动到屏幕上。

5.指令说明:

在开始前要先送指令,来设置显示模式。在中文文档中只有这一个模式,应该在详细的英文文档中会有其他的指令,实际开发中我们应尽量按照原文档来写程序。

然后是显示开关及光标设置。

注意上面的N=1时的当读或写一个字符后地址指针加一,是因为后面将要提到的数据指针,我们需要设置数据指针,然后内容会显示在该数据指针指向的位置,当我们想要写一行数据时,我们需要设置多次数据指针,而如果地址指针会自动加1,我们就不用设置了,只要把数据写进行就好了。

数据指针的设置,写数据前的准备工作。

其他的一些设置,还有很多很多设置,可以在文档中找到。

三、使用1602液晶,第一行显示“I AM hong!”,第二行显示“I LIKE MCU!”

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit lcden = P3^4;
sbit lcdrs = P3^5;
sbit dula = P2^6;
sbit wela = P2^7;
void delay(uint z);
uchar num;
uchar code table[]="I AM hong!";
uchar code table1[]="I LIKE MCU!";
void write_com(uchar com)//写指令/命令
{lcdrs = 0;//RW = 0;//开发板已经默认接地了P0 = com;delay(5);lcden = 1;delay(5);lcden = 0;
}
void write_data(uchar date)//写数据
{lcdrs = 1;//RW = 0;//开发板已经默认接地了P0 = date;delay(5);lcden = 1;delay(5);lcden = 0;
}
void init()
{dula = 0;wela = 0;//关闭数码管lcden = 0;write_com(0x38);//显示模式设置write_com(0x0c);//显示开/关及光标设置write_com(0x06);//地址指针加1,N=1,S=0write_com(0x01);//显示清屏,因为默认有个数据在里面,屏幕有个黑块write_com(0x80);//数据指针设置
}
void main()
{init();for(num = 0;num < 10;num++){write_data(table[num]);delay(200);}write_com(0x80+0x40);//第二行for(num = 0;num < 11;num++){write_data(table1[num]);delay(200);}while(1);
}void delay(uint z)  //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.
{                   //delay(500);大约延时500ms.uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);
}

第八讲:1602液晶(郭天祥)相关推荐

  1. 第20讲 1602液晶

    1. 准备 本次实验使用arduino直接驱动1602液晶显示字母 1602液晶在应用中非常广泛,最初的1602液晶使用的是HD44780控制器,现在各个厂家的1602模块基本上都是采用了与之兼容的I ...

  2. 51单片机学习笔记(郭天祥版)(8)——1602液晶

    右边那个用于插入1602,左边那个电位器(滑动变阻器)用于调节液晶的对比度,转动后,字符的颜色会发生深浅变化. 这样插上去,插反了容易把液晶烧坏. 1602:1行可以显示16个字符,一共两行. 还有1 ...

  3. STC51入门笔记(郭天祥C语言)---第八节:通用型1602,12232,12864液晶操作方法

    声明:本篇文章只是个人知识盲区.知识弱点.重点部分的归纳总结,望各位大佬不喜勿喷.梳理顺序是按照书籍的实际顺序梳理,转载请注明出处. 作者:sumjess 一.液晶概述: 液晶(LiquidCryst ...

  4. 第七讲:串口通讯原理及操作流程(郭天祥)

    说明:此文章仅是我学习过程中的一些记录,如有侵权,请联系我删除,文章中难免有遗漏错误之处,欢迎指出. 目录 一.计算机串行通信基础 1.并行通信 2.串行通信 ①异步通信 ②同步通信(了解即可) ③串 ...

  5. 郭天祥:我的大学六年

    在哈尔滨工程大学六年,我在学校电子创新实验室呆了四年,这四年里创新实验室给我提供了良好的学习环境和完善的实验设备:在与众多电子爱好者的交流中,使我学到了更多的专业知识:在学校老师们的教导下,让我学会了 ...

  6. 51单片机学习笔记(郭天祥版)(3)——引脚讲解、数码管静态显示、中断系统(外部中断,定时器中断)...

    学习引脚的功能 9引脚 复位管脚,当给2个机器周期(24个时钟振荡周期)的高电平时会复位,单片机正常工作时会给0.5v的低电平 VPD备用电源的输入端,当主电源VCC发生故障降低到某一规定的低电平时, ...

  7. 哈尔滨工程大学学生郭天祥六年非一般的大学

    致阅读本书的大学生朋友 在哈尔滨工程大学六年,我在学校电子创新实验室呆了四年,这四年里创新实验室给我提供了良好的学习环境和完善的实验设备:在与众多电子爱好者的交流中,使我学到了更多的专业知识:在学校老 ...

  8. 郭天祥六年非一般的大学--哈尔滨工程大学学生

    人才是被逼出来的,人才是可以逼出来的,需要的就是乐观的人生态度和一如既往的信念和毅力. 致阅读本书的大学生朋友 在哈尔滨工程大学六年,我在学校电子创新实验室呆了四年,这四年里创新实验室给我提供了良好的 ...

  9. 我的大学六年 郭天祥

    我的大学六年 郭天祥 2011-03-12 10:01 在哈尔滨工程大学五年,我在学校电子创新实验室呆了四年,这四年里创新实验室给我提供了良好的学习环境和完善的实验设备:在这里与众多电子爱好者的交流中 ...

  10. 我的大学六年--郭天祥

    如果你点击了,希望你能沉下心来看完 .也许和你的专业并没有关系,但对你的人生也许是个激励! 在哈尔滨工程大学五年,我在学校电子创新实验室呆了四年,这四年里创新实验室给我提供了良好的学习环境和完善的实验 ...

最新文章

  1. Logical Volume Manager in Linux ( Create, Displ...
  2. 第十六届全国大学生智能汽车竞赛 英飞凌芯片申请情况
  3. 5G NGC — GTPv1-U 协议的扩展
  4. 解析Python中的条件语句和循环语句
  5. Python入门学习---第二天
  6. CSDN如何居中对齐
  7. administrator自动登录桌面
  8. Amount Format in SAP Fiori Opportunity
  9. Java锤子剪刀布大家应该都会玩“锤子剪刀布”的游戏: 现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
  10. 最大数max(x,y,z)(信息学奥赛一本通-T1152)
  11. tslib-1.4.tar.gz安装和配置
  12. frameset标签设计页面
  13. 觉得清楚,跟说清楚写清楚,两回事
  14. MATLAB2017安装VLFeat
  15. CSS 标签权重判断的方式
  16. 用友ERP实施流程(不是本人所写,只是个搬运工!)
  17. 图神经网络在知识图谱中的应用
  18. 生鲜电商之百果园的未来
  19. 2016级移动应用开发在线测试13-Location、Sensor Network
  20. Deeplung代码复现(一)

热门文章

  1. lingo入门教程之二 --- 集合运用
  2. 无觅相关文章插件主页新版推出
  3. excel工具栏隐藏了怎么办_办公丨Excel表格新手入门基本操作技巧
  4. com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)
  5. 移动硬盘在Windows和Mac上同时使用的巨坑
  6. ORACLE Subtype
  7. cad怎么画立体图形教学_CAD怎么画三维图形? cad绘制立体的室内装修图的教程
  8. 任意7个数字,选出5个进行组合排列,并使用Excel打印组合的所有情况。
  9. CAD单行文本数字求和
  10. 我家云刷机omv如何更改设置文件夹权限