新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 模數轉換DAC0832的應用實驗

        模數轉換DAC0832的應用實驗

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

        [實驗任務]
        用兩個按鍵通過單片機控制的輸出,使OUT端可以輸出0—5V的幅值,頻率為1KHZ的鋸齒波和三角波兩種波形。通上電源后;按下INT1則輸出三角波,在按下INT0輸出鋸齒波。

        [實驗原理]
        ADC0804是8位全MOS 中速D/A,采用R—2RT形電阻解碼網絡,轉換結果為一對差動電流輸出,轉換時間大約為1us。使用單電源+5V―+15V供電。參考電壓為-10V-+10V。在此我們直接選擇+5V作為參考電壓。有三種工作方式:直通方式,單緩沖方式,雙緩沖方式;在此我們選擇直通的工作方式,將XFER WR 1WR2 CS管腳全部接數字地。管腳8接參考電壓,在此我們接的參考電壓是+5V。那么經過第一級運放后,輸出電壓將是-5V-0V,在經過第二級運放反相放大1倍以后將可以輸出0V—5V了。我們在控制P1口輸出數據有規律的變化將可以產生三角波,鋸齒波,梯型波等波形了。

        [C語言源程序]
        #include AT89X51.H>
        unsigned char keycnt=0;
        unsigned char tcnt=0; //鍵值判斷
        bit sjz=0; //產生三角波時用到的標志
        void delayl() //延時子程序
        { unsigned char i,j;
        for(i=20;i>0;i--)
        for(j=248;j>0;j--); }
        void KEY() //按鍵掃描程序
        {
        if(P3_2==0)
        {
        delayl(); //延時跳過按下時的抖動
        if(P3_2==0)
        {
        keycnt=0; //定時器產生鋸齒波標志
        TR0=0; //暫時停止波形輸出
        TH0=0x256-40; //對TH0 TL0賦值
        TL0=0x256-40;
        TR0=1; //開始定時,產生鋸齒波
        while(P3_2==0); //如果一直按著鍵,則等待松鍵開
        delayl(); //延時跳過松開后的抖動
        } }
        if(P3_3==0)
        {
        delayl(); //延時跳過按下時的抖動
        if(P3_3==0)
        {
        keycnt=1; //定時器產生三角波標志
        TR0=0; //暫時停止波形輸出
        TH0=0x256-40; //對TH0 TL0賦值
        TL0=0x256-40;
        TR0=1; //開始定時 產生三角波
        }
        while(P3_2==0); //如果一直按著鍵,則等待松鍵開
        delayl(); //延時跳過松開后的抖動
        }
        } //請注意寫程序時的格式規范,此處是為了節省紙張
        void t0(void) interrupt 1 using 0 //定時中斷服務函數
        {
        if(keycnt==0) //產生鋸齒波
        {
        P0=tcnt;
        tcnt=+0x0a; //步進0.2V/一次中斷
        if(tcnt==0xfb)
        {tcnt=0;}
        }
        if(keycnt==1) //產生三角波
        { if(sjz==0)
        {P0=tcnt;
        tcnt=+0x0a;//步進0.2V/一次中斷
        if(tcnt==0xfa)
        {sjz=1;}
        }
        if(sjz==1)
        {
        P0=tcnt;
        tcnt=-0x0a;
        if(tcnt==0)
        {sjz=0;}
        }
        }
        }
        void main(void)
        {
        TMOD=0x02; //定時器工作在方式2
        ET0=1;
        EA=1;
        while(1)
        { KEY(); }
        }

        [硬件電路圖]
        模數轉換DAC0832的應用實驗


        c語言相關文章:c語言教程




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 枣庄市| 积石山| 合川市| 磴口县| 大足县| 泽普县| 霸州市| 德安县| 离岛区| 淳安县| 邵东县| 荣昌县| 习水县| 武宣县| 临沧市| 丘北县| 田林县| 社旗县| 兴国县| 咸阳市| 太谷县| 闵行区| 定陶县| 富阳市| 麻栗坡县| 青浦区| 阳原县| 天等县| 天津市| 乌审旗| 平凉市| 陆河县| 邯郸县| 色达县| 永清县| 鸡泽县| 奉贤区| 平武县| 屏东县| 辉南县| 济阳县|