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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于單片機與AD1674的數(shù)據(jù)采集

          基于單片機與AD1674的數(shù)據(jù)采集

          作者: 時間:2012-03-28 來源:網(wǎng)絡(luò) 收藏

          的接口: 可以進行12位轉(zhuǎn)換,也可以進行8位轉(zhuǎn)換,由于是8位的,需要進行兩次轉(zhuǎn)換,這里需要注意的是必須將BIT11-BIT4接到數(shù)據(jù)總線的 D7-D0,而將BIT3-BIT0采取向高位靠齊,接到接到D7-D4,分兩次讀取轉(zhuǎn)換結(jié)果,切不可錯接,如果錯接的話,極易損壞芯片,

          也不能正確讀取轉(zhuǎn)換結(jié)果。

          的功能圖如下:

          51.jpg

          2. 與ATMEL89S8252的接口:

          模擬量經(jīng)由八選一多路轉(zhuǎn)換器ADG408 輸入到 AD1674.AD1674可以進行12位轉(zhuǎn)換,也可以進行8位轉(zhuǎn)換,由于是8位的,需要進行兩次轉(zhuǎn)換,這里需要注意的是必須將 BIT11-BIT4接到數(shù)據(jù)總線的D7-D0,而將BIT3-BIT0采取向高位靠齊,接到接到D7-D4,分兩次讀取轉(zhuǎn)換結(jié)果。

          AD1674有 5根控制線,其中CE,CS,R/C,為一般控制線,完成器件的定時、尋址、啟動和讀出操作,12/8和A0決定芯片的轉(zhuǎn)換周期和數(shù)據(jù)輸出格式。 CE,CS,R/C三者有效的次序可先可后,在本單片機系統(tǒng)中,12/8接地,CE與單片機的讀寫信號經(jīng)過與或門連接。而CE,R/C由74LS373控制,CS由74LS138經(jīng)過譯碼來控制。在下圖中可以看出AD1674的地址為0x5fff,74LS373的地址為0x3fff 。在啟動轉(zhuǎn)換或讀取A/D 之前,必須將A0和R/C置成如上圖所示的相應(yīng)電平,然后再在CS端施加一負脈沖。AD1674的總線讀取周期為250ns,可直接掛接在數(shù)據(jù)總線上。由于AD1674的轉(zhuǎn)換速度極快,采用查詢的方式來設(shè)計的。其中STS是轉(zhuǎn)換結(jié)束標志,它可提供CPU查詢A/D轉(zhuǎn)換是否結(jié)束。在本系統(tǒng)中,STS接單片機的P13端.

          系統(tǒng)連線圖如下:

          3.本系統(tǒng)軟件采用C語言開發(fā)設(shè)計而成,增強了程序的可讀性和易懂性。程序清單如下:
          sbit p14=P1^4;
          sbit P13=P1^3;
          char xdata *ad74_ls=(char xdata *)0x3fff;//373地址
          char xdata *ad_1674=(char xdata *)0x5fff;
          void select_channel (unsigned char ch)
          {
          p14=1;選中408
          if(ch==0)
          {
          *ad74_ls=0x00; 373高3位控制ADG408的通道信號
          *ad_1674=0x00;//啟動12位
          while(P13==1);等待P13變低,轉(zhuǎn)換結(jié)束
          *ad74_ls=0x02; //置r/c為1,A0=0
          h=*ad_1674; 讀取高8位
          *ad74_ls=0x03; //置r/c為1,A0=1
          l=*ad_1674; }讀取低4位
          else if(ch==1)
          { *ad74_ls=0x20;
          *ad_1674=0x00;//啟動12位
          while(P13==1);
          *ad74_ls=0x22; //置r/c為1,A0=0
          h=*ad_1674;
          *ad74_ls=0x23; //置r/c為1,A0=1
          l=*ad_1674;
          }
          else if(ch==2)
          { *ad74_ls=0x40;
          *ad_1674=0x00;//啟動12位
          while(P13==1);
          *ad74_ls=0x42; //置r/c為1,A0=0
          h=*ad_1674;
          *ad74_ls=0x43; //置r/c為1,A0=1
          l=*ad_1674;
          }
          else if(ch==3)
          { *ad74_ls=0x60;
          *ad_1674=0x00;//啟動12位
          while(P13==1);
          *ad74_ls=0x62; //置r/c為1,A0=0
          h=*ad_1674;
          *ad74_ls=0x63; //置r/c為1,A0=1
          l=*ad_1674;
          }
          else if(ch==4)
          { *ad74_ls=0x80;
          *ad_1674=0x00;//啟動12位
          while(P13==1);
          *ad74_ls=0x82; //置r/c為1,A0=0
          h=*ad_1674;
          *ad74_ls=0x83; //置r/c為1,A0=1
          l=*ad_1674;
          }
          else if(ch==5)
          { *ad74_ls=0x0A0;
          *ad_1674=0x00;//啟動12位
          while(P13==1);
          *ad74_ls=0x0A2; //置r/c為1,A0=0
          h=*ad_1674;
          *ad74_ls=0x0A3; //置r/c為1,A0=1
          l=*ad_1674;
          }
          else if(ch==6)
          { *ad74_ls=0x0C0;
          *ad_1674=0x00;//啟動12位
          while(P13==1);
          *ad74_ls=0x0C2; //置r/c為1,A0=0
          h=*ad_1674;
          *ad74_ls=0x0C3; //置r/c為1,A0=1
          l=*ad_1674;
          }
          else
          { *ad74_ls=0x0E0;
          *ad_1674=0x00;//啟動12位
          while(P13==1);
          *ad74_ls=0x0E2; //置r/c為1,A0=0
          h=*ad_1674;
          *ad74_1s=0xE3;
          l=*ad_1674;
          }
          }



          評論


          相關(guān)推薦

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