色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機—ADC0808—05—①

          51單片機—ADC0808—05—①

          作者: 時間:2016-11-26 來源:網(wǎng)絡 收藏
          早晚也是閑著沒事情做~~干脆就發(fā)點簡單的東西,畢竟所謂的復雜就是一堆簡單的堆出來的~~~究其根本,沒有什么復雜的~

          畢竟ADC這個東西用的比較多,也很成熟,做出來的東西也是挺多的,所以這個東東就用兩三個實驗來敘述吧~

          本文引用地址:http://cafeforensic.com/article/201611/322019.htm

          先說一下ADC0808 這款A/D轉(zhuǎn)換器的介紹:

          1、ADC0808的簡介

          A/D轉(zhuǎn)換器是一種能把輸入模擬電壓或者電流信息變成與其成正比的數(shù)字量信息的電路芯片。A/D轉(zhuǎn)換器用于實現(xiàn)模擬量到數(shù)字量的轉(zhuǎn)換。

          ADC0808是典型的8通道模擬輸入8位并行數(shù)字輸出的逐次逼近式A/D轉(zhuǎn)換器。該轉(zhuǎn)換器采用COMS工藝,可以實現(xiàn)8路模擬信號的分時采集。片內(nèi)有8路模擬選通開關,以及相應的通道地址鎖存用譯碼電路。

          1)ADC0808芯片的介紹



          2)ADC0808的引腳





          3)ADC0808的工作流程



          4)與51單片機的借口


          基本上也就這么點東西~~~很簡單吧~~我感覺也是~~

          我艸,然我白白調(diào)了半天程序,就那么一點點的錯誤,浪費了好多的時間,真不爽啊~~~


          貼圖看看~~



          由于以后會用模塊化編程,便于自己以后直接調(diào)用~~~,這個主函數(shù):


          //------------------------------------------------------------------------------
          //實現(xiàn)由ADC0808作為A/D轉(zhuǎn)換器對電阻進行電壓的測試
          //數(shù)碼管顯示的數(shù)據(jù)范圍為0~255
          #include"reg52.h"
          #include"macroandconst.h"
          #include"delay.h"
          #include"adc0808.h"
          //------------------------------------------------------------------------------
          uchar code seg_disp[4]={0x10,0x20,0x40,0x00};//LED顯示的控制代碼
          uchar count;//LED顯示位控制
          sbittem=P2^0;
          uchar temp_0=0;
          //------------------------------------------------------------------------------
          //定時器初始化函數(shù)
          void timer_init()
          {
          TMOD=0X12;//T0工作在模式2,T1工作在模式1
          TH0=(256-50)/256;
          TL0=TH0;
          TH1=(65536-4000)/256;
          TL1=(65536-4000)%6;

          ET0=1;
          ET1=1;
          TR0=1;
          TR1=1;
          //PT1=1;

          EA=1;
          }
          //------------------------------------------------------------------------------
          //main
          void main()
          {
          timer_init();
          while(1)
          {
          ADC0808_init();
          }
          }
          //------------------------------------------------------------------------------
          //timer0
          void timer0() interrupt 1
          {
          CLK=~CLK;
          if(temp_0==100)
          {
          temp_0=0;
          tem=~tem;
          }
          }
          //------------------------------------------------------------------------------
          //timer1
          void timer1() interrupt 3
          {
          TH1=(65536-4000)/256;
          TL1=(65536-4000)%6;
          for(count=0;count<4;count++)
          {
          P1=seg_disp[count]|display[count];
          delay(10);
          }
          }

          然后就是ADC0808的初始化函數(shù)了(一些輔助的函數(shù)我就不貼出來了,比如宏定義啊,軟件延時啊,引腳定義什么的~~):

          //------------------------------------------------------------------------------
          //adc0808的文件函數(shù)
          #include"reg52.h"
          #include"delay.h"
          #include"macroandconst.h"
          //------------------------------------------------------------------------------
          sbit START=P3^0; //轉(zhuǎn)換啟動信號
          sbit OE=P3^1;//輸出允許信號
          sbit EOC=P3^2;//轉(zhuǎn)換結(jié)束狀態(tài)信號
          sbit CLK=P3^7;//時鐘信號輸入端,ADC0808內(nèi)部沒有時鐘電路,所需的時鐘信號由外部輸入,通常頻率為500KHz
          uchar get_data;//ADC0808轉(zhuǎn)換后的數(shù)值
          uchar temp;//用于存儲ADC0808轉(zhuǎn)換后處理過程中的臨時數(shù)值
          uchar display[3];//存儲十進制的數(shù)值
          //------------------------------------------------------------------------------
          //ADC0808的啟動和轉(zhuǎn)換的初始化函數(shù)
          void ADC0808_init()
          {
          START=0;//START信號上升沿,將所有內(nèi)部寄存器清0
          START=1;
          START=0;//START信號下降沿,開始A/D轉(zhuǎn)換,在轉(zhuǎn)換過程中START保持為低電平

          while(EOC==0);//等待轉(zhuǎn)換結(jié)束

          OE=1;//允許器件輸出轉(zhuǎn)換的結(jié)果

          get_data=P0;//P0口接ADC0808,你懂得~~
          temp=get_data;//暫存轉(zhuǎn)換結(jié)果

          OE=0;

          display[0]=get_data/100;//將轉(zhuǎn)換的結(jié)果轉(zhuǎn)換為10進制數(shù)
          display[1]=get_data0/10;
          display[2]=get_data;
          }



          關鍵詞: 51單片機ADC080

          評論


          技術專區(qū)

          關閉