版主
主题
帖子
积分5343
阅读权限200
注册时间2009-8-26
最后登录1970-1-1
在线时间 小时
|
本帖最后由 bluefeel 于 2011-2-16 23:44 编辑
很多人都玩过液晶,不过大多都是玩带有驱动器控制器的,所以会对液晶显示的原理不太了解。
段式液晶是液晶里面最基础的,所以先从它开始。
液晶不像LED什么的可以用直流驱动,它是要用交流来驱动的。
以我手上的段式液晶来说,只要COM和SEG之间的电压为VDD或者-VDD,对应的段就会显示,其它电压不显示。IO不能输出VSS,VDD以外的电压,所以我用电阻分压和IO高阻来实现1/2偏压。但是不能一直维持一个电压不变,要不过会就会消失了,大概几个毫秒吧。所以我们用编程方法实现交流信号。
COM和IO的连接有电阻分压
SEG和IO直接相连就可以了。
STM32驱动示例
M48驱动示例
现在以M48为例说明:
段式液晶真值表:
___________________________________________________________
| _A_ | _A_ | _A_ | _A_ | _A_ | _A_ |
| F| |B | F| |B | F| |B | F| |B | F| |B | F| |B |
| |_G_| | |_G_| | |_G_| | |_G_| | |_G_| | |_G_| |
| E| |C | E| |C | E| |C | E| |C | E| |C | E| |C |
| |___| | |___| | |___| | .|___| | .|___| | .|___| |
| D | D | D | P D | P D | P D |
|_________|_________|_________|_________|_________|_________|
PD0..PD1..PD2..PD3.................PD7..PB0.............PB3
--------------------------------------------------------------------
| | S0 | S1 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9 | S10| S11|
--------------------------------------------------------------------
PC0 | COM0 | 0D | | 1D | | 2D | | 3D | 3P | 4D | 4P | 5D | 5P |
--------------------------------------------------------------------
PC1 | COM1 | 0E | 0C | 1E | 1C | 2E | 2C | 3E | 3C | 4E | 4C | 5E | 5C |
--------------------------------------------------------------------
PC2 | COM2 | 0G | 0B | 1G | 1B | 2G | 2B | 3G | 3B | 4G | 4B | 5G | 5B |
--------------------------------------------------------------------
PC3 | COM3 | 0F | 0A | 1F | 1A | 2F | 2A | 3F | 3A | 4F | 4A | 5F | 5A |
--------------------------------------------------------------------
| 0 | 1 | 2 | 3 | 4 | 5 |
一个LCD字符根据以下矩阵编码:
{ D , }
{ E , C }
{ G , B }
{ F , A }
例如字符2:
{ 1 , 0 }
{ 1 , 0 }
{ 1 , 1 }
{ 0 , 1 }
= 7 C
=> '2' = 0xC7
IO输出高低电平时候COMx为对应电平,IO高阻输入时COMx为电阻分压,即VDD/2
VDD
|
-
| |
| | 1M or other value
| |
-
|
IO ------------+------------ to LCD COMx
|
-
| |
| | 1M or other value
| |
-
|
GND
COMx有效时候IO输出低电平或者高电平
COMx为低电平时在字符0处显示'2'的真值表:
------------------
| |SEG0|SEG1|
------------------
| COM0 | 1 | 0 |
------------------
| COM1 | 1 | 0 |
------------------
| COM2 | 1 | 1 |
------------------
| COM3 | 0 | 1 |
------------------
7 C
COMx为高电平时在字符0处显示'2'的真值表:
------------------
| |SEG0|SEG1|
------------------
| COM0 | 0 | 1 |
------------------
| COM1 | 0 | 1 |
------------------
| COM2 | 0 | 0 |
------------------
| COM3 | 1 | 0 |
------------------
~7 ~C
字符0处显示'2'的时序图:
0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3
|COM0有效 |COM1有效 |COM2有效 |COM3有效 |COM0有效 |
_ _
COM0 | | _ _ _ _ _ _ | |
_____| |__| |__| |__| |__| |__| |__| |_______| |__
_
COM1 _ _ | | _ _ _ _ _ _
| |__| |_______| |__| |__| |__| |__| |__| |__| |__
_
COM2 _ _ _ _ | | _ _ _ _
| |__| |__| |__| |_______| |__| |__| |__| |__| |__
_
COM3 _ _ _ _ _ _ | | _ _
| |__| |__| |__| |__| |__| |_______| |__| |__| |__
_ _ _ _ _
SEG0 | | | | | | | | | |
| |_______| |_______| |____________| |__| |_______
_ _ _ _ _
SEG1 | | | | | | | | | |
_____| |_______| |__| |_______| |____________| |__
图中如0和1、2和3位置代表两个波形周期。0或2为前半周期,COMx为高低电平,SEGx和COMx
之间的电平为VDD、-VDD时候对应的段显示,电平为0或VDD/2、-VDD/2时不显示。1或3为后半
周期,所有COM和SEG都为低电平,所有的段灭。当前半周期等于后半周期时候,就是1/2占空
比,调节占空比可以调节对比度。
先说这么多,放上程序:
Glass_LCD_STM32.rar
(74.6 KB, 下载次数: 1874)
Glass_LCD_M48.rar
(25.92 KB, 下载次数: 1591)
Glass_LCD_M16.rar
(27.92 KB, 下载次数: 1710)
程序有比较好的移植性,大家可以移植到其它单片机,只要IO有推挽和高阻状态就可以。
用IO驱动比用控制器更省电,更省成本,希望有人可以做出用水果供电的应用 |
|