欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
12
返回列表 發新帖
樓主: 七顆星星
打印 上一主題 下一主題
收起左側

剛剛告知老師不允許用DS18B20數字傳感器測溫,還有什么嗎?

  [復制鏈接]
41#
ID:143848 發表于 2016-10-26 23:04 來自觸屏版 | 只看該作者
劉海龍 發表于 2016-10-26 22:47
stc單片機就是51單片機,只不過是增強型51單片機(把ADC轉換器PWM模塊等集成到了單片機內部)
我寫的NTC ...

(⊙o⊙)哦,是這樣啊,不過我剛剛問了老師,他老古董,只準用89C51單片機,可能A/D 0809轉換電路還要重新單獨做,我們最后得仿真然后焊接出來,所以現在正在確定電路,因為老是被打下來,說太簡單,不準用模塊,心塞
回復

使用道具 舉報

42#
ID:143848 發表于 2016-10-26 23:09 來自觸屏版 | 只看該作者
劉海龍 發表于 2016-10-26 22:47
stc單片機就是51單片機,只不過是增強型51單片機(把ADC轉換器PWM模塊等集成到了單片機內部)
我寫的NTC ...

剛剛老師又回復我了說A/D轉換電路不一定用0809,看自己的需求
回復

使用道具 舉報

43#
ID:143848 發表于 2016-10-26 23:15 來自觸屏版 | 只看該作者
yzwzfyz 發表于 2016-10-26 00:06
“二極管測溫范圍有限,0~60“?
理論上,二極管特性與溫度有關,并不受溫度限制,只要二極管不壞(超高溫 ...

我昨天認真的看了你給我的那個圖,看分析不是很明白,我又不敢問你了,你說你說的已經夠多了,哎,人傻了,不過還是很謝謝你給我的指點啦^_^
回復

使用道具 舉報

44#
ID:145062 發表于 2016-10-29 15:26 | 只看該作者
通過熱敏電阻的阻值變化,通過MCU的ADC獲取熱敏電阻的兩端電壓變化,計算出相應的電阻值,根據組織查邊獲取溫度值,首先熱敏電阻便宜,電阻簡單,查表方便,相應的江都不高一般是0.1攝氏度吧!
回復

使用道具 舉報

45#
ID:143848 發表于 2016-10-29 20:15 | 只看該作者
pingguotu 發表于 2016-10-29 15:26
通過熱敏電阻的阻值變化,通過MCU的ADC獲取熱敏電阻的兩端電壓變化,計算出相應的電阻值,根據組織查邊獲取 ...

熱敏電阻3950的測溫單片機里程序
code        uint VOL[]和code        uint Temper[]中的數據是怎么計算查表得到的。
       result=(uint)((res/2048.0-1.0)*500.0);
                 
                 temp1=abs(result-VOL[0]);
                 for(i=1;i<150;i++)
                 {
                         temp2=abs(result-VOL);
                        if(temp1>=temp2)
                        {
                                temp1=temp2;
                                flag=i;
                        }
   這一段程序是什么意思呢?         
               :#include <reg52.h>           
#include <intrins.h>
#include <math.h>

typedef unsigned char uchar;
typedef unsigned int  uint;
code        uint VOL[]={                343,        339,        339,        335,        332,        332,        328,        324,        320,        320,        
                                                        316,        312,        312,        308,        304,        300,        300,        296,        292,        292,
                                                        289,        285,        285,        281,        277,        273,        273,        269,        265,        265,        
                                                        261,        257,        257,        253,        250,        250,        246,        242,        242,        238,
                                                        234,        234,        230,        230,        226,        222,        222,        218,        218,        214,        
                                                        210,        210,        207,        207,        203,        199,        199,        195,        195,        191,
                                                        191,        187,        187,        183,        179,        179,        175,        175,        171,        171,        
                                                        167,        167,        164,        164,        160,        160,        160,        156,        156,        152,
                                                        152,        148,        148,        144,        144,        140,        140,        140,        136,        136,        
                                                        132,        132,        132,        128,        128,        125,        125,        125,        121,        121,
                                                        121,        117,        113,        109,        109,        105,        101,        101,        97,                97,
                                                        93,                89,                89,                85,                85,                82,                82,                78,                78,                74,        
                                                        74,                70,                70,                66,                66,                66,                62,                62,                58,                58,        
                                                        58,                54,                54,                54,                50,                50,                50,                46,                46,                46,        
                                                        42,                42,                42,                42,                39,                39,                39,                39,                35,                35};

code        uint Temper[]={                100,        150,        200,        250,        300,        350,        400,        450,        500,        550,        
                                                        600,        650,        700,        750,        800,        850,        900,        950,        1000,        1050,
                                                        1100,        1150,        1200,        1250,        1300,        1350,        1400,        1450,        1500,        1550        
                                                        1600,        1650,        1700,        1750,        1800,        1850,        1900,        1950,        2000,        2050,
                                                        2100,        2150,        2200,        2250,        2300,        2350,        2400,        2450,        2500,        2550,        
                                                        2600,        2650,        2700,        2750,        2800,        2850,        2900,        2950,        3000,        3050,
                                                        3100,        3150,        3200,        3250,        3300,        3350,        3400,        3450,        3500,        3550,        
                                                        3600,        3650,        3700,        3750,        3800,        3850,        3900,        3950,        4000,        4050,
                                                        4100,        4150,        4200,        4250,        4300,        4350,        4400,        4450,        4500,        4550,        
                                                        4600,        4650,        4700,        4750,        4800,        4850,        4900,        4950,        5000,        5050,
                                                        5100,        5200,        5300,        5400,        5500,        5600,        5700,        5800,        5900,        6000,
                                                        6100,        6200,        6300,        6400,        6500,        6600,        6700,        6800,        6900,        7000,        
                                                        7100,        7200,        7300,        7400,        7500,        7600,        7700,        7800,        7900,        8000,        
                                                        8100,        8200,        8300,        8400,        8500,        8600,        8700,        8800,        8900,        9000,        
                                                        9100,        9200,        9300,        9400,        9500,        9600,        9700,        9800,        9900,        10000};
sbit STS=P1^0;                           
sbit CE = P1^1;
sbit CS=P1^2;
sbit A0=P1^3;
sbit RC=P1^4;

sbit RS=P1^5 ;
sbit RW=P1^6 ;
sbit EN=P1^7 ;           

void delay_ms(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
uint AD1674_Read(void)
{
        uint temp;
        uchar temp1,temp2;
        CS=1;        //片選信號
        CE=0;        //初始化,關閉數據采集
        CS=0;
        A0=0;
        RC=0;
        CE=1;//CE=1,CS=0,RC=0,A0=0啟動12位溫度轉換
        _nop_();
        while(STS==1);         //等待數據采集結束
        CE=0;         //芯片使能關閉
        RC=1;
        A0=0;
        CE=1;//CE=1,CS=0,RC=1,12/8=1,A0=0 允許高八位數據并行輸出
        _nop_();
        temp1=P0; //讀取轉換結果的高八位
        CE=0;  //芯片使能關閉
        RC=1;
        A0=1;
        CE=1;//CE=1,CS=0,RC=1,12/8=0,A0=1 允許低四位數據 并行輸出
        _nop_();
        temp2=P0;         //讀取轉換結果的第四位
        temp=((temp1<<4)|(temp2&0X0F));          //高位和低位合成實際溫度,temp2為PO口的高四位
        return (temp);           //還回轉換結果,右移四位是因為temp2為P0口的高四位
}
/*** 寫數據***/
void w_dat(unsigned char dat)
{
        RS = 1;
        //EN = 0;
        P2 = dat;
        delay_ms(5);
        RW = 0;
        EN = 1;
        EN = 0;
}
/*** 寫命令***/
void w_cmd(unsigned char cmd)
{
        RS = 0;
//        EN = 0;
        P2 = cmd;
        delay_ms(5);
        RW = 0;
        EN = 1;
        EN = 0;
}                        
/*** 發送字符串到LCD***/
void w_string(unsigned char addr_start, unsigned char *p)
{
        unsigned char *pp;
        
        pp = p;
        w_cmd(addr_start);
        while (*pp != '\0')
        {
                w_dat(*pp++);
        }
}           

/*** 初始化1602****/
void Init_LCD1602(void)
{
        EN = 0;
        w_cmd(0x38);  // 16*2顯示,5*7點陣,8位數據接口
        w_cmd(0x0C);  // 顯示器開、光標開、光標允許閃爍
        w_cmd(0x06);  // 文字不動,光標自動右移
        w_cmd(0x01);  // 清屏
}
void process(uint date,uchar add)
{
        uchar A[7];
        A[0]=date/1000%10+'0';
        A[1]=date/100%10+'0';
        A[2]='.';        
        A[3]=date/10%10+'0';
        A[4]=date%10+'0';
        A[5]='C';                        
        w_string(add,A);
}         
void main()
{

        uchar i,flag=0;
        uint result,temp1,temp2;
        float        res;

        Init_LCD1602();
         
        w_string(0x80,"Temper:");
        
        while (1)
        {
                 res=(float)(AD1674_Read());
                 result=(uint)((res/2048.0-1.0)*500.0);
                 
                 temp1=abs(result-VOL[0]);
                 for(i=1;i<150;i++)
                 {
                         temp2=abs(result-VOL);
                        if(temp1>=temp2)
                        {
                                temp1=temp2;
                                flag=i;
                        }
                                
                 }
        
                 process(Temper[flag],0x80+7);
        }   
回復

使用道具 舉報

46#
ID:140371 發表于 2016-10-30 16:11 | 只看該作者
這個電路不妨用麵包板,試做看看(或是用仿真軟體模擬看看)...例如測試範圍從  0到 100度  輸出Vo從0到4.92 這個電路就可以用  
回復

使用道具 舉報

47#
ID:164989 發表于 2017-5-28 16:48 | 只看該作者
pt100接一個tl431恒流源再接2個運放加調零出來就是電壓的變化再接個tl1543AD轉換接到單片機里計算電阻值在計算溫度temp_r=((float)temp)*5000/(1024*20)+100;  //計算電阻值。[img]C:\Users\asus\Desktop\E13DA9FA454BBB6930F3639E5E9D33EE.pngC:\Users\asus\Desktop\4700A418B4F82E4F6F6DE1ED1AB49134.png[/img]
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表