• 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、管脚编号

    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、显示内容和寄存器地址之间的关系可见下表

    4、I2C 写入数据方式:

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

    参考代码如下所示:

    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

    Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
    Value C 1 0 # display bias # #
    default C 1 0 # 0 0 # #

    [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

    Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
    Value C 0 0 Addr[4:0]
    default C 0 0 0 0 0 0 0

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

    DISCTL

    Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
    Value C 0 1 FR[1:0] FR[1:0] P2 SR[1:0] SR[1:0]
    default C 1 1 0 0 0 1 0

    显示控制
    [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

    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]: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的典型应用电路

    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();
    	
    }
    
  • 相关阅读:
    android studio你可能忽视的细节——启动白屏?drawable和mipmap出现的意义?这里都有!!!
    提升用户体验,你不得不知道的事儿——三种提醒框的微技巧
    【无私分享】修订版干货!!!一个炫酷的自定义日历控件,摆脱日历时间选择烦恼,纯福利~
    【无私分享】干货!!!一个炫酷的自定义日历控件,摆脱日历时间选择烦恼,纯福利~
    放弃安卓原生TimePicker,选择wheelView打造更漂亮的时间get,以及动态拉伸输入框布局,这些,这里都有!
    快速入手别人的安卓项目??你信我,不会想错过这个~~~
    打造android偷懒神器———RecyclerView的万能适配器
    打造android偷懒神器———ListView的万能适配器
    一个可随意定位置的带色Toast——开源代码Crouton的简单使用
    Python学习笔记3-文件的简单操作
  • 原文地址:https://www.cnblogs.com/memorypro/p/12164306.html
Copyright © 2020-2023  润新知