找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 149245|回復(fù): 55
打印 上一主題 下一主題
收起左側(cè)

學(xué)51單片機-基于PCF8591的AD采樣和DA輸出

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:74835 發(fā)表于 2015-4-8 22:48 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
      
      首先思考一個問題,我們的世界是數(shù)字的還是模擬的?
      當(dāng)然是模擬的了,所有的量都是在一定范圍內(nèi)連續(xù)變化的。我們?yōu)榱四軌蚋臃奖愕拿枋鲞@些量,對它們進行了數(shù)字化。而數(shù)字量就不一樣了,它是分立的的幾個值。
      舉個例子,我們形容一個人的身高,模擬的說法是一米七到一米七五之間,數(shù)字的說法就是一米七三。
接下來說AD轉(zhuǎn)換器,它的出現(xiàn)也是為了讓我們能更方便、更直接的描述電壓的高低。AD轉(zhuǎn)換器,英文全稱為Analog-to-Digital Converter,是模擬量到數(shù)字量的一個轉(zhuǎn)換過程,主要用于電壓的采集。它的出現(xiàn)就如同有了一把尺子,很容易就能量出電壓的高低。
在電子設(shè)備中,經(jīng)常要檢測各種模擬量:溫度、壓力、速度、流量、重力加速度等等,這些模擬量都被相應(yīng)的傳感器轉(zhuǎn)換為電壓信號,我們只需要測量電壓的高低,就能得到相應(yīng)參數(shù)。
AD的主要參數(shù)有哪些?
1、AD的位數(shù):表明這個AD共有2^n個刻度,8位AD,輸出的刻度是0~255.
2、分辨率:就是AD能夠分辨的最小的模擬量變化,假設(shè)5.10V的系統(tǒng)用8位的AD采樣,那么它能分辨的最小電壓就是5.10/255=0.02V。
3、INL:Interger NONliner 積分非線性度,表示了ADC器件在所有的數(shù)值點上對應(yīng)的模擬值,和真實值之間誤差最大的那一點的誤差值。也就是,輸出數(shù)值偏離線性最大的距離。單位是LSB(即最低位所表示的量)。比如12位ADC:TLC2543,INL值為1LSB。那么,如果基準(zhǔn)4.095V,測某電壓得的轉(zhuǎn)換結(jié)果是1000,那么,真實電壓值可能分布在0.999~1.001V之間。
4、DNL:Differencial NonLiner-差分非線性度,理論上說,模數(shù)器件相鄰量個數(shù)據(jù)之間,模擬量的差值都是一樣的。就相一把疏密均勻的尺子。但實際并不如此。一把分辨率1毫米的尺子,相鄰兩刻度之間也不可能都是1毫米整。那么,ADC相鄰兩刻度之間最大的差異就叫差分非線性值(Differencial NonLiner)。DNL值如果大于1,那么這個ADC甚至不能保證是單調(diào)的,輸入電壓增大,在某個點數(shù)值反而會減小。這種現(xiàn)象在SAR(逐位比較)型ADC中很常見。
5、基準(zhǔn)源:有內(nèi)部基準(zhǔn)源、外部基準(zhǔn)源等等。
6、轉(zhuǎn)換速率:也就是轉(zhuǎn)換周期的倒數(shù),轉(zhuǎn)換周期就是完成一次AD轉(zhuǎn)換所需的時間。
今天要用到的器件是PCF8591,為什么選它?太多的開發(fā)板上用它做演示了,而且還是IIC總線通信的。既學(xué)習(xí)了AD采樣,又學(xué)習(xí)了IIC總線。
先上應(yīng)用電路:
      如上圖所示,PCF8591的9腳和10腳,一個是數(shù)據(jù)線SDA,一個是時鐘線SCL。分別接到單片機的P2.0 , P2.1上面。
為什么選這兩個引腳?因為51單片機上沒有IIC總線接口,需要用普通的IO模擬,所以它隨便選了兩個IO接上就行。
VREF是什么?基準(zhǔn)電壓,也是它能測量的最大電壓。
如何控制?今天先不說IIC總線,只說控制流程。
看器件手冊可以知道:
分四步:
1、發(fā)送地址字節(jié),選擇該器件。
2、發(fā)送控制字節(jié),選擇相應(yīng)通道。               //
3、重新發(fā)送地址字節(jié),選擇該器件。
4、接收目標(biāo)通道的數(shù)據(jù)。
這次的程序流程是:AD采樣,串口發(fā)送,循環(huán)執(zhí)行。
下面是AD采樣源代碼:
  1. /**********************51單片機學(xué)習(xí)例程************************
  2. *  平臺:Keil U4 + STC89C52
  3. *  名稱:AD采樣+串口發(fā)送
  4. *  編寫:起航
  5. *  晶體:11.0592MHZ
  6. ******************************************************************/
  7. #include <reg52.h>
  8. #include <intrins.h>

  9. typedef unsigned char uint8;
  10. typedef unsigned int uint16;

  11. #define SLAVEADDR  0x90                 //定義器件地址
  12. #define nops()  do{_nop_();_nop_();_nop_();_nop_();_nop_();} while(0) //定義空指令


  13. sbit SCL = P2^1;       //I2C  時鐘
  14. sbit SDA = P2^0;       //I2C  數(shù)據(jù)

  15. void delay(uint16 n)
  16. {
  17.         while (n--);
  18. }
  19. /**
  20. * 函數(shù): i2c_start()
  21. * 功能: 啟動i2c                  起始信號
  22. */
  23. void i2c_start()
  24. {
  25.         SCL = 1;
  26.         nops();
  27.         SDA = 1;
  28.         nops();
  29.         SDA = 0;
  30.         nops();
  31.         SCL = 0;
  32. }

  33. /**
  34. * 函數(shù): i2c_stop()
  35. * 功能: 停止i2c
  36. */
  37. void i2c_stop()
  38. {
  39.         SCL = 0;
  40.         nops();
  41.         SDA = 0;
  42.         nops();
  43.         SCL = 1;
  44.         nops();
  45.         SDA = 1;
  46.         nops();
  47. }

  48. /**
  49. * 函數(shù): i2c_ACK(bit ck)
  50. * 功能: ck為1時發(fā)送應(yīng)答信號ACK,
  51. *       ck為0時不發(fā)送ACK
  52. */
  53. void i2c_ACK(bit ck)
  54. {
  55.     if (ck)
  56.                 SDA = 0;
  57.     else
  58.                 SDA = 1;
  59.     nops();
  60.     SCL = 1;
  61.     nops();
  62.     SCL = 0;
  63.         nops();
  64.     SDA = 1;
  65.     nops();
  66. }

  67. /**
  68. * 函數(shù): i2c_waitACK()
  69. * 功能: 返回為0時收到ACK
  70. *       返回為1時沒收到ACK
  71. */
  72. bit i2c_waitACK()
  73. {
  74.         SDA = 1;
  75.         nops();
  76.         SCL = 1;
  77.         nops();
  78.         if (SDA)
  79.         {   
  80.                 SCL = 0;
  81.                 i2c_stop();
  82.                 return 1;
  83.         }
  84.         else
  85.         {  
  86.                 SCL = 0;
  87.                 return 0;
  88.         }
  89. }

  90. /**
  91. * 函數(shù): i2c_sendbyte(uint8 bt)
  92. * 功能: 將輸入的一字節(jié)數(shù)據(jù)bt發(fā)送
  93. */
  94. void i2c_sendbyte(uint8 bt)
  95. {
  96.     uint8 i;
  97.    
  98.     for(i=0; i<8; i++)
  99.     {  
  100.         if (bt & 0x80)
  101.                         SDA = 1;
  102.         else
  103.                         SDA = 0;
  104.         nops();
  105.         SCL = 1;
  106.         bt <<= 1;
  107.         nops();      
  108.         SCL = 0;
  109.     }
  110. }

  111. /**
  112. * 函數(shù): i2c_recbyte( )
  113. * 功能: 從總線上接收1字節(jié)數(shù)據(jù)
  114. */
  115. uint8 i2c_recbyte()
  116. {
  117.         uint8 dee, i;
  118.        
  119.         for (i=0; i<8; i++)
  120.         {
  121.                 SCL = 1;   
  122.                 nops();
  123.                 dee <<= 1;
  124.                 if (SDA)
  125.                         dee = dee | 0x01;
  126.                 SCL = 0;
  127.                 nops();
  128.         }
  129.        
  130.         return dee;
  131. }

  132. /**
  133. * 函數(shù): i2c_readbyte
  134. * 輸入: addr
  135. * 功能: 讀出一字節(jié)數(shù)據(jù)
  136. * 返回值: 0->成功  1->失敗
  137. */
  138. bit i2c_readbyte(uint8 com, uint8 *dat)
  139. {       
  140.         i2c_start();
  141.         i2c_sendbyte(SLAVEADDR);    //地址
  142.     if (i2c_waitACK())
  143.                 return 1;
  144.         i2c_sendbyte(com);        //控制字節(jié)
  145.     if (i2c_waitACK())
  146.                 return 1;
  147.         i2c_start();
  148.         i2c_sendbyte(SLAVEADDR+1); //地址
  149.     if (i2c_waitACK())
  150.                 return 1;
  151.         *dat = i2c_recbyte();      //讀數(shù)據(jù)
  152.         i2c_ACK(0);                //因為只讀一字節(jié)數(shù)據(jù),不發(fā)送ACK信號
  153.         i2c_stop();   
  154.        
  155.         return 0;
  156. }

  157. /**
  158. * UART初始化
  159. * 波特率:9600
  160. */
  161. void uart_init(void)
  162. {
  163.     ET1=0;
  164.     TMOD = 0x21;        // 定時器1工作在方式2(自動重裝)
  165.     SCON = 0x50;        // 10位uart,允許串行接受

  166.     TH1 = 0xFD;
  167.     TL1 = 0xFD;

  168.     TR1 = 1;
  169. }

  170. /**
  171. * UART 發(fā)送一字節(jié)
  172. */
  173. void UART_Send_Byte(uint8 dat)
  174. {
  175.         SBUF = dat;
  176.         while (TI == 0);
  177.         TI = 0;
  178. }


  179. main()
  180. {
  181.         uint8 ans;

  182.         uart_init();

  183.         while(1)
  184.         {

  185.                 i2c_readbyte(0x43, &ans);
  186.             
  187.                 UART_Send_Byte(ans);
  188.                 delay(50000);
  189.         }
  190. }
復(fù)制代碼
本程序下載鏈接(附帶PCF8591中文資料pdf資料): PCF8591AD采樣.rar (459.16 KB, 下載次數(shù): 948)
-------------------------------------------------------------------------------------

下面介紹PCF8591的DA輸出:

      忽然發(fā)現(xiàn),已經(jīng)寫到AD/DA這里來了。嚴(yán)格來說,已經(jīng)不是51單片機的內(nèi)容了,而是周邊應(yīng)用電路的一些東西。這些東西涉及的知識面比較廣,什么都有可能提到。
      關(guān)于AD/DA,或者其它設(shè)備,我的學(xué)習(xí)思路是先模仿,再深究。
      因為無論是課本也好,器件手冊也好,大部分講的都是原理或者寄存器,起到的是一個工具書的作用,類似于語文課上用的字典。但是這就出現(xiàn)了一個問題,很多人想通過看課本或者看器件手冊的方式來掌握這些設(shè)備。
      這個思路有問題嗎?沒有問題嗎?
      還記得我剛才說的話么,它們就類似于語文課上用的字典,但是,有誰是通過看字典學(xué)會說話的�。。�
      我們都是通過模仿別人學(xué)會說話的,遇到不認識的字才去查字典!但是很多人或者很多學(xué)校都把這兩件事的順序搞反了。
      記得之前我在英飛凌官網(wǎng)進行芯片選型,網(wǎng)頁都翻爛了,找不到合適的。因為英飛凌不是我家開的,我不能保證每次都能順利的找到我想要的東西。
      但是,我同事參加了一次電子展,在展會上遇到了英飛凌的展臺,然后問他們,他們一聽我們的需求,馬上找出一堆能滿足我們要求的芯片。
      這就是思路的問題!
      扯遠了,說回到DA控制。
DA轉(zhuǎn)換(Digital to Analog),是將數(shù)字量變成模擬量的一個過程。AD與DA剛好是相反的兩個過程,AD是把模擬信號變成單片機可識別的數(shù)字信號;DA是把單片機可識別的數(shù)字信號變成連續(xù)變化的模擬量。這兩種功能的應(yīng)用范圍都非常廣泛!
      主要參數(shù)如下,具體什么意思就不講了,大家可以百度一下。(因為我編不出來了...)
1)分辯率(Resolution)
2) 轉(zhuǎn)換速率(Conversion Rate)
3)量化誤差 (Quantizing Error)
4)偏移誤差(Offset Error)
5)滿刻度誤差(Full Scale Error)
6)線性度(Linearity)
其他指標(biāo)還有:絕對精度(Absolute Accuracy) ,相對精度(Relative Accuracy),微分非線性,單調(diào)性和無錯碼,總諧波失真(Total Harmonic Distotortion縮寫THD)和積分非線性。
看到這么多參數(shù),是不是很暈?
搞了這些年電子,感觸最深的有一點是:無論做什么,先求有,再求好!
不要總想一口吃個胖子,沒那么多天才。參數(shù)是很多,但是沒要求你一下子全都記住,甚至你可以只記一兩個。先把大致的應(yīng)用流程跑一遍,跑下來,你才對這個設(shè)備有一個整體的概念,然后針對你的要求,比對相應(yīng)的參數(shù),進行修改、調(diào)試。
哪怕是在工作中,也不一定會考慮全部的參數(shù)。例如轉(zhuǎn)換時間,我到現(xiàn)在也沒認真看PIC內(nèi)部的AD采樣轉(zhuǎn)換時間有多久,因為有些設(shè)備對實時性要求很低,速度慢一些也沒事。
然后是控制流程,認真看器件手冊的,或者看了昨天日志的,都知道是怎樣一個流程:
第一步:寫器件地址;
第二步:寫控制位。
第三步:寫入數(shù)據(jù)。
好了,上程序。通過DA輸出漸變電壓控制LED,形成呼吸燈的效果。里面有個警告:
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
      大家可以研究下,如何消除警告。
程序源碼如下:
  1. /**********************51單片機學(xué)習(xí)例程************************
  2. *  平臺: Keil U34 + STC89C52RD
  3. *         名稱:IIC協(xié)議 PCF8591ADDA轉(zhuǎn)換        ,此程序通過IIC協(xié)議對DAAD芯片操作, 并輸出模擬量,用LED亮度漸變指示
  4. *  編寫:起航
  5. *  晶振:11.0592MHZ
  6. ******************************************************************/

  7. #include<reg52.h>    //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
  8. #include <intrins.h> //包含NOP空指令函數(shù)_nop_();

  9. #define AddWr 0x90   //寫數(shù)據(jù)地址
  10. #define AddRd 0x91   //讀數(shù)據(jù)地址

  11. sbit RST=P2^4;   //關(guān)掉時鐘芯片輸出
  12. sbit Sda=P2^0;      //定義總線連接端口
  13. sbit Scl=P2^1;
  14. sbit Fm=P2^3;          //FM
  15. sbit dula=P2^6;
  16. sbit wela=P2^7;
  17. // bit ADFlag;          //定義AD采樣標(biāo)志位
  18. unsigned char code Datatab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//7段數(shù)共陰碼管段碼表
  19. data unsigned char  Display[8];//定義臨時存放數(shù)碼管數(shù)值
  20. /*------------------------------------------------
  21.                     延時程序
  22. ------------------------------------------------*/
  23. void mDelay(unsigned char j)
  24. {
  25.   unsigned int i;
  26.   for(;j>0;j--)
  27.      {
  28.           for(i=0;i<125;i++)
  29.              {;}
  30.           }
  31.   }
  32. /*------------------------------------------------
  33.                     初始化定時器1
  34. ------------------------------------------------*/
  35. void Init_Timer1(void)
  36. {
  37. TMOD |= 0x10;                             
  38. TH1=0xff;                              /* Init value */
  39. TL1=0x00;
  40. //PT1=1;                   /* 優(yōu)先級    */
  41. EA=1;                      /* interupt enable */
  42. ET1=1;                     /* enable timer1 interrupt */
  43. TR1=1;  
  44. }
  45. /*------------------------------------------------
  46.                     啟動IIC總線
  47. ------------------------------------------------*/
  48.   void Start(void)
  49.   {
  50.    Sda=1;
  51.    _nop_();
  52.    Scl=1;
  53.    _nop_();
  54.    Sda=0;
  55.    _nop_();
  56.    Scl=0;
  57.   }


  58. /*------------------------------------------------
  59.                     停止IIC總線
  60. ------------------------------------------------*/
  61.   void Stop(void)
  62.   {
  63.    Sda=0;
  64.    _nop_();
  65.    Scl=1;
  66.    _nop_();
  67.    Sda=1;
  68.    _nop_();
  69.    Scl=0;
  70.    }


  71. /*------------------------------------------------
  72.                    應(yīng)答IIC總線
  73. ------------------------------------------------*/
  74.    void Ack(void)
  75.    {
  76.     Sda=0;
  77.         _nop_();
  78.         Scl=1;
  79.         _nop_();
  80.         Scl=0;
  81.         _nop_();
  82.         }

  83. /*------------------------------------------------
  84.               發(fā)送一個字節(jié)
  85. ------------------------------------------------*/
  86.          void Send(unsigned char Data)
  87.          {
  88.           unsigned char BitCounter=8;
  89.           unsigned char temp;

  90.           do
  91.             {
  92.                  temp=Data;
  93.                  Scl=0;
  94.                  _nop_();
  95.                  if((temp&0x80)==0x80)
  96.                     Sda=1;
  97.                  else
  98.                     Sda=0;

  99.                         Scl=1;
  100.                         temp=Data<<1;
  101.                         Data=temp;
  102.                         BitCounter--;
  103.                   }
  104.           while(BitCounter);
  105.               Scl=0;
  106.           }

  107. /*------------------------------------------------
  108.                     寫入DA數(shù)模轉(zhuǎn)換值
  109. ------------------------------------------------*/
  110.           void DAC(unsigned char Data)
  111.           {
  112.                    Start();
  113.                    Send(AddWr); //寫入芯片地址
  114.                    Ack();
  115.                    Send(0x40);  //寫入控制位,使能DAC輸出
  116.                    Ack();
  117.                    Send(Data);  //寫數(shù)據(jù)
  118.                    Ack();
  119.                    Stop();
  120.                  
  121.            }


  122.         void fmg(void)//fm關(guān)
  123.         {       
  124.         Fm=1;        //                關(guān) fm
  125.         }
  126.                  void cmg(void)//數(shù)碼管鎖存函數(shù)                   關(guān)時鐘DS1302
  127.         {
  128.         dula=1;
  129.         P0=0x00;
  130.         dula=0;
  131.         wela=1;
  132.         P0=0x00;
  133.         wela=0;
  134.         RST=0;                //                關(guān)時鐘DS1302
  135.         }
  136. /*------------------------------------------------
  137.                    主程序
  138. ------------------------------------------------*/
  139.         void main()
  140.         {
  141.          unsigned char num;                   //DA數(shù)模輸出變量
  142.    Init_Timer1();
  143.          cmg();//數(shù)碼管鎖存
  144.          fmg();
  145.          while(1)
  146.            {
  147.        DAC(num);       //DA輸出,可以用LED模擬電壓變化
  148.                    num++;          //累加,到256后溢出變?yōu)?,往復(fù)循環(huán)。顯示在LED上亮度逐漸變化
  149.                    mDelay(20);     //延時用于清晰看出變化
  150.            }
  151.         }

復(fù)制代碼
下載鏈接: PCF8591DAC_LED.zip (29.03 KB, 下載次數(shù): 409)





評分

參與人數(shù) 3黑幣 +15 收起 理由
愛拉屎 + 5 絕世好帖!
勇猛的大表哥 + 5 共享資料的黑幣獎勵!
vancee + 5 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏24 分享淘帖 頂7 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:81389 發(fā)表于 2015-5-28 18:23 | 只看該作者
請問樓主,PCF8591適合做心電信號的AD采樣嗎?求指導(dǎo)啊
回復(fù)

使用道具 舉報

板凳
ID:84098 發(fā)表于 2015-6-27 19:37 | 只看該作者
看了一下,剛學(xué)哎
回復(fù)

使用道具 舉報

地板
ID:86381 發(fā)表于 2015-7-21 16:47 | 只看該作者
正在學(xué)習(xí)AD/DA!謝謝
回復(fù)

使用道具 舉報

5#
ID:86664 發(fā)表于 2015-7-26 11:15 | 只看該作者
不錯,正在學(xué)ad/da
回復(fù)

使用道具 舉報

6#
ID:87908 發(fā)表于 2015-8-8 11:18 | 只看該作者
很好很強大
回復(fù)

使用道具 舉報

7#
ID:88201 發(fā)表于 2015-8-12 17:43 | 只看該作者
//unsigned char code Datatab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//data unsigned char  Display[8];
警告應(yīng)該是因為這兩句是多余的
回復(fù)

使用道具 舉報

8#
ID:91409 發(fā)表于 2015-10-6 16:04 | 只看該作者
樓主,我是小白。收獲好多,謝謝
回復(fù)

使用道具 舉報

9#
ID:96325 發(fā)表于 2015-11-19 11:13 | 只看該作者
很好的東西~謝謝樓主
回復(fù)

使用道具 舉報

10#
ID:96325 發(fā)表于 2015-11-19 11:14 | 只看該作者
很好的東西,謝謝樓主
回復(fù)

使用道具 舉報

11#
ID:96909 發(fā)表于 2015-11-27 11:35 | 只看該作者
    請問“發(fā)送一個字節(jié)”這一段程序是干啥用的,為啥要用著個程序呢,謝謝我是小白
回復(fù)

使用道具 舉報

12#
ID:97468 發(fā)表于 2015-11-28 15:52 | 只看該作者
很好的東西~謝謝樓主
回復(fù)

使用道具 舉報

13#
ID:97896 發(fā)表于 2015-12-1 19:31 | 只看該作者
剛開始學(xué)數(shù)模轉(zhuǎn)換,謝謝樓主啦。
回復(fù)

使用道具 舉報

14#
ID:65439 發(fā)表于 2015-12-3 10:47 | 只看該作者
深度好貼,謝謝樓主了。
回復(fù)

使用道具 舉報

15#
ID:97051 發(fā)表于 2015-12-21 10:50 | 只看該作者
很好的文章,剛好要用……
回復(fù)

使用道具 舉報

16#
ID:102731 發(fā)表于 2016-1-11 10:51 | 只看該作者
樓主東西很好,對我?guī)椭艽?img src="static/image/smiley/default/em01.gif" smilieid="1" border="0" alt="" />
回復(fù)

使用道具 舉報

17#
ID:103715 發(fā)表于 2016-1-18 23:35 | 只看該作者
學(xué)習(xí)了,學(xué)習(xí)了,感謝樓主
回復(fù)

使用道具 舉報

18#
ID:97171 發(fā)表于 2016-2-23 11:13 | 只看該作者

樓主,這兩個圈里的器件指的應(yīng)該是同一個器件吧?那為什么第152行代碼中器件地址是SLAVEADDR,而第159行代碼中器件地址是SLAVEADDR+1?為什么要加1呢?
回復(fù)

使用道具 舉報

19#
ID:97171 發(fā)表于 2016-2-24 08:39 | 只看該作者
我突然明白了,152行的SLAVEADDR是要寫,159行的SLAVEADDR+1是要讀,所以要加1

評分

參與人數(shù) 1黑幣 +3 收起 理由
勇猛的大表哥 + 3 贊一個!

查看全部評分

回復(fù)

使用道具 舉報

20#
ID:119828 發(fā)表于 2016-5-10 16:27 | 只看該作者
學(xué)習(xí)了,謝謝!
回復(fù)

使用道具 舉報

21#
ID:120508 發(fā)表于 2016-5-13 11:56 | 只看該作者
DA輸出之前沒怎么了解  今天惡補  謝謝
回復(fù)

使用道具 舉報

22#
ID:122310 發(fā)表于 2016-5-21 09:52 | 只看該作者
謝謝分享!!
回復(fù)

使用道具 舉報

23#
ID:123329 發(fā)表于 2016-5-26 14:33 | 只看該作者
很好,十分有用。感謝分享。
回復(fù)

使用道具 舉報

24#
ID:123955 發(fā)表于 2016-5-30 10:45 | 只看該作者
請問,你們有遇到DA輸出的時候電壓不夠的情況嗎?測到VCC有5.19V,但是輸出最大只能到4.42V,
回復(fù)

使用道具 舉報

25#
ID:126889 發(fā)表于 2016-6-15 18:09 | 只看該作者
請問轉(zhuǎn)換周期怎么計算,或者說具體采樣頻率怎么計算
回復(fù)

使用道具 舉報

26#
ID:127352 發(fā)表于 2016-6-21 15:41 | 只看該作者
PCF8591和PCF8591T有什么區(qū)別嗎?是不是管腳不同?
回復(fù)

使用道具 舉報

27#
ID:141194 發(fā)表于 2016-10-3 11:57 | 只看該作者
樓主威武  樓主萬歲萬歲萬萬歲
回復(fù)

使用道具 舉報

28#
ID:146352 發(fā)表于 2016-11-5 23:58 | 只看該作者
終于在這找到了,正需要
回復(fù)

使用道具 舉報

29#
ID:147122 發(fā)表于 2016-11-9 20:30 | 只看該作者
漲姿勢
回復(fù)

使用道具 舉報

30#
ID:147122 發(fā)表于 2016-11-9 20:31 | 只看該作者
加油啊
回復(fù)

使用道具 舉報

31#
ID:147740 發(fā)表于 2016-11-17 17:25 | 只看該作者
貌似很不錯
回復(fù)

使用道具 舉報

32#
ID:129418 發(fā)表于 2016-12-17 21:40 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報

33#
ID:170948 發(fā)表于 2017-3-27 15:50 | 只看該作者
沒有黑幣啊,好苦惱。。。。。。。
回復(fù)

使用道具 舉報

34#
ID:190947 發(fā)表于 2017-4-19 22:15 | 只看該作者
w2 w3是什么東西??
回復(fù)

使用道具 舉報

35#
ID:192309 發(fā)表于 2017-4-22 13:26 | 只看該作者
很給力��!
回復(fù)

使用道具 舉報

36#
ID:73234 發(fā)表于 2017-5-7 09:52 | 只看該作者
謝謝樓主,畢設(shè)正好需要這個器件
回復(fù)

使用道具 舉報

37#
ID:73234 發(fā)表于 2017-5-12 10:59 | 只看該作者
謝謝樓主,�。�!
回復(fù)

使用道具 舉報

38#
ID:184237 發(fā)表于 2017-8-22 11:06 | 只看該作者
請問,我沒加上拉電阻,數(shù)值一直在跳,等我加上上拉電阻,求平均值后  數(shù)據(jù)會穩(wěn)定下來嗎
回復(fù)

使用道具 舉報

39#
ID:279557 發(fā)表于 2018-2-7 09:45 | 只看該作者
厲害啊,好東西
回復(fù)

使用道具 舉報

40#
ID:314244 發(fā)表于 2018-4-23 10:00 | 只看該作者
還沒看見 不知道是不是深度好文,現(xiàn)在正在登陸
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表