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

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

基于51單片機(jī)DS18B20溫度測量proteus仿真設(shè)計(jì)C語言源碼+proteus仿真+報(bào)告+講解

09/29 10:05
1379
服務(wù)支持:
技術(shù)交流群

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

虛擬商品不可退

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

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論
放大
實(shí)物圖
相關(guān)方案
  • 方案介紹
    • 1 功能說明:
    • 2 講解視頻:
    • 3 仿真電路:
    • 4 程序:
    • 5 設(shè)計(jì)報(bào)告:
    • 6 資料清單&&網(wǎng)盤鏈接:
  • 相關(guān)文件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

仿真原版本:proteus 7.8

程序編譯器:keil 4/keil 5

編程語言:C語言

設(shè)計(jì)編號:S0014

1 功能說明:

運(yùn)用所學(xué)單片機(jī)知識,完成溫度信號的測量。要求如下:單片機(jī)系統(tǒng)選擇使用AT89C51溫度傳感器采用DS18B20,在LED顯示器上顯示頻率值,另外LED顯示器使用動態(tài)方式顯示。

2 講解視頻:

包含仿真講解和代碼講解


51單片機(jī)DS18B20溫度測量protues仿真設(shè)計(jì)(源碼+仿真+講解)

3 仿真電路:

imgimgimg

4 程序:

#include <reg52.h> 
#define uint unsigned int
#define uchar unsigned char   	//宏定義
sbit DQ=P3^7;     				//定義DS18B20 的 I/O	
sbit DIAN = P0^5;        		//顯示小數(shù)點(diǎn)用

uchar x=0;      				//計(jì)數(shù)器
signed char m;     				//溫度值全局變量
uchar n;      					//溫度值全局變量
uint z;
uint c;
uint gaowen=35;  		       //高溫報(bào)警溫度,默認(rèn)值為35
uint diwen=0; 				   //低溫報(bào)警溫度,默認(rèn)值0
uchar code  LEDData[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,
			0x47,0xDF,0xD7,0xCF,0xDA,0x9B,0xDC,0x9B,0x8B};

/*****延時子程序*****/
void Delay_DS18B20(int num)
{
	while(num--) ;
}
/*****初始化DS18B20*****/
void Init_DS18B20(void)
{
	unsigned char x=0;
	DQ = 1;         	//DQ復(fù)位
	Delay_DS18B20(8);   //稍做延時
	DQ = 0;        	   	//單片機(jī)將DQ拉低
	Delay_DS18B20(80);  //精確延時,大于480us
	DQ = 1;         	//拉高總線
	Delay_DS18B20(14);
	x = DQ;           	//稍做延時后,如果x=0則初始化成功,x=1則初始化失敗
	Delay_DS18B20(20);
}
/*****讀一個字節(jié)*****/
unsigned char ReadOneChar(void)
{
	unsigned char i=0;
	unsigned char dat = 0;
	for (i=8;i>0;i--)
  	{
    	DQ = 0;			 //給脈沖信號
    	dat>>=1;
    	DQ = 1;    		 //給脈沖信號
    	if(DQ)
    	dat|=0x80;
    	Delay_DS18B20(4);
  	}
  	return(dat);
}
/*****寫一個字節(jié)*****/
void WriteOneChar(unsigned char dat)
{
	unsigned char i=0;
  	for (i=8; i>0; i--)
  	{
    	DQ = 0;
    	DQ = dat&0x01;
    	Delay_DS18B20(5);
    	DQ = 1;
    	dat>>=1;
  	}
}
/*****讀取溫度*****/
unsigned int ReadTemperature(void)
{
	unsigned char a=0;
  	unsigned char b=0;
  	unsigned int t=0;
  	float tt=0;
  	Init_DS18B20();
  	WriteOneChar(0xCC);  //跳過讀序號列號的操作
  	WriteOneChar(0x44);  //啟動溫度轉(zhuǎn)換
  	Init_DS18B20();
  	WriteOneChar(0xCC);  //跳過讀序號列號的操作
  	WriteOneChar(0xBE);  //讀取溫度寄存器
  	a=ReadOneChar();     //讀低8位
  	b=ReadOneChar();	 //讀高8位
  	t=b;				 //高8位轉(zhuǎn)移到t
  	t<<=8;			     //t數(shù)據(jù)左移8位
  	t=t|a;			     //將t和a按位或,得到一個16位的數(shù)
  	tt=t*0.0625;		 //將t乘以0.0625得到實(shí)際溫度值
					     //(溫度傳感器設(shè)置12位精度,最小分辨率是0.0625)
  	t= tt*10+0.5;        //放大10倍(將小數(shù)點(diǎn)后一位顯示出來)輸出并四舍五入
  	return(t);		     //返回溫度值
}
/*****延時子程序*****/
void Delay(uint num)
{
	while( --num );
}			
/*****讀取溫度*****/
void check_wendu(void)
{
	uint a,b;
	c=ReadTemperature();  		//獲取溫度值
	a=c/100;     				//計(jì)算得到十位數(shù)字
	b=c/10-a*10;    			//計(jì)算得到個位數(shù)字
	m=c/10;      				//計(jì)算得到整數(shù)位
	if(m<=0)				    //如果溫度小于0,限制顯示為0
	{
		m=0;
	}
	n=c-a*100-b*10;    			//計(jì)算得到小數(shù)位
}
/*****顯示開機(jī)初始化等待畫面*****/
void Disp_init(void)    
{
	P0 = ~0x80;      		 //顯示-
	P2 = 0x7F;
	Delay(200);
	P2 = 0xDF;
	Delay(200);   
	P2 = 0xF7;
	Delay(200);
	P2 = 0xFD;
	Delay(200);
	P2 = 0xFF;       		 //關(guān)閉顯示
}
/*****顯示溫度子程序*****/
void Disp_Temperature(void)    
{
	P0 = ~0x98;        		//顯示c
	P2 = 0x7F;
	Delay(1000);
	P2=0xff;				//關(guān)閉顯示

	P0=~LEDData[n];     	//顯示小數(shù)位
	P2 = 0xDF;
	Delay(1000);
	P2=0xff;			   //關(guān)閉顯示

	P0 =~LEDData[m%10];    //顯示個位
	DIAN = 0;         	   //顯示小數(shù)點(diǎn)
	P2 = 0xF7;
	Delay(1000);
	P2=0xff;			   //關(guān)閉顯示

	P0 =~LEDData[m/10];    //顯示十位
	P2 = 0xFD;
	Delay(1000);
	P2 = 0xff;        	   //關(guān)閉顯示
}

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

img

6 資料清單&&網(wǎng)盤鏈接:

?. 常見使用問題及解決方法–必讀?。。?!

1. 源程序

2. proteus仿真

3. 仿真視頻

4. 開題報(bào)告

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

6. 講解視頻

Altium Designer 安裝破解

KEIL+proteus 單片機(jī)仿真設(shè)計(jì)教程

KEIL安裝破解

Proteus元器件查找

Proteus安裝

Proteus簡易使用教程

單片機(jī)學(xué)習(xí)資料

相關(guān)數(shù)據(jù)手冊

答辯技巧

設(shè)計(jì)報(bào)告常用描述

鼠標(biāo)雙擊打開查找嘉盛單片機(jī)51 STM32單片機(jī)課程畢業(yè)設(shè)計(jì).url

img

網(wǎng)盤下載鏈接

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

相關(guān)推薦

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