•   超声波的Echa接口P10,Trig口接P11。舵机的信号线接入P12
    
  •   振动传感器的接入P13,蜂鸣器的接入P14。
    
  •   当按键按下,或者检测到振动,或者超声波测得距离小于5cm是,舵机旋转180度,2s后复原。此时蜂鸣器响2s。
    
  •   其中舵机使用的是SG90,超声波模块使用的是HC-SR04,有源蜂鸣器使用的是低电平触发,振动传感器为SW-1801P
    
#include <STC89C5xRC.H>
#include "intrins.h"
sbit echa=P1^0;
sbit trig=P1^1;
sbit pwm=P1^2;
sbit vibrate=P1^3;
sbit been=P1^4;
sbit keyOne=P2^1;
int count_f=1;
unsigned int time;
unsigned int distance;
int count_1;
int SGTemp=0;
/**
*函数名称:Delay2000ms
*函数功能:延时2s,用于后续的舵机以及蜂鸣器的2s的操作
*备 注:
*/
void Delay2000ms()      //@11.0592MHz
{unsigned char i, j, k;_nop_();i = 15;j = 2;k = 235;do{do{while (--k);} while (--j);} while (--i);
}/**
*函数名称:Delay10ms
*函数功能:延时10ms,用于按键消抖
*备 注:
*/
void Delay10ms()        //@11.0592MHz
{unsigned char i, j;i = 18;j = 235;do{while (--j);} while (--i);
}
/**
*函数名称:Delay10us
*函数功能:延时10us,用于后续的启动超声波模块
*备 注:
*/
void Delay10us()        //@11.0592MHz
{unsigned char i;i = 2;while (--i);
}
/**
*函数名称:Timer0Init
*函数功能:中断零的初始化,用于舵机
*备 注:
*/
void Timer0Init(void)       //500微秒@11.0592MHz
{AUXR &= 0x7F;     //定时器时钟12T模式TMOD &= 0xF0;      //设置定时器模式TMOD |= 0x01;     //设置定时器模式TL0 = 0x33;       //设置定时初始值TH0 = 0xFE;       //设置定时初始值TF0 = 0;      //清除TF0标志TR0 = 1;      //定时器0开始计时ET0=1;EA=1;
}
/**
*函数名称:timer0Service
*函数功能:中断0的服务函数,用于舵机的pwm的调整
*备 注:
*/
void timer0Service() interrupt 1
{TL0 = 0x33;       //设置定时初始值TH0 = 0xFE;       //设置定时初始值count_1++;if(count_1<=count_f){pwm=1;}else{pwm=0;}if(count_1>40){count_1=0;}
}
/**
*函数名称:Timer1Init
*函数功能:中断1的初始化
*备 注:选择16位,12T
*/
void Timer1Init(void)       //100微秒@11.0592MHz
{AUXR &= 0xBF;     //定时器时钟12T模式TMOD &= 0x0F;      //设置定时器模式TMOD |= 0x10;TL1 = 0x00;     //设置定时初始值TH1 = 0x00;       //设置定时初始值TF1 = 0;      //清除TF1标志TR1 = 0;      //定时器1开始计时ET1=1;EA=1;
}
/**
*函数名称:startHC
*函数功能:启动超声波模块
*备 注:
*/
void startHC()
{trig=0;trig=1;Delay10us();trig=0;
}
/**
*函数名称:getDistance
*函数功能:通过超声波模块获得距离
*备 注:
*/
void getDistance()
{startHC();while(echa==0);TR1=1;while(echa==1);TR1=0;if(TF1==0){time=TH1;time=(time<<8)|TL1;time=time*1.085;distance=time*0.0017;}else{TF1=0;distance=999;}TH1=TL1=0x00;
}
/**
*函数名称:keyBoard
*函数功能:按键模块,当检测到按键1按下时,触发一次舵机的旋转
*备 注:
*/
void keyBoard()
{if(keyOne==0){Delay10ms();if(keyOne==0){SGTemp=1;}while(!keyOne);}
}
/**
*函数名称:distanceWork
*函数功能:当距离小于5cm时,触发一次舵机的旋转
*备 注:
*/
void distanceWork()
{if(distance<=5){SGTemp=1;}
}
/**
*函数名称:vibrateWork
*函数功能:当检测到振动的时候,触发一次舵机的旋转
*备 注:
*/
void vibrateWork()
{if(vibrate==0){SGTemp=1;}
}
/**
*函数名称:steeringWork
*函数功能:舵机旋转模块,当受到触发的时候,旋转180度,并且蜂鸣器打开,两秒后复位
*备 注:
*/
void steeringWork()
{if(SGTemp==1){been=0;SGTemp=0;count_f=5;      Delay2000ms();been=1;}if(SGTemp==0){count_f=1;}
}
/**
*函数名称:main
*函数功能:主函数
*备 注:
*/
void main()
{Timer1Init();Timer0Init();while(1){keyBoard();getDistance();steeringWork();vibrateWork();distanceWork();}
}

基于51的简易感应开关垃圾桶相关推荐

  1. 基于51的简易频率计(细讲解加代码)

    基于51的简易频率计 主要用到的51功能是 ①外部中断和②定时计数器 注意:51的晶振最好是12Mhz,因为51十二分频后,也就是1Mhz了也就是说计数器每次进行加一计数实际上是进行加了1/f的时间 ...

  2. 基于52单片机的简易感应开关垃圾桶

    一.基于52单片机的简易开关垃圾桶,感应,震动,按键开盖 1.使用超声波模块,设置10cm感应范围,进入范围开盖 2.使用震动传感器,检测到震动开盖 3.使用蜂鸣器,开盖同时伴随滴滴声 4.实验视频- ...

  3. 基于51单片机简易智能家居

    基于51单片机的智能家居的设计 前言 一.项目简介 二.开发环境/工具: 1.Keil 5/Keil 4 2.STC-ISP 3.蓝牙串口助手 4.手机app 三.硬件设计: 1.单片机与蓝牙模块连接 ...

  4. 29、基于51单片机简易电子琴(有存储功能)系统设计

    摘  要 随着社会的发展进步,音乐逐渐成为我们生活中很重要的一部分,有人曾说喜欢音乐的人不会向恶.我们都会抽空欣赏世界名曲,作为对精神的洗礼.本论文设计一个基于单片机的简易电子琴.我们对于电子琴如何实 ...

  5. 基于51单片机简易数字示波器Proteus仿真

    功能介绍: 采用51单片机作为主控CPU:LCD12864可显示方波,三角波,锯齿波,正弦波等,可通过光标对波形进行测量,可以调节显示波形的幅度和频率,也可以将波形进行左右拖拉,完美的仿真出一个51单 ...

  6. T144基于51单片机简易上下限液位报警器Proteus设计、keil程序、c语言、源码

    一.功能简介 使用51单片机设计一个简易上下限液位报警器: 1.可以检测液位的上限报警和下限报警: 2.配有上下限液位报警指示灯,当液位传感器检测到信号的时候对应的LED灯亮: 3.配有报警功能,当液 ...

  7. 32、基于51单片机红外智能垃圾桶系统设计

    摘要 随着现代化进程的日益推进,科技越来越发达,人们的生活水平也提高了,城市化程度越来越高,与此同时也带了许多问题,生活垃圾越来越多垃圾设施却不够完善.无论是在公共场合还是家庭厨房的垃圾大都是没有盖或 ...

  8. (毕业设计资料)基于51单片机的智能垃圾桶硬件电路设计

    内容介绍: 1.采用单片机+独立按键+电机驱动模块+2个红外传感器+蜂鸣器报警模块等组成. 2.本设计基于STC89C51/52(与AT89S51/52.AT89C51/52通用)单片机. 3.两个按 ...

  9. 基于51单片机的智能垃圾桶

    1.简介 本次主要是利用单片机设计并制作一套智能垃圾箱.要求以单片机为控制核心,通过红外传感器检测是否有人扔垃圾,并自动打开垃圾箱盖,扔完垃圾后再自动关闭. 主要内容包括: (1)红外对管传感器检测是 ...

最新文章

  1. 正确使用硬盘的方法与维护
  2. unicode表_Python数据库操作 Mysql数据库表引擎与字符集#学习猿地
  3. python中numeric_Python中的Numeric
  4. 逻辑回归实例--乳腺癌肿瘤预测
  5. 高校学霸情侣 双双保研中科院,3年获近9万奖学金,120余项个人荣誉……
  6. 【latex】输入角度符号°
  7. 美国之旅-出发前的准备
  8. (基础篇)PHP获取时间、时间戳的各种格式写法汇总
  9. 一次docker中的nginx进程响应慢问题定位记录
  10. hadoop搭建和指令
  11. wifi分析仪怎么看哪个信道好_wifi分析仪如何检测周围wifi信号 wifi分析仪使用方法【详解】...
  12. ztree树默认根据ID默认选中该条数据
  13. 淘宝广告数据分析实战!(附代码和100W数据源)
  14. Activity工作流
  15. 计算机专业论文选题的8个方法
  16. android 删除指定短信,Android拦截短信并删除该条短信
  17. 苹果主题商店_苹果tf签名上架需要使用什么材料?
  18. 【ChatGPT|AI 应用】ChatGPT + MindShow 快速制作 PPT
  19. 解决ROS系统 rosdep update超时问题的新方法
  20. 32位64位Eclipse和jdk对应关系说明【初学者适用】

热门文章

  1. 【CS三维路径规划】布谷鸟灰狼算法、灰狼算法求解复杂地形下三维无人机路径规划问题【含Matlab源码 2216期】
  2. Android框架浅析之锁屏(Keyguard)机制原理
  3. 高可用性和双机热备浅析
  4. 影视动漫、游戏建模大佬都在用,做出最美艺术作品~还可以做壁纸
  5. win7远程桌面没有声音
  6. 蒙特卡洛树搜索(MCTS)详解
  7. 圆周率(15000位)
  8. 浅谈手机卫士之程序锁
  9. 内网穿透(实现外网访问内网)
  10. 猜猜盲盒里面有什么!没错!是韭菜!