MSP430单片机HT1261驱动LCD段码屏

去年帮人做的一个段码屏相关的开发,网上有关这方面的资料比较少,这里写一点自己的积累。

一、参考资料

(1)http://www.51hei.com/bbs/dpj-127088-1.html
(2)https://wenku.baidu.com/view/0b3e1e4f2b160b4e767fcf61.html(重点)
(3)https://blog.csdn.net/cxycao/article/details/77112984
(4)https://blog.csdn.net/qq_43188920/article/details/91511913

二、液晶段码屏主要参数
1.段电极SEG、公共极COM

一般段码屏有段电极和公共极,就像在图中,SEG为段电极,COM为公共极。段码屏中的每个段,都填充了一种特殊的液态晶体。在电场的作用下,晶体的排列方向会发生扭转,因而改变其透光性,从而可以看到显示的内容。一般电场电压就加在段电极和公共极的两端。
MSP430单片机HT1261驱动LCD段码屏

2.供电电压、偏压比(偏置比)Bias、占空比Duty

(1)占空比:1根COM线在扫描过程中所占的时间,假如一共用了2根COM线,Duty=1/2,假如一共用了3根COM线,Duty=1/3,假如一共用了4根COM线,Duty=1/4。
HT1621一共可驱动4根COM,占空比 Duty 取值范围是1/2或1/3或1/4。
(2)偏压比:偏压就是用于控制液晶偏转角度的电压,HT1621的偏压比 Bias 取值范围是1/2或1/3。当供电电压为3.3V,偏压比为1/3时,求得偏压为 3.3V*(1/3)=1.1V,代表 图1 中 SEG和COM之间的电压差值超过偏压1.1V时点亮。

三、HT1621的指令代码介绍

如下表为部分能用到的指令代码,其中:

1.指令 READ

指令“110a5a4a3a2a1a0d0d1d2d3”的前三位“110”代表读数据操作 READ,中间的“a5a4a3a2a1a0”为6位地址(高位在前,以二进制的0-31对应对应32个段电极SEG0-SEG31),最后的“d0d1d2d3”为4位数据(低位在前,每一位依次对应4个COM中的一个)。

2.指令 SYSEN

“100 0000 0001 x”,打开系统时钟,其中前三位“100”代表发出的是命令,取得控制权,中间的8位“00000001”换算成十六进制为0x01,固定代码指示打开系统时钟,最后一位“x”代表任意传入一位“0”或“1”。

3.指令 LCDOFF

“100 0000 0010 x”,关闭偏置发生器,其中前三位“100”代表发出的是命令,取得控制权,中间的8位“00000010”换算成十六进制为0x02,固定代码指示关闭偏置发生器,最后一位“x”代表任意传入一位“0”或“1”。

4.指令 LCDON

“100 0000 0011 x”,打开偏置发生器,其中前三位“100”代表发出的是命令,取得控制权,中间的8位“00000011”换算成十六进制为0x03,固定代码指示打开偏置发生器,最后一位“x”代表任意传入一位“0”或“1”。

5.指令 BIAS 1/2

“100 0010 abx0 x”,偏压比为1/2时使用,其中前三位“100”代表发出的是命令,取得控制权,中间的8位“0010abx0”中“ab”可取“00”或“01”或“10”,分别代表2个COM或3个COM或4个COM,最后一位“x”代表任意传入一位“0”或“1”。

6.指令 BIAS 1/3

“100 0010 abx1 x”,偏压比为1/3时使用,其中前三位“100”代表发出的是命令,取得控制权,中间的8位“0010abx1”中“ab”可取“00”或“01”或“10”,分别代表2个COM或3个COM或4个COM,最后一位“x”代表任意传入一位“0”或“1”。
MSP430单片机HT1261驱动LCD段码屏

四.本例中代码分析
1.本工程的段码屏参数

从下图可知,本液晶屏供电电压3.3V,占空比1/4,偏压比1/3,根据 三 中的分析,可得 使用指令 BIAS 1/3,其中占空比为1/4,即使用4个COM,得到“ab”为“10”,所以代码为“100 0010 10x1 x”,令“x”均为“0”,得到中间的8位指令为“0010 1001”,即为十六进制的“0x29”。
此处,如果使用指令 BIAS 1/2,其中占空比为1/4,即使用4个COM,得到“ab”为“10”,所以代码为“100 0010 10x0 x”,令“x”均为“0”,得到中间的8位指令为“0010 1000”,即为十六进制的“0x28”。
MSP430单片机HT1261驱动LCD段码屏

2.驱动设置

如下图定义的 BIAS为0x28,对应于偏压比为1/2,和给出的参数偏压比为1/3不符合,分析:
(1)提高偏压比,为了更好的对比度,呈现更好的显示效果;
(2)猜测调成0x29也能正常显示;
(3)按照博客 https://blog.csdn.net/qq_43188920/article/details/91511913中所说,“当液晶屏的工作电压小于4.5V时让客户做1/2偏压,此时液晶抖度大清晰度高,容易过法线。相反,若用1/3偏压垂直视角不清晰,且无法过法线。”
所以,为了更好的显示效果,#define BIAS 0x28。
MSP430单片机HT1261驱动LCD段码屏
3.根据 三 中的说明,指令 SYSEN,“100 0000 0001 x”,打开系统时钟,其中前三位“100”代表发出的是命令,取得控制权,中间的8位“00000001”换算成十六进制为0x01,最后一位“x”代表任意传入一位“0”或“1”,
所以 #define SYSEN 0x01。
4.根据 三 中的说明,指令 LCDOFF,“100 0000 0010 x”,关闭偏置发生器,其中前三位“100”代表发出的是命令,取得控制权,中间的8位“00000010”换算成十六进制为0x02,最后一位“x”代表任意传入一位“0”或“1”,
所以 #define LCDOFF 0x02。
5.根据 三 中的说明,指令 LCDON,“100 0000 0011 x”,打开偏置发生器,其中前三位“100”代表发出的是命令,取得控制权,中间的8位“00000011”换算成十六进制为0x03,最后一位“x”代表任意传入一位“0”或“1”,
所以 #define LCDON 0x03。

五、结合代码
1.发送3个命令 BIAS、SYSEN、LCDON,

(1)先发送“0x80”中的高3位数据,即“1000 0000”的高三位“100”,代表命令;
(2)再发送 BIAS、SYSEN、LCDON 对应的 8 位数据 0x28、0x01、0x02等代码,最后一位任意。
MSP430单片机HT1261驱动LCD段码屏
MSP430单片机HT1261驱动LCD段码屏

2.写单个地址的数据

(1)先发送“0xa0”中的高3位数据,即“1010 0000”的高三位“101”,代表写数据;
(2)再发送 写入地址 对应的 6 位数据,从高位到低位,“a5a4a3a2a1a0”,最后从低位向高位发送4位数据“d0d1d2d3”。
MSP430单片机HT1261驱动LCD段码屏

3.连续写地址数据(以连续写入6个数据为例)

(1)先发送“0xa0”中的高3位数据,即“1010 0000”的高三位“101”,代表写数据;
(2)再发送 初始写入地址对应的 6 位数据,从高位到低位,“a5a4a3a2a1a0”,最后从低位向高位连续6个发送8位数据“d0d1d2d3d4d5d6d7”。
MSP430单片机HT1261驱动LCD段码屏
MSP430单片机HT1261驱动LCD段码屏
MSP430单片机HT1261驱动LCD段码屏
欢迎关注:FPGA探索者
主做 FPGA 无线通信,Verilog设计,Vivado HLS,嵌入式
MSP430单片机HT1261驱动LCD段码屏