当前位置: 首页 > news >正文

C51--简易报警器设计

硬件清单:

C52单片机
震动传感器模块
433M无线发射接受模块
继电器模块
高功率喇叭
杜邦线

振动传感器控制灯:

如何知道是否发生震动?震动后的信号表示又是什么?
振动传感器模块产生震动,输出低电平,绿色指示灯亮。
不震动,输出高电平,模块上的AO口。
AO口本次不用

振动传感器控制灯

#include "reg52.h"
#include <intrins.h>sbit led1 = P3^7;
//根据原理图(电路图)设备变量led1指向P3组IO口的第7口
sbit vibrate = P3^3;
//振动传感器模块上的 Do接口接到了P3.3口void Delay2000ms()		//@11.0592MHz
{unsigned char i, j, k;_nop_();i = 15;j = 2;k = 235;do{do{while (--k);} while (--j);} while (--i);
}void main()
{//查询方式判断是否发生震动while(1){if(vibrate == 0){	//产生震动,DO输出低电平led1 = 0;//灯亮Delay2000ms();//震动之后亮灯两秒}else{led1 = 1;//灯灭}}
}

继电器工作:

就相当于电子开关,继电器上的IN,接入到单片机
NO口:常开端
NC口:常闭端
COM:公共端
接入低电平时,NO口和COM接通
接入高电平时,NO口和COM不接通

#include "reg52.h"
#include <intrins.h>sbit vibrate = P3^3;
//振动传感器模块上的 Do接口接到了P3.3口
sbit switcher = P1^1;
//继电器连接P1.1口 void Delay2000ms()		//@11.0592MHz
{unsigned char i, j, k;_nop_();i = 15;j = 2;k = 235;do{do{while (--k);} while (--j);} while (--i);
}void main()
{//查询方式判断是否发生震动while(1){if(vibrate == 0){	//产生震动,DO输出低电平switcher = 0;//发生震动,导通继电器,给继电器一个低电平Delay2000ms();}else{switcher = 1;//接入高电平时,NO口和COM不接通}}
}

将报警器接入继电器

遥控接收发送433M

#include "reg52.h"sbit D0_ON = P1^2;
sbit D1_OFF = P1^3;
//接收器模块上的 D0接口接到单片机的P1.2接口,D1接口接到了P1.3口
sbit switcher = P1^1;
//继电器连接P1.1口 void main()
{//查询方式判断那个按键被按下while(1){if(D0_ON == 1){	//收到遥控器按键的信号A,DO表现为高电平switcher = 0;//A按键被按下,导通继电器,给继电器一个低电平}if(D1_OFF == 1){	//收到遥控器按键的信号B,D1表现为高电平switcher = 1;//B按键被按下,不导通继电器,给继电器一个高电平时}}
}

电动简易报警器电路

在这里插入图片描述

/*
1、A按键被按下,设定为开启警报模式长响,表示进入警报模式,设定警报模式标记
2、B按键被按下,设定为关闭警报模式短响,表示进入解除警报模式,设定解除警报模式标记
3、如果在报警模式下如果发生震动,喇叭响----低电平,导通如果没有发生震动,喇叭不响-----高电平,不导通
*/#include "reg52.h" 
#include <intrins.h>#define J_OFF 0
#define J_ON  1sbit D0_ON = P1^1;
sbit D1_OFF = P1^2;
//接收器模块上的 D0(A)接口接到单片机的P1.1接口,D1(B)接口接到了P1.2口
sbit switcher = P1^0;
//继电器连接P1.0口 
sbit vibrate = P1^3;	//振动传感器接在P1.3口void Delay2000ms()		//@11.0592MHz
{unsigned char i, j, k;_nop_();i = 15;j = 2;k = 235;do{do{while (--k);} while (--j);} while (--i);
}void Delay500ms()		//@11.0592MHz
{unsigned char i, j, k;_nop_();i = 4;j = 129;k = 119;do{do{while (--k);} while (--j);} while (--i);
}void main()
{int mark = J_OFF;//判断标志位//查询方式判断那个按键被按下while(1){if(D0_ON == 1){switcher = 0;Delay2000ms();switcher = 1;mark = J_ON;}if(D1_OFF == 1){switcher = 0;Delay500ms();switcher = 1;mark = J_OFF;}if(mark == J_ON){if(vibrate == 0){	//震动发生低电平switcher = 0;}else{switcher = 1;}}}
}
http://www.lryc.cn/news/199295.html

相关文章:

  • 2023年最新全国各省行政区划数据(省-市-区县-乡镇-村)
  • html5 web 按钮跳转方法(及其相关)
  • ES6 Generator 函数
  • 从零开始探索C语言(十二)----预处理器、输入输出及文件读写
  • 跨境电商:产业带的深度赋能
  • 09-Vue基础之实现注册页面
  • vue 树状结构数据渲染 (java 处理 list ->树状)
  • 惊艳!这些独特的搜索引擎你都知道吗?
  • 解除OU屏蔽(EBS检查无法直接查询解决)
  • 10月8日 Jdbc(1)
  • SAP 第三方销售/单独采购
  • yxy销售网站后台管理系统
  • 【vSphere 8 自签名证书】企业 CA 签名证书替换 vSphere Machine SSL 证书Ⅲ—— 颁发自签名证书
  • Hadoop3教程(十九):MapReduce之ETL清洗案例
  • 数据库设计阶段-架构真题(五十七)
  • python控制Windows桌面程序自动化模块uiautomation
  • Serializable 和Parcelable的区别
  • dubbogo-02 将服务注册到nacos
  • postgresql 配置文件 与 修改配置如何启用
  • 物联网专业前景怎么样?
  • JVM垃圾回收算法介绍
  • 紫光同创FPGA实现HSSTLP高速接口通信,8b/10b编解码数据回环,提供PDS工程源码和技术支持
  • Web前端—盒子模型:选择器、PxCook、盒子模型、正则表达式、综合案例(产品卡片与新闻列表)
  • C++ vector类模拟实现
  • FastAPI+Pydantic使用自定义参数校验+自定义异常+全局异常捕获
  • Python综合练习题
  • SpringCloud+Nacos集成Seata-1.7.0分布式事务
  • 任务调度框架-如何实现定时任务+RabbitMQ事务+手动ACK
  • 修炼k8s+flink+hdfs+dlink(六:学习k8s)
  • 红队专题-从零开始VC++C/S远程控制软件RAT-MFC-[4]客户端与服务端连接