加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入

51單片機(jī)DS18B20溫度報(bào)警器proteus仿真設(shè)計(jì)_可調(diào)上下限(源碼+原理圖+報(bào)告+講解視頻)

08/09 17:04
1678
服務(wù)支持:
技術(shù)交流群

完成交易后在“購(gòu)買成功”頁(yè)面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗(yàn)、收獲成長(zhǎng)和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購(gòu)買后不支持退換且無(wú)法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論
放大
實(shí)物圖
相關(guān)方案
  • 方案介紹
  • 相關(guān)文件
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

原理圖Altium Designer

仿真版本:proteus 7.8

程序編譯器:keil 4/keil 5

編程語(yǔ)言:C語(yǔ)言

設(shè)計(jì)編號(hào):S0008

主要功能

本設(shè)計(jì)系統(tǒng)是18b20溫度報(bào)警系統(tǒng)數(shù)碼管顯示,可設(shè)置溫度上限高溫報(bào)警和下限低溫報(bào)警,報(bào)警溫度可精確到0.1度,并具有掉電保存功能,數(shù)據(jù)保存在單片機(jī)內(nèi)部EEPOM中,進(jìn)入設(shè)置界面后如果沒有鍵按下系統(tǒng)會(huì)在15秒后自動(dòng)退出設(shè)置界面,人性化的按鍵設(shè)置,按鍵還具有連加、減功能。

  1. 按“確定鍵” :有兩種操作方式

1)按下就松開,高溫設(shè)置、低溫設(shè)置、正常顯示溫度,三個(gè)界面按一下就切換一次。

2)按下不松開,進(jìn)入自動(dòng)切換,每500ms自動(dòng)切換一次,

  1. 按“加鍵” :有兩種操作方式

1)按下就松開,設(shè)定的溫度值就加0.1度。

2)按下不松開,進(jìn)入按鍵連加功能,每500ms自動(dòng)加一次,前三次自動(dòng)加0.1度,之后就是自動(dòng)加1度。

  1. 按“減鍵” :有兩種操作方式

1)按下就松開,設(shè)定的溫度值就減0.1度。

2)按下不松開,進(jìn)入按鍵連減功能,每500ms自動(dòng)減一次,前三次自動(dòng)減0.1度,之后就是自動(dòng)減1度。

  1. 第一次按下“確定鍵”進(jìn)入高溫報(bào)警設(shè)置:

按下“加、減”鍵可設(shè)置高溫報(bào)警,最高設(shè)置成99.0度,最低可設(shè)置成比低溫報(bào)警高0.1度。

  1. 第二次按下“確定鍵”進(jìn)入低溫報(bào)警設(shè)置:

按下“加、減”鍵可設(shè)置低溫報(bào)警,最低設(shè)置成1度,最高可設(shè)置成比高溫報(bào)警低0.1度。

  1. 第三次按下“確定鍵”進(jìn)入正常溫度顯示。

講解視頻

包含仿真講解和代碼講解

仿真圖

image-20220902232800201

硬件設(shè)計(jì):

img

主控制模塊

主控制最系統(tǒng)電路如圖4所示。

img

圖4 單片主控電路

顯示模塊電路

顯示采用四位數(shù)碼管顯示,當(dāng)位選打開時(shí),送入相應(yīng)的段碼,則相應(yīng)的數(shù)碼管打開,關(guān)掉位選,打開另一個(gè)位選,送入相應(yīng)的段碼,則數(shù)碼管打開,而每次打開關(guān)掉相應(yīng)的位選時(shí),時(shí)間間隔低于20ms,從人類視覺的角度上看,就仿佛是全部數(shù)碼管同時(shí)顯示的一樣。顯示電路如圖5

img

圖5 數(shù)碼管顯示

數(shù)碼管顯示驅(qū)動(dòng)電路

三極管8550來(lái)驅(qū)動(dòng)4位數(shù)碼管,不僅簡(jiǎn)單,而且價(jià)格便宜。

img

程序設(shè)計(jì)

img

主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20的測(cè)量的當(dāng)前溫度值,溫度測(cè)量每1s進(jìn)行一次。這樣可以在一秒之內(nèi)測(cè)量一次被測(cè)溫度,主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示,讀出并處理DS18B20的當(dāng)前溫度值,與設(shè)定的報(bào)警溫度比較,其程序流程見圖9所示。

通過(guò)調(diào)用讀溫度子程序把存入內(nèi)存儲(chǔ)中的整數(shù)部分與小數(shù)部分開分存放在不的的兩個(gè)單元中,然后通過(guò)調(diào)用顯示子程序顯示出來(lái)。

image-20220902233650289

程序代碼

/****************主函數(shù)***************/
void main()
{
	beep = 0;		                //開機(jī)叫一聲   
	delay_1ms(150);
	P0 = P1 = P2 = P3 = 0xff;
	temperature = read_temp();		//先讀出溫度的值	
	init_eeprom();  //開始初始化保存的數(shù)據(jù)
	delay_1ms(650);				
	temperature = read_temp();		         //先讀出溫度的值
	dis_smg[0] = smg_du[temperature % 10];	 //取溫度的小數(shù)顯示
	dis_smg[1] = smg_du[temperature / 10 % 10] & 0x7f; //取溫度的個(gè)位顯示
	dis_smg[2] = smg_du[temperature / 100 % 10] ;	   //取溫度的十位顯示
	time_init();                    //初始化定時(shí)器 
	while(1)
	{		
		key();					//按鍵程序
		if(key_can < 10)
		{
			key_with();			//設(shè)置報(bào)警溫度	
		}
		if(flag_300ms == 1)	    //300ms 處理一次溫度程序
		{	   
			flag_300ms = 0;	
			temperature = read_temp();	//先讀出溫度的值
			clock_h_l();        //報(bào)警函數(shù)
			if(menu_1 == 0)
			{	
				smg_i = 3;
				dis_smg[0] = smg_du[temperature % 10];	 //取溫度的小數(shù)顯示
				dis_smg[1] = smg_du[temperature / 10 % 10] & 0x7f; //取溫度的個(gè)位顯示
				dis_smg[2] = smg_du[temperature / 100 % 10] ;	   //取溫度的十位顯示
			}
		}
	}
}

DS18B20初始化程序流程圖

在DS18B20工作之前需要進(jìn)行初始化,流程圖如下:

image-20220902233709197


/*************讀取溫度的值 讀出來(lái)的是小數(shù)***************/
uint read_temp()
{
	uint value;
	uchar low;			   //在讀取溫度的時(shí)候如果中斷的太頻繁了,就應(yīng)該把中斷給關(guān)了,否則會(huì)影響到18b20的時(shí)序
	init_18b20();		   //初始化18b20
	write_18b20(0xcc);	   //跳過(guò)64位ROM
	write_18b20(0x44);	   //啟動(dòng)一次溫度轉(zhuǎn)換命令
	delay_uint(50);		   //500us

	init_18b20();		   //初始化18b20
	
	write_18b20(0xcc);	   //跳過(guò)64位ROM
	write_18b20(0xbe);	   //發(fā)出讀取暫存器命令
	
	EA = 0;
	low = read_18b20();	   //讀溫度低字節(jié)
	value = read_18b20();  //讀溫度高字節(jié)
	EA = 1;
	value <<= 8;		   //把溫度的高位左移8位
	value |= low;		   //把讀出的溫度低位放到value的低八位中
	value *= 0.625;	       //轉(zhuǎn)換到溫度值 小數(shù)
	return value;		   //返回讀出的溫度 帶小數(shù)
}

設(shè)計(jì)報(bào)告

摘要

隨著時(shí)代的進(jìn)步和發(fā)展,單片機(jī)技術(shù)已經(jīng)普及到我們生活、工作、科研、各個(gè)領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù), 本文主要介紹了一個(gè)基于STC89C52單片機(jī)的溫度報(bào)警系統(tǒng),詳細(xì)描述了利用溫度傳感器DS18B20開發(fā)測(cè)溫系統(tǒng)的過(guò)程,重點(diǎn)對(duì)傳感器在單片機(jī)下的硬件連接,軟件編程以及各模塊系統(tǒng)流程進(jìn)行了詳盡分析,對(duì)各部分的電路也一一進(jìn)行了介紹,該系統(tǒng)可以方便的實(shí)現(xiàn)溫度采集和顯示,并可根據(jù)需要任意設(shè)定報(bào)警溫度,它使用起來(lái)相當(dāng)方便,具有精度高、量程寬、靈敏度高、體積小、功耗低等優(yōu)點(diǎn),適合于我們?nèi)粘I詈凸?、農(nóng)業(yè)生產(chǎn)中的溫度控制,也可以當(dāng)作溫度處理模塊嵌入其它系統(tǒng)中,作為其他主系統(tǒng)的輔助擴(kuò)展。DS18B20與STC89C52結(jié)合實(shí)現(xiàn)最簡(jiǎn)溫度控制系統(tǒng),該系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,抗干擾能力強(qiáng),適合于惡劣環(huán)境下進(jìn)行現(xiàn)場(chǎng)溫度的控制,有廣泛的應(yīng)用前景。

**關(guān)鍵詞:**單片機(jī);溫度控制;STC89C52;DS18B20;

image-20220902232904330

資料清單&&下載鏈接

img

資料下載鏈接

  • 設(shè)計(jì)資料獲取聯(lián)系方式.doc

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
ATXMEGA128A3U-MHR 1 Microchip Technology Inc IC MCU 8BIT 128KB FLASH 64QFN
$7.31 查看
STM32H743VIT6TR 1 STMicroelectronics High-performance and DSP with DP-FPU, Arm Cortex-M7 MCU with 2MBytes of Flash memory, 1MB RAM, 480 MHz CPU, Art Accelerator, L1 cache, external memory interface, large set of peripherals

ECAD模型

下載ECAD模型
暫無(wú)數(shù)據(jù) 查看
USB2514BI-AEZG 1 Microchip Technology Inc UNIVERSAL SERIAL BUS CONTROLLER, QCC36, 6 X 6 MM, 0.50 MM PITCH, ROHS COMPLIANT, QFN-36

ECAD模型

下載ECAD模型
$3.89 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜