lcd1602只显示一排方块_(记录)51单片机——LCD1602液晶显示模块

f1e5570635a76a89e76194a656f3c416.png

(用LCD1602做个温度显示装置)

https://zhuanlan.zhihu.com/p/145666965​zhuanlan.zhihu.com
zhihu-card-default.svg

LCD1602液晶显示模块

原理部分

5a260b378baa1ff269cbb5942e17f1ef.png

3a33433c65250b3cfe699cbf218cc332.png
引脚说明

第4引脚: 低电平选择指令寄存器(即在哪个位置显示(共32个位置))

高电平选择数据寄存器(即显示什么字符);

f485b48ce2555251d7bc1ef1d0ca4f0e.png

72ced8243e91a2a01d1777d41837f2ba.png
80H+地址码=指令码

省略的地方留给整屏左/移动

b3617576f02469ca4de83ed76cf10b42.png

7225326a7b8cfb8b294da28ac31d1c22.png

eg: A对应 0x41

7a62febf06cbceaa18968df957ef5681.png

·时序图分析

BD0--BD7 (8位数据)双向数据总线,通常是P0。然后向P0的8个引脚写命令和数据

eg: #define DATAPINS P0

...

void lcd_write_com(unsigned char com)

{

...

DATAPINS=com;

}

void lcd_write_data(unsigned char dat)

{

....

DAPAPINS=dat;

}

上升沿/下跳沿最大25ns,所以单片机延时应大于25ns,可写1ms

c54206ea2de18fd8baf4fde23a2419ee.png
时序图(配置 写命令/写数据 函数)

89607c1a25d934667407f843f04f78d3.png

46eea7cb61b9d6f59fc4c077ab982c8d.png

·输入指令前

通常输入指令前要判断液晶模块是否处于忙状态。(可不用判断,因为单片机执行速度与1602写入速度有差别, 1602写入速度>单片机执行速度,所以写入之前 上一次数据已经处理完)

DDRAM:显示数据RAM,用来寄存待显示的字符代码,共80字节

0534d18638cd5e365d045ea572bae26d.png
DDRAM地址和屏幕对应关系

72ced8243e91a2a01d1777d41837f2ba.png
RAM地址映射图

写入显示地址是最高位D7恒为高电平,所以要+80H

·原理图

fbbd61b16cbd6be2a06eb2d91022e6f0.png

be70eaa0de558d712f76b512ebb5392e.png

·清屏指令

4a83252cc7e185edd01c263ad0026b2d.png

·模式设置指令(光标移动方向/滚动显示)

40fbc172c83b24caba86671d3ed1c589.png

DB1:I/D DB1=0 写入数据后光标左移;DB1=0 写入数据后光标右移

DB0:S 可用于滚动显示

·显示开关控制指令(显示、光标、光标闪动)

bc132dcfc0001b582ebaed92a9c9b175.png

·功能设定指令(总线位数、显示行数、57 / 5*10)

78fd02be863c04604c3650e1e374e2c6.png

7f7be71c9fae4c54acf81856bf7121f2.png
总结图

8abe20f01e71b6675447bf83848b4a3a.png

85300ee536006db6ddc11986c1abe88f.png

·DATAPINS

1、初始化之前需要编写‘写命令操作’。

对于WriteCom(),由前面知道,写操作需要RW为低电平即‘0’,并且通过使RS为低电平即‘0’来选择命令寄存器,才能写入命令到DATAPINS。另外,每次命令输入DATAPINS就位后,令使能信号产生一个下降沿,将DATAPINS的命令写进LCD1602

7e062e300e5a71d3e4b9c160c6c6b7cc.png

2.‘写数据操作’也类似,不同之处是RS为高电平即‘1’选择数据寄存器,将数据写入DATAPINS,其他都一样。

633a1fbd308a80f5d42272f4a0e2301d.png

·初始化函数

acc39c63cc098c6f3ca646fd758a9133.png

ed8e5392f54aa6f1af2e2352682d7b0c.png

仿真部分

1、proteus中的LCD1602,并不是叫这个名知,而是叫LM016L

2、ADC0808芯片的CLOCK端加的脉冲频率最好为500K(听其他大神这样说的)

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值