⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 电热壶烧水程序,单片机ATMEL89S52实现
💻 C
字号:

#include "REG51.h"

//系统参数配置
#define  DELTA_T		-20		//沸点偏移量
#define  T_UNIT			10		//温度单位,10表示1摄氏度
#define  BOIL_POINT		1000		//1标准大气压下的沸点
#define  ON			1	       //打开电源或者电源处于开状态
#define  OFF			0		//关闭电源或者电源处于关状态

//硬件配置
sbit  POWER_CONTROL=P1^0;				//P1.0口控制电源通断

//外部函数声明
int  GetTemperature(void);				//获取当前温度值

//内部函数声明
void ControlPwr(unsigned char);				//控制电源通断
unsigned char ReadPwrStatus(void);			//读取当前电源状态

//主程序
void main(void)
{
	int i;
	int t;						//测量得到的当前水温

	while(1)
	{
		t = DELTA_T+GetTemperature();		//获取当前测量温度
		if(t >= BOIL_POINT + DELTA_T)		//水已沸腾
		{
			if(ReadPwrStatus() == OFF)	//电源已经关闭
			{
				break;			//跳出while循环
			}
			else
			{
				ControlPwr(OFF);	//关闭电源
				break;			//跳出while循环
			}
		}
		else					//水还没有开
		{
			if(ReadPwrStatus() == OFF)	//电源还没有开
			{
				ControlPwr(ON);		//打开电源
			}
			
			for(i=0; i<20000; i++);		//等待一段时间后开始下一周期
		}
	}

	//完成烧水过程
	while(1);					//待机
}

//获取当前水温
int  GetTemperature(void)
{
	return(800);
}

//控制电源通断
void ControlPwr(unsigned char status)
{
	if(status == ON)
	{
		POWER_CONTROL = 0;			//低电平打开电源
	}
	else
	{
		POWER_CONTROL = 1;			//高电平关闭电源
	}
}

//读取电源通断状态
unsigned char ReadPwrStatus(void)
{
	if(POWER_CONTROL == 0)				//电源处于打开状态
	{
		return ON;
	}
	else						//电源处于关闭状态
	{
		return OFF;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -