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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于MSP430F149與BH1750FVI進(jìn)行光強(qiáng)度的值在LCD1602顯示

          基于MSP430F149與BH1750FVI進(jìn)行光強(qiáng)度的值在LCD1602顯示

          作者: 時(shí)間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
          BH1750FVI是IIC總線協(xié)議的數(shù)字型光強(qiáng)度傳傳感器集成電路,以下是它程序:

          #include "io430x14x.h"
          typedef unsigned int uint;
          typedef unsignedchar uchar;

          #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/322554.htm

          #define SDA_INP3DIR &= ~BIT7//SDA改成輸入模式
          #define SDA_OUT P3DIR |= BIT7//SDA變回輸出模式
          #define SDA_VAL P3IN&BIT7//SDA的位值

          #define DataDirP4DIR
          #define DataPortP4OUT
          #define Busy0x80
          #define CtrlDirP5DIR
          #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ù)ALTADDRESS地址引腳不同修改
          //ALTADDRESS引腳接地時(shí)地址為0xA6,接電源時(shí)地址為0x3A
          unsigned char ge,shi,bai,qian,wan;//顯示變量
          int dis_data;
          uchar BUF[8];
          void Delay5us(void)
          {
          uchar i;

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

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

          void BH1750_Start()
          {
          SDA_H;//拉高數(shù)據(jù)線
          SCL_H;//拉高時(shí)鐘線
          Delay5us();//延時(shí)
          SDA_L;//產(chǎn)生下降沿
          Delay5us();//延時(shí)
          SCL_L;//拉低時(shí)鐘線
          }
          void BH1750_Stop()
          {
          SDA_L;//拉低數(shù)據(jù)線
          SCL_H;//拉高時(shí)鐘線
          Delay5us();//延時(shí)
          SDA_H;//產(chǎn)生上升沿
          Delay5us();//延時(shí)
          }

          void BH1750_SendACK(void)
          {
          SDA_L;//寫應(yīng)答信號(hào)
          _NOP();_NOP();
          SCL_H;//拉高時(shí)鐘線
          Delay5us();//延時(shí)
          SCL_L;//拉低時(shí)鐘線
          _NOP();_NOP();
          SDA_H;
          Delay5us();//延時(shí)
          }

          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;
          elsereturn1;
          }

          void write1(void)
          {
          SDA_H;
          //Delay5us();
          SCL_H;
          Delay5us();
          SCL_L;
          Delay5us();
          }

          void write0(void)
          {
          SDA_L;
          // Delay5us();
          SCL_H;
          Delay5us();
          SCL_L;
          Delay5us();
          }
          void BH1750_SendByte(unsigned char dat)
          {
          unsigned char i;

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

          unsigned char BH1750_RecvByte()
          {
          unsigned char i;
          unsigned char dat = 0,flag;

          SDA_H;//使能內(nèi)部上拉,準(zhǔn)備讀取數(shù)據(jù),
          for (i = 0; i < 8; i++)
          {//8位計(jì)數(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;
          }


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: MSP430F149BH1750FVILCD160

          評(píng)論


          技術(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); })();