国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于51單片機(jī)的溫度報警器

這篇具有很好參考價值的文章主要介紹了基于51單片機(jī)的溫度報警器。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

設(shè)計任務(wù)及要求

設(shè)計任務(wù):

以51單片機(jī)為核心,設(shè)計和制作一個溫度報警器,能在LCD上顯示環(huán)境的溫度與希望溫度上下限閥值,并能設(shè)置希望溫度上下限閥值,系統(tǒng)上電的時候顯示的是當(dāng)前環(huán)境溫度和設(shè)定的溫度閥值,通過按鍵來修改溫度上下限閥值,再次上電時保持上一次的溫度設(shè)置。根據(jù)溫度傳感器測得的溫度做如下處理:溫度當(dāng)溫度低于設(shè)定下限溫度時,蜂鳴器發(fā)出報警聲和綠光報警,并且通過繼電器控制加熱設(shè)備提升溫度至正常溫度,然后加熱設(shè)備停止工作;當(dāng)溫度高于設(shè)定上限溫度時,蜂鳴器發(fā)出報警聲和紅光報警,并且通過繼電器控制散熱設(shè)備降低溫度至正常溫度,然后散熱設(shè)備停止工作。

設(shè)計要求:

(1)確定系統(tǒng)設(shè)計方案;
(2)進(jìn)行系統(tǒng)的硬件設(shè)計;
(3)完成應(yīng)用程序設(shè)計;
(4)應(yīng)用系統(tǒng)的硬件和軟件的調(diào)試;

硬件原理圖

基于51單片機(jī)的溫度報警器

部分程序代碼

main.c

#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 ledL=P1^0;
sbit ledH=P1^1;			  

sbit led=P2^4;     //電源指示燈

sbit beep=P1^5;	  //蜂鳴器報警
sbit relay=P1^4;  //加熱或散熱設(shè)備


char set_templ=22,set_temph=40;  //設(shè)定溫度上下限默認(rèn)值
u16 temp_val;  //檢測的實(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);		 //顯示檢測的溫度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í)際溫度高于上限值   報警  
	{

		relay=0;
		ledH=0;
		ledL=1;
		sound();		
	}
	else if(temp_val<set_templ*10)	 //實(shí)際溫度低于下限值   報警
	{

		relay=0;
		ledH=1;
		ledL=0;
		sound();		
	}
	else		      //實(shí)際溫度在下限值和上限值之間   取消報警  取消加熱  取消散熱
	{
		ledH=1;
		ledL=1;
		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()
{
	ledH=1;
	ledL=1;
	relay=1;
	led=0;
	LCD_Init();
	kai_display();
	while(1)
	{
		if(mode==0)
			Temp_DataPros();
		KEY_Pros();	
		TempData_Compare();				
	}
}

如需具體工程代碼可評論區(qū)留言文章來源地址http://www.zghlxwxcb.cn/news/detail-503639.html

到了這里,關(guān)于基于51單片機(jī)的溫度報警器的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • MCU-51:單片機(jī)DS18B20溫度報警器

    MCU-51:單片機(jī)DS18B20溫度報警器

    DS18B20是一種常見的數(shù)字溫度傳感器,其控制命令和數(shù)據(jù)都是以數(shù)字信號的方式輸入輸出,相比較于模擬溫度傳感器,具有功能強(qiáng)大、硬件簡單、易擴(kuò)展、抗干擾性強(qiáng)等特點(diǎn) 測溫范圍:-55°C 到 +125°C 通信接口:1-Wire(單總線) 其它特征:可形成總線結(jié)構(gòu)、內(nèi)置溫度報警功能、

    2024年02月02日
    瀏覽(22)
  • 51單片機(jī)DS18B20溫度報警器proteus仿真設(shè)計_可調(diào)上下限

    51單片機(jī)DS18B20溫度報警器proteus仿真設(shè)計_可調(diào)上下限

    (仿真+源碼+原理圖+報告+講解視頻) 原理圖:Altium Designer 仿真版本:proteus 7.8 程序編譯器:keil 4/keil 5 編程語言:C語言 設(shè)計編號:S0008 本設(shè)計系統(tǒng)是18b20溫度報警系統(tǒng)數(shù)碼管顯示,可設(shè)置溫度上限高溫報警和下限低溫報警,報警溫度可精確到0.1度,并具有掉電保存功能,數(shù)

    2024年02月11日
    瀏覽(19)
  • 基于51單片機(jī)的煙霧報警器設(shè)計

    基于51單片機(jī)的煙霧報警器設(shè)計

    硬件方案 ????????火災(zāi)報警器采用51單片機(jī)為核心控制器,利用氣體傳感器MQ-2、ADC0809模數(shù)轉(zhuǎn)換器、DS18B20溫度傳感器等實(shí)現(xiàn)基本功能。通過這些傳感器和芯片,當(dāng)環(huán)境中可燃?xì)怏w濃度或溫度等發(fā)生變化時系統(tǒng)會發(fā)出相應(yīng)的燈光報警信號和聲音報警信號,以此來實(shí)現(xiàn)火災(zāi)報警

    2024年02月11日
    瀏覽(25)
  • 基于STM32單片機(jī)的溫度報警器(數(shù)碼管)(Proteus仿真+程序)

    基于STM32單片機(jī)的溫度報警器(數(shù)碼管)(Proteus仿真+程序)

    ? ? ? ? 本設(shè)計由STM32F103單片機(jī)最小系統(tǒng)+DS18B20溫度傳感器+數(shù)碼管顯示模塊+聲光報警模塊+獨(dú)立按鍵組成。 1、主控制器是STM32F103單片機(jī) 2、DS18B20溫度傳感器測量溫度 3、數(shù)碼管顯示溫度值,精度0.1攝氏度 4、三個按鍵可設(shè)置溫度上限、下限報警值,溫度超過上限、或者溫度低

    2024年02月07日
    瀏覽(46)
  • 38、基于51單片機(jī)紅外熱釋電人體感應(yīng)藍(lán)牙防盜報警器系統(tǒng)設(shè)計

    38、基于51單片機(jī)紅外熱釋電人體感應(yīng)藍(lán)牙防盜報警器系統(tǒng)設(shè)計

    隨著現(xiàn)在社會的發(fā)展,時代進(jìn)步,高新技術(shù)的快速融入,人們的生活發(fā)生了巨大的改變,人們置購了大量高新技術(shù)的產(chǎn)品,許多高科技產(chǎn)品的使用越來越成為家庭生活的主旋律,因此人們對自己所處環(huán)境的安全要求就越來越高,特別是家居安全,不得不時刻留意不速之客的光

    2024年02月03日
    瀏覽(27)
  • 132、仿真-基于51單片機(jī)主從串口通信家用防盜報警器設(shè)計(程序+Proteus仿真+流程圖等)

    132、仿真-基于51單片機(jī)主從串口通信家用防盜報警器設(shè)計(程序+Proteus仿真+流程圖等)

    畢設(shè)幫助、開題指導(dǎo)、技術(shù)解答(有償)見文未 目錄 一、設(shè)計功能 二、Proteus仿真圖?編輯 三、程序源碼 資料包括: 需要完整的資料可以點(diǎn)擊下面的名片加下我,找我要資源壓縮包的百度網(wǎng)盤下載地址及提取碼。 方案選擇 單片機(jī)的選擇 方案一:STM32系列單片機(jī)控制,該型號

    2024年02月16日
    瀏覽(26)
  • 定時報警器課程設(shè)計(基于單片機(jī))

    ????????定時報警器 設(shè)計一個單片機(jī)控制的簡易定時報警器。要求根據(jù)設(shè)定的初始值(1-59秒)進(jìn)行倒計時,當(dāng)計時到0時數(shù)碼管閃爍“00”(以1Hz閃爍),按鍵功能如下: (1)設(shè)定鍵:在倒計時模式時,按下此鍵后停止倒計時,進(jìn)入設(shè)置狀態(tài);如果已經(jīng)處于設(shè)置狀態(tài)則此

    2024年02月09日
    瀏覽(31)
  • 基于單片機(jī)的家庭防盜報警器設(shè)計

    基于單片機(jī)的家庭防盜報警器設(shè)計

    摘 要 II Abstract III 引 言 1 1 系統(tǒng)方案設(shè)計 4 1.1 方案論證 4 1.2 項(xiàng)目總體設(shè)計 5 2 項(xiàng)目硬件設(shè)計 7 2.1 單片機(jī)型號的選擇 7 2.2 單片機(jī)的引腳說明 8 2.3 單片機(jī)的最小系統(tǒng) 9 2.3.1 時鐘電路設(shè)計 9 2.3.2 復(fù)位電路設(shè)計 10 2.4 紅外信號采集及其處理 11 2.5 蜂鳴器電路的設(shè)計 12 2.6 發(fā)光二極管電

    2024年03月12日
    瀏覽(24)
  • 單片機(jī)-煙霧報警器

    目 ??????錄 煙霧報警器 一、開題依據(jù) 二、軟硬件環(huán)境 三、計劃進(jìn)度 四、關(guān)鍵技術(shù) 4.1 報警器設(shè)計所需資源 4.2 報警器設(shè)計原理與內(nèi)容 五、核心芯片主要參數(shù) 5.1 主控芯片 5.1.1 ?AT89C52 單片機(jī)簡介 5.1.2 主控電路在本系統(tǒng)中的運(yùn)用 5.2 傳感部分 5.2.1 ? 數(shù) / 模轉(zhuǎn)換芯片 ADC0809

    2024年02月20日
    瀏覽(19)
  • 基于STM32單片機(jī)的溫濕度檢測報警器(數(shù)碼管)(Proteus仿真+程序)

    基于STM32單片機(jī)的溫濕度檢測報警器(數(shù)碼管)(Proteus仿真+程序)

    ? ? ? ?本設(shè)計由STM32F103單片機(jī)最小系統(tǒng)+DHT11溫濕度傳感器+數(shù)碼管顯示模塊+聲光報警模塊+獨(dú)立按鍵組成。 1、主控制器是STM32F103單片機(jī) 2、DHT11傳感器測量溫度和濕度數(shù)據(jù) 3、數(shù)碼管顯示溫度、濕度,精度1℃、1%RH 4、三個按鍵可設(shè)置溫度、濕度上限報警值,溫度或者濕度超過

    2024年02月03日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包