新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機驅動ADC0808電路圖C51及匯編程序

        51單片機驅動ADC0808電路圖C51及匯編程序

        作者: 時間:2016-11-30 來源:網絡 收藏
        這兩天剛剛完成了一個用C編寫的程序,這是我第一個用C語言編寫的程序,并且調試成功。

        第一個C程序,值得紀念,也值得以后參考。

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

        本程序的功能是:

        1.ADC0808轉換功能;

           2.數據16進制顯示;

        3.串行通信數據。


        C51程序:工程文件下載:http://www.51hei.com/f/0808_c.rar

        #include
        #include
        #define uchar unsigned char
        #define uint unsigned int
        sbit START=P3^6; //啟動轉換
        sbit OE=P3^5; //輸出允許
        sbit EOC=P3^7; //轉換結束
        sbit WC=P3^4; //通道選擇
        sbit WB=P3^3; //通道選擇
        sbit WA=P3^2; //通道選擇
        uchar data led[12];
        signed data data1;
        signed data data2;
        signed data data3;
        signed data data4;
        signed data data5;
        signed data data6;
        signed data data7;
        uchar code tv[]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb};
        uchar code dc[]={0xC0, //"0"
        0xF9, //"1"
        0xA4, //"2"
        0xB0, //"3"
        0x99, //"4"
        0x92, //"5"
        0x82, //"6"
        0xF8, //"7"
        0x80, //"8"
        0x90, //"9"
        0x88, //"A"
        0x83, //"B"
        0xC6, //"C"
        0xA1, //"D"
        0x86, //"E"
        0x8E, };//"F"};/十六進制顯示方式
        void delay(void) //延時程序
        {
        uint i;
        for(i=0;i<10;i++);
        }
        void ledxianshi(void) //顯示模塊
        {
        uchar k,i;
        led[0]=data1%16; //編碼1個位
        led[1]=data1/16%16; //編碼1十位

        led[2]=data2%16; //數據1個位
        led[3]=data2/16%16; //數據1十位

        led[4]=data3%16; //編碼2個位
        led[5]=data3/16%16; //編碼2十位

        led[6]=data4%16; //數據2個位
        led[7]=data4/16%16; //數據2十位

        led[8]=data5%16; //編碼3個位
        led[9]=data5/16%16; //編碼3十位

        led[10]=data6%16; //數據3個位
        led[11]=data6/16%16; //數據3十位

        for(k=0;k<12;k++)
        {
        P2=tv[k]; //位選用
        i=led[k];
        P1=dc[i]; //段碼數顯示
        delay();
        }
        }

        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=data1;
        while(!TI);
        TI=0;
        SBUF=data2;
        while(!TI);
        TI=0;
        SBUF=data3;
        while(!TI);
        TI=0;
        SBUF=data4;
        while(!TI);
        TI=0;
        SBUF=data5;
        while(!TI);
        TI=0;
        SBUF=data6;
        while(!TI);
        TI=0;
        }
        void ad1(void)
        {
        WA=0; //通道1
        WB=0;
        WC=0;
        START=1;
        START=0; //啟動轉換
        while(EOC==0); //轉換結束信號,為0則說明轉換結束
        OE=1; //輸出允許信號,為真,可以輸出
        data7=P0; //P0口的測量值送到TVDATE
        OE=0; //關輸出允許
        }
        void ad2(void)
        {
        WA=1; //通道1
        WB=0;
        WC=0;
        START=1;
        START=0; //啟動轉換
        while(EOC==0); //轉換結束信號,為0則說明轉換結束
        OE=1; //輸出允許信號,為真,可以輸出
        data4=P0; //P0口的測量值送到TVDATE
        OE=0; //關輸出允許
        }


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 铜川市| 阜南县| 大厂| 安乡县| 靖宇县| 庆云县| 纳雍县| 扶余县| 仁化县| 永定县| 邵阳县| 玛多县| 增城市| 宝鸡市| 佛坪县| 崇文区| 滦南县| 修水县| 遂川县| 荆门市| 高安市| 巴林左旗| 全椒县| 修水县| 宁国市| 河间市| 荃湾区| 桑日县| 仙桃市| 上蔡县| 鄂托克旗| 丰台区| 肥西县| 基隆市| 乐安县| 洛川县| 巴彦淖尔市| 长顺县| 锡林浩特市| 登封市| 盐源县|