導航:首頁 > 操作系統 > 測溫單片機

測溫單片機

發布時間:2022-04-26 03:38:43

單片機測溫電路

用熱敏電阻測溫 看你精度要求高低了

如果不高可以採用精密電阻分壓方式測量

就是一個高精度穩壓源串聯一個精密電阻,下面再接你的熱敏電阻。

你通過測量熱敏電阻的電壓值以及穩壓源的電壓值算出熱敏電阻阻值從而測得溫度。

㈡ 單片機溫度檢測的程序

你用的是DS18B20?這個程序你參考下#include <reg52.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
sbit ds=P2^2; //溫度感測器信號線
sbit la=P2^6; //數碼管段選線
sbit wela=P2^7; //數碼管位選線
sbit beep=P2^3; //蜂鳴器
sbit key1=P3^4;
sbit key2=P3^5;
sbit key3=P3^6;
sbit key4=P3^7;
uint temp;
float f_temp;
uint warn_l1=23;
uint warn_h1=29;
sbit led0=P1^0;
sbit led1=P1^1;
sbit led2=P1^2;
sbit led3=P1^3;
unsigned char code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0xbf,0x86,
0xdb,0xcf,0xe6,0xed,
0xfd,0x87,0xff,0xef}; //不帶小數點的編碼
void delay(uint z)//延時函數
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void dsreset(void) //18B20復位,初始化函數
{
uint i;
ds=0;
i=103;
while(i>0)i--;
ds=1;
i=4;
while(i>0)i--;
}
bit tempreadbit(void) //讀1位函數
{
uint i;
bit dat;
ds=0;i++; //i++ 起延時作用
ds=1;i++;i++;
dat=ds;
i=8;while(i>0)i--;
return (dat);
}
uchar tempread(void) //讀1個位元組
{
uchar i,j,dat;
dat=0;
for(i=1;i<=8;i++)
{
j=tempreadbit();
dat=(j<<7)|(dat>>1); //讀出的數據最低位在最前面,這樣剛好一個位元組在DAT里
}
return(dat);
}
void tempwritebyte(uchar dat) //向18B20寫一個位元組數據
{
uint i;
uchar j;
bit testb;
for(j=1;j<=8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if(testb) //寫 1
{
ds=0;
i++;i++;
ds=1;
i=8;while(i>0)i--;
}
else
{
ds=0; //寫 0
i=8;while(i>0)i--;
ds=1;
i++;i++;
}

}
}
void tempchange(void) //DS18B20 開始獲取溫度並轉換
{
dsreset();
delay(1);
tempwritebyte(0xcc); // 寫跳過讀ROM指令
tempwritebyte(0x44); // 寫溫度轉換指令
}
uint get_temp() //讀取寄存器中存儲的溫度數據
{
uchar a,b;

dsreset();
delay(1);
tempwritebyte(0xcc);
tempwritebyte(0xbe);
a=tempread(); //讀低8位
b=tempread(); //讀高8位
temp=b;
temp<<=8; //兩個位元組組合為1個字
temp=temp|a;
f_temp=temp*0.0625; //溫度在寄存器中為12位 解析度位0.0625°
temp=f_temp*10+0.5; //乘以10表示小數點後面只取1位,加0.5是四捨五入
f_temp=f_temp+0.05;
return temp; //temp是整型
}
////////////////////顯示程序//////////////////////////
void display(uchar num,uchar dat)
{
uchar i;
la=0;
P0=table[dat];
la=1;
la=0;

wela=0;
i=0XFF;
i=i&(~((0X01)<<(num)));
P0=i;
wela=1;
wela=0;
delay(1);
}

void dis_temp(uint t)
{
uchar i;
i=t/100;
display(0,i);
i=t%100/10;
display(1,i+10);
i=t%100%10;
display(2,i);
}
//////////////////////////////////////////////
void warn(uint s,uchar led) //蜂鳴器報警聲音 ,s控制音調
{
uchar i;i=s;
la=0;
wela=0;

// beep=0;
P1=~(led);
while(i--)
{
dis_temp(get_temp());
}
// beep=1;
P1=0XFF;
i=s;
while(i--)
{
dis_temp(get_temp());
}
}
void deal(uint t)
{
uchar i,k;
k=t/10;
if(k<warn_l1)
{
warn(40,0x01);

}
if(k>warn_h1)
{
warn(40,0x04);
}
else
{
i=40;
while(i--)
{
dis_temp(get_temp());
}
}
}
void xianshi(num)
{
uint m;
for(m=50;m>0;m--)
{
uchar shi,ge;
shi=num/10;
ge=num%10;

la=1;
P0=table[shi];
la=0;
P0=0xff;

wela=1;
P0=0xfe;
wela=0;
delay(10);

la=1;
P0=table[ge];
la=0;
P0=0xff;

wela=1;
P0=0xfd;
wela=0;
delay(10);
}
}
void anjian()
{
if(key1==0)
{
delay(10);
if(key1==0)
{
warn_l1++;
if(warn_l1==warn_h1)
warn_l1=23;
xianshi(warn_l1+1);
while(!key1);
}
}
if(key2==0)
{
delay(10);
if(key2==0)
{
warn_l1--;
if(warn_l1==0)
warn_l1=23;
xianshi(warn_l1+1);
while(!key2);
}
}
if(key3==0)
{
delay(10);
if(key3==0)
{
warn_h1++;
if(warn_h1==125)
warn_h1=29;
xianshi(warn_h1+1);
while(!key3);
}
}
if(key4==0)
{
delay(10);
if(key4==0)
{
warn_h1--;
if(warn_h1==warn_l1)
warn_h1=29;
xianshi(warn_h1+1);
while(!key4);
}
}
}

void main()
{
uchar buff[4],i;
la=0;
wela=0;
while(1)
{
tempchange();
anjian();
for(i=10;i>0;i--)
{
dis_temp(get_temp());

}
deal(temp);

sprintf(buff,"%f",f_temp);

for(i=10;i>0;i--)
{
dis_temp(get_temp());
}

for(i=10;i>0;i--)
{
dis_temp(get_temp());}

}
}

㈢ 設計一個單片機測溫系統,請高人指點!!!

單片機不應該直接帶負載,功率器件要公光耦隔離,你的電機驅動IC最好用高速光耦隔離開。
如果單片機直接帶負載,實驗的時候可能沒問題,但是會有很多不穩定因素,單片機死機或者程序跑飛都有可能,甚至燒壞單片機的I/O口
步進電機的轉速可控,輸出穩定,
一般電機(玩具上拆的)可以通過PWM來控制轉速,但是輸出不穩定,
當然,還有其他的電機,具體要查相關的資料了,
如果你的電機只是通短,那隨便找個能轉的就OK了

㈣ 基於單片機的溫度檢測報警器


溫度感測器
AD0809
採集信號得到與之對應的
模擬信號
。A/D轉換電路對處理之後模擬信號數值化,將模擬信號轉換成數字信號。再由集成運放LM741對微弱的電信號進行放大處理,輸出電壓U0=2.732-UI,輸出電壓U1>2.732,是一個反向電壓。反向
比例運算電路
,其輸出電壓
UO=-2UI,U0是一個正電壓。再通過單片機(8951)對信號進行讀寫操作,經單片機處理後由
七段數碼管
顯示。並通過鍵盤輸入模塊向單片機設定高溫
臨界溫度
。當前環境溫度若超過設定的高溫臨界溫度,由單片機發出報警信號並驅動繼電器使風扇電機轉動。

㈤ 單片機 熱敏電阻測溫

1、單片機熱敏電阻測溫首先要設計電路原理圖,如圖所示:
上圖R3為上拉電阻,T1為接熱敏電阻端,TC1為單片機AD採集口、電阻R4和電熱C6為阻容濾波電路。
2、上拉電阻R3的選擇:根據所用溫度的范圍,選擇熱敏電阻對應阻值范圍的中間值最好,這樣檢測的溫度偏差較小。
3、上拉電阻選定後,根據熱敏電阻阻值表,算出溫度真值表,用於軟體查表,計算出溫度值。在算溫度真值表前,首先要確定單片機AD模塊的解析度。
4、單片機軟體編程,濾波方法一般採用多次採集求累加和,去最大值和最小值,最後求平均。
5、單片機選擇:一般選用8位單片機就夠。但是,單片機自帶的溫度採集AD模塊,最好選用10位解析度,10位的AD模塊解析度高,溫度採集精確。
6、以上為單片機熱敏電阻測溫的一般流程。

㈥ 怎麼用51單片機做出紅外測體溫

做紅外測吃的體溫計我覺得是非常好的,那麼這樣你做出的這個紅外線的這個體溫測試儀我認為是非常准確的,希望你努力完成任務。

㈦ 熱電偶單片機如何測溫

熱電偶輸出的是電壓信號,毫伏。用單片機熱電偶測溫。單片機有帶A/D轉換的,將熱電偶輸出的毫伏信號(放大),輸入到單片機的A/D轉換口,轉換成數字量。單片機內存有熱電偶電壓溫度數據表,根據數字量查表查出溫度數,然後將溫度數從口輸出,顯示驅動單元顯示溫度。

㈧ 設計單片機自動測溫系統

簡單描述一下吧:
不知道你用的感測器型號,如果用熱電偶葯主要好溫度補償,感測器經過A\D把信息傳給單片機,顯示部分用動態數碼管就可以了,
下面有兩種思路:
1.用LM35去採集溫度信息,根據其輸出電壓轉化為溫度信息,最好用自帶AD的單片機,輸出到數碼管就可以了。
2.不用AD,用比較常用的18b20,接上單片機顯示出溫度就可以了,18b20網上有很多參考的程序。
其實不管用熱電偶還是熱電阻都要注意好其穩定性。

㈨ 單片機測溫原理

這需要溫度感應頭與單片機配合的,感應頭把溫度信號轉換成電信號在轉換成二進制數,輸入單片機,單片機與儲存的溫度記錄相比較,得出當前溫度,輸出。總得來說就是需要有外部原件把溫度換成二進制信號(有的單片機可以直接識別電壓信號,內部自動轉換二進制信號),單片機識別與存儲的數據進行比較得出溫度。

閱讀全文

與測溫單片機相關的資料

熱點內容
空調壓縮機自製工具 瀏覽:518
命令行控制路由器 瀏覽:957
逆拓撲排序演算法描述 瀏覽:588
如何遠程鏈接到linux伺服器地址 瀏覽:630
抹茶app支付方式怎麼選 瀏覽:556
獵人寶寶攻擊命令 瀏覽:159
操作系統是編譯原理嗎 瀏覽:646
雲伺服器遷移後 瀏覽:260
excel格式轉換pdf 瀏覽:987
登錄器一般存在哪個文件夾 瀏覽:535
中興光貓機器碼演算法 瀏覽:330
android響應時間測試 瀏覽:940
java編程思想第四版答案 瀏覽:888
如何對nbt編程 瀏覽:885
mscpdf 瀏覽:948
文件夾d盤突然0位元組可用 瀏覽:272
吃火腿腸的解壓場面 瀏覽:339
衛星鍋加密教程 瀏覽:792
php7的特性是什麼 瀏覽:469
編譯類高級語言源代碼運行過程 瀏覽:177