新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機 DAC0832

        51單片機 DAC0832

        作者: 時間:2016-11-25 來源:網絡 收藏
        原理圖:

        本文引用地址:http://www.104case.com/article/201611/321313.htm


        代碼如下:

        //程序功能:D/A轉換,D12由滅到亮,蜂鳴器響一次,再由亮到滅,蜂鳴器響一次,依次循環
        //頭文件
        #include
        #include //延時一個機械周期函數所在頭文件(_nop_())
        //定義宏
        #define uint unsigned int
        #define uchar unsigned char
        //控制端聲明
        sbit duanxuan=P2^6; //數碼管段選口
        sbit weixuan=P2^7; //數碼管位選口
        sbit DAC0832_CS=P3^2; //DAC0832選通端
        sbit DAC0832_WR=P3^6; //DAC0832寫選通端
        sbit beeper=P2^3; //蜂鳴器
        //函數聲明
        void delay(uint); //延時函數聲明
        void init(); //初始化函數聲明
        void DAC0832_star(); //DAC0832啟動函數聲明
        void switch_process(); //D/A轉換過程函數聲明
        //變量定義
        uint digital_data; //轉換的數字量(不需要轉換為二進制,直接可以賦值給P0口)
        uint flag; //數字量上下限標志量
        //主函數
        void main()
        {
        init();//初始化
        DAC0832_star(); //啟動DAC0832
        while(1)
        {
        switch_process(); //D/A轉換
        }
        }
        //延時函數主體
        void delay(uint xs)
        {
        uint i,j;
        for(i=xs;i>0;i--)
        {
        for(j=110;j>0;j--)
        {
        }
        }
        }
        //初始化函數主體
        void init()
        {
        //目的是關閉數碼管,因為數碼管數據輸入端與DAC0832數據輸入端同為P0端口
        duanxuan=0;
        weixuan=0;
        P0=0; //保證第一次點亮D12是最暗的(熄滅)
        }
        //DAC轉換啟動函數主體
        void DAC0832_star()
        {
        DAC0832_CS=0; //選通DAC0832
        DAC0832_WR=0; //輸入端有效(這么理解,具體與DAC0832其它引腳接法有關)
        }
        //DAC轉換過程函數主體
        void switch_process()
        {
        if(flag==0) //flag=0時,代表數字量達到最下限
        {
        digital_data+=5; //每次加5
        P0=digital_data; //賦值給P0,給DAC0832轉換為模擬量
        if(digital_data==255) //達到最大值上線
        {
        flag=1; //flag=1,說明數字量達到最上限
        //蜂鳴器響50us
        beeper=0;
        delay(50);
        beeper=1;
        }
        delay(20); //延時用于等待轉換完成,保證轉換是完成的(The DAC083_switch_time is 1us)
        }
        else //flag=1
        {
        digital_data-=5;
        P0=digital_data;
        if(digital_data==0)
        {
        flag=0;
        beeper=0;
        delay(50);
        beeper=1;
        }
        delay(20);
        }
        }

        以上,結束。



        關鍵詞: 51單片機DAC083

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 阳春市| 汽车| 武宣县| 威海市| 桃江县| 武宁县| 汨罗市| 石楼县| 上思县| 张家口市| 遂川县| 四川省| 定南县| 榕江县| 新津县| 万盛区| 东兰县| 平南县| 荣昌县| 兴宁市| 濮阳县| 吉水县| 武安市| 桦甸市| 虹口区| 凉城县| 巧家县| 利津县| 黄浦区| 靖州| 巫山县| 乐亭县| 芦溪县| 越西县| 阳城县| 巨野县| 五华县| 岗巴县| 吴江市| 徐州市| 临海市|