久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
單片機(jī)智能溫度檢測(cè)控制系統(tǒng)程序設(shè)計(jì)
[打印本頁(yè)]
作者:
各不相
時(shí)間:
2020-9-17 16:35
標(biāo)題:
單片機(jī)智能溫度檢測(cè)控制系統(tǒng)程序設(shè)計(jì)
實(shí)驗(yàn)說(shuō)明:
根據(jù)自己使用的LCD1602是否帶有轉(zhuǎn)接板,如果帶有轉(zhuǎn)接板的即為4位,需在LCD.H頭文件中
將宏#define LCD1602_4PINS打開(kāi),我們這里使用的LCD1602是8位,所以默認(rèn)將該宏注釋。
實(shí)驗(yàn)接線(xiàn):
1,LCD1602液晶模塊-->單片機(jī)管腳
參考LCD1602液晶顯示實(shí)驗(yàn)接線(xiàn)(開(kāi)發(fā)攻略?xún)?nèi)在對(duì)應(yīng)的實(shí)驗(yàn)章節(jié)內(nèi)實(shí)驗(yàn)現(xiàn)象有接線(xiàn)說(shuō)明)
2,獨(dú)立按鍵模塊-->單片機(jī)管腳
K1-->P34
K2-->P35
K3-->P32
3,蜂鳴器模塊-->單片機(jī)管腳
BEEP-->P15
4,LED模塊-->單片機(jī)管腳
D1-->P24
5,LED模塊-->單片機(jī)管腳
D1-->P24
6,繼電器模塊-->單片機(jī)管腳
RELAY-->P14
7,直流電機(jī)模塊-->單片機(jī)管腳
IN1-->P10(參考直流電機(jī)實(shí)驗(yàn)接線(xiàn))
8,EEPROM模塊-->單片機(jī)管腳
參考EEPROM實(shí)驗(yàn)接線(xiàn)
9,DS18B20模塊-->單片機(jī)管腳
參考DS18B20溫度傳感器實(shí)驗(yàn)接線(xiàn)
實(shí)驗(yàn)現(xiàn)象:
首先它能顯示環(huán)境的溫度并能設(shè)置上下限閥值,這是最基本的功能,系統(tǒng)上電的時(shí)候顯示的是當(dāng)前環(huán)境溫度
和設(shè)定的溫度閥值,我們可以通過(guò)按鍵來(lái)修改溫度上下限閥值。我們看,按下這個(gè)K1鍵會(huì)進(jìn)入溫度閥值設(shè)置
界面,每按一下,切換一次閥值設(shè)置(上下閥值)界面,按第3次時(shí),會(huì)自動(dòng)回到主界面,如此循環(huán)。
在進(jìn)入溫度閥值設(shè)計(jì)界面時(shí),可以通過(guò)K2、K3鍵對(duì)閥值進(jìn)行加減,這里我們只對(duì)溫度整數(shù)部分進(jìn)行設(shè)置,
小數(shù)部分我們就不需要了,將設(shè)置好的上下限閥值保存到AT24C02(EEPROM)內(nèi),當(dāng)下一次開(kāi)啟系統(tǒng)時(shí)只需
從AT24C02內(nèi)讀取保存的閥值數(shù)據(jù),而不需要重復(fù)設(shè)置上下限閥值。這樣的話(huà),我們用3個(gè)按鍵就實(shí)現(xiàn)了溫度上下
限閥值的設(shè)定,這是溫度檢測(cè)控制系統(tǒng)基本的功能。假如我們把溫度上限設(shè)置為32°C,下限設(shè)置為30°C。
另外還有恒定溫度的功能。當(dāng)設(shè)定好上下限閥值時(shí),系統(tǒng)即會(huì)把當(dāng)前的溫度與設(shè)定的上下限閥值對(duì)比,
如果高于上限溫度,開(kāi)啟散熱進(jìn)行降溫,同時(shí)報(bào)警;如果低于下限溫度,開(kāi)啟加熱,同時(shí)報(bào)警;
如果當(dāng)前溫度處于下限和上限溫度之間時(shí),關(guān)閉散熱、加熱及報(bào)警。從而可將溫度控制在閥值的范圍內(nèi)。
單片機(jī)源程序如下:
#include "public.h"
#include "lcd.h"
#include "temp.h"
#include "i2c.h"
sbit k3=P3^2; //設(shè)置溫度上下限
sbit k1=P3^4; //加
sbit k2=P3^5; //減
sbit led=P2^4; //報(bào)警指示燈
sbit beep=P1^5; //蜂鳴器報(bào)警
sbit relay=P1^4; //加熱設(shè)備
sbit moto=P1^0; //電機(jī)散熱
char set_templ=22,set_temph=40; //設(shè)定溫度上下限默認(rèn)值
u16 temp_val; //檢測(cè)的實(shí)際溫度
u8 mode; //溫度模式
void Temp_DataPros()
{
short temp;
u8 temp_buf[5];
temp=Ds18b20ReadTemp();
temp_val=temp;
if(temp<0)
{
temp=-temp;
LCD_Dispstring(2+5,0,"-");
}
else
{
LCD_Dispstring(2+5,0," ");
}
temp_buf[0]=temp/100+0x30;
temp_buf[1]=temp%100/10+0x30;
temp_buf[2]='.';
temp_buf[3]=temp%100%10+0x30;
temp_buf[4]='\0';
LCD_Dispstring(2+6,0,temp_buf); //顯示檢測(cè)的溫度xx.x
temp_buf[0]=set_temph/10+0x30;
temp_buf[1]=set_temph%10+0x30;
temp_buf[2]='\0';
LCD_Dispstring(5,1,temp_buf); //顯示設(shè)定的溫度上限值xx
temp_buf[0]=set_templ/10+0x30;
temp_buf[1]=set_templ%10+0x30;
temp_buf[2]='\0';
LCD_Dispstring(14,1,temp_buf); //顯示設(shè)定的溫度下限值xx
}
#define K1_MODE 1
#define K2_ADD 2
#define K3_DEC 3
//mode: 0-單次掃描 1-連續(xù)掃描
u8 KEY_Scan(u8 mode)
{
static u8 key=1;
if(key&&(k1==0||k2==0||k3==0))
{
delay(1000); //消抖
key=0;
if(k3==0)
{
return K1_MODE;
}
else if(k1==0)
{
return K2_ADD;
}
else if(k2==0)
{
return K3_DEC;
}
}
else if(k1==1&&k2==1&&k3==1)
{
key=1;
}
if(mode)
{
key=1;
}
return 0;
}
void KEY_Pros()
{
u8 key;
u8 temph_buf[3];
key=KEY_Scan(0);
if(key==K1_MODE) //模式選擇
{
mode++;
LCD_Clear();
if(mode==1)
{
LCD_Dispstring(0,0,"SETH: C");
}
else if(mode==2)
{
LCD_Dispstring(0,1,"SETL: C");
}
else
{
mode=0;
LCD_Dispstring(2,0,"Temp: C");
LCD_Dispstring(0,1,"SETH: ");
LCD_Dispstring(9,1,"SETL: ");
}
}
if(mode==1) //溫度上限設(shè)置
{
switch(key)
{
case K2_ADD: //加
set_temph++;
if(set_temph>=80)set_temph=80;
break;
case K3_DEC: //減
set_temph--;
if(set_temph<=0)set_temph=0;
break;
}
temph_buf[0]=set_temph/10+0x30;
temph_buf[1]=set_temph%10+0x30;
temph_buf[2]='\0';
LCD_Dispstring(6,0,temph_buf);
At24c02Write(0,set_temph);
}
else if(mode==2) //溫度下限設(shè)置
{
switch(key)
{
case K2_ADD: //加
set_templ++;
if(set_templ>=80)set_templ=80;
break;
case K3_DEC: //減
set_templ--;
if(set_templ<=0)set_templ=0;
break;
}
temph_buf[0]=set_templ/10+0x30;
temph_buf[1]=set_templ%10+0x30;
temph_buf[2]='\0';
LCD_Dispstring(6,1,temph_buf);
At24c02Write(2,set_templ);
}
}
void sound()
{
u8 i=50;
while(i--)
{
beep=!beep;
delay(10);
}
}
void TempData_Compare()
{
if(temp_val>set_temph*10) //實(shí)際溫度高于上限值 報(bào)警 散熱
{
led=1;
moto=1;
relay=1;
sound();
}
else if(temp_val<set_templ*10) //實(shí)際溫度低于下限值 報(bào)警 加熱
{
led=1;
moto=0;
relay=0;
sound();
}
else //實(shí)際溫度在下限值和上限值之間 取消報(bào)警 取消加熱 取消散熱
{
moto=0;
led=0;
relay=1;
}
}
void kai_display()
{
if(At24c02Read(255)!=18)
{
At24c02Write(0,set_temph);
At24c02Write(2,set_templ);
At24c02Write(255,18);
}
else
{
set_temph=At24c02Read(0);
set_templ=At24c02Read(2);
}
LCD_Dispstring(2,0,"Temp: C");
LCD_Dispstring(0,1,"SETH: ");
LCD_Dispstring(9,1,"SETL: ");
}
void main()
{
moto=0;
led=0;
relay=1;
LCD_Init();
kai_display();
while(1)
{
if(mode==0)
Temp_DataPros();
KEY_Pros();
TempData_Compare();
}
}
復(fù)制代碼
所有程序51hei提供下載:
智能溫度檢測(cè)控制系統(tǒng)設(shè)計(jì).rar
(41.86 KB, 下載次數(shù): 31)
2020-9-17 16:34 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
久久久国产一区二区三区
|
日韩在线视频一区
|
中文字幕在线观看
|
久久午夜电影
|
国产三区在线观看视频
|
91一区二区三区
|
久久天堂
|
caoporn国产
|
伊人激情网
|
一区二区免费在线观看
|
91免费看片
|
亚洲第一女人av
|
日本久久福利
|
中文字幕一区二区三区精彩视频
|
国产精品欧美一区二区三区
|
欧美一区免费
|
久热国产精品视频
|
中文字幕一区在线观看视频
|
婷婷综合五月天
|
91精品久久
|
日韩精品一区二区三区中文字幕
|
中文字幕在线视频一区二区三区
|
久久一
|
九热在线
|
国产精品精品3d动漫
|
成人免费视频
|
欧美成人免费在线
|
亚洲精品电影网在线观看
|
欧美精品乱码99久久影院
|
国产成在线观看免费视频
|
国产精品美女久久久久久免费
|
免费性视频
|
亚洲字幕在线观看
|
国产97色
|
亚洲天堂一区二区
|
97精品超碰一区二区三区
|
97精品国产一区二区三区
|
国产一区影院
|
懂色av蜜桃av
|
欧美日韩国产在线
|
av一区二区在线观看
|