找回密码
 请使用中文注册

手机号码,快捷登录

手机号码,快捷登录

查看: 565|回复: 0

再简单的屏幕也需要显卡!让你彻底看懂LCD屏的控制原理!

[复制链接]
阅读字号:

1356

主题

50

回帖

2万

积分

超级版主

积分
26939
发表于 2023-8-7 16:17:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?请使用中文注册

×
这可能是最古老、最简单的液晶屏了,型号是1602A,它是上世纪80的产物,但是直到现在它还是非常受欢迎,在很多设备上都可以看到它的身影。

aac25df06d7eb09252c4c7c70f0449e0.jpg
接下来我们就来讲一下这种屏幕是如何工作的。
这是它显示的图案,如果放大来看,会发现它的像素就是一个个的小方块。

f0b90d988c661ea0e243b4e1a1f0d520.png
如果我们让它的像素全部显示出来是这样的。
它横着有16个这样的区域,竖着有两个,所以这种屏幕的型号是1602。
每一个区域横着数有5个像素,竖着数有7个像素,每个区域就是35个像素,所以整个屏幕就是1120个像素。

171b96715a8e246e7964e1229b0421b6.png
那这个玩意儿是怎么控制这1000多个像素的呢?
要搞明白这个问题,我们首先要知道它的一个像素是怎么控制的。
屏幕的最下面是一层LED背光板,当我们给它接上电,它就可以发光。
在它的上面有一层液晶,每一个像素都是由一小块液晶来控制的。
当我们不给液晶施加电压,它几乎是完全透明的。
而当我们给某一小块液晶施加电压之后,它就不透光了,因此形成了一个的小黑点,也就是我们看到的像素点。

c553e3da908ac7c682a8e845c5328c1c.png
因为不需要色彩显示,所以只需要让液晶介于透光和不够光两种状态之间就可以,我们只需要控制液晶的高低电压,就能控制一个像素点了。
如果是控制一个像素点,那很简单,让微控制器的引脚直接控制液晶的电压就可以了。

0e77a4a01af558f805d2079a20d0bb5a.png
但是面对1120个像素点,微控制器就力不从心了。
因为一般的微控制器引脚数量有限,没办法控制1000多块液晶。
针对这个疼点,聪明的人类开发了一个
显示芯片HD44780U,它有80个引脚。

fd175f8a84114ff7cc46e6ea8c3220cf.png
这样我们只需要要把要发送的东西丢给这个芯片,它就能控制液晶屏的像素点了,极大的方面了我们的编程工作,形象一点来说,这个显示芯片其实充当着计算机当中显卡的角色。
可以看一下1602屏的背面,这个大黑点里面封装的就是HD4478U芯片。采用这种封装能节省成本。

3d40f1d3f2eb5010d0c158cc3ff0084a.png
1602上有16个引脚,它的数据引脚有8个。

28bc550fc30bcd5fa69e8b7d4f319bed.png
通过这些引脚我们就能控制LCD屏幕了。
因为一块区域只有35个像素,所以它只能显示数字、字母和符号这些简单的信息,一共能显示240个字符。不能显示汉字。

ed89c415086f86043e6390aa0668a815.png
这些字符基本上都是通过ascii码进行编码的,只需要8位0或者1的排列组合,就能表示这
就能表述这些字符。所以它的数据引脚正好也是是8根线。
比如大写字母A的ASCLL码是0100 0001,那我们只需要让微控制器的这8个引脚分别输出相应的高低电平就可以了。
但是我们还没有指定这个大写字母A要发到哪一块区域。
因此HD44780U为每一块区域都设计了一个字节的DRAM(内存),这个DRAM就相当于我们现在显卡的显存,可以对比一下,Nvidia最新旗舰显卡4090显存是24GB。
而我们这块显示芯片一共也才80个字节。可以横着显示40个字符,竖着显示两个字符。所以它可以同时控制80个字符。

740d52bfcd623d6ef55749e97b188e96.png
我们看LCD屏幕一共也才能显示32个字符,那这个芯片为什么能控制80个字符呢?
因为这个HD44780U芯片是通用芯片,不单单是用来控制这一种规格的屏幕。
如果用来控制1602的话,它的显存永远都是有48字节用不到的。
在微控制器给它发送数据之前,都需要先发送显存的地址,然后再发送数据,这样数据就会被保存在相应的显存里面。
比如我们想让第一块区域显示A,就需要先发送第一块显存的地址,然后再发送A的ASCLL码。这样就能在第一块区域显示A了。

6b94abc819dea624e907ceb3b8e8d74e.png
这就是我们微控制器的编程思路,因为有这个显示芯片的存在,让编程变的简单了很多。
那这个显示芯片又是怎么控制这块LCD屏幕的呢。

06fb93ae48e30813865d7036ce6c19a7.png
这是HD44780U的引脚分布图,直接控制液晶像素点的是这些引脚,COM引脚控制横向像素,SEG引脚控制纵向像素,比如我们控制A这个字符。就需要这些引脚分别输出不同的电压就可以了。
但还有一个问题,就拿第一块区域来说,这些引脚是没办法同时控制每一个像素的。
比如我们控制第一行的时候,先让COM端为低电压。然后再来控制它的SEG引脚,就能控制第一行的像素了,如果是显示像素就给这个引脚高电压,不显示就给它低电平。
但在同一时间就没有办法控制其它行的像素了。因此人们想到了扫描的控制方式,比如先控制第一行像素,然后再来控制第二行像素,这样逐行扫描,就能控制所有的像素了。
那这样我们人眼不就看到它一直在扫描了吗?
当然不会了,这里面运用了人眼的视觉暂留,它的扫描频率很快,所以我们看到的就是静止的画面。
但还有一个问题,你看它一共有40个SEG引脚,而一个字符纵向有5个像素点,这样的话它就只能控制纵向的8个区域,那另一半区域怎么控制呢?
刚才我们不是说它内置了80个字节的显存吗?那应该能控制80个字符呢?
现在怎么只能控制16个字符呢?
它确实能控制80个字符,但如果超过16个字符,就没有多余的引脚了,因此就得就得借助驱动电路。
你看这个1602的背面,除了主控HD44780U之外,还有一个HD44100H的驱动芯片,它就是来协助主控完成另一半的显示任务的。

93f4d9ff0aff879fdf2493701f364f1b.png
这是它的引脚分布,它正好也有40个SEG引脚。

113f1b9d056db8687d7eb0bb1e1b1bcc.png
把它和主控连到一块,就可以控制LCD所有的像素了。

e930f3dd177422802cc3b3d940f702bc.png
主控是通过串行方式给这个驱动芯片发送信息,然后这个驱动芯片就可以控制它引脚的状态了。
现在正好能控制的就是32个字符个字符。

acb86eaa2aa5e53317918288d6f101ef.png
如果我们给它再加3块驱动芯片,然后再换一款能显示80个字符的液晶屏,它就能控制80个字符了。

d1aebc9effec07dff0a540442bb2deea.png

691c55e1e445efcf66c843b5ea9719f8.png
此时显示芯片HD44780U的性能正好被榨干了,就是再让它多控制一个像素都是不可能的,因为此时的显存已经满了。
这就是我对1602屏幕的理解,希望对你有帮助。
您需要登录后才可以回帖 登录 | 请使用中文注册

本版积分规则

QQ|Archiver|手机版|家电维修论坛 ( 蜀ICP备19011473号-4 川公网安备51102502000164号 )

GMT+8, 2025-5-1 10:39 , Processed in 0.191532 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表