您当前的位置:五五电子网电子知识单片机-工控设备MSP430单片机MSP430F1121与PCF8576驱动程序 正文
MSP430F1121与PCF8576驱动程序

MSP430F1121与PCF8576驱动程序

点击数:7154 次   录入时间:03-04 12:04:03   整理:http://www.55dianzi.com   MSP430单片机
#include  "MSP430x11x1.h"

#define uint unsigned int
#define uchar unsigned char

//器件地址
uchar    PCF8576=0x70;

//内存数据定义
uchar    ByteCnt;     //I2C 数据字节计数器
uchar    SlvAdr;        //被控器地址
uchar    SubAdr;        //被控器单元地址
uchar    XmtDat[5];    //发送数据缓冲区


//uchar    MODE1=0x45;
uchar    MODE2=0xCD;        //
uchar    Bank_sel=0x78;

uchar    flag;

uchar    Digit[10];

#define SDA      BIT3      // P2.3 controls SDA line (pull-up used for 
logIC 1)
#define SCL   BIT4      // P2.4 controls SCL line (pull-up used for logic 1)



/******************************************************************************
; 子程序
;名称:START
;描述:启动I2C 总线子程序--发送I2C 起始条件
;;*****************************************************************************/
void START(void)
{
    P2OUT |= SDA;        //SDA=1
    _NOP();
    P2OUT |= SCL;        //SCL=1
    _NOP();
    P2OUT &= ~SDA;        //SDA=0
    _NOP();
    P2OUT &= ~SCL;        //SCL=0
}

/*--------------------------------------------------------------------------
;名称:STOP
;描述:停止I2C 总线子程序--发送I2C 总线停止条件
;-------------------------------------------------------------------------*/
void STOP(void)
{
    P2OUT &= ~SDA;        //SDA=0
    _NOP();
    P2OUT |= SCL;
    _NOP();
    P2OUT |= SDA;
    _NOP();
    P2OUT &= ~SCL;
}

void cack(void)        /* 应答位检查 */
{
    P2OUT |= SDA;
    P2OUT |= SCL;

    P2DIR &= ~SDA;

    _NOP();    
    P2OUT &= ~SCL;
    
    P2DIR |= SDA;
    
}

void delay(uchar time)
{
uchar i;

do{
    for(i=100;i!=0;i--);
    
  } while(--time!=0);

}
    
/*----------------------------------------------------------------------
;名称:SendByte
;描述:字节数据传送子程序发送一个字节数据或地址给被控器PCF8576
;------------------------------------------------------------------------*/
void SendByte(uchar Data)
{
uchar i=8;
    
    do  
      {
          if((Data&0x80)==0x80)
            P2OUT |= SDA;
          else
                 P2OUT &= ~SDA;
                 
          P2OUT |= SCL;
        _NOP ();
          P2OUT &= ~SCL;

          Data=Data<<1;
      } while(--i!=0);

    cack();

}

/***********************************************************
;发送数据程序
;名称:Display_Data
;描述:发送ByteCnt 个字节给被控器PCF8576
;被控器地址在SlvAdr 中单元地址在SubAdr 中
;所发送数据的字节数ByteCnt 在中发送的数据在XmtDat 缓冲区中
;**********************************************************/
void Display_Data(void)
{
uchar i=0;
uchar size=ByteCnt;

    START();                //发送I2C 总线起始条件
    
    SendByte(SlvAdr);        //发送被控器总线地址
        
    SendByte(SubAdr);        //发送单元地址
    
//    SendByte(0x73);            //闪烁方式为正常,闪烁频率
为0.5Hz 的命令字送缓冲区首址,其它命令最好单独设
    SendByte(0x70);            //闪烁方式为正常,闪烁频率
为0.5Hz 的命令字送缓冲区首址,其它命令最好单独设
                            //定
如程序1 如果不需要闪烁应将数#70H 送入缓冲区首址
    
    do
      {
          SendByte(XmtDat[i]);    //发送数据
          i++;
      } while(--size!=0);
      
    STOP();
    
    delay(100);    
}
    
void ClearLCD(void)
{
uchar size=ByteCnt;

    START();                //启动I2C 总线
    
    SendByte(SlvAdr);        //送器件地址
    
    SendByte(SubAdr);        //发送单元地址
    
    SendByte(0x70);
    
    do
    {
      SendByte(0x00);    //发送数据
    } while(--size!=0);

[1] [2]  下一页


本文关键字:程序  MSP430单片机单片机-工控设备 - MSP430单片机