久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 30490|回復: 2
打印 上一主題 下一主題
收起左側

8位數模轉換器DAC0832介紹及51單片機驅動程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:80436 發表于 2015-5-21 23:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
1.  引腳及其功能

DAC0832是雙列直插式8D/A轉換器。能完成數字量輸入到模擬量(電流)輸出的轉換。圖1-1和圖1-2分別為DAC0832的引腳圖和內部結構圖。其主要參數如下:分辨率為8位,轉換時間為1μs,滿量程誤差為±1LSB,參考電壓為(+10?/span>-10)V,供電電源為(+5+15)V,邏輯電平輸入與TTL兼容。從圖1-1中可見,在DAC0832中有兩級鎖存器,第一級鎖存器稱為輸入寄存器,它的允許鎖存信號為ILE,第二級鎖存器稱為DAC寄存器,它的鎖存信號也稱為通道控制信號 /XFER

1-1DAC0832引腳圖

1-1中,當ILE為高電平,片選信號 /CS 和寫信號 /WR1為低電平時,輸入寄存器控制信號為1,這種情況下,輸入寄存器的輸出隨輸入而變化。此后,當 /WR1由低電平變高時,控制信號成為低電平,此時,數據被鎖存到輸入寄存器中,這樣輸入寄存器的輸出端不再隨外部數據DB的變化而變化。

對第二級鎖存來說,傳送控制信號 /XFER 和寫信號 /WR2同時為低電平時,二級鎖存控制信號為高電平,8位的DAC寄存器的輸出隨輸入而變化,此后,當 /WR2由低電平變高時,控制信號變為低電平,于是將輸入寄存器的信息鎖存到DAC寄存器中。

1-1中其余各引腳的功能定義如下:

(1)DI7DI0 8位的數據輸入端,DI7為最高位。

(2)IOUT1 :模擬電流輸出端1,當DAC寄存器中數據全為1時,輸出電流最大,當DAC寄存器中數據全為0時,輸出電流為0

(3)IOUT2 :模擬電流輸出端2 IOUT2IOUT1的和為一個常數,即IOUT1IOUT2=常數。

(4)RFB :反饋電阻引出端,DAC0832內部已經有反饋電阻,所以 RFB端可以直接接到外部運算放大器的輸出端,這樣相當于將一個反饋電阻接在運算放大器的輸出端和輸入端之間。

(5)VREF :參考電壓輸入端,此端可接一個正電壓,也可接一個負電壓,它決定0255的數字量轉化出來的模擬量電壓值的幅度,VREF范圍為(+10-10)VVREF端與D/A內部T形電阻網絡相連。

(6)Vcc :芯片供電電壓,范圍為(+5~ 15)V

(7)AGND :模擬量地,即模擬電路接地端。

(8)DGND :數字量地。



下面是單片機驅動程序:
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit CS = P1^0;
sbit CLK = P1^1;
sbit DI = P1^2;
sbit DO = P1^2;

uchar code Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}

void Display(uint dat) //顯示的數值為毫伏
{
        uchar ge,shi,bai,qian;
        qian = dat/1000%10;
        bai = dat/100%10;
        shi = dat/10%10;
        ge = dat%10;

        P2 = 0xfe;
        P0 = Tab[qian]|0x80;   //最高位加小數點
        delay(1);
        P2 = 0xfd;
        P0 = Tab[bai];
        delay(1);
        P2 = 0xfb;
        P0 = Tab[shi];
        delay(1);
        P2 = 0xf7;
        P0 = Tab[ge];
        delay(1);
}

uchar ADC0832(bit mode,bit channel)     //AD轉換,返回結果
{
        uchar i,dat,ndat;

        CS = 0;//拉低CS端
        _nop_();
        _nop_();

        DI = 1;        //第1個下降沿為高到
        CLK = 1;//拉高CLK端
        _nop_();
        _nop_();
     CLK = 0;//拉低CLK端,形成下降沿1
        _nop_();
        _nop_();

        DI = mode;        //低電平為差分模式,電平為單通道模式        
        CLK = 1;//拉高CLK端
        _nop_();
        _nop_();
        CLK = 0;//拉低CLK端,形成下降沿2
        _nop_();
        _nop_();

        DI = channel;//低電平為CH0,高縉轎狢H1        
        CLK = 1;//拉高CLK端
        _nop_();
        _nop_();
        CLK = 0;//拉低CLK端,形成下降沿3

        DI = 1;//控制命令結束(經試驗必需)
        dat = 0;
        //下面開始讀取轉換后的數據,從最高位開始依次輸出(D7~D0)
        for(i = 0;i < 8;i++)
        {
                dat <<= 1;
                CLK=1;//拉高時鐘端
                _nop_();
                _nop_();
                CLK=0;//拉低時鐘端形成一次時鐘脈沖
                _nop_();
                _nop_();
                dat |= DO;
        }
        ndat = 0;            //記錄D0
        if(DO == 1)
        ndat |= 0x80;
        //下面開始繼續讀取反序的數據(從D1到D7)
        for(i = 0;i < 7;i++)
        {
                ndat >>= 1;
                CLK = 1;//拉高時鐘端
                _nop_();
                _nop_();
                CLK=0;//拉低時鐘端形成一次時鐘脈沖
                _nop_();
                _nop_();
                if(DO==1)
                ndat |= 0x80;
        }         
        CS=1;//拉高CS端,結束轉換
        CLK=0;//拉低CLK端
        DI=1;//拉高數據端,回到初始狀態
        if(dat==ndat)
        return(dat);
        else
        return 0;   
}

void main()
{
        uint adc;
        while(1)
        {
                adc = ADC0832(0,0);  //差分模式,CH0-CH1
                adc = adc*19.607843; //轉換為實際電壓便于顯示
                Display(adc);            
        }           
}



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩1
回復

使用道具 舉報

沙發
ID:234782 發表于 2018-4-27 15:05 | 只看該作者
學習學習
每天學習每天進步
回復

使用道具 舉報

板凳
ID:356831 發表于 2018-6-22 18:59 | 只看該作者
yulin3192 發表于 2018-4-27 15:05
學習學習
每天學習每天進步

DAC0832的介紹,ADC0832的程序
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩视频区 | 欧美日韩电影一区二区 | 99免费视频 | 欧美午夜精品理论片a级按摩 | 韩国精品一区二区三区 | 日本不卡免费新一二三区 | 国产精品成人一区 | 黄色国产| 一区二区三区在线 | 97国产精品视频人人做人人爱 | 成人一区二区视频 | 亚洲视频中文字幕 | 色黄网站 | 一区二区三区中文字幕 | 日韩欧美一级片 | 亚洲综合久久精品 | 色屁屁在线观看 | 亚洲国产一区在线 | 国产黄视频在线播放 | 美国一级毛片a | 男人的天堂亚洲 | 精品国产乱码久久久久久丨区2区 | 久久精品一区二区 | 欧美女优在线观看 | 亚洲一区二区久久 | 日本中文在线视频 | 69性欧美高清影院 | 特级黄一级播放 | 久久国产秒 | 精品欧美乱码久久久久久 | 羞羞视频网站免费看 | 日日干日日操 | 午夜精品一区二区三区三上悠亚 | 欧美精品一区二区蜜桃 | 日日夜夜精品视频 | 欧美中文字幕在线观看 | 欧美伊人久久久久久久久影院 | 高清黄色网址 | 天天艹| 午夜寂寞影院在线观看 | 中文字幕视频在线 |