導航:首頁 > 操作系統 > 基於單片機溫度控制

基於單片機溫度控制

發布時間:2022-08-01 15:48:53

⑴ 基於單片機的溫度控制系統的設計

利用溫度感測器DS18B20檢測環境溫度並直接輸出數字溫度信號給單片機AT89C52進行處理。

在LCD液晶上顯示當前環境溫度值、預設溫度值、使用者設定的溫度差以及目前風扇所處的檔位。其中預設溫度值只能為整數形式,檢測到的當前環境溫度可精確到小數點後一位。

同時採用PWM脈寬調制方式來改變直流風扇電機的轉速。

並通過兩個按鍵改變預設溫度值,一個提高預設溫度,另一個降低預設溫度值。通過另一個按鍵控制溫度差的大小。

設有紅外熱釋感測器檢測環境范圍內是否有人,如果有人確定出風方向,如果無人,降低轉速或一定時間內自動關閉。

回答

正如你所說的,一共用了DS18B20模塊,LCD模塊,紅外感測模塊,按鍵,直流電機模塊,程序方面只有一個PWM。現在一一為你分析:

DS18B20模塊:

下圖是它的原理圖,採用單匯流排來進行開發,不像電賽的哪個溫度感測器需要AD轉換,它是可以直接傳出數字信號的。

⑵ 基於單片機的熱水器溫度控制系統

東華理工大學畢業設計(論文)

基於單片機的熱水器溫度控制

摘 要

溫度是日常生活中不可缺少的物理量,溫度在各個領域都有積極的意義。很多行業中以及日常生活中都有大量的用電加熱設備,如用於加熱處理的加熱熱水器,用於洗浴的電熱水器及各種不同用途的溫度箱等,採用單片機對它們進行控制具有控制方便、簡單、靈活性大等特點,而且還可以大幅提高被控系統的性能,從而能被大大提高產品的質量。因此,智能化溫度控制技術正被廣泛地應用。

本溫度設計採用現在流行的AT89C51單片機為控制器,用PID控制方法,再配以其他電路對熱水器的水溫進行控制。

關鍵詞:89C51; PID; 溫度控制

I

1/41頁
東華理工大學畢業設計(論文)

ABSTRACT

Temperature is essential physical in daily life ,and in various fields has positive implications.A lot of businesses and daily lives have a lot of electric heating equipment.Such as electric water heater for bathing and variety of different uses of the temperature boxes. MCU to control them with easy to control,simple,flexibility and other characteristics,also can significantly improve the performance of the controlled system,which can be greatly improved proct quality. Therefore,intelligent temperature control technology is being widely used.

The temperature control design uses the now popular AT89C51 MCU controller,with PID control method, which together with

⑶ 基於51單片機的溫度控制器

圖片為溫度控制電路圖。溫度到達上限時led燈亮,並停止對RT的加熱,溫度達到下限時led燈滅並開始對RT進行加熱。A1和A2為uA741運算放大器。引腳號在圖上已經標出。再給你一個單片機採集DS18B20溫度的程序,用四位數碼管顯示的。你把DS18B20接在RT附近就可以測試出RT的溫度,調節圖中的滑動變阻器可改變溫度的上下限。這樣就能做到溫度控制了。

//安裝目錄下的EXE文件打開後可在電腦上顯示當前溫度值

#include<reg52.h>

#defineucharunsignedchar

#defineuintunsignedint

sbitDS=P1^0;//defineinterface

uinttemp;//variableoftemperature

ucharflag1;//

//sbitla=P2^6;

//sbitwela=P2^7;

//unsignedcharcodetable2[]={0x3f,0x30,0x5b,0x4f,0x66,0x6d,0x7d,

//0x07,0x7f,0x67/*,0x77,0x7c,0x39,0x5e,0x79,0x71*/};

//unsignedcharcodetable1[]={0xbf,0xb0,0xdb,0xcf,0xe6,0xed,0xfd,

//0x87,0xff,0xe7};

//unsignedcharcodetable2[]={0x40,0x5e,0x24,0x21,0x13,0x09,0x08,

//0x63,0x00,0x03/*,0x77,0x7c,0x39,0x5e,0x79,0x71*/};

//unsignedcharcodetable1[]={0xc0,0xde,0xa4,0xa1,0x93,0x89,0x88,

//0xe7,0x8f,0x87};

unsignedcharcodetable5[]={0x77,0x22,0x6d,0x5d,0x1e,0x5b,0x7b,

0x15,0x7f,0x1f};

unsignedcharcodetable6[]={0xf7,0xa2,0xed,0xdd,0x9e,0xdb,0xfb,

0x95,0xff,0x9f};

voiddelay(uintcount)//delay

{

uinti;

while(count)

{

i=200;

while(i>0)

i--;

count--;

}

}

///////功能:串口初始化,波特率9600,方式1///////

voidInit_Com(void)

{

TMOD=0x20;

PCON=0x00;

SCON=0x50;

TH1=0xFd;

TL1=0xFd;

TR1=1;

}

voiddsreset(void)//復位,初始化函數

{

uinti;

DS=0;

i=103;

while(i>0)i--;

DS=1;

i=4;

while(i>0)i--;

}

bittmpreadbit(void)//readabit讀1位數據函數

{

uinti;

bitdat;

DS=0;i++;//i++fordelay

DS=1;i++;i++;

dat=DS;

i=8;while(i>0)i--;

return(dat);

}

uchartmpread(void)//readabytedate讀1位元組函數

{

uchari,j,dat;

dat=0;

for(i=1;i<=8;i++)

{

j=tmpreadbit();

dat=(j<<7)|(dat>>1);//讀出的數據最低位在最前面,這樣剛好一個位元組在DAT里

}

return(dat);

}

voidtmpwritebyte(uchardat)//writeabytetods18b20向1820寫一個位元組數據函數

{

uinti;

ucharj;

bittestb;

for(j=1;j<=8;j++)

{

testb=dat&0x01;

dat=dat>>1;

if(testb)//write1

{

DS=0;

i++;i++;

DS=1;

i=8;while(i>0)i--;

}

else

{

DS=0;//write0

i=8;while(i>0)i--;

DS=1;

i++;i++;

}

}

}

voidtmpchange(void)//DS18B20beginchange開始獲取數據並轉換

{

dsreset();

delay(1);

tmpwritebyte(0xcc);//addressalldriversonbus寫跳過讀ROM指令

tmpwritebyte(0x44);//寫溫度轉換指令

}

uinttmp()//getthetemperature讀取寄存器中存儲的溫度數據

{

floattt;

uchara,b;

dsreset();

delay(1);

tmpwritebyte(0xcc);

tmpwritebyte(0xbe);

a=tmpread();//讀低8位

b=tmpread();//讀高8位

temp=b;

temp<<=8;//twobytecomposeaintvariable兩個位元組組合為1個字

temp=temp|a;

tt=temp*0.0625;//溫度在寄存器中是12位,解析度是0.0625

temp=tt*10+0.5;//乘10表示小數點後只取1位,加0.5是四折五入

returntemp;

}

voidreadrom()//readtheserial

{

ucharsn1,sn2;

dsreset();

delay(1);

tmpwritebyte(0x33);

sn1=tmpread();

sn2=tmpread();

}

voiddelay10ms()//delay

{

uchara,b;

for(a=10;a>0;a--)

for(b=60;b>0;b--);

}

voiddisplay(uinttemp) //顯示程序

{

ucharA1,A2,A2t,A3,ser;

ser=temp/10;

SBUF=ser;

A1=temp/100;

A2t=temp%100;

A2=A2t/10;

A3=A2t%10;

//la=0;

d4=0;

P0=table5[A1];

delay(1);

d4=1; //顯示百位

//la=1;

//la=0;

/*wela=0;

P0=0x7e;

wela=1;

wela=0; */

//la=0;

d3=0;

P0=table6[A2];

delay(1);

d3=1; //顯示十位

//la=1;

//la=0;

/*wela=0;

P0=0x7d;

wela=1;

wela=0; */

d2=0;

P0=table5[A3];

delay(1);

d2=1; //顯示個位

//la=1;

//la=0;

/*P0=0x7b;

wela=1;

wela=0; */

}

voidmain()

{

uchara;

Init_Com();

do

{

tmpchange();

//delay(200);

for(a=1;a>0;a--)

{display(tmp());

}

}while(1);

}

⑷ 基於單片機的溫度控制系統怎麼控制溫度的

加熱部件可以在淘寶上買個 USB 5V 加熱片,USB供電的電流不會超過 500mA, 控制可以用單片機腳控制一個 C8050三極體控制加熱片的通斷電。

⑸ 基於單片機的電烤箱溫度控制系統的流程圖及程序怎麼設計怎麼編啊C語言的

首先:
一·硬體:單片機*1 溫度感測器*1 繼電器 (220V,大電流的)電加熱管(若干) 焊錫絲 烙鐵 導線若干
二·將上面的硬體連接,用溫度感測器測試溫度 ->利用單片機讀取感測器的內部寄存器的值,一般感測器都有介面(spi,i2c等),程序可以從網上找,很多改一下設置就能讀取感測器的數值(比如引腳定義)->根據所測溫度可以設置上限與下限的溫度值,還有加熱的時間。這主要是控制繼電器通斷就可以實現的。程序很簡單。

⑹ 怎麼實現單片機控制溫度

你可以選用DS18B20型號的溫度感測器採集溫度,用一匯流排將信號傳輸給單片機處理,進行反饋控制溫度。

⑺ 基於單片機的溫度控制系統

加熱部件可以在淘寶上買個
usb
5v
加熱片,usb供電的電流不會超過
500ma,
控制可以用單片機腳控制一個
c8050三極體控制加熱片的通斷電。

閱讀全文

與基於單片機溫度控制相關的資料

熱點內容
了解什麼是web伺服器 瀏覽:138
面向對象的編程的基本特徵 瀏覽:717
php定時執行任務linux 瀏覽:786
php數組中刪除元素 瀏覽:724
螢石雲伺服器視頻 瀏覽:269
防火牆配置伺服器熱備的虛擬地址 瀏覽:188
linux安裝xdm 瀏覽:736
java計算12 瀏覽:249
大金空調擺動式壓縮機 瀏覽:453
新的雲伺服器如何設置首頁 瀏覽:687
javastring字元位置 瀏覽:197
銀河麒麟字體庫存在哪個文件夾 瀏覽:957
魔獸加丁伺服器的航空叫什麼 瀏覽:152
花冠改裝案例哪個app多 瀏覽:515
成績單app哪個好用 瀏覽:140
北美程序員vs國內程序員 瀏覽:181
php解析xml文檔 瀏覽:121
石墨文檔APP怎麼橫屏 瀏覽:185
牆主鋼筋加密和非加密怎麼看 瀏覽:144
金山區文件夾封套定製 瀏覽:708