(证明学过,以示纪念)

所谓1602就是每行可以显示16个字符,可以显示两行。1602液晶在工业中使用比较广泛,其基本都采用的是HD44780控制器,或者兼容该指令集,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。其实主要会看时序图就可以了。

1.1602字符LCD指标

注:工作电流是指液晶的耗电,没有考虑背光耗电。一般情况下,背光耗电大约为20mA。

2.引脚与功能

注:

3.1602字符LCD内部显存

1602液晶内部包含80个字节的显示RAM,用于存储需要发送的数据,第二行存储器地址范围为0x40~0x67。其中,第行存储器地址范围0x00~0x0F与1602字符LCD第一行位置对应;第二行存储器地址范围0x40~0x4F与1602字符LCD第二行位置对应,每行多出来的部分是为了显示移动字幕。

4.读写时序

 

5.1602的指令集

https://www.cnblogs.com/aslmer/p/5801363.html

6.读写的流程

7.代码演示

  1. #include<reg51.h>
  2. sbit P1_0 = P1 ^ ;
  3. sbit P1_1 = P1 ^ ;
  4. sbit P1_2 = P1 ^ ;
  5. #define LCDPORT P2
  6. #define RSCLR P1_0=0 //P1_0 接的是RS 寄存器 ,RS=1 : 数据寄存器 RS=0 指令寄存器
  7. #define RSSET P1_0=1
  8. #define RWCLR P1_1=0 //P1_1 接的是RW寄存器 , RW=1: 读数据 RW=0 写数据
  9. #define RWSET P1_1=1
  10. #define ENCLR P1_2 =0 //P1^2 接的是EN 使能寄存器 写时下降沿 读时 高电平有效
  11. #define ENSET P1_2=1
  12. void lcd_delay(unsigned char delayTime)
  13. {
  14. while (delayTime)
  15. {
  16. delayTime--;
  17. }
  18. }
  19.  
  20. void wrirte_lcd_command(unsigned char write_command)
  21. {
  22. lcd_delay();
  23. RSCLR;
  24. RWCLR;
  25. ENCLR; //使能 ,下降沿触发
  26. LCDPORT = write_command;
  27. ENSET;
  28. ENCLR;
  29. }
  30. void write_lcd_data(unsigned char write_data)
  31. {
  32. lcd_delay();
  33. LCDPORT = write_data;
  34. RSSET;
  35. RWCLR;
  36. ENSET;
  37. ENCLR;
  38.  
  39. }
  40. void initlize_lcd(void)
  41. {
  42. unsigned char i;
  43. ; i > ; i--) lcd_delay();
  44. wrirte_lcd_command(0x3f); //表明数据总线是8位,字体大小是5*10的字体
  45. ; i > ; i--) lcd_delay();
  46. wrirte_lcd_command(0x3f); //表明数据总线是8位
  47. wrirte_lcd_command(0x0f); //打开显示,打开光标,并且显示。
  48. wrirte_lcd_command(0x01); //将地址计数器(AC)设为00H,DDRAM内容保持不变,光标移至左上脚
  49. ; i > ; i--) lcd_delay(); //进入模式设置指令(Entry Mode Set)
  50. wrirte_lcd_command(0x06); //光标右移,关闭整体移动。
  51. }
  52. void lcd_display(unsigned char x, unsigned char y, const unsigned char *str)
  53. {
  54. switch (x)
  55. {
  56. :
  57. wrirte_lcd_command(0x80 + y); break;
  58. :
  59. wrirte_lcd_command(0xc0 + y); break;
  60. }
  61. while (*str)
  62. {
  63. write_lcd_data(*str);
  64. str++;
  65. }
  66. }
  67. const unsigned char lcddisplay_row1[] = { "sp-02122" };
  68. const unsigned char lcddisplay_row2[] = { "hahahaaha" };
  69. void Delay(unsigned int t)
  70. {
  71. while (t)t--;
  72. }
  73. void main(void)
  74. {
  75. unsigned char i;
  76. initlize_lcd();
  77. wrirte_lcd_command(0x80);//从第一行开始写
  78. ; i > ; i--)
  79. {
  80. write_lcd_data(i + 'A');
  81. Delay();
  82. Delay();
  83. }
  84. wrirte_lcd_command(0xc0);//改到第二行写
  85. ; i > ; i--)
  86. {
  87. write_lcd_data(i + 'a');
  88. Delay();
  89. Delay();
  90. }
  91. lcd_display(, , lcddisplay_row1);
  92. Delay();
  93. Delay();
  94. lcd_display(, , lcddisplay_row2);
  95. );
  96. }

基于preteus的1602液晶显示器的学习(LM016L)的更多相关文章

  1. 基于STM32的USB枚举过程学习笔记

    源:基于STM32的USB枚举过程学习笔记 基于STM32的USB枚举过程学习笔记(一) 基于STM32的USB枚举过程学习笔记(二) 基于STM32的USB枚举过程学习笔记(三) 基于STM32的U ...

  2. Android应用---基于NDK的samples例程hello-jni学习NDK开发

    Android应用---基于NDK的samples例程hello-jni学习NDK开发 NDK下载地址:http://developer.android.com/tools/sdk/ndk/index ...

  3. 基于jquery的插件turn.js学习笔记

    基于jquery的插件turn.js学习笔记 简介 turn.js是一个可以实现3d书籍展示效果的jq插件,使用html5和css3来执行效果.可以很好的适应于ios和安卓等触摸设备. How it ...

  4. StreamDM:基于Spark Streaming、支持在线学习的流式分析算法引擎

    StreamDM:基于Spark Streaming.支持在线学习的流式分析算法引擎 streamDM:Data Mining for Spark Streaming,华为诺亚方舟实验室开源了业界第一 ...

  5. 基于搜索的贝叶斯网络结构学习算法-K2

    基于搜索的贝叶斯网络结构学习算法-K2 2018-04-05 19:34:18 ItsBlue 阅读数 3172更多 分类专栏: 贝叶斯网络 网络结构学习   版权声明:本文为博主原创文章,遵循CC ...

  6. [炼丹术]基于SwinTransformer的目标检测训练模型学习总结

    基于SwinTransformer的目标检测训练模型学习总结 一.简要介绍 Swin Transformer是2021年提出的,是一种基于Transformer的一种深度学习网络结构,在目标检测.实例 ...

  7. 基于 Cmd MarkDown 的 markdown 语法学习

    首先我要打一个属于干货的广告:CmdMarkDown 是非常好用的markdown编辑器软件,支持全平台,由作业部落出品,分为客户端与WEB端两种使用场景. 本篇博客学习的markdown语法都是基于 ...

  8. Keras:基于Theano和TensorFlow的深度学习库

    catalogue . 引言 . 一些基本概念 . Sequential模型 . 泛型模型 . 常用层 . 卷积层 . 池化层 . 递归层Recurrent . 嵌入层 Embedding 1. 引言 ...

  9. 基于STM32的USB枚举过程学习笔记(转)

    之前使用ST官方的库以及网络的资料,完成了使用USB HID类进行STM32和PC机的通讯.由于其他原因并没有深入的分析,虽然实现了功能,但是关于USB设备的枚举,以及具体的通讯方式都没有清晰的概念, ...

随机推荐

  1. 公司内网静态IP,外网无线动态IP 同时上网,不必再切换网卡啦 route 命令给你搞定。

    一: 公司内网:192.168.55.101   255.255.255.0    192.168.55.1  网关 外网:192.168.20.101  255.255.255.0   192.16 ...

  2. DateFormat多线程使用问题

    reference DateFormat in a Multithreading Environment

  3. 浅谈fastDFS服务器

    FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题.FastDFS特别适合以文件为载体的 ...

  4. jquery实现复选框的全选、全不选、反选

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. keil5 配置 stm32f103rc 软件仿真

  6. Synchronized关键字与多线程

    在java中,每一个对象有且仅有一个同步锁.这也意味着,同步锁是依赖于对象而存在.当我们调用某对象的synchronized方法时,就获取了该对象的同步锁.例如,synchronized(obj)就获 ...

  7. EAC 抓取CD为AAC文件

    下载EAC v1.3 下载FAAC 安装完EAC以后进入主界面,选菜单EAC->compression option,如图: 选User Defined Encoder,选择之前解压好的faac ...

  8. 记数据结构MOOC-二叉树

    主要的学习内容 在本章中,主要学习了二叉树的实现以及各种遍历的方法.着重介绍了前序.中序.后序三种遍历方法的递归实现,同时也描述了前序中序遍历的迭代方法. 教材的主要内容 教材是以哈夫曼编码树为主要脉 ...

  9. 20155307 《Java程序设计》课堂实践项目MyOD

    一开始没理解老师的要求,交的截图是错误的. import java.io.FileInputStream; import java.io.IOException; import java.io.Inp ...

  10. 20155316 实验二《Java面向对象程序设计》实验报告

    实验1 实验内容 参考 博客 完成单元测试的学习 提交最后三个JUnit测试用例(正常情况,错误情况,边界情况)都通过的截图,截图上要有画图加水印,输入自己的学号 本提交点考查JUnit会不会使用,测 ...