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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > PCF8591 AD/DA轉(zhuǎn)換MSP430程序

          PCF8591 AD/DA轉(zhuǎn)換MSP430程序

          作者: 時間:2016-11-30 來源:網(wǎng)絡(luò) 收藏
          PCF8591用的也是IIC 總線,有了昨晚寫的總線協(xié)議,倒不是很難,下一步可以考慮做一個不精確的信號發(fā)生器,睡覺去咯!iic.h文件的源碼在這里:http://www.51hei.com/mcu/2319.html

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

          #ifndef __PCF8591_h
          #define __PCF8591_h

          #include "basic.h"
          #include "IIC.H"
          //-------------------------------------------
          //宏定義
          #define AD_WRITE_MODE 0X90
          #define AD_READ_MODE 0X91

          #define EN_DA0 0X40//打開DA
          #define AI_M0 0X00//AD模式0,四個單通道輸入
          #define AI_M1 0X10//AD模式1,三個差分輸入
          #define AI_M2 0X20//AD模式2,兩個單通道,一個差分混合輸入
          #define AI_M3 0X30//AD模式3,兩個差分混合輸入
          #define AUTO 0X04//自動增加打開
          #define CH0 0X00//1通道
          #define CH1 0X01//2通道
          #define CH2 0X02//3通道
          #define CH3 0X03//4通道

          //--------------------------------------
          //進(jìn)行DA轉(zhuǎn)換
          uchar AD_W_BYTE(uchar DATA)
          {
          IIC_START();//啟動IIC

          IIC_WRITE_DATA(AD_WRITE_MODE);//寫入模式
          //delay();
          if(TEST_ACK())
          return 1;
          IIC_WRITE_DATA(EN_DA0);//寫控制寄存器,打開DA轉(zhuǎn)換器
          //delay();
          if(TEST_ACK())
          return 1;
          IIC_WRITE_DATA(DATA);//寫入數(shù)據(jù)
          //delay();
          if(TEST_ACK())
          return 1;

          IIC_STOP();//停止IIC
          return 0;
          }
          //-----------------------------------------
          //進(jìn)行AD轉(zhuǎn)化,并返回一個8位數(shù)據(jù)(單通道,自動增加關(guān)閉)
          uchar AD_R_BYTE(uchar CH)
          {
          uchar temp=0;
          IIC_START();//啟動IIC

          IIC_WRITE_DATA(AD_WRITE_MODE);//偽寫模式
          if(TEST_ACK())
          return 1;

          IIC_WRITE_DATA(AI_M0|CH);//寫入通道,已經(jīng)設(shè)定為四個單通道模式,如要改變方式,請改變值
          if(TEST_ACK())
          return 1;

          IIC_START();//重新啟動IIC

          IIC_WRITE_DATA(AD_READ_MODE);//讀取模式
          if(TEST_ACK())
          return 1;

          temp=IIC_READ_DATA();//讀取數(shù)據(jù)
          NO_ACK();

          IIC_STOP();
          delayms(10);
          return temp;
          }
          //-------------------------------------------------
          //連續(xù)的進(jìn)行DA轉(zhuǎn)化,用于輸出一個特定的波形
          uchar AD_W_PAGE(uchar *p,uchar lengh)
          {
          uchar i=0;
          IIC_START();//啟動IIC

          IIC_WRITE_DATA(AD_WRITE_MODE);//寫入模式
          //delay();
          if(TEST_ACK())
          return 1;
          IIC_WRITE_DATA(EN_DA0);//寫控制寄存器,打開DA轉(zhuǎn)換器
          //delay();
          if(TEST_ACK())
          return 1;
          for(i=0;i {
          IIC_WRITE_DATA(*p);//寫入數(shù)據(jù)
          //delay();
          if(TEST_ACK())
          return 1;
          p++;
          delayms(1);
          }
          IIC_STOP();//停止IIC
          return 0;
          }
          //------------------------------------------------
          //連續(xù)的進(jìn)行AD轉(zhuǎn)換,用于外界波形的采樣
          uchar AD_R_PAGE(uchar CH,uchar *p,uchar lengh)
          {
          uchar temp=0;
          uchar i;
          IIC_START();//啟動IIC

          IIC_WRITE_DATA(AD_WRITE_MODE);//偽寫模式
          if(TEST_ACK())
          return 1;

          IIC_WRITE_DATA(AI_M0|CH);//寫入通道,已經(jīng)設(shè)定為四個單通道模式,如要改變方式,請改變值
          if(TEST_ACK())
          return 1;

          IIC_START();//重新啟動IIC

          IIC_WRITE_DATA(AD_READ_MODE);//讀取模式
          if(TEST_ACK())
          return 1;
          for(i=0;i {
          *p=IIC_READ_DATA();//讀取數(shù)據(jù)
          IIC_ACK();
          p++;
          delayms(1);
          }
          *p=IIC_READ_DATA();//讀取數(shù)據(jù)
          NO_ACK();

          IIC_STOP();
          delayms(10);
          return temp;
          }
          #endif



          關(guān)鍵詞: PCF8591ADDA轉(zhuǎn)換MSP43

          評論


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