MSP430F1121與液晶驅動(dòng)芯片PCF8576的連接程序
MSP430F1121與液晶驅動(dòng)芯片PCF8576的連接程序
#include"msp430x11x1.h"
#defineuintunsignedint
#defineucharunsignedchar
//器件地址
uchar PCF8576=0x70;
//內存數據定義
uchar ByteCnt; //I2C數據字節計數器
uchar SlvAdr; //被控器地址
uchar SubAdr; //被控器單元地址
uchar XmtDat[5]; //發(fā)送數據緩沖區
//uchar MODE1=0x45;
uchar MODE2=0xCD; //
uchar Bank_sel=0x78;
uchar flag;
uchar Digit[10];
#defineSDA BIT3//P2.3controlsSDAline(pull-upusedforlogic1)
#defineSCLBIT4//P2.4controlsSCLline(pull-upusedforlogic1)
/*******************************************************
***********************
;子程序
;名稱(chēng):START
;描述:啟動(dòng)I2C總線(xiàn)子程序--發(fā)送I2C起始條件
;;*******************************************************
**********************/
voidSTART(void)
{
P2OUT|=SDA; //SDA=1
_NOP();
P2OUT|=SCL; //SCL=1
_NOP();
P2OUT=~SDA; //SDA=0
_NOP();
P2OUT=~SCL; //SCL=0
}
/*--------------------------------------------------------------------------
;名稱(chēng):STOP
;描述:停止I2C總線(xiàn)子程序--發(fā)送I2C總線(xiàn)停止條件
;-------------------------------------------------------------------------*/
voidSTOP(void)
{
P2OUT=~SDA; //SDA=0
_NOP();
P2OUT|=SCL;
_NOP();
P2OUT|=SDA;
_NOP();
P2OUT=~SCL;
}
voidcack(void) /*應答位檢查*/
{
P2OUT|=SDA;
P2OUT|=SCL;
P2DIR=~SDA;
_NOP();
P2OUT=~SCL;
P2DIR|=SDA;
}
voiddelay(uchartime)
{
uchari;
do{
for(i=100;i!=0;i--);
}while(--time!=0);
}
/*----------------------------------------------------------------------
;名稱(chēng):SendByte
;描述:字節數據傳送子程序發(fā)送一個(gè)字節數據或地址給被控器PCF8576
;要發(fā)送的數據在A(yíng)CC中
;發(fā)送數據正常返回標志F0=0F0=1表示被控器無(wú)應答或損壞
;------------------------------------------------------------------------*/
voidSendByte(ucharData)
{
uchari=8;
do
{
if((Data0x80)==0x80)
P2OUT|=SDA;
else
P2OUT=~SDA;
P2OUT|=SCL;
_NOP();
P2OUT=~SCL;
Data=Data1;
}while(--i!=0);
cack();
}
評論