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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2316|回復(fù): 11
打印 上一主題 下一主題
收起左側(cè)

請(qǐng)指點(diǎn)一下,單片機(jī)adc程序中如何把結(jié)果轉(zhuǎn)換實(shí)際電壓值 感激不盡本人剛學(xué)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:727062 發(fā)表于 2024-2-6 22:19 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
   #include<reg51.h>
        #include"US16.H"
         
         

        
        
                        void UartInit(void)                //9600bps@11.0592MHz
{
        PCON &= 0x7F;                //波特率不倍速
        SCON = 0x50;                //8位數(shù)據(jù),可變波特率
        AUXR = 0x0F;                //定時(shí)器時(shí)鐘12T模式
        AUXR &= 0xFE;                //串口1選擇定時(shí)器1為波特率發(fā)生器
        TMOD &= 0x0F;                //設(shè)置定時(shí)器模式
        TMOD |= 0x20;                //設(shè)置定時(shí)器模式
        TL1 = 0xFD;                //設(shè)置定時(shí)初始值
        TH1 = 0xFD;                //設(shè)置定時(shí)重載值
        ET1 = 0;                //禁止定時(shí)器%d中斷
        TR1 = 1;                //定時(shí)器1開始計(jì)時(shí)
        EA=1;
        ES=1;
        
}                                   

        
          void main ()

   {                        
                           unsigned char i;  
                           UartInit();        //串口初始化
                       InitADC();         //adc初始化

                    


                            while(1)
                         {
                                 i=        GetADCResult(0X01);//通道1轉(zhuǎn)換結(jié)果
                        
                                

                                SBUF=i;                        //發(fā)到上位機(jī)
                                Delay500ms();
                                 
                                          
               
                          }

   }

   void uaut () interrupt 4


{


                        
           
           while(!TI);
            TI=0;
         
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:213173 發(fā)表于 2024-2-7 07:07 | 只看該作者
八位ADC結(jié)果換算成10進(jìn)制電壓值
毫伏=參考電壓毫伏*(long)八位ADC結(jié)果/256
示例:U_mv = Vcc * 1000 * (long)ADC_V / 256;


十位ADC結(jié)果換算成10進(jìn)制電壓值
毫伏=參考電壓毫伏*(long)十位ADC結(jié)果/1024

十二位ADC結(jié)果換算成10進(jìn)制電壓值
毫伏=參考電壓毫伏*(long)十二位ADC結(jié)果/4096

回復(fù)

使用道具 舉報(bào)

板凳
ID:1010435 發(fā)表于 2024-2-7 09:00 | 只看該作者
1、首先要知道adc的基準(zhǔn)電壓
2、知道adc的分辨率
3,測(cè)到adc數(shù)值后,參考二樓
回復(fù)

使用道具 舉報(bào)

地板
ID:727062 發(fā)表于 2024-2-7 09:58 | 只看該作者
wulin 發(fā)表于 2024-2-7 07:07
八位ADC結(jié)果換算成10進(jìn)制電壓值
毫伏=參考電壓毫伏*(long)八位ADC結(jié)果/256
示例:U_mv = Vcc * 1000 * (l ...

我做的是8位的,vin和vcc都是5v,數(shù)據(jù)手冊(cè)是  8-bit A/D Conversion Result:(ADC_RES[7:0])= 256 x Vin /Vcc,那我如果串口顯示是不是把 i= i*256;SBUF=i;就可以看到實(shí)際電壓了
回復(fù)

使用道具 舉報(bào)

5#
ID:213173 發(fā)表于 2024-2-7 13:35 | 只看該作者
354724834 發(fā)表于 2024-2-7 09:58
我做的是8位的,vin和vcc都是5v,數(shù)據(jù)手冊(cè)是  8-bit A/D Conversion Result:(ADC_RES[7:0])= 256 x Vin / ...

void UartInit(void)     //9600bps@11.0592MHz
{
        PCON &= 0x7F;                //波特率不倍速
        SCON = 0x50;                //8位數(shù)據(jù),可變波特率
        AUXR &= 0xBF;                //定時(shí)器時(shí)鐘12T模式
        AUXR &= 0xFE;                //串口1選擇定時(shí)器1為波特率發(fā)生器
        TMOD &= 0x0F;                //設(shè)置定時(shí)器模式
        TMOD |= 0x20;                //設(shè)置定時(shí)器模式
        TL1 = 0xFD;                        //設(shè)置定時(shí)初始值
        TH1 = 0xFD;                        //設(shè)置定時(shí)重載值
        ET1 = 0;                        //禁止定時(shí)器中斷
        TR1 = 1;                        //定時(shí)器1開始計(jì)時(shí)
//        EA=1;
//        ES=1;
}      

/*----------------------------
發(fā)送串口數(shù)據(jù)
----------------------------*/
void SendData(unsigned char dat)
{
    while (!TI);                    //等待前一個(gè)數(shù)據(jù)發(fā)送完成
    TI = 0;                         //清除發(fā)送標(biāo)志
    SBUF = dat;                     //發(fā)送當(dāng)前數(shù)據(jù)
}

void main ()
{                        
        unsigned char ADC_R;//AD轉(zhuǎn)換值  
        unsigned int U_mv; //電壓值
        UartInit();        //串口初始化
        InitADC();         //adc初始化
        while(1)
        {
                ADC_R=GetADCResult(0X01);//通道1轉(zhuǎn)換結(jié)果
                U_mv = (5000*(long)ADC_R/256+5)/10;//強(qiáng)制轉(zhuǎn)換數(shù)據(jù)類型,轉(zhuǎn)換成10進(jìn)制(4舍5入)電壓值
                //串口助手以文本模式接收
                SendData(U_mv/100%10+'0');//整數(shù)位
                SendData('.');            //小數(shù)點(diǎn)
                SendData(U_mv/10%10+'0'); //小數(shù)第1位
                SendData(U_mv%10+'0');    //小數(shù)第2位
                Delay500ms();
        }
}
/*
void uaut () interrupt 4
{
        while(!TI);
        TI=0;
}*/
回復(fù)

使用道具 舉報(bào)

6#
ID:883242 發(fā)表于 2024-2-7 21:48 | 只看該作者
也可以定義一個(gè)unsigned int變量,把結(jié)果加195次,那么這個(gè)變量從0~50000分別對(duì)應(yīng)0~5000.0mV,更加直觀計(jì)算量還小。
回復(fù)

使用道具 舉報(bào)

7#
ID:727062 發(fā)表于 2024-2-8 19:38 | 只看該作者
wulin 發(fā)表于 2024-2-7 13:35
void UartInit(void)     //9600bps@11.0592MHz
{
        PCON &= 0x7F;                //波特率不倍速

非常感謝指點(diǎn),下載之后無顯示,后來我把 sbuf =dat; 放在while(!TI)前面就好了
回復(fù)

使用道具 舉報(bào)

8#
ID:727062 發(fā)表于 2024-2-8 19:53 | 只看該作者
Hephaestus 發(fā)表于 2024-2-7 21:48
也可以定義一個(gè)unsigned int變量,把結(jié)果加195次,那么這個(gè)變量從0~50000分別對(duì)應(yīng)0~5000.0mV,更加直觀計(jì)算 ...

厲害
回復(fù)

使用道具 舉報(bào)

9#
ID:195496 發(fā)表于 2024-2-8 23:35 | 只看該作者
簡單標(biāo)定一下就行,測(cè)量一個(gè)已知電壓,讀出AD值,標(biāo)定一下,就行了。下面可以按比例計(jì)算出待測(cè)電壓的數(shù)值。
回復(fù)

使用道具 舉報(bào)

10#
ID:517951 發(fā)表于 2024-2-20 08:29 | 只看該作者
獲取的AD轉(zhuǎn)換值, 最好要做下濾波算法, 比如去掉最大值, 最小值, 得到平均值, 這樣得到的數(shù)值才是比較精準(zhǔn)的.
回復(fù)

使用道具 舉報(bào)

11#
ID:727062 發(fā)表于 2024-12-4 22:01 | 只看該作者
Hephaestus 發(fā)表于 2024-2-7 21:48
也可以定義一個(gè)unsigned int變量,把結(jié)果加195次,那么這個(gè)變量從0~50000分別對(duì)應(yīng)0~5000.0mV,更加直觀計(jì)算 ...

為什么加195
回復(fù)

使用道具 舉報(bào)

12#
ID:1133081 發(fā)表于 2024-12-5 13:43 | 只看該作者

50000/256≈195。有人這么%嗎?為什么要加195次?不會(huì)乘法?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲视频一区在线播放 | 久久久久久久久久影视 | 欧美日韩国产一区二区 | 二区高清 | 欧美成人一级 | 天天干天天操天天射 | 亚洲在线看 | 欧洲高清转码区一二区 | 国产一区二区三区四区五区加勒比 | 在线播放日韩 | 中文字幕一区二区三区四区 | 九九综合九九 | 国产成人精品一区二区三 | 国产精品国产三级国产aⅴ中文 | 国产精品二区三区在线观看 | 日本三级在线 | 国产精品久久久久久一区二区三区 | 岛国av一区二区三区 | 欧美日韩视频在线第一区 | 久草在线中文888 | 欧美精品在欧美一区二区少妇 | 日韩精品一区二区三区中文在线 | 国产精品久久久久久久久污网站 | 特黄小视频| 欧美日韩在线免费观看 | 国产精品无码久久久久 | 亚洲天天 | 操操日| 国产在线一区二区 | 日韩毛片| 国产成人免费网站 | 国产精品视频久久 | 日韩一区二区三区精品 | 国产精品免费一区二区 | 亚洲不卡 | 四虎影视免费在线 | 国产一级淫片免费视频 | 天天综合日日夜夜 | www.玖玖玖 | 亚洲三区视频 | 国产在线一区二区 |