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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3053|回復: 9
打印 上一主題 下一主題
收起左側

請教C8051F020單片機的AD轉換問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:33455 發(fā)表于 2020-11-18 16:21 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
PT100通過op07c芯片接到C8051F020芯片,用網上找的例程改的測到的溫度室溫只有8度,而且顯示25以上就又稱0了,大神們幫我看看是程序哪里不對
萬分感謝
程序如下

#include <stdio.h>
#include <INTRINS.H>

#define uchar unsigned char
#define uint unsigned int


sfr16 ADC0= 0xbe;                 // ADC0 data
sfr16 ADC0GT   = 0xc4;                 // ADC0 greater than window
sfr16 ADC0LT   = 0xc6;                 // ADC0 less than window
sfr16 DAC0= 0xd2;                 // DAC0 data
sfr16 DAC1= 0xd5;                 // DAC1 data


//#define SYSCLK       22118400          // SYSCLK frequency in Hz
//#define SAMPLE_RATE  50000             // Sample frequency in Hz
//#define        AMX0SL_AIN   0                                   // 0=AIN0....7=AIN7,8=TEMP





uint ADCdata;
bit   ADCflag;
uchar volarray[3];         //讀到的數值緩存
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// ADC0配置,ADC0BUSY為轉換啟動源, 并在轉換完成時產生中斷
//-----------------------------------------------------------------------------
void ADC0_Init (void)
{
    AMX0CF = 0x60;                           // AMUX Configuration Register
        AMX0SL = 0;                   // 第0個通道
        ADC0CF = (22118400/50000)<< 3;     // ADC conversion clock = .5MHz
        ADC0CN = 0x80;                           // ADC Control Register
    REF0CN = 0x03;                     // 啟用內部基準源
    EIE2 |= 0x02;                       // 啟用 ADC 中斷
}

//-----------------------------------------------------------------------------
// 顯示子程序
//-----------------------------------------------------------------------------
void ADZH()
{

        float Voltage;
   int   Vol;
   uint temp;
  if (ADCflag)
                        {
             ADCflag=0;
                    Voltage=(ADCdata*2.4)/4096;
                         Vol=Voltage*100;
             volarray[0]=Vol/100;  //數碼管第一位
             temp=Vol%100;
             volarray[1]=temp/10;  //數碼管第二位        
                         volarray[2]=temp%10;  //數碼管第三位
                     AD0BUSY=1;         
                                                
                        }

}


//-----------------------------------------------------------------------------
void ADCSH ()
{

   ADC0_Init();                       // init ADC
   AD0BUSY=1;            

}


//-----------------------------------------------------------------------------
// ADC0采樣中斷
//-----------------------------------------------------------------------------
void ADC0_ISR (void) interrupt  15
{                 
   AD0INT = 0;                                        // 清 ADC 中斷標志位
   ADCdata= ADC0;               // ADC采樣數據
   ADCflag=1;

}


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

使用道具 舉報

沙發(fā)
ID:33455 發(fā)表于 2020-11-19 11:03 | 只看該作者
有沒有大佬幫忙給看看 萬分感謝
回復

使用道具 舉報

板凳
ID:33455 發(fā)表于 2020-11-19 15:04 | 只看該作者
有沒有師傅指點一下
回復

使用道具 舉報

地板
ID:587208 發(fā)表于 2020-11-20 14:41 | 只看該作者
Voltage=(ADCdata*2.4)/4096;
你的這個算法,c8051f單片機AD是多少位的AD啊?12位的AD就對了,2.4是你采樣的AD最高電壓嗎?如果對,這條語句就沒有問題了。
回復

使用道具 舉報

5#
ID:33455 發(fā)表于 2020-11-21 16:00 來自手機 | 只看該作者
studylyl 發(fā)表于 2020-11-20 14:41
Voltage=(ADCdata*2.4)/4096;
你的這個算法,c8051f單片機AD是多少位的AD啊?12位的AD就對了,2.4是你采樣 ...

這樣算下來的值是實際單片機ad輸入的電壓值,我用萬用表檢測了一下基本沒有誤差,但是這個電壓值怎么就算成溫度值,溫度范圍為負10度到130度,單片機ad電壓范圍為0-2.5伏
回復

使用道具 舉報

6#
ID:213173 發(fā)表于 2020-11-21 20:53 | 只看該作者
yanfeng082 發(fā)表于 2020-11-21 16:00
這樣算下來的值是實際單片機ad輸入的電壓值,我用萬用表檢測了一下基本沒有誤差,但是這個電壓值怎么就算 ...


沒有用過PT100,印象中其溫阻特性曲線的線性比較好。按樓主說法溫度范圍為負10度到130度對應單片機ad電壓范圍為0-2.5V,也就是0~2500mV。基本算法:溫度C=mV/17.86-10。
回復

使用道具 舉報

7#
ID:33455 發(fā)表于 2020-11-22 12:02 | 只看該作者
wulin 發(fā)表于 2020-11-21 20:53
沒有用過PT100,印象中其溫阻特性曲線的線性比較好。按樓主說法溫度范圍為負10度到130度對應單片機ad電 ...

感謝樓上的回答,萬分感謝,我想知道你至個公式是怎么得來的,怎么推算出來的,我代入程序中和實際溫度差異還是很大,下面附上電路圖 我現在想知道怎么通過AD采集的電壓值計算PT100的電阻值,得到電阻值可以通過查表得到溫度,下面付電路圖C:\Users\Administrator\Desktop\QQ截圖20201122104949
回復

使用道具 舉報

8#
ID:33455 發(fā)表于 2020-11-22 12:03 | 只看該作者
運放電路如圖,怎么通過運放輸出的電壓計算出PT100的電阻值

51hei截圖20201122104949.png (8.26 KB, 下載次數: 111)

51hei截圖20201122104949.png
回復

使用道具 舉報

9#
ID:213173 發(fā)表于 2020-11-22 15:01 | 只看該作者
yanfeng082 發(fā)表于 2020-11-22 12:02
感謝樓上的回答,萬分感謝,我想知道你至個公式是怎么得來的,怎么推算出來的,我代入程序中和實際溫度差 ...

要在高級模式里才能發(fā)圖片和其它附件。給你一個示例,用單片機自帶10位ADC和普通10K B3950 NTC熱敏電阻制作偽12位ADC溫度表,經測試20~100°C范圍誤差不超0.5°C。外電路極其簡單。

10K B3950 NTC溫阻電壓編碼表 上偏電阻2.4K.zip (33.83 KB, 下載次數: 7) -30~150度數碼管溫度計(對分查表).zip (31.07 KB, 下載次數: 5)


回復

使用道具 舉報

10#
ID:213173 發(fā)表于 2020-11-23 08:40 | 只看該作者
yanfeng082 發(fā)表于 2020-11-22 12:02
感謝樓上的回答,萬分感謝,我想知道你至個公式是怎么得來的,怎么推算出來的,我代入程序中和實際溫度差 ...

按照你提供的數據:溫度范圍為負10度到130度,單片機ad電壓范圍為0-2.5伏計算。
電壓mV=ADC轉換結果*參考電壓*放大1000/4096
系數=2500/140=17.85714285714286
溫度=電壓*系數-溫度基點
C=mV/17.86-10
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91网站在线看 | 91手机精品视频 | 岛国av免费在线观看 | 最新黄色在线观看 | 欧美一区二区三区四区五区无卡码 | 国产欧美二区 | 无人区国产成人久久三区 | 亚洲精品成人在线 | 一级特黄色毛片 | 国产成人精品网站 | 国产精品久久久久免费 | 亚洲一区二区免费 | 午夜视频在线视频 | www日韩欧美 | 中文视频在线 | 日韩精品久久久 | 久久久精品视频一区二区三区 | 91在线免费观看网站 | 粉嫩一区二区三区四区公司1 | 国产成人精品一区二区 | 中文字幕 国产 | 视频一区二区在线观看 | 国产成人自拍av | 91色在线 | 美女在线一区二区 | 国产美女久久久 | 日韩av在线中文字幕 | 就操在线 | 久久久亚洲一区 | 国产一区二区三区在线免费观看 | 亚洲一区二区三区四区五区午夜 | 欧美.com | 日韩精品一二三区 | www.狠狠操 | 成人精品视频在线观看 | 99久久婷婷国产精品综合 | 亚洲成人一区二区在线 | 亚洲精品一区二区 | 日韩精品在线网站 | 欧美一级大片免费观看 | 国产在视频一区二区三区吞精 |