<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 用Proteus學(xué)習51單片機之AD轉換

用Proteus學(xué)習51單片機之AD轉換

作者: 時(shí)間:2017-01-24 來(lái)源:網(wǎng)絡(luò ) 收藏

  現實(shí)中的很多量,都是模擬量,如溫度,壓力等,單片機要去了解它們,首先就要把這些量進(jìn)行數字化,即把模擬量轉變?yōu)閿底至?。這次書(shū)上介紹的AD芯片為ADC0804,8位并行芯片。關(guān)于的詳細原理,我就不抄了,網(wǎng)上有的是。

本文引用地址:http://dyxdggzs.com/article/201701/343313.htm

  ADC0804的使用,比前面用過(guò)的鎖存器74LS573難用得多,主要是讀寫(xiě)數據都要根據時(shí)序圖,進(jìn)行電位的變化,而且芯片的接法也相對麻煩一點(diǎn)。下面記錄一下引腳定義:

  VIN(+),VIN(-):待測量的模擬信號輸入

  DB0~DB7:測量結果輸出

  AGND:模擬信號地

  DGND:數字信號地

  CLK:時(shí)鐘信號輸入端

  CLKR:內部時(shí)鐘發(fā)生器的外接電阻端,與CLK端配合可由芯片自身產(chǎn)生時(shí)鐘脈沖,其頻率為1/(1.1RC)

  CS:片選信號,低電平有效

  WR:寫(xiě)信號輸入,低電平啟動(dòng)A/D轉換

  RD:讀信號輸入,低電平有效

  INTR:A/D轉換結束信號,低電平表示本次轉換已經(jīng)完成

  VREF/2:參考電平輸入,決定量化單位(可以調節該電平,調節最終準確度)

  VCC:電源輸入

    

 

  關(guān)于時(shí)鐘:如果使用內部時(shí)鐘的話(huà),官方的建議是用10K電阻和150pF電容,如上圖;

  模擬地和數字地一般直接接地即可。參考電平在2.5V左右,我試了一下,調到2.55的時(shí)候比較準確。關(guān)于待測量的模擬信號,如電壓,可以向上圖一樣連接,負直接接地即可。

  這里沒(méi)有用到INTR,即沒(méi)用中斷,而是直接用延時(shí)的方法,等待A/D轉換完成后,讀取DB0~DB7的值。

  --------------------------------------------------------------------

  讀寫(xiě)芯片都要根據芯片的時(shí)序來(lái),其寫(xiě)時(shí)序如下:

    

 

  可以看到,首先要使片選信號置低電平,然后寫(xiě)信號下降,上升后,芯片開(kāi)始A/D轉換,轉換完成后INTR置低電平通知已經(jīng)完成。

  讀時(shí)序如下:

    

 

  可以看到,轉換完成后,選使片選有效,然后使讀引腳下降,再上升,即可讀取數據。

  由于不管讀寫(xiě),都要使片選有效,即CS腳置低,所以CS腳置一次低就可以了。

  1void main()

  {

  uchar val = 0;

  //允許AD芯片

  ad_cs = 0;

  while(1)

  {

  ad_write = 0;//WR腳置低

  _nop_();

  ad_write = 1;//WR腳置高,完成時(shí)序,轉換開(kāi)始

  delay(50);//稍等后轉換會(huì )完成,由于沒(méi)用中斷,所以采用延時(shí)50毫秒

  P1 = 0xff;//先把數據端口全部置1,避免原先數據影響

  ad_read = 0;//RD腳置高

  _nop_();

  val = P1;//把數據存入臨時(shí)變量

  ad_read = 1;//RD腳置低

  show((val>>4)*0.32 + (val&0x0f)*0.02);//根據換算規則,把數據換算成實(shí)際電壓

  }

  }

  換算的規則是,8位數據的高四位,相當于每單位0.32V,低四位,相當于每單位0.02V,所以總電壓就是:

  (val>>4)*0.32 + (val&0x0f)*0.02)

    

 

  這次沒(méi)有使用中斷,直接采用延時(shí)讀取,實(shí)在是有些不爽,有時(shí)間的話(huà),把程序改一下,改成使用中斷通知的。

  --------------------------------------------------------------

  嘗試了一下,完成了由中斷實(shí)現的A/D轉換,不再需要時(shí)刻去檢驗了,提高了程序的運行效率。原理圖需要稍微改一下,由于用到了外部中斷0,即P3.2腳,而這個(gè)腳本來(lái)連接到了ADC0804的片選引腳,所以要把片選改到P3.5,然后把芯片的INTR連接到P3.2腳才能引發(fā)中斷。具體請下載查看。



關(guān)鍵詞: Proteus AD轉換

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>