<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > MSP430F149驅(qū)動BH1750FVI程序

          MSP430F149驅(qū)動BH1750FVI程序

          作者: 時間:2016-11-30 來源:網(wǎng)絡 收藏
          #include "io430.h"

          typedef unsigned int uint;
          typedef unsigned char uchar;
          /****BH1750 IO定義******/
          #define SCL_H P3OUT |= BIT6//此IO在硬件上需要更改
          #define SCL_L P3OUT &= ~BIT6
          #define SDA_H P3OUT |= BIT7
          #define SDA_L P3OUT &= ~BIT7

          本文引用地址:http://www.ex-cimer.com/article/201611/323990.htm

          #define SDA_IN P3DIR &= ~BIT7 //SDA改成輸入模式
          #define SDA_OUT P3DIR |= BIT7 //SDA變回輸出模式
          #define SDA_VAL P3IN&BIT7 //SDA的位值
          /*********LCD1602 IO define************/
          #define DataDir P4DIR
          #define DataPort P4OUT
          #define Busy 0x80
          #define CtrlDir P5DIR
          #define CLR_RS P5OUT&=~BIT0 //RS = P5.0
          #define SET_RS P5OUT|=BIT0
          #define CLR_RW P5OUT&=~BIT1//RW = P5.1
          #define SET_RW P5OUT|=BIT1
          #define CLR_EN P5OUT&=~BIT2//EN = P5.2
          #define SET_EN P5OUT|=BIT2

          #define _NOP() __no_operation()
          #defineSlaveAddress0x46//定義器件在IIC總線中的從地址,根據(jù)ALT ADDRESS地址引腳不同修改
          //ALT ADDRESS引腳接地時地址為0xA6,接電源時地址為0x3A
          unsigned char ge,shi,bai,qian,wan;//顯示變量
          int dis_data;
          uchar BUF[8];
          /******************************************************************************/
          /*******************************延時函數(shù)***************************************/
          /******************************************************************************/

          /*******************************************
          延時約15us的時間
          ********************************************/
          void Delay5us(void)
          {
          uchar i;

          for(i = 0;i < 15;i++);
          _NOP();
          }
          void Delay5ms(void)
          {
          uint i=40000;
          while (i != 0)
          {
          i--;
          }
          }

          /*******************************************
          延時MS的時間
          ********************************************/

          void delay(uint x)
          {
          uchar i;
          while(x--)for(i=0;i<125;i++);
          }


          /******************************************************************************/
          /*******************************BH1750相關(guān)函數(shù)*********************************/
          /******************************************************************************/

          /**************************************
          起始信號
          **************************************/
          void BH1750_Start()
          {
          SDA_H; //拉高數(shù)據(jù)線
          SCL_H; //拉高時鐘線
          Delay5us(); //延時
          SDA_L; //產(chǎn)生下降沿
          Delay5us(); //延時
          SCL_L; //拉低時鐘線
          }

          /**************************************
          停止信號
          **************************************/
          void BH1750_Stop()
          {
          SDA_L; //拉低數(shù)據(jù)線
          SCL_H; //拉高時鐘線
          Delay5us(); //延時
          SDA_H; //產(chǎn)生上升沿
          Delay5us(); //延時
          }

          /**************************************
          發(fā)送應答信號
          入口參數(shù):ack (0:ACK 1:NAK)
          **************************************/
          void BH1750_SendACK(void)
          {
          SDA_L; //寫應答信號
          _NOP();_NOP();
          SCL_H; //拉高時鐘線
          Delay5us(); //延時
          SCL_L; //拉低時鐘線
          _NOP();_NOP();
          SDA_H;
          Delay5us(); //延時
          }
          /********************************************
          非應答
          ********************************************/
          void mnack(void)
          {
          SDA_H;
          _NOP(); _NOP();
          SCL_H;
          Delay5us();
          SCL_L;
          _NOP(); _NOP();
          SDA_L;
          Delay5us();
          }
          /**************************************
          接收應答信號
          **************************************/
          uchar BH1750_RecvACK()
          {
          uchar ack;
          SDA_H;
          _NOP(); _NOP();
          SCL_H;
          _NOP(); _NOP();
          SDA_IN;
          _NOP(); _NOP();
          ack = SDA_VAL; //讀入SDA數(shù)值
          SCL_L;
          Delay5us();
          SDA_OUT;
          if(ack) return 0;
          else return 1;
          }
          /*******************************************
          write1
          ********************************************/
          void write1(void)
          {
          SDA_H;
          //Delay5us();
          SCL_H;
          Delay5us();
          SCL_L;
          Delay5us();
          }
          /*******************************************
          write0
          ********************************************/
          void write0(void)
          {
          SDA_L;
          // Delay5us();
          SCL_H;
          Delay5us();
          SCL_L;
          Delay5us();
          }
          /**************************************
          向IIC總線發(fā)送一個字節(jié)數(shù)據(jù)
          **************************************/
          void BH1750_SendByte(unsigned char dat)
          {
          unsigned char i;

          for (i = 0; i < 8; i++)
          { //8位計數(shù)器
          if(dat&0x80)
          write1();
          else
          write0();
          dat <<= 1; //移出數(shù)據(jù)的最高位
          }
          BH1750_RecvACK();
          }

          /**************************************
          從IIC總線接收一個字節(jié)數(shù)據(jù)
          **************************************/
          unsigned char BH1750_RecvByte()
          {
          unsigned char i;
          unsigned char dat = 0,flag;

          SDA_H; //使能內(nèi)部上拉,準備讀取數(shù)據(jù),
          for (i = 0; i < 8; i++)
          { //8位計數(shù)器
          //SDA_H;
          //Delay5us();
          SCL_H;
          SDA_IN;
          Delay5us();
          flag=SDA_VAL;
          dat <<= 1;
          if(flag)
          dat|=0x01;
          SDA_OUT;
          SCL_L;
          Delay5us();
          }
          return dat;
          }


          上一頁 1 2 下一頁

          關(guān)鍵詞: MSP430F149BH1750FV

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();