新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于單片機與AD1674的數據采集

        基于單片機與AD1674的數據采集

        作者: 時間:2012-03-28 來源:網絡 收藏

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

        也不能正確讀取轉換結果。

        的功能圖如下:

        51.jpg

        2. 與ATMEL89S8252的接口:

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

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

        系統連線圖如下:

        3.本系統軟件采用C語言開發設計而成,增強了程序的可讀性和易懂性。程序清單如下:
        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變低,轉換結束
        *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;
        }
        }



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 灌云县| 张掖市| 石嘴山市| 池州市| 平遥县| 应城市| 家居| 茌平县| 竹山县| 凤冈县| 革吉县| SHOW| 巴里| 雷波县| 康定县| 崇左市| 宜春市| 高阳县| 民乐县| 丰宁| 嵩明县| 凭祥市| 丰城市| 玉龙| 绥宁县| 白城市| 宝鸡市| 登封市| 友谊县| 中方县| 昌平区| 长岛县| 沾益县| 苗栗县| 鄂托克前旗| 南溪县| 若尔盖县| 长子县| 陈巴尔虎旗| 福清市| 定南县|