基于51单片机冰箱温度控制器设计(毕业设计资料)

说明:此设计为便携式冰箱,包含制热和压缩机降温控制,冰箱内实际温度和设定温度比较,进行降温和升温

控制伴随LED状态显示,降温压缩机用电机模拟,冰箱门开闭状态并显示,当温度高于报警温度值,蜂鸣器报警。

注意:按键需半秒按下生效(保护措施),升温和降温切换有延迟(和实际情况一致)。开启时由于引脚初始化

前高电平,所以压缩机和制热装置同时工作。进入初始化后恢复正常。

资料包从主页进行下载

链接:https://pan.baidu.com/s/1bMnNEv0cCAdTZ4xYCa3rtQ 
提取码:hj9e 
复制这段内容后打开百度网盘手机App,操作更方便哦

/* 冰箱温度控制仿真程序 */
#include <reg51.h>
#define uchar	unsigned char
#define uint	unsigned int
sbit	ds		= P2 ^ 7;
sbit	bemp		= P3 ^ 7;
sbit	lcden		= P2 ^ 2;
sbit	lcdrs		= P2 ^ 0;
sbit	lcdrw		= P2 ^ 1;
sbit	sh_zeng		= P1 ^ 7;
sbit	sh_jian		= P1 ^ 6;
sbit	xia_zeng	= P1 ^ 5;
sbit	xia_jian	= P1 ^ 4;
sbit	dianji		= P3 ^ 0;
sbit	heat		= P3 ^ 1;
sbit	zhengchang	= P1 ^ 2;
sbit	door		= P1 ^ 3;


uchar door_flag = 1;

uchar code	table1[]	= "TEMP:";
uchar code	table2[]	= "SET:";
uchar code	table3[]	= "WAR:";
uchar code	table4[]	= "0123456789.-+";
uchar code	table5[]	= "OFF";
uchar code	table6[]	= "ON ";
uchar code	table7[]	= "C";

uchar	bai, shi, ge, flag, num, shi_sh, shi_xia, ge_sh, ge_xia;
int	temp;
/* 初始化温度上下限 */
int	warn_sh		= 2;
int	warn_xia	= 37;

void delayms( uint z )
{
	uint x, y;
	for ( x = z; z > 0; z-- )
		for ( y = 110; y > 0; y-- )
			;
}


void dsreset()  /* DS18B20初始化 */
{
	uint i;
	ds	= 0;
	i	= 103;
	while ( i > 0 )
		i--;
	ds	= 1;
	i	= 1;
	while ( i > 0 )
		i--;
}


bit tempreadbit( void )         /* 读一位数据函数 */
{
	uint	i;
	bit	dat;
	ds	= 0; i++;       /* 延时 */
	ds	= 1; i++; i++;
	dat	= ds;
	i	= 8; while ( i > 0 )
		i--;
	return(dat);
}


uchar tempread( void )
{
	uchar i, j, dat;
	dat = 0;
	for ( i = 1; i <= 8; i++ )
	{
		j	= tempreadbit();
		dat	= (j << 7) | (dat >> 1);        /* 将位转换为字节 */
	}
	return(dat);
}


void tempwrite( uchar dat )                             /* 向DS18B20写一个字节数据函数 */
{
	uint	i;
	uchar	j;
	bit	testb;
	for ( j = 1; j <= 8; j++ )
	{
		testb	= dat & 0x01;
		dat	= dat >> 1;
		if ( testb )
		{
			ds = 0;
			i++; i++;
			ds	= 1;
			i	= 8; while ( i > 0 )
				i--;
		}else  {
			ds	= 0;
			i	= 8; while ( i > 0 )
				i--;
			ds	= 1;
			i++; i++;
		}
	}
}


void tempchange()               /* DS18B20开始获取温度并转换 */
{
	dsreset();
	delayms( 1 );
	tempwrite( 0xcc );      /* 写跳过读ROM指令 */
	tempwrite( 0x44 );      /* 写温度转换指令 */
}

 

posted @ 2020-12-04 22:38  roadroad  阅读(330)  评论(0编辑  收藏  举报
电设屋
上千套电子毕设课设方案