在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 使用STC12C5204AD單片機的數(shù)字電壓表

            使用STC12C5204AD單片機的數(shù)字電壓表

            作者: 時間:2016-11-30 來源:網(wǎng)絡(luò) 收藏

            這是一塊使用STC12C5204AD數(shù)字電壓表的制作程序,P0.0-P0.3 共陰數(shù)碼管位驅(qū)動端,P2口為共陰數(shù)碼管段a-g及dp的段驅(qū)動端口,P0、P2口設(shè)置為推挽輸出方式,段輸出加470歐限流電阻,AD為8位,轉(zhuǎn)換電壓分度5/256=0.0195312V,分流電阻為實測阻值,AD值*0.0195312v/對地分流電阻,算出分流電流,然后用分流電流*分流電阻與限流電阻之和即為要顯示的輸入電壓值。業(yè)余使用,精度已經(jīng)夠用了,比那個小的指針的要準確多了。其中涉及到端口設(shè)置的地方大家對照芯片手冊更正。
            #include //STC12C5204AD頭文件 (6 K) 下載次數(shù):15
            #include //_nop_();
            #define uchar unsigned char
            #define uint unsigned int
            //sfr ADC_CONTR=0XBC;//adc使能位.ADC電源控制位
            sfr ADC_RES=0XBD;//adc數(shù)據(jù)高八位,即ADC值
            sfr P1ASF=0X9D;//P1各端口ADC使能端
            uchar led_bcd[]={0x3F,/*0*/ //共陰數(shù)碼管
            0x06,/*1*/
            0x5B,/*2*/
            0x4F,/*3*/
            0x66,/*4*/
            0x6D,/*5*/
            0x7D,/*6*/
            0x07,/*7*/
            0x7F,/*8*/
            0x6F,/*9*/
            0x00,/* */
            0x7c /*b*/
            }
            ,ad_data
            ;
            uint data dis[5]={0x00,0x00,0x00,0x00,0x00},ZZ; //定義四個顯示數(shù)據(jù)單元和一個數(shù)據(jù)存儲單元
            //dis[4,3,2,1,5] 顯示:12.34 5為存儲單元

            本文引用地址:http://www.biyoush.com/article/201611/324016.htm

            /*******************************************************************/
            /* 延時子程序 */
            /* */
            /* */
            /*******************************************************************/
            void delay(uint z) //延時子函數(shù)
            {
            uchar de1,de2;
            for(de1=z;de1>0;de1--)
            for(de2=100;de2>0;de2--);
            }
            /*******************************************************/
            //顯示子函數(shù) display(h1,h2,h3,h4)
            //h1,h2,h3,h4 為四位LED數(shù)碼管顯示變量
            //
            //
            //
            /*******************************************************/
            void display(uchar h1,uchar h2,uchar s1,uchar s2) ////LED顯示函數(shù)(參數(shù):LED1,LED2,LED3,LED4)
            {

            // 第一個數(shù)碼管顯示數(shù)據(jù)
            if(h1==0x3f) h1=0x00; //0消隱語句
            P2=h1;
            //delay(2);
            P00=0;
            delay(2); //參數(shù)2-10 數(shù)值大LED亮度高但閃爍感強,數(shù)值小LED亮度低,但閃爍感小.
            P2=0X00;
            P00=1;
            /*******************************************************/
            // 第二個數(shù)碼管顯示數(shù)據(jù)
            P2=h2|0x80;
            //delay(2);
            P01=0;
            delay(2); //參數(shù)2-10 數(shù)值大LED亮度高但閃爍感強,數(shù)值小LED亮度低,但閃爍感小.
            P2=0X00;
            P01=1;
            //delay(5);
            /*******************************************************/
            // 第三個數(shù)碼管顯示數(shù)據(jù)

            P2=s1;
            //delay(2);
            P02=0;
            delay(2); //參數(shù)2-10 數(shù)值大LED亮度高但閃爍感強,數(shù)值小LED亮度低,但閃爍感小.
            P2=0X00;
            P02=1;
            // delay(5);
            /*******************************************************/
            // 第四個數(shù)碼管顯示數(shù)據(jù)
            P2=s2;
            //delay(2);
            P03=0;
            delay(2); //參數(shù)2-10 數(shù)值大LED亮度高但閃爍感強,數(shù)值小LED亮度低,但閃爍感小.
            P2=0X00;
            P03=1;

            //delay(5);

            }
            void init()//系統(tǒng)初始化函數(shù)
            {
            P2M1=0Xff; //強推挽 推動a-g dp
            P2M0=0X00; //強推挽 推動a-g dp
            P0M1=0X0f; //強推挽 推動位
            P0M0=0X00; //強推挽 推動位
            P0=0XFF; //初始化
            P2=0; //初始化
            /***定時器0初始化設(shè)置*****/
            TMOD = 0x01;
            TH0 = 0xFC; //初值1ms
            TL0 = 0x18; //初值1ms
            EA = 1; //開總中斷
            ET0 = 1; //定時器0中斷打開
            TR0 = 1; //打開定時器 開始計時
            /*************************/
            ZZ=0;
            }
            void initADC() //AD初始化
            {
            P1ASF=0x01;//只使用P1.0端口做為ADC輸入端.
            ADC_RES=0;//ADC數(shù)據(jù)寄存器清零
            ADC_CONTR=ADC_POWER|ADC_SPEEDLL; //打開ADC開關(guān)并設(shè)置 轉(zhuǎn)換速率詳見STC12C52.H
            delay(2); //打開ADC并延時.
            }
            uchar readADC() //讀AD
            {
            ADC_CONTR=ADC_POWER|ADC_SPEEDLL|0|ADC_START;
            _nop_();
            _nop_();
            _nop_();
            _nop_();
            while(!(ADC_CONTR&ADC_FLAG));//等待轉(zhuǎn)換完成標志
            ADC_CONTR&=~ADC_FLAG;//close ADC
            return ADC_RES;//返回ADC值.
            }
            void main()
            {
            init();
            initADC();//初始化ADC
            ad_data=readADC();//開機轉(zhuǎn)換
            while(1)
            {
            float j;
            uchar ad_data;
            while(ZZ>=500) //500毫秒讀一次ADC
            {
            ad_data=readADC();//讀入ADC數(shù)據(jù)
            ZZ=0;
            }
            j=ad_data*19.5312;//由AD數(shù)據(jù)*19.5312(放大1000倍)=分流后的電壓
            j=j/9890; //j(電壓)/接地電阻(實測)9890歐
            j=j*60190;//j(電流)*(輸入限流電阻(實測)60190歐+接地電阻(實測)9890歐) 計算出實際輸入電壓如果使用高精度電阻,則直接輸入電阻值
            dis[4]=j/1000;
            dis[3]=dis[4]/10;
            dis[2]=dis[4]%10;
            //h=(h-(dis[3]*10+dis[2]))*100;
            dis[4]=j/10-dis[4]*100;
            //dis[4]=j%100;//小數(shù)位第一位
            dis[1]=dis[4]/10;
            dis[0]=dis[4]%10;//小數(shù)位第二位
            //delay(10000);
            }
            }
            void Timer0Interrupt(void) interrupt 1
            {
            ZZ++; //AD讀取間隔時間控制
            TH0 = 0xFC;
            TL0 = 0x18;
            display(led_bcd[dis[3]],led_bcd[dis[2]],led_bcd[dis[1]],led_bcd[dis[0]]);
            }



            評論


            技術(shù)專區(qū)

            關(guān)閉