BL55072/BL55075 应用笔记

BL55072

1、特点

液晶驱动输出:Common 输出 4 线,Segment 输出 36 线
内置显示寄存器 36*4=144bit
2 线串行接口(SCL,SDA)
内置震荡电路
内置液晶驱动电源电路
1/3 Bias, 1/2 Bias 1/4 Duty
内置 Buffer AMP
不需要外部元件
低功耗设计
内置上电复位电路
搭载闪烁功能
VDD 电压范围 2.5V~5.5V
高抗 EMC 性能
TSSOP48 封装

2、管脚编号

20200107113829.png

3、功能描述

1、功能电路
BL55072内部集成了LCD驱动器所必需的所有功能电路。这些电路包括:LCD
偏置电压发生器、LCD电压选择器、内部时钟(OSC =25.6KHz)、显示寄存器、段
/背极输出电路、I2C串行接口、上电复位电路和显示控制电路。

2、显示驱动原理
BL55072有36个段输出SEG0--SEG35和4个背极输出COM0—COM3,它们和
LCD直接相连,当少于36个段输出应用时,不用的段可以空出。BL55072采用1/4背
极输出1/3偏置电压或者1/2偏置电压显示方式。

3、显示内容和寄存器地址之间的关系可见下表
20200107113904.png
4、I2C 写入数据方式:
20200107113927.png
5、I2C通讯方式
如图所示:发送第一个起始条件后,紧接着发送BL55072地址
(01111100),然后发送指令和显示数据,指令字节中的最高位“C”用以标明是否
是最后一个指令字节,当C=“1”时表示后面的字节仍是指令字节;当C=“0”时则
表明该字节为最后一个指令字节。最后一个指令字节之后为一系列显示数据字节
(DISPLAY DATA),这些显示数据存放在显示寄存器中,由数据指针和子地址
计数器指示的地址上。数据指针和子地址计数器可自动变更,数据直接装载到
BL55072上,A是每个字节之后的应答位,在主控器发送完最后一个字节后产生
一个终止条件P。
20200107114001.png

参考代码如下所示:

void SEG_IIC_Start()
{
    SEG_SDI_1;
    SEG_CLK_1;
    delay_ms(1);
    SEG_SDI_0;  
    delay_ms(1);    
    SEG_CLK_0;  
}
void SEG_IIC_Stop()
{
    SEG_SDI_0;
    SEG_CLK_0;
    __nop();  
    SEG_SDI_1;  
    delay_ms(1) ;      
    SEG_CLK_1;  
}

void SEG_IIC_WriteByte(int8_t input)
{
    int8_t temp;
    for(temp=8;temp!=0;temp--)
    {
        if((input&0x80)!=0)
        {
            SEG_SDI_1;
        }
        else
        {
            SEG_SDI_0;
        }        
        __nop();;
        SEG_CLK_1;
        delay_ms(1);
        SEG_CLK_0;
        input=input<<1;
        __nop();
    }
    SEG_SDI_1;  
    SEG_SDI_IN;
    SEG_CLK_1;
    delay_ms(1);
    SEG_CLK_0;  
    SEG_SDI_OUT;
}
4、控制命令

BL55072 共有 6 个控制命令字。命令和数据都是以字节的形式发送到
BL55072,它们的区别在于传送字节的最高位 C,当 C=1 时表示其后传送的字节仍
是命令;C=0 表示其后传送的字节是最后一个命令,接下来传送的是一系列数据。
下面列出了 BL55072 的 6 个命令字:
MODE SET

Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
ValueC10#displaybias##
defaultC10#00##

[3] Display on and off
0 – Display off (default)
1 – Display on
[2] Bias control
0 –1/3 bias (default)
1 – 1/2 bias
ADSET

Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
ValueC00Addr[4:0]
defaultC0000000

地址寄存器设置,
该寄存器用于写数据前设置数据的起始地址,或者读数据/command 前设置读取
数据/command 的地址。
读写数据地址范围为 000H~011H,写数据时如果初始地址大于 11H,则写入数
据对应到地址 00H 中。若在写入初始地址后,不断写入数据,当写入数据超过
36*4 时,数据被重新写入到初始地址中。

DISCTL

Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
ValueC01FR[1:0]FR[1:0]P2SR[1:0]SR[1:0]
defaultC1100010

显示控制
[4:3]: frame frequency control (FR)
00 - 80Hz (default)
01 - 71Hz
10 - 64Hz
11 - 50Hz
[2]: LCD Drive Mode control
0 – Line inversion mode (default)
1 – Frame inversion mode
[1:0]: power save mode control (SR)
00 – power save mode 1
01 – power save mode 2
10 – normal mode (default)
11 – high power mode

ICSET

Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
ValueC1101#softrstoscmode
DefaultC1101#00

芯片设置
[1]:software reset
0 – no operation (default)
1 – software reset
[0]:oscillator mode control
0 – inner oscillator (default) : OSCIN pin connected to VSS pin.
1 – outside oscillator : OSCIN pin connected to outside clock signal(32.768KHz).

BLKCTL
| | Bit7| Bit6|Bit5| Bit4| Bit3 | Bit2 | Bit1 | Bit0 |
|-----| ----| ----|----| ----| -----| ---- | ----- | ---- |
|Value| C | 1 | 1 | 0 | 1 | # |softrst|oscmode|
|Default |C|1 |1 |0 |1 |# |0 |0 |

闪烁控制
[1:0] blinking control
00 – blinking off
01 – 0.25 Hz
10 – 0.5Hz
11 – 1 Hz

APCTL
| | Bit7| Bit6|Bit5| Bit4| Bit3 | Bit2 | Bit1 | Bit0 |
|-----| ----| ----|----| ----| -----| ---- | ----- | ---- |
|Value| C | 1 | 1 | 1 | 1 | 1 | Apon | Apoff|
|Default |C|1 |1 |1 |1 |1 |0 |0 |
全亮全暗控制,该寄存器只有在 display on 时才起作用;
[1]:all pixel ON control
0 – normal (default)
1 – all pixel on
[0]:all pixel OFF control
0 – normal (default)
1 – all pixel off
当 apon 和 apoff 都为 1 时,则显示全暗,即 apoff 的优先级高于 apon

5.BL55072的典型应用电路

20200107114126.png

6、实现代码
void SEG_Init(void)
{
    bsp_gpio_config(SEG_CLK_PORT,SEG_CLK_PIN,GpioWrite);
    bsp_gpio_config(SEG_SDI_PORT,SEG_SDI_PIN,GpioWrite);
    SEG_IIC_Start();
    SEG_IIC_WriteByte(0x7C);
    SEG_IIC_WriteByte(0xE8); // 退出休眠
    SEG_IIC_WriteByte(0xC8); // 方式设定C8
    SEG_IIC_WriteByte(0xF0); // 闪烁控制
    //SEG_IIC_WriteByte(0xE0); // 器件选择
    SEG_IIC_WriteByte(0x00); // 数据指针
    for(int i=0;i<18;i++) 
    {
        SEG_IIC_WriteByte(0x00);//
    }
    SEG_IIC_Stop();
}

void SEG_Clear(void)
{
    bsp_gpio_config(SEG_CLK_PORT,SEG_CLK_PIN,GpioWrite);
    bsp_gpio_config(SEG_SDI_PORT,SEG_SDI_PIN,GpioWrite);
    SEG_IIC_Start();
    SEG_IIC_WriteByte(0x7C);
    SEG_IIC_WriteByte(0xE8); // 退出休眠
    SEG_IIC_WriteByte(0xC8); // 方式设定C8
    SEG_IIC_WriteByte(0xF0); // 闪烁控制
    //SEG_IIC_WriteByte(0xE0); // 器件选择
    SEG_IIC_WriteByte(0x00); // 数据指针
    for(int i=0;i<18;i++) 
    {
        SEG_IIC_WriteByte(0x00);//
    }
    SEG_IIC_Stop();
}


// 7C FF C8 EA B6 E8
void SEG_WriteBuffer(char * buffer)
{
    SEG_IIC_Start();
    SEG_IIC_WriteByte(0x7C);
    SEG_IIC_WriteByte(0xE8); // 退出休眠
    SEG_IIC_WriteByte(0xC8); // 方式设定C8
    SEG_IIC_WriteByte(0xF0); // 闪烁控制
    //SEG_IIC_WriteByte(0xE0); // 器件选择
    SEG_IIC_WriteByte(0x00); // 数据指针
    for(int i=0;i<18;i++) 
    {
        SEG_IIC_WriteByte(buffer[i]);//
    }
    SEG_IIC_Stop();
    
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值