200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > LCD驱动编写(PCF8545驱动芯片)

LCD驱动编写(PCF8545驱动芯片)

时间:2024-06-19 09:06:18

相关推荐

LCD驱动编写(PCF8545驱动芯片)

不管编写什么驱动第一件事都是查阅数据手册,这里记录一下我编写LCD驱动的过程

硬件环境:

主板: PIC24FJ64GA306

LCD驱动芯片:PCF8542ATT

这款LCD驱动芯片支持1:8的输出可以驱动8*40的段码

可以通过这里了解一些LCD基本参数:/content/18/1121/23/277688_796410994.shtml

LCD驱动板的原理图,我们只需要使用I2C协议和驱动芯片进行通信就可以控制LCD的显示了

1、LCD端口的初始化

查看手册了解每个端口的作用

重点关注:Vlcd和Vdd引脚的电压,Vlcd电压需要大于等于Vdd,A0引脚决定I2C从站的地址

从原理图看,Vlcd直接接5V,A0接低,所以芯片I2C写数据地址为0x70

初始化操作主要是配置I2C通信端口以及Vdd电源端口以及对驱动芯片的初始化配置

手册推荐的初始化顺序

程序的实现

void I2cInit( void )

{

I2C_VCC_OUT;//LCD_PWR设置输出

I2C_TRIS_SCL=0;//SCL设置输出

I2C_TRIS_SDA=0;//SDA设置输出

I2C_VCC_EN;//LCD_PWR输出高电平

}

/********************************************************************************

**函数名称:HalLcdCfg

**具体描述:对液晶进行初始配置

**输 入:无

**输 出:无

*********************************************************************************/

void HalLcdCfg(void )

{

//端口初始化

I2cInit();

DelayMs(1);

//配置LCD芯片

HalLcdControl(CMD_BYTE_REFRESH);//OTP刷新

DelayMs(10);

HalLcdControl(CMD_BYTE_LCD_DIS);//设置显示模式 BSP=1

HalLcdControl(CMD_BYTE_BIAS_SET);;//设置偏压比1/3

HalLcdControl(CMD_BYTE_OS_CONTROL);//设置帧率60Hz

HalLcdControl(CMD_BYTE_RERET_DATA_POINTER);//设置数据指针地址

HalLcdDisAllNum();//全显

HalLcdControl(CMD_BYTE_LCD_EN);//显示

}

2、I2C驱动

I2C我们都比较熟悉了,我们主要是通过通过I2C协议与芯片进行通行

手册推荐I2C通信序列,控制芯片需要一个控制字节

Slave address地址通过硬件A0输入控制

A0输入低电平,0X70u,写数据地址,0x71u//读数据地址

A0输入高电平,0X72u,写数据地址,0x73u//读数据地址

程序实现

unsigned char I2cWrite (unsigned char device_addr, unsigned char control_type,unsigned char *pdata,unsigned int len)

{

unsigned char slave_addr;

unsigned char ack,err;

unsigned int i;

unsigned char *ptmp;

err = 0;

if( len == 0) return 2;

//获取地址、从地址

slave_addr = device_addr;

//写数据

err = 0;

start();

ack = SendI2cOne(slave_addr);

if( ack != 0) err = 1;

ack = SendI2cOne(control_type);

if( ack != 0) err = 1;

ptmp = pdata;

for(i = 0; i < len; i++)

{

ack = SendI2cOne(*ptmp);

if( ack != 0) err = 1;

ptmp++;

}

stop();

return err;

}

3、PCF8545命令详解

MCU使用I2C和芯片进行通信,这里讨论这几个命令的使用,命令通过RS的低两位控制写。

3.1 initialize

芯片软件复位

3.2 OTP-refresh

刷新显示缓存,刷新显示

3.3 mode-setting

设置显示模式

BPS:设置背板引脚位置交换,下图是设置0和1的区别根据此设置电路

IVN:设置驱动方案,一共两种方案,LCD线线反转方式(默认)和LCD帧率反转方式

PD:设置芯片电源模式,默认上电,下电模式内部时钟关闭处于低功耗状态

推荐进入低功耗执行顺序

E:显示使能,默认不开启

2、oscillator-control

配置时钟,默认使用内部时钟,230KHZ

LCD帧率的计算

3、set-MUX-mode

设置多驱动模式,默认1:8

4、set-bias-mode

设置偏置比,默认1/4

5、frame-frequency

LCD的帧率由时钟频率、预分频、分频确定

预分频配置

6、load-data-pointer

定义显示RAM起始地址,设置和驱动模式相关,默认0,注意每次写完之前需要重定位数据寄存器

7、write-RAM-data

定义显示RAM写起始地址,设置和驱动模式相关,默认0,注意控制字节RS=01

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。