• 方案介紹
    • 1.? 簡(jiǎn)介
    • 2.? 主要功能
    • 3.? 源程序(Keil5)
    • 4.? 仿真proteus8.6
    • 5.? 設(shè)計(jì)報(bào)告
    • 6.? 資料清單
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

基于51單片機(jī)的溫度補(bǔ)償?shù)某暡y(cè)距系統(tǒng)設(shè)計(jì)(一)

04/11 08:36
671
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

單片機(jī)仿真設(shè)計(jì)合集資料獲取.pdf

共1個(gè)文件

資料清單:C程序+仿真+設(shè)計(jì)報(bào)告+使用說明+元件清單+操作視頻

仿真版本:Proteus8.6及以上版本

程序編譯:Keil5 C51

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

設(shè)計(jì)編號(hào):【H03】

1.? 簡(jiǎn)介

? 本文提出了一種基于51單片機(jī)的帶溫度補(bǔ)償?shù)?a class="article-link" target="_blank" href="/tag/%E8%B6%85%E5%A3%B0%E6%B3%A2%E6%B5%8B%E8%B7%9D/">超聲波測(cè)距系統(tǒng)。該設(shè)計(jì)使用ATC89C51單片機(jī)、DS18B20溫度傳感器模塊、HC_SR04超聲波測(cè)距模塊、LCD1602顯示模塊以及聲光報(bào)警模塊。用戶可設(shè)置上下限報(bào)警閾值,當(dāng)實(shí)際距離超出設(shè)定閾值時(shí)啟動(dòng)聲光報(bào)警。

2.? 主要功能

a.通過LCD1602顯示實(shí)際距離、上下限報(bào)警閾值、當(dāng)前溫度。

b.通過獨(dú)立按鍵設(shè)置上下限報(bào)警閾值。

c.當(dāng)實(shí)際距離超出設(shè)定閾值時(shí)啟動(dòng)聲光報(bào)警。

3.? 源程序(Keil5)

本設(shè)計(jì)采用keil5 C51軟件(內(nèi)附安裝包)實(shí)現(xiàn)程序設(shè)計(jì)。如需用keil4打開程序,可自行通過.c和.h文件新建工程即可。

#define uchar unsigned char 
#define uint unsigned int
#define ULint unsigned long int 
//溫度零上與零下的標(biāo)志位
char flag=0;
//超聲波
char flags=0;
//超聲波距離
char flag1s=0;
//計(jì)算定時(shí)間
uint time=0;
//計(jì)算距離
ULint L_=0;
//溫度
uint t_=0;
//顯示模式  0正常  1最大值調(diào)整  2最小值調(diào)整
uchar mode=0;

uint Max=50;
uint Min=10;
//按鍵標(biāo)志
uchar k=0;
//數(shù)值有誤
uchar FW=0;
//頭函數(shù)
#include <reg52.h>
#include <intrins.h>
#include "KEY.h"	   	 //報(bào)警按鍵
#include "LCD1602.h"			 //顯示頭函數(shù)
#include "HC-SR04.h"http://超聲波頭函數(shù)
#include "DS18B20.h"	   	 //溫度傳感器頭函數(shù)


//函數(shù)聲明
void delayms(uint ms);
//主函數(shù)
void main()
{
	Init_ultrasonic_wave();
	//屏幕初始化
	Init1602();
	//溫度初始化
	tmpchange(); 
	t_=tmp();
	tmpchange();
	t_=tmp();
	tmpchange();
	t_=tmp();

	//循環(huán)顯示
	while(1)
	{
		Key();
		//正常顯示
		if(mode==0)
		{
			StartModule();//啟動(dòng)超聲波
			while(!RX);	  //當(dāng)RX為零時(shí)等待
			TR0=1;		  //開啟計(jì)數(shù)
			while(RX);	  //當(dāng)RX為1計(jì)數(shù)并等待
			TR0=0;		  //關(guān)閉計(jì)數(shù)
	
			delayms(10);  //20MS
			tmpchange();  //溫度轉(zhuǎn)換
			t_=tmp();     //度溫度
			Conut(t_/10); //計(jì)算距離
			if(L_>Max||L_<Min)
			{
				Feng_Start();
			}
			else
			{
				if(FW!=1)
				Feng_Stop();
			}
			Display_1602(t_/10,L_);
		}
		//調(diào)整顯示
		else if(mode!=0)
		{
			//最大最小值
			Init_MaxMin();
			while(mode!=0)
			{
				
				Key();
				if(k==1&&mode==1)
				{
					Init_MaxMin();	
   				write_com(0x8d);//設(shè)置位置					
				}
				else if(k==1&&mode==2)
				{
					Init_MaxMin();	
   				write_com(0x8d+0x40);//設(shè)置位置	
				}
				k=0;
			}
			//界面初始化
			Init1602();
		}
	}
}

4.? 仿真proteus8.6

? 本設(shè)計(jì)采用proteus8.6軟件(內(nèi)附安裝包)實(shí)現(xiàn)仿真設(shè)計(jì),如下圖所示。proteus軟件一般存在高低版本兼容問題,該仿真是通過proteus8.6導(dǎo)出的,所以請(qǐng)盡量使用proteus8.6打開文件,低于proteus8.6的版本不能夠正常使用,高于proteus8.6的版本除了proteus8.8/8.9理論上可以正常使用。

設(shè)置上下限報(bào)警閾值:

當(dāng)實(shí)際距離超出設(shè)定閾值時(shí)啟動(dòng)聲光報(bào)警:

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

設(shè)計(jì)報(bào)告主要包括硬件電路、軟件設(shè)計(jì)、仿真調(diào)試等等,僅供參考。

6.? 資料清單

設(shè)計(jì)資料主要包括C程序+仿真+設(shè)計(jì)報(bào)告+使用說明+元件清單+操作視頻等。

百度網(wǎng)盤下載鏈接:【H03】百度網(wǎng)盤下載鏈接

更多單片機(jī)仿真設(shè)計(jì)合集:單片機(jī)仿真設(shè)計(jì)合集

  • 單片機(jī)仿真設(shè)計(jì)合集資料獲取.pdf
    下載

相關(guān)推薦

方案定制

去合作
方案開發(fā)定制化,2000+方案商即時(shí)響應(yīng)!