• 方案介绍
    • 1.  简介
    • 2.  主要功能
    • 3.  源程序(Keil5)
    • 4.  仿真proteus8.6
    • 5.  设计报告
    • 6.  资料清单
    • 7.  资料获取链接
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于51单片机的数码管温度报警系统

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

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

共1个文件

[相关器件] TCR3UG32A,LF(S

LDO/线性稳压器,TCR3UG32A - Low Dropout (LDO) Linear Voltage Regulator

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

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

程序编译:Keil5 C51

编程语言:C语言

设计编号:【E01】

1.  简介

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

2.  主要功能

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

b.通过独立按键设置温度上下限值,第一次按下设置键设置温度上限值,第二次按下设置键设置温度下限值,再按加减键就可以修改温度值并具有掉电保存功能。

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

d.按键具有连加、边减的功能,在设置参数时按键按着不动可以实现连加、连减的功能,设置起来非常方便。

3.  源程序(Keil5)

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

#include <reg52.h>	         //调用单片机头文件
#define uchar unsigned char  //无符号字符型 宏定义	变量范围0~255
#define uint  unsigned int	 //无符号整型 宏定义	变量范围0~65535
#include "eeprom52.h"

//数码管段选定义      0     1    2    3    4    5	6	 7	  8	   9	
uchar code smg_du[]={0x28,0xee,0x32,0xa2,0xe4,0xa1,0x21,0xea,0x20,0xa0,
				  	 0x60,0x25,0x39,0x26,0x31,0x71,0xff};	 //断码
//数码管位选定义
uchar code smg_we[]={0xef,0xdf,0xbf,0x7f};
uchar dis_smg[8] = {0x28,0xee,0x32,0xa2,0xe4,0x92,0x82,0xf8};	
uchar smg_i = 3;    //显示数码管的个位数
sbit dq   = P2^4;	//18b20 IO口的定义

bit flag_lj_en;		 //按键连加使能
bit flag_lj_3_en;	 //按键连3次连加后使能  加的数就越大了 
uchar key_time,key_value;      //用做连加的中间变量
bit key_500ms  ;
sbit beep = P2^3;  //声光报警接口
uchar f_pwm_l ;	  //越小越慢

uint temperature ;  //
bit flag_300ms ;
uchar menu_1;       //菜单设计的变量
uint t_high = 300,t_low = 100;	   //温度上下限报警值 
uint number;

/***********************1ms延时函数*****************************/
void delay_1ms(uint q)
{
	uint i,j;
	for(i=0;i<q;i++)
		for(j=0;j<120;j++);
}
/***********************小延时函数*****************************/
void delay_uint(uint q)
{
	while(q--);
}
/***********************数码显示函数*****************************/
void display()
{
	static uchar i;   
	i++;
	if(i >= smg_i)
		i = 0;	
	P1 = 0xff;			 //消隐 
	P3 = smg_we[i];	 		 //位选
	P1 = dis_smg[i];		 //段选	        

}
/******************把数据保存到单片机内部eepom中******************/
void write_eeprom()
{
	SectorErase(0x2000);
	byte_write(0x2000, t_high % 256);
	byte_write(0x2001, t_high / 256);
	byte_write(0x2002, t_low % 256);
	byte_write(0x2003, t_low / 256);
	byte_write(0x2055, a_a);	
}

/******************把数据从单片机内部eepom中读出来*****************/
void read_eeprom()
{
	t_high  = byte_read(0x2001);
	t_high <<= 8;
	t_high  |= byte_read(0x2000);
	t_low   = byte_read(0x2003);
	t_low <<= 8;
	t_low   |= byte_read(0x2002);
	a_a      = byte_read(0x2055);
}

4.  仿真proteus8.6

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

当前温度:

设置温度上限:

设置温度下限:

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

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

5.  设计报告

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

6.  资料清单

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

7.  资料获取链接

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

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

  • 单片机仿真设计合集资料获取.pdf
    下载
[相关器件] TCR3UG32A,LF(S

LDO/线性稳压器,TCR3UG32A - Low Dropout (LDO) Linear Voltage Regulator

点赞
收藏
评论
分享
加入交流群
举报

相关推荐

方案定制

去合作
方案开发定制化,2000+方案商即时响应!