基于51单片机的自动红外感应洗手器proteus仿真程序设计

硬件设计

文件地址:
链接:https://pan.baidu.com/s/10SxMvtm6XljnL5f4XWn_Yg
提取码:0p7t

本设计是基于单片机红外感应自动洗手器的仿真设计,通过红外传感器电路感应,来控制水龙头电磁阀是否打开。完整的实现了基于单片机的红外感应自动洗手器仿真,模拟红外传感器,当有人靠近则电磁阀打开出水,人远离是水停止。

AD采集芯片采用的是ADC0832,该芯片资料简介如下:

.输入输出电平与TTL/CMOS相兼容;
· 5V电源供电时输入电压在0~5V之间;
· 工作频率为250kHz,转换时间为32μS;
· 一般功耗仅为15mW;
· 8P、14P—DIP(双列直插)、PICC 多种封装;
· 商用级芯片温宽为0°C to +70°C,工业级芯片温宽为−40°C to +85°C;
芯片接口说明:
· CS_片选使能,低电平芯片使能。
· CH0 模拟输入通道0,或作为IN+/-使用。
· CH1 模拟输入通道1,或作为IN+/-使用。
· GND 芯片参考0 电位(地)。
· DI 数据信号输入,选择通道控制。
· DO 数据信号输出,转换数据输出。
· CLK 芯片时钟输入。
· Vcc/REF 电源输入及参考电压输入(复用)。

驱动芯片采用的是L298,该芯片资料简介如下:
- 类型: 半桥
  输入类型:非反相
  输出数:4
  电流-输出/通道:2A
  电流-峰值输出:3A
  电源电压:4.5V~46V
  工作温度:-25°C~130°C
  安装类型:通孔
  封装/外壳:MulTIwatt-15(垂直,弯曲和错列引线)
  供应商设备封装:15-MulTIwatt
  包装:管件
  器件型号L298N
  制造商STMicroelectronics
  产品型号MotionMotorControl
  
整体仿真图如下:
在这里插入图片描述
部分代码:


#include<reg52.h>
#include<intrins.h>
#include"Delay.h"
#include "Time.h"
#include "L298.h"
#include "main.h"
#include "ADC0832.h"


#define uint unsigned int
#define uchar unsigned char


unsigned long volt;//测量的电压值
unsigned char volt1=0;

unsigned char OPEN_Flag=0;
unsigned char one_times=0;


/*----------------------------------------------------------------------------------
					main()_程序入口
----------------------------------------------------------------------------------*/
void main(void)
{
	TIME_Init();		//定时器初始化
	stop();
	while(1)
	{
	 	ADC0832_data();
		if( volt1 >= 16 )
		{
			OPEN_Flag = 1;
			one_times = 1;
		}
		else
		{
			OPEN_Flag = 0;
			if( one_times == 1 )
			{
				turn_left();
				Delay_ms( 1000 );
				one_times = 0;
			}
			stop();
		}
	}
}
 

.


#include "ADC0832.h"
#include "main.h"

//ADC0832端口引脚定义
sbit CS=P3^2;       //将CS位定义为P3.2引脚
sbit CLK=P3^0;      //将CLK位定义为P3.0引脚
sbit DIO=P3^1;       //将DIO位定义为P3.1引脚


unsigned int AD_val;    //储存A/D转换后的值
unsigned char Int,Dec;   //分别储存转换后的整数部分与小数部分
unsigned int DATA_V;
unsigned int DATA_I;

unsigned char num = 0;

/*****************************************************
函数功能:将模拟信号转换成数字信号
***************************************************/ 
unsigned char ADC0832_data( void )
{
	unsigned char i,dat;
	CS=1;   //一个转换周期开始
	CLK=0;  //为第一个脉冲作准备
	CS=0;  //CS置0,片选有效
	
	DIO=1;    //DIO置1,规定的起始信号  
	CLK=1;   //第一个脉冲
	CLK=0;   //第一个脉冲的下降沿,此前DIO必须是高电平
	
	DIO=1;   //DIO置1, 通道选择信号  
	CLK=1;   //第二个脉冲,第2、3个脉冲下沉之前,DI必须跟别输入两位数据用于选择通道,这里选通道CH0 
	CLK=0;   //第二个脉冲下降沿
	
	DIO=0;   //DI置0,选择通道0
	CLK=1;    //第三个脉冲
	CLK=0;    //第三个脉冲下降沿
	
	DIO=1;    //第三个脉冲下沉之后,输入端DIO失去作用,应置1
	CLK=1;    //第四个脉冲
	for(i=0;i<8;i++)  //高位在前
	{
		CLK=1;         //第四个脉冲
		CLK=0; 
		dat<<=1;       //将下面储存的低位数据向右移
		dat|=(unsigned char)DIO;   //将输出数据DIO通过或运算储存在dat最低位 
	}             
	CS=1;          //片选无效 
	volt1 = dat*50/256;
	return volt1;  //将读书的数据返回     
}


.

.

  • 14
    点赞
  • 157
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值