51单片机锅炉监控系统仿真设计( proteus仿真+程序+原理图+报告+讲解视频)

51单片机锅炉监控系统仿真设计( proteus仿真+程序+原理图+报告+讲解视频)

51单片机锅炉监控系统仿真设计( proteus仿真+程序+原理图+报告+讲解视频)

仿真图proteus7.8及以上

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:S0056

1.主要功能:

基于51单片机AT89C51/52(与AT89S51/52、AT89C51/52、STC89C51/52等51内核单片机通用)

1.系统实时通过LCD1602显示水位检测值,锅炉炉膛温度值,锅炉内部压力值。

2、可对锅炉的水位上下限、炉膛温度上下限、压力上下限进行设置,第一行显示上限值,第二行显示下限值。

3、如果水位、温度、压力过限则蜂鸣器报警,通过LED指示报警类型。

4、默认水位下限值10cm,上限值40cm,压力下限值30kPa,压力上限值50kPa,温度下限值5℃,温度上限值105℃。

5、温度传感器使用DS18B20;水位传感器使用电位器模拟;压力传感器使用MPX4115。

需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。

以下为本设计资料展示图:

讲解视频

51单片机锅炉监测报警系统设计( proteus+程序+原理图+报告+讲解)

2.仿真

开始仿真

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。

开始仿真后,调整温度变大,当温度106℃大于温度上限值105℃后蜂鸣器报警,温度上限指示灯亮起报警。

调整温度变小,当温度4℃小于温度下限值5℃后蜂鸣器报警,温度下限红灯报警亮起。

仿真中通过按键调整MPX4115压力传感器的值改变显示数值。调整压力变小,当压力调整到52kPa大于上限值,蜂鸣器报警,气压上限红灯报警亮起。

调整压力变小,当压力调整到26kPa低于下限值,蜂鸣器报警,气压下限红灯报警亮起。

仿真中通过按键调整RV2滑动变阻器模拟水位传感器的阻值随水位高低变化。上下箭头用于改变阻值的值。下箭头调低数值,上箭头调高数值。

调整水位变低,当水位调整到9CM低于下限值10CM,蜂鸣器报警,水位下限红灯报警亮起。

调整水位变高,当水位调整到41CM高于上限值40CM,蜂鸣器报警,水位上限红灯报警亮起。

开始仿真后,可以通过矩阵键盘的设置按键进入设置模式调整默认水位下限值、上限值、压力下限值、压力上限值、温度下限值和温度上限值。进入设置模式后LCD1602第一行显示上限值,第二行显示下限值。设置完成通过OK按键退出设置。

以上仿真结果均符合设计要求。

3. 程序代码

使用keil4或者keil5编译,代码有注释,可以结合报告理解代码含义。

mian函数:

c 复制代码
#include "reg51.h"
#include"Ds18b20.h"
#include "ADC0832.h"
#include "lcd1602.h"
#define uchar unsigned char
#define uint unsigned int
sbit led1=P3^0;
sbit led2=P3^1;
sbit led3=P3^3;
sbit led4=P3^4;
sbit led5=P3^5;
sbit led6=P3^6;
//定义引脚
sbit beep=P3^7;//蜂鸣器
//公共变量
uchar time=0;
uchar mode=0;//测量模式、设置模式
//存储变量
uchar water=0;//水位
uchar press=0;//压力
int wendu=0;//温度
uchar water_L=10,water_H=40;//报警值
uchar press_L=30,press_H=50;
uchar wendu_L=5,wendu_H=105;
//显示变量
uchar hang1[]="war:000cm       ";//水位
uchar hang2[]="T:000 C P:000kPa";
uchar hang3[]="0000  ";
//矩阵键盘 无按键按下,返回0	按键值1-16
uchar key_scan()//按键检测
{
uchar i,j;
i=0;
j=0;
P1=0x0f;
if(P1!=0x0f) //检测有无按下
{
 switch(P1)//检测行
 {
  case 0x0e:i=1;break;
  case 0x0d:i=5;break;
  case 0x0b:i=9;break;
  case 0x07:i=13;
 }
 P1=0xf0;
 switch(P1)//检测列
 {
  case 0xe0:j=0;break;
  case 0xd0:j=1;break;
  case 0xb0:j=2;break;
  case 0x70:j=3;
 }
 while(P1!=0xf0);//等待按键松开
}
return i+j;	 
}

//主函数
void main()
{	
	uchar key=0;//按键值

	hang2[5]=0xdf;//圈
	Ds18b20Init();//传感器初始化
	init_1602();

	TMOD|=0X01;
	TH0=0X3C;//50ms	  (65536-50000)/256
	TL0=0XB0;	
	ET0=1;//打开定时器0中断允许
	EA=1;//打开总中断
	TR0=1;//打开定时器
	while(1)
	{
		 key=key_scan();//按键检测
		 if(key==13)//模式切换
		 	mode=1;
		 if(key==14)
		 	mode=0;
		 if(mode==1)//设置模式
		 {
		 	 if(key==1)//水位L加
			 {
			 	if(water_L<water_H)
					water_L++;
			 }
			 if(key==2)//水位L减
			 {
			 	if(water_L>0)
					water_L--;
			 }
			 if(key==3)//水位H加
			 {
			 	if(water_H<100)
					water_H++;
			 }
			 if(key==4)//水位H减
			 {
			 	if(water_H>water_L)
					water_H--;
			 }
			 //==================
			 if(key==5)//温度L加
			 {
			 	if(wendu_L<wendu_H)
					wendu_L++;
			 }
			 if(key==6)//温度L减
			 {
			 	if(wendu_L>0)
					wendu_L--;
			 }
			 if(key==7)//温度H加
			 {
			 	if(wendu_H<100)
					wendu_H++;
			 }
			 if(key==8)//温度H减
			 {
			 	if(wendu_H>wendu_L)
					wendu_H--;
			 }
			 //==================
			 if(key==9)//压力L加
			 {
			 	if(press_L<press_H)
					press_L++;
			 }
			 if(key==10)//压力L减
			 {
			 	if(press_L>0)
					press_L--;
			 }
			 if(key==11)//压力H加
			 {
			 	if(press_H<100)
					press_H++;
			 }
			 if(key==12)//压力H减
			 {
			 	if(press_H>press_L)
					press_H--;
			 }
		 }
	}
}
//定时器0中断
void Timer0() interrupt 1
{
	uchar i;
	if(time<10)//0.5s测量一次
		time++;
	else
	{
		time=0;
		water=ADC(1);//测量
		press=ADC(2);
		wendu=Ds18b20ReadTemp();
		//报警判断
		i=0;
		if(water>water_H)//水位超过上限值
		{
			i++;//i作为蜂鸣器报警标志位
			led2=0;//led低电平点亮
		}
		else
			led2=1;//led高电平点熄灭
		if(water<water_L)//水位低于下限值
		{
			i++;//i作为蜂鸣器报警标志位
			led1=0;//led低电平点亮
		}
		else
			led1=1;//led高电平点熄灭
		if(press>press_H)//压力
		{
			i++;
			led6=0;
		}
		else
			led6=1;
		if(press<press_L)
		{
			i++;
			led5=0;
		}
		else
			led5=1;
		if(wendu>wendu_H)//温度
		{
			i++;
			led4=0;
		}
		else
			led4=1;
		if(wendu<wendu_L)
		{
			i++;
			led3=0;
		}
		else
			led3=1;
		if(i>0)//蜂鸣器报警标志位大于1
			beep=0;//蜂鸣器响
		else
			beep=1;//蜂鸣器停
		//显示计算
		hang1[4]=water/100+0x30;//水位
		hang1[5]=water%100/10+0x30;
		hang1[6]=water%10+0x30;
		hang2[2]=wendu/100+0x30;//温度
		hang2[3]=wendu%100/10+0x30;
		hang2[4]=wendu%10+0x30;
		hang2[10]=press/100+0x30;//压力
		hang2[11]=press%100/10+0x30;
		hang2[12]=press%10+0x30;
		//显示清零
	//	write_string(1,0,"                ");
	//	write_string(2,0,"                ");
		//测量模式显示
		if(mode==0)
		{
			write_string(1,0,hang1);
			write_string(2,0,hang2);
		}
		else//设置模式显示
		{				
			//显示水位
			hang3[0]='W';//上限
			hang3[1]=water_H/100+0x30;
			hang3[2]=water_H%100/10+0x30;
			hang3[3]=water_H%10+0x30;
			write_string(1,0,hang3);
			hang3[0]=' ';//下限
			hang3[1]=water_L/100+0x30;
			hang3[2]=water_L%100/10+0x30;
			hang3[3]=water_L%10+0x30;
			write_string(2,0,hang3);
			//显示温度
			hang3[0]='T';//上限
			hang3[1]=wendu_H/100+0x30;
			hang3[2]=wendu_H%100/10+0x30;
			hang3[3]=wendu_H%10+0x30;
			write_string(1,6,hang3);
			hang3[0]=' ';//下限
			hang3[1]=wendu_L/100+0x30;
			hang3[2]=wendu_L%100/10+0x30;
			hang3[3]=wendu_L%10+0x30;
			write_string(2,6,hang3);
			//显示压力
			hang3[0]='P';//上限
			hang3[1]=press_H/100+0x30;
			hang3[2]=press_H%100/10+0x30;
			hang3[3]=press_H%10+0x30;
			write_string(1,12,hang3);
			hang3[0]=' ';//下限
			hang3[1]=press_L/100+0x30;
			hang3[2]=press_L%100/10+0x30;
			hang3[3]=press_L%10+0x30;
			write_string(2,12,hang3);
		}
	}
	TH0=0X3C;//50ms
	TL0=0XB0;
}

4. 原理图

原理图使用AD绘制,可供实物参考。

Proteus仿真和实物作品的区别:

1.运行环境:Proteus仿真是在计算机上运行的,而实物则是在硬件电路板上运行。

2.调试方式:在Proteus仿真中,可以方便地进行单步调试和观察变量值的变化,而在实物中则需要通过调试器或者串口输出等方式进行调试。

电路连接方式:在Proteus仿真中,可以通过软件设置进行电路连接的修改,而在实物中则需要通过硬件电路板和连接线进行修改。

3.运行速度:Proteus仿真通常比实物运行速度快,因为仿真是基于计算机运行的,而实物则需要考虑电路板上的物理限制和器件的响应时间等因素。

4.功能实现:在Proteus仿真中,可以通过软件设置实现不同的功能,而在实物中则需要根据电路设计和器件的性能进行实现。

5. 设计报告

7506字设计报告,内容包括摘要,硬件设计、软件设计、软硬件框图、调试、结论等

6. 设计资料内容清单&&下载链接

资料下载链接(可点击):

资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。

0、常见使用问题及解决方法--必读!!!!

1、仿真图

2、程序源码

3、开题报告

3、原理图

5、功能要求

6、元器件清单

7、设计报告

8、软硬件流程框图

9、讲解视频

Altium Designer 软件资料

KEIL软件资料

Proteus软件资料

单片机学习资料

答辩技巧

设计报告常用描述

鼠标双击打开查找更多51 STM32单片机课程毕业设计.url

相关推荐
Moonnnn.7 小时前
51单片机学习——动态数码管显示
笔记·嵌入式硬件·学习·51单片机
jiugie11 小时前
MongoDB学习
数据库·python·mongodb
hzulwy11 小时前
MongoDB应用设计调优
数据库·mongodb
曾浩轩19 小时前
51单片机学习之旅——C语言小知识
c语言·学习·51单片机
Hanson Huang1 天前
【存储中间件API】MySQL、Redis、MongoDB、ES常见api操作及性能比较
redis·mysql·mongodb·es
落落落sss1 天前
MongoDB
数据库·windows·redis·mongodb·微服务·wpf
wolf犭良1 天前
19、《Springboot+MongoDB整合:玩转文档型数据库》
数据库·spring boot·mongodb
人类群星闪耀时1 天前
深入理解 NoSQL 数据库:MongoDB 与 Cassandra
数据库·mongodb·nosql
海的预约2 天前
51单片机-按键
单片机·嵌入式硬件·51单片机
海的预约3 天前
51单片机-定时器中断
stm32·单片机·51单片机