1918 基于单片机的智能饮水机控制设计(仿真、程序)【毕设课设】

摘要:

本文详细阐述了基于AT89C52单片机的智能饮水机控制设计。通过AD0832模块实现液位检测,结合红外模块进行水杯检测,并利用LED指示灯进行状态显示。文章首先介绍了AT89C52单片机的基本特性,随后详细描述了各器件的功能和使用方法。接着,介绍了Protues仿真软件的使用和C语言的基础知识。最后,给出了设计实现和测试结果。

一、引言

随着智能家居的发展,智能饮水机作为家庭生活中的重要设备,其智能化控制成为研究的热点。本文旨在设计一款基于AT89C52单片机的智能饮水机控制系统,实现液位检测、水杯检测及状态显示等功能。

二、AT89C52单片机介绍

AT89C52是一种常用的8位Flash单片机,具有高性能、低功耗等特点。它包含8K字节的Flash可编程和擦除只读存储器,适用于多种嵌入式控制应用。

三、器件介绍

  1. AD0832模块:用于将模拟信号转换为数字信号,实现液位检测。
  2. LED指示灯:用于显示饮水机的不同状态,如加水、待机等。
  3. 蜂鸣器:用于发出提示音,如加水完成、水杯移走等。
  4. 复位电路:确保单片机在启动或异常情况下能够正确复位。
  5. 晶振电路:为单片机提供稳定的时钟信号。

四、Protues仿真软件使用

Protues是一款电路设计与仿真软件,可用于绘制电路图、编写仿真程序并进行调试。在智能饮水机控制设计中,我们使用Protues进行电路图的绘制和仿真测试。

五、C语言基础知识

C语言是一种通用的、过程式的编程语言,支持结构化编程、词汇变量作用域和递归等功能。在单片机编程中,C语言因其简洁、高效和易读性而受到广泛应用。

六、设计实现

  1. 硬件设计:根据功能需求,设计并搭建基于AT89C52单片机的智能饮水机控制电路。
  2. 软件编程:使用C语言编写控制程序,实现液位检测、水杯检测及LED指示等功能。

七、测试结果

通过Protues仿真测试,验证了设计的可行性和有效性。测试结果显示,智能饮水机控制系统能够准确检测液位和水杯状态,并通过LED指示灯进行状态显示。

八、结论

本文设计的基于AT89C52单片机的智能饮水机控制系统,实现了液位检测、水杯检测和状态显示等功能,为智能家居的发展提供了一定的技术支持。

 

 


uchar shuiwei;     //水位
uchar s_high = 90;//水位报警参数

uint flag_250ms ;

/********************************************************************
* 名称 : delay_uint()
* 功能 : 小延时。
* 输入 : 无
* 输出 : 无
***********************************************************************/
void delay_uint(uint q)
{
	while(q--);
}

/***********************1ms延时函数*****************************/
void delay_1ms(uint q)
{
	uint i,j;
	for(i=0;i<q;i++)
		for(j=0;j<120;j++);
}

/***********读数模转换数据********************************************************/	
//请先了解ADC0832模数转换的串行协议,再来读本函数,主要是对应时序图来理解,本函数是模拟0832的串行协议进行的
						//  1  0  0 通道
						//  1  1  1 通道 
unsigned char ad0832read(bit SGL,bit ODD)
{
	unsigned char i=0,value=0,value1=0;		
		SCL=0;
		DO=1;
		CS=0;		//开始
		SCL=1;		//第一个上升沿	
		SCL=0;
		DO=SGL;
		SCL=1;  	//第二个上升沿
		SCL=0;
		DO=ODD;
		SCL=1;	    //第三个上升沿
		SCL=0;	    //第三个下降沿
		DO=1;
		for(i=0;i<8;i++)
		{
			SCL=1;
			SCL=0; //开始从第四个下降沿接收数据
			value<<=1;
			if(DO)
				value++;						
		}
		for(i=0;i<8;i++)
		{			//接收校验数据
			value1>>=1;
			if(DO)
				value1+=0x80;
			SCL=1;
			SCL=0;
		}
		CS=1;
		SCL=1;	
		if(value==value1)				//与校验数据比较,正确就返回数据,否则返回0	
			return value;
	return 0;
}

/****************报警函数***************/
void clock_h_l()
{
		if(shuiwei<s_high&&key==0)//水位小于设定值且红外探测器触发
		{
		  beep = 0;      //工作
		}
			else
		{
			beep = 1;			//暂停工作
		}
			
}

...部分代码

资料下载地址:

https://docs.qq.com/doc/p/ffc421513a628b30450ae742547c0b850456d7c8

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值