新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 三通道12位模數轉換MAX1241串口傳輸單片機C程序

        三通道12位模數轉換MAX1241串口傳輸單片機C程序

        作者: 時間:2016-11-30 來源:網絡 收藏
        今天完成數據傳輸硬件程序,才用8位傳輸,位數太多就拆開,分高8位和低8位,電路圖在這里:http://www.51hei.com/mcu/2273.html程序可以參考使用:

        #include
        #define uchar unsigned char
        #define uint unsigned int
        #define High 1
        #define Low0
        int t1,t2,t3,t4,t5,t6,t7,t11,t12,t21,t22,t31,t32;
        int t;
        sbit cs=P2^7;
        sbit sclk=P2^6;
        sbit dout=P2^5;

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

        sbit cs2=P2^4;
        sbit sclk2=P2^3;
        sbit dout2=P2^2;

        sbit cs3=P2^1;
        sbit sclk3=P2^0;
        sbit dout3=P0^7;

        uint dushuju() //定義為可以返回的參數
        {
        uint voltage_temp=0;
        uchar ucloop=12;
        cs=High;
        sclk=Low;
        cs=Low;
        while(dout==0);//EOC信號為高表示轉換結束
        sclk=High;
        sclk=Low;
        while(ucloop--)
        {
        sclk=High;//上升沿數據穩定并讀出
        voltage_temp<<=1;
        if(dout==1)
        voltage_temp+=1;
        sclk=Low;
        }
        cs=High;
        return voltage_temp; //返回數據
        }
        uint dushuju2() //定義為可以返回的參數
        {
        uint voltage_temp2=0;
        uchar ucloop=12;
        cs2=High;
        sclk2=Low;
        cs2=Low;
        while(dout2==0);//EOC信號為高表示轉換結束
        sclk2=High;
        sclk2=Low;
        while(ucloop--)
        {
        sclk2=High;//上升沿數據穩定并讀出
        voltage_temp2<<=1;
        if(dout2==1)
        voltage_temp2+=1;
        sclk2=Low;
        }
        cs2=High;
        return voltage_temp2; //返回數據
        }
        uint dushuju3() //定義為可以返回的參數
        {
        uint voltage_temp3=0;
        uchar ucloop=12;
        cs3=High;
        sclk3=Low;
        cs3=Low;
        while(dout3==0);//EOC信號為高表示轉換結束
        sclk3=High;
        sclk3=Low;
        while(ucloop--)
        {
        sclk3=High;//上升沿數據穩定并讀出
        voltage_temp3<<=1;
        if(dout3==1)
        voltage_temp3+=1;
        sclk3=Low;
        }
        cs3=High;
        return voltage_temp3; //返回數據
        }

        uint dushuju4() //定義為可以返回的參數
        {
        uint voltage_temp4=0;
        uchar ucloop=12;
        cs=High;
        sclk=Low;
        cs=Low;
        while(dout==0);//EOC信號為高表示轉換結束
        sclk=High;
        sclk=Low;
        while(ucloop--)
        {
        sclk=High;//上升沿數據穩定并讀出
        voltage_temp4<<=1;
        if(dout==1)
        voltage_temp4+=1;
        sclk=Low;
        }
        cs=High;
        return voltage_temp4; //返回數據
        }
        void shuju(void)
        {
        t4=dushuju();
        t5=dushuju2();
        t6=dushuju3();
        t12=t4%256;//將數據轉換為高8位和低8位
        t11=t4/256%256;
        t22=t5%256;
        t21=t5/256%256;
        t32=t6%256;
        t31=t6/256%256;
        }
        void shujul(void)
        {
        t7=dushuju4();
        }
        void csh(void)
        {
        SM0=0;
        SM1=1;
        REN=1;
        TI=0;
        RI=0;
        PCON=0;
        TH1=0xF3;
        TL1=0XF3;
        TMOD=0X20;
        EA=1;
        ET1=0;
        ES=1;
        TR1=1;

        TI=0;
        SBUF=1;
        while(!TI);
        TI=0;
        SBUF=t11;
        while(!TI);
        TI=0;
        SBUF=t12;
        while(!TI);
        TI=0;

        SBUF=2;
        while(!TI);
        TI=0;
        SBUF=t21;
        while(!TI);
        TI=0;
        SBUF=t22;
        while(!TI);
        TI=0;

        SBUF=3;
        while(!TI);
        TI=0;
        SBUF=t31;
        while(!TI);
        TI=0;
        SBUF=t32;
        while(!TI);
        TI=0;
        }

        void main(void)
        {
        shuju();
        csh();
        loop:
        shujul();
        if ((t7-t4)>=10)
        {
        shuju();
        csh();
        goto loop ;
        }
        else
        goto loop ;

        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 莱阳市| 新巴尔虎右旗| 休宁县| 玛曲县| 巢湖市| 交口县| 襄城县| 富川| 石景山区| 绵竹市| 宁晋县| 容城县| 张北县| 海安县| 昔阳县| 江华| 黔西县| 八宿县| 博白县| 遂川县| 丰县| 皋兰县| 松溪县| 武山县| 香港 | 永丰县| 阜宁县| 额敏县| 台山市| 南丹县| 额尔古纳市| 伊宁县| 太康县| 韩城市| 方山县| 瑞金市| 古丈县| 邵阳市| 高尔夫| 保德县| 邢台县|