51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机技术文章 > MSP430单片机 > 详细内容
MSP430F1121与液晶驱动芯片PCF8576的连接程序
发布时间:2009/7/31  阅读次数:1146  字体大小: 【】 【】【
中国电子技术信息网
                                            网址:www.EC66.com
--------------------------------------------------------------------------------
#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
;要发送的数据在ACC 中
;发送数据正常返回标志F0=0 F0=1 表示被控器无应答或损坏
;------------------------------------------------------------------------*/
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();

}

/***********************************************************
;发送数据程序
;名称:SendData
;描述:发送ByteCnt 个字节给被控器PCF8576
;被控器地址在SlvAdr 中单元地址在SubAdr 中
;所发送数据的字节数ByteCnt 在中发送的数据在XmtDat 缓冲区中
;发送数据正常返回标志F0=0 F0=1 表示被控器无应答或损坏
;**********************************************************/
void Display_Data(void)
{
uchar i=0;
uchar size=ByteCnt;

START(); //发送I2C 总线起始条件

SendByte(SlvAdr); //发送被控器总线地址

SendByte(SubAdr); //发送单元地址

// SendByte(0x73); //闪烁方式为正常,闪烁频率为0.5Hz 的命令字送缓冲区首址,
//如果不需要闪烁应将数#70H 送入缓冲区首址
SendByte(0x70); //不闪烁

do
   {
     SendByte(XmtDat); //发送数据
     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);

STOP();

  delay(200);
}

void PCF8576SET(void)
{
  START();

  SendByte(SlvAdr); //送器件地址

  SendByte(MODE2); //取方式命令字

  SendByte(Bank_sel);

  STOP();
}


void main(void)
{
  uint out_data;
  uint tmp_data;
  uchar i;
  uchar k;
  uchar tmp[5];

  P2DIR |= SDA; //SDA
  P2DIR |= SCL; //SCL

  P2OUT &= ~SDA;
  P2OUT &= ~SCL;

  WDTCTL = WDTPW+WDTHOLD;

  Digit[0]=0x7E; //0
  Digit[1]=0x18; //1
  Digit[2]=0xB6; //2
  Digit[3]=0xBC; //3
  Digit[4]=0xD8; //4
  Digit[5]=0xEC; //5
  Digit[6]=0xEE; //6
  Digit[7]=0x38; //7
  Digit[8]=0xFE; //8
  Digit[9]=0xFC; //9

  SubAdr=0x80;
  SlvAdr=PCF8576;
  ByteCnt=4;

  PCF8576SET();

  ClearLcd();

  out_data=0;

while(1)
  {
  tmp_data=out_data;

for(i=0;i<ByteCnt;i++)
     {
     k=tmp_data%10;
     tmp_data=tmp_data/10;
     
   XmtDat=Digit[k];
   tmp=k;
     }

XmtDat[2] |= 0x01;

for(i=ByteCnt-1;i!=0;i--)
   {
     if( tmp == 0 )
     XmtDat=0x00;
     else
     break;
   }
Display_Data();
out_data++;
  }
}
我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号