找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求助關(guān)于stc8g單片機檢測adc電壓的問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:771427 發(fā)表于 2021-4-21 21:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
20黑幣
本帖最后由 檸檬肥宅 于 2021-4-21 21:51 編輯

比較簡單的電阻分壓 然后給adc檢測的然后現(xiàn)在出現(xiàn)了兩種情況 沒太明白  希望能有大佬解惑下
第一種我用的正常可調(diào)電源給到 3,3v 0.05a的電壓 ADC可以正常檢測到  數(shù)據(jù)讀取也都正確  

第二種情況 就是還是3.3v電壓 具體電流暫時無法確定 程序在第一個返回的電壓值的地方返回式正確的 在第二個返回 電壓值得地方就變0了

這個是什么原因?qū)е碌?nbsp;  是否是因為電流過小導(dǎo)致的

程序如下:
while(1)
        {        
                k=dianya(1);    //讀取的電壓值賦予k
        
                if(a==5)                                                   
                {
                        SBUF=0XE1;
                        while(!TI);
                        TI=0;               //指令正確返回
                        
                        d1=1;
                        Delay1000ms();
                        d1=0;
                        Delay1000ms();      //短按1秒
                        
                        d1=1;
                        Delay1000ms();
                        Delay1000ms();
                        Delay1000ms();
                        Delay1000ms();
                        Delay1000ms();      // 長按5秒
                        d1=0;
                        
                        SBUF=k;
                        while(!TI);
                        TI=0;             //串口返回k的值 電壓值 第一次
                        
                        while(q)
                        {
                            SBUF=k;
                            while(!TI);
                            TI=0;        //串口返回k的值 電壓值 第二次
                                
                                
                                if((k>70)&&(k<150))  // 檢測電壓在1.1v左右 返回數(shù)據(jù)
                                {
                                        SBUF=0XF1;
                                        while(!TI);
                                        TI=0;
                                        a=0;
                                        q=0;
                                }
                        }
                        q=1;
                  
                }
                        
        }        
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:894154 發(fā)表于 2021-4-22 09:20 | 只看該作者
Delay1000ms(); 是短按
Delay1000ms();*5 是長按嗎?
回復(fù)

使用道具 舉報

板凳
ID:170318 發(fā)表于 2021-4-22 09:33 | 只看該作者
ADC檢測電壓的程序沒有提供,程序不完整,不好判斷,估計是ADC的程序有問題,用ADC檢測電壓,電流不需要0.05A
回復(fù)

使用道具 舉報

地板
ID:499770 發(fā)表于 2021-4-22 09:39 | 只看該作者
正常待測電源,除電阻分壓會產(chǎn)生很小的電流,測電壓與電流沒啥關(guān)系
回復(fù)

使用道具 舉報

5#
ID:771427 發(fā)表于 2021-4-22 10:04 | 只看該作者
ANT1987 發(fā)表于 2021-4-22 09:20
Delay1000ms(); 是短按
Delay1000ms();*5 是長按嗎?

對的
回復(fù)

使用道具 舉報

6#
ID:771427 發(fā)表于 2021-4-22 10:05 | 只看該作者
jhczy 發(fā)表于 2021-4-22 09:33
ADC檢測電壓的程序沒有提供,程序不完整,不好判斷,估計是ADC的程序有問題,用ADC檢測電壓,電流不需要0.0 ...

/*adc讀取函數(shù)*/
int ADC(uchar ch)      
{  
   //ch數(shù)值0-7 p1口選擇
   ADC_CONTR = 0xc0| ch ;                        
   _nop_();                 
   _nop_();                                     
   while (!(ADC_CONTR & 0x20));              
   ADC_CONTR &= ~0x20;                    //Close ADC 將標(biāo)志位清零等待下次硬件置1   
   ADC_RESL=ADC_RESL&0XC0;                      //讀取10位的低字節(jié)2位
         return ((ADC_RES << 2)|ADC_RESL>>6);   
}

/*一百次穩(wěn)定值 并轉(zhuǎn)化為電壓值  單精度小數(shù)型*/
float dianya(uchar q)
{
        int a;
        float d=0;
        _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
        for(a=0;a<100;a++)
        d=d+ADC(q);
       
        d=d/100;
        d=3.3/1024*d;     //3.3v電壓 10位adc轉(zhuǎn)化
        return d*100;     //返回電壓值*100便于計算
}
這個是adc的轉(zhuǎn)換程序
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表