PCF8576采用iiC协议acknowledge如何写,即告知位函数如何写?

PCF8576采用iiC协议acknowledge如何写,即告知位函数如何写?,第1张

void I2C_SendAck(bit ACK)

{

I2C_SDA = ACK

I2C_SCL = 1

while(I2C_SCL == 0) // Synchronize clock

delay4us()

I2C_SCL = 0

}

i2c有现成的库,你在lcd的网站上或者是单片机网上可以下到,然后按照lcd的pdf对它初始话,我给个简单的几个函数,可以实现初始化

下面3个就是lcd的初始化配置,下面3个函数是找到的i2c库代码,你按照这个lcd的pdf进行对应的修改就行

#define pcf8576 0x70

ISendByte(pcf8576,0x48) //设置背级方式

ISendByte(pcf8576,0x70) //设置闪烁

ISendByte(pcf8576,0x60) //设置器件子地址

你可以把lcd当成一个接口,向这个接口地址发送数据就可以让它进行对应的 *** 作,这个是我写过的lcd显示模块,pcf8576是lcd的地址,这个你可以在lcd的pdf里找到

显示的话,就是向对应的lcd寄存器写入数据,比如要显示第一个数字,就是将lcd的显示数据里修改,然后发送显示数据到lcd的对应寄存器里,下面的lcdnum就是8576的显示数据数组

void Refresh_LCD()

{

ISendByte(pcf8576,0x60)

ISendStr(pcf8576,0x00,lcdnum,9)

}

void Start_I2c()

{

SDA=1 /*发送起始条件的数据信号*/

_Nop()

SCL=1

_Nop() /*起始条件建立时间大于4.7us,延时*/

_Nop()

_Nop()

_Nop()

_Nop()

SDA=0 /*发送起始信号*/

_Nop() /* 起始条件锁定时间大于4μs*/

_Nop()

_Nop()

_Nop()

_Nop()

SCL=0 /*钳住I2C总线,准备发送或接收数据 */

_Nop()

_Nop()

}

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

结束总线函数

函数原型: void Stop_I2c()

功能: 结束I2C总线,即发送I2C结束条件.

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

void Stop_I2c()

{

SDA=0 /*发送结束条件的数据信号*/

_Nop() /*发送结束条件的时钟信号*/

SCL=1 /*结束条件建立时间大于4μs*/

_Nop()

_Nop()

_Nop()

_Nop()

_Nop()

SDA=1 /*发送I2C总线结束信号*/

_Nop()

_Nop()

_Nop()

_Nop()

}

bit ISendByte(unsigned char sla,unsigned char c)

{

Start_I2c() /*启动总线*/

SendByte(sla) /*发送器件地址*/

if(ack==0)

return(0)

SendByte(c) /*发送数据*/

if(ack==0)

return(0)

Stop_I2c()/*结束总线*/

return(1)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12202518.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存