• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于51单片机的多路温度检测报警系统设计(一)!!!

04/09 08:51
1550
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

单片机仿真设计合集资料获取.pdf

共1个文件

资料清单:C程序+仿真+设计报告+使用说明+元件清单+操作视频

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

程序编译:Keil5 C51

编程语言:C语言

设计编号:【E04】

1.? 简介

? 本文提出了一种基于51单片机的多路温度检测报警系统。该设计采用数字温度传感器DS18B20,此传感器读取被测量温度值并进行转换。将转换后的多路数据送到单片机处理,再通过LCD1602显示出来。同时,可手动设置温度的上下限值,当实时温度超出时,对应的工作指示灯亮,蜂鸣器报警。

2.? 主要功能

a.通过LCD1602显示当前温度值,温度测量范围:0-99摄氏度。

b.通过独立按键设置多路温度上下限值,第一次按下设置键设置温度下限值,第二次按下设置键设置温度上限值,再按加减键就可以修改温度值。

c.当温度低于下限或高于上限温度时,蜂鸣器和LED灯同时报警。

d.可通过报警开关按键关闭蜂鸣器报警。

3.? 源程序(Keil5)

本设计采用keil5 C51软件(内附安装包)实现程序设计。如需用keil4打开程序,可自行通过.c和.h文件新建工程即可。

#include"stc89c51.h"
#include"ds18b20.h"
sbit SetKey = P3^0;
sbit UpKey  = P3^1;
sbit DnKey  = P3^2;
sbit AlarmK = P3^3;
sbit BEEP   = P2^4;

sbit LED1   = P1^0;
sbit LED2   = P1^1;
sbit LED3   = P1^2;
sbit LED4   = P1^3;
sbit LED5   = P1^4;
sbit LED6   = P1^5;
sbit LED7   = P1^6;
sbit LED8   = P1^7;

extern void StartDs18b20(uchar * ROMCODE);				
extern void ReadDs18b20(uchar * ROMCODE);
extern  uchar  TZ;                           //转换后的温度值整数部分	  
extern  uchar  TD;                           //转换后的温度值整数部分	
//extern void init_lcd (void);
//extern void LcdWrData(uchar content);
//extern  void LcdWrCommand(uchar content)	;
extern uchar FindDevices(uchar CodeROM[][8]);
data uchar Ds18b20Rom[4][8];
//************************************************************************************************************************
extern uchar   LastDiscrap	;
extern  unsigned char tflag;
unsigned char AlarmTempLow=20,AlarmTempTop=30,Set=0;
unsigned char fAlarm=0xff;
unsigned char TP1=0xff,TP2=0xff,TP3=0xff,TP4=0xff;
unsigned char Alarm1=0,Alarm2=0,Alarm3=0,Alarm4=0;	
unsigned char tf1=0,tf2=0,tf3=0,tf4=0;	

void delayms(uint ms)		 //延时xx毫秒
{
 	uchar i;
	while(ms--)
	{
	 	for(i=0;i<120;i++);
	}
}
sbit RS=P2^5;
sbit RW=P2^6;
sbit EN=P2^7;
#define LCD_BUS P0
void command(unsigned int com)	 //LCD写指令
{
   RS=0;				  //RS为0
   LCD_BUS=com;	  //装载指令
   delayms(5);		 //延时5ms
   EN=1;				 //LCD使能
   delayms(5);		//延时5ms
   EN=0;				//LCD不使能
}
void write_dat(unsigned char dat)	  //LCD写数据
{
   RS=1;					//RS为1
   LCD_BUS=dat;		//装载数据
   delayms(5);			 //延时5ms
   EN=1;					 //LCD使能
   delayms(5);			 //延时5ms
   EN=0;					 //LCD不使能
}
void writestring(unsigned char x,unsigned char y,unsigned char *s) //LCD 写字符串
{     
	if (y == 0)  command(0x80 + x);     //表示第一行
 	else 	command(0xC0 + x);      //表示第二行
       
 	while (*s) 			//判断是否字符串的结尾
 	{     
     write_dat( *s);    //显示当前字符 
 		s ++;     			//字符串地址加1
 	}
}
void writeChar(unsigned char x,unsigned char y,unsigned char s) //LCD 写字符串
{     
	if (y == 0)  command(0x80 + x);     //表示第一行
 	else 	command(0xC0 + x);      //表示第二行
       
 	{     
     write_dat( s);    //显示当前字符 
 	}
}
void LCD_Initial(void)		//LCD初始化
{
   EN=0;				  //LCD不使能
   RW=0;				  //RW为0
   command(0x38);		//发送初始化指令
   command(0x0c);		//发送初始化指令
   command(0x06);	  //发送初始化指令
   command(0x01);	  //发送初始化指令
   command(0x80+0x02);	//发送LCD初始位置
}

4.? 仿真proteus8.6

本设计采用proteus8.6软件(内附安装包)实现仿真设计,如下图所示。proteus软件一般存在高低版本兼容问题,该仿真是通过proteus8.6导出的,所以请尽量使用proteus8.6打开文件,低于proteus8.6的版本不能够正常使用,高于proteus8.6的版本除了proteus8.8/8.9理论上可以正常使用。

当前温度:

设置温度下限:

设置温度上限:

当温度高于上限时,蜂鸣器和LED灯报警:

当温度低于下限时,蜂鸣器和LED灯报警:

5.? 设计报告

设计报告主要包括硬件电路、软件设计、仿真调试等等,仅供参考。

6.? 资料清单

设计资料主要包括C程序+仿真+设计报告+使用说明+元件清单+操作视频等。

7.? 资料获取链接

百度网盘下载链接:【E04】百度网盘下载链接

更多单片机仿真设计合集:单片机仿真设计合集

  • 单片机仿真设计合集资料获取.pdf
    下载

相关推荐