简易模拟智能垃圾桶(C语言含进阶)

发布于 2022-04-20  687 次阅读


设计思路:

①:判断是否有人接近,有人电机正转,离开反转。

②:按下按钮,反转。

仿真元器件清单:

AT89C51

BUTTON

CAP

CAP-ELEC

CRYSTAL

RES

1N4007

L298

MOTOR

 

实现程序:

//功能:自动感应垃圾桶(判断是否有人接近,有人电机正转,离开反转)
#include <reg51.h>        //包含头文件reg51.h,定义了51单片机的专用寄存器
sbit hw=P0^1;             //红外控制信号输入端
sbit P1_3=P1^3;           //电机驱动控制端
sbit P1_4=P1^4;           //电机驱动控制端
sbit P1_5=P1^5;           //电机驱动控制端

//函数名:delay
//函数功能:实现软件延时
//形式参数:无符号整型变量i,控制空循环的循环次数
//返回值:无
void delay(unsigned int i) 	   //延时函数
{
  unsigned int k;
  for(k=0;k<i;k++);
}

void  main()
{ 
   bit  flag;    //桶盖打开标志位变量,为1表示桶盖打开,否则表示桶盖关闭  0 1   
   flag=0;          //桶盖关闭标志
   while(1)
   {
    if((hw==1)&&(flag==0))
    { 
        P1_3=1;        //电机运转,控制打开桶盖
	P1_4=0;
	P1_5=1;
	delay(20000);    //延时,等待桶盖打开完成
	P1_5=0;          //电机停转,保持桶盖打开状态	                 
	flag=1;          //设置桶盖打开标志
      }
    else if((hw==0)&&(flag==1))
    { 
        P1_3=0;        //电机运转,控制打开桶盖
	P1_4=1;
	P1_5=0;
	delay(20000);    //延时,等待桶盖打开完成
	P1_5=1;          //电机停转,保持桶盖打开状态	                 
	flag=0;          //设置桶盖打开标志
      }
   }
}

 

实现仿真图:

 

实现效果视频:

 

进阶程序:


//功能:自动感应垃圾桶(判断是否有人接近,有人电机正转,离开反转)
 #include "reg51.h"        //包含头文件reg51.h,定义了51单片机的专用寄存器
sbit hw=P0^1;             //红外控制端
sbit P1_3=P1^3;           //电机驱动控制端
sbit P1_4=P1^4;           //电机驱动控制端
sbit P1_5=P1^5;           //电机驱动控制端
//函数名:delay
//函数功能:实现软件延时
//形式参数:无符号整型变量i,控制空循环的循环次数
//返回值:无
void delay(unsigned int i) 	   //延时函数
{
  unsigned int k;
	for(k=0;k<i;k++);
}
void  main()
{ 
	     bit  flag;    //桶盖打开标志位变量,为1表示桶盖打开,否则表示桶盖关闭    
flag=0;       //桶盖关闭标志
while(1)
{
if((hw==1)&&(flag==0))
{ P1_3=1;        //电机运转,控制打开桶盖
P1_4=0;
P1_5=1;
delay(20000);   //延时,等待桶盖打开完成
P1_5=0;         //电机停转,保持桶盖打开状态	                 
                  flag=1;         //设置桶盖打开标志
}
 else if(hw==0&&flag==1)
{
P1_3=0;        //电机反向运转,关闭桶盖
P1_4=1;
P1_5=1;
delay(20000);   //延时,等待桶盖关闭完成
P1_5=0;         //电机停转,保持桶盖关闭状态
                  flag=0;         //设置桶盖关闭标志
}
}
}