LEDs
这可能是最古老、最简单的液晶屏了,型号是1602A,它是上世纪80的产物,但是直到现在它还是非常受欢迎,在很多设备上都可以看到它的身影。
接下来我们就来讲一下这种屏幕是如何工作的。
这是它显示的图案,如果放大来看,会发现它的像素就是一个个的小方块。
如果我们让它的像素全部显示出来是这样的。
它横着有16个这样的区域,竖着有两个,所以这种屏幕的型号是1602。
每一个区域横着数有5个像素,竖着数有7个像素,每个区域就是35个像素,所以整个屏幕就是1120个像素。
那这个玩意儿是怎么控制这1000多个像素的呢?
要搞明白这个问题,我们首先要知道它的一个像素是怎么控制的。
屏幕的最下面是一层LED背光板,当我们给它接上电,它就可以发光。
在它的上面有一层液晶,每一个像素都是由一小块液晶来控制的。
当我们不给液晶施加电压,它几乎是完全透明的。
而当我们给某一小块液晶施加电压之后,它就不透光了,因此形成了一个的小黑点,也就是我们看到的像素点。
因为不需要色彩显示,所以只需要让液晶介于透光和不够光两种状态之间就可以,我们只需要控制液晶的高低电压,就能控制一个像素点了。
如果是控制一个像素点,那很简单,让微控制器的引脚直接控制液晶的电压就可以了。
但是面对1120个像素点,微控制器就力不从心了。
因为一般的微控制器引脚数量有限,没办法控制1000多块液晶。
针对这个疼点,聪明的人类开发了一个
显示芯片HD44780U,它有80个引脚。
这样我们只需要要把要发送的东西丢给这个芯片,它就能控制液晶屏的像素点了,极大的方面了我们的编程工作,形象一点来说,这个显示芯片其实充当着计算机当中显卡的角色。
可以看一下1602屏的背面,这个大黑点里面封装的就是HD4478U芯片。采用这种封装能节省成本。
1602上有16个引脚,它的数据引脚有8个。
通过这些引脚我们就能控制LCD屏幕了。
因为一块区域只有35个像素,所以它只能显示数字、字母和符号这些简单的信息,一共能显示240个字符。不能显示汉字。
这些字符基本上都是通过ascii码进行编码的,只需要8位0或者1的排列组合,就能表示这
就能表述这些字符。所以它的数据引脚正好也是是8根线。
比如大写字母A的ASCLL码是0100 0001,那我们只需要让微控制器的这8个引脚分别输出相应的高低电平就可以了。
但是我们还没有指定这个大写字母A要发到哪一块区域。
因此HD44780U为每一块区域都设计了一个字节的DRAM(内存),这个DRAM就相当于我们现在显卡的显存,可以对比一下,Nvidia最新旗舰显卡4090显存是24GB。
而我们这块显示芯片一共也才80个字节。可以横着显示40个字符,竖着显示两个字符。所以它可以同时控制80个字符。
我们看LCD屏幕一共也才能显示32个字符,那这个芯片为什么能控制80个字符呢?
因为这个HD44780U芯片是通用芯片,不单单是用来控制这一种规格的屏幕。
如果用来控制1602的话,它的显存永远都是有48字节用不到的。
在微控制器给它发送数据之前,都需要先发送显存的地址,然后再发送数据,这样数据就会被保存在相应的显存里面。
比如我们想让第一块区域显示A,就需要先发送第一块显存的地址,然后再发送A的ASCLL码。这样就能在第一块区域显示A了。
这就是我们微控制器的编程思路,因为有这个显示芯片的存在,让编程变的简单了很多。
那这个显示芯片又是怎么控制这块LCD屏幕的呢。
这是HD44780U的引脚分布图,直接控制液晶像素点的是这些引脚,COM引脚控制横向像素,SEG引脚控制纵向像素,比如我们控制A这个字符。就需要这些引脚分别输出不同的电压就可以了。
但还有一个问题,就拿第一块区域来说,这些引脚是没办法同时控制每一个像素的。
比如我们控制第一行的时候,先让COM端为低电压。然后再来控制它的SEG引脚,就能控制第一行的像素了,如果是显示像素就给这个引脚高电压,不显示就给它低电平。
但在同一时间就没有办法控制其它行的像素了。因此人们想到了扫描的控制方式,比如先控制第一行像素,然后再来控制第二行像素,这样逐行扫描,就能控制所有的像素了。
那这样我们人眼不就看到它一直在扫描了吗?
当然不会了,这里面运用了人眼的视觉暂留,它的扫描频率很快,所以我们看到的就是静止的画面。
但还有一个问题,你看它一共有40个SEG引脚,而一个字符纵向有5个像素点,这样的话它就只能控制纵向的8个区域,那另一半区域怎么控制呢?
刚才我们不是说它内置了80个字节的显存吗?那应该能控制80个字符呢?
现在怎么只能控制16个字符呢?
它确实能控制80个字符,但如果超过16个字符,就没有多余的引脚了,因此就得就得借助驱动电路。
你看这个1602的背面,除了主控HD44780U之外,还有一个HD44100H的驱动芯片,它就是来协助主控完成另一半的显示任务的。
这是它的引脚分布,它正好也有40个SEG引脚。
把它和主控连到一块,就可以控制LCD所有的像素了。
主控是通过串行方式给这个驱动芯片发送信息,然后这个驱动芯片就可以控制它引脚的状态了。
现在正好能控制的就是32个字符个字符。
如果我们给它再加3块驱动芯片,然后再换一款能显示80个字符的液晶屏,它就能控制80个字符了。
此时显示芯片HD44780U的性能正好被榨干了,就是再让它多控制一个像素都是不可能的,因为此时的显存已经满了。
这就是我对1602屏幕的理解,希望对你有帮助。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !