公众号文章同步阅读网址: www.netor0x86.com
闲话:前几天去医院,医院人很少,我挂号的那个大夫桌子上放着一本很厚的书,她在给周围的两三个年轻的大夫讲着书上的内容。知识除了自我学习探索、学校的教授,可能就是前辈的指导了!在学校和工作中,你是否还记得那些曾经教你知识的人呢?感谢!!
本篇文章来完成一个简单的例子,完成一个震动提示的功能,把之前的震动传感器、继电器、433M 模块都使用起来。算是综合的一个案例。
0x01:功能需求与规划
本篇文章将前面的内容进行一个整合,把震动传感器、继电器 和 433M 模块都整合到一起来完成一个功能。
功能大体是这样的:
- 在 433M 模块的发射模块按下 A 时,设定为开启提示模式;喇叭长响一声,提醒进入提示模式;
- 在 433M 模块的发射模块按下 B 时,设定为关闭提示模式;喇叭短响一声,提示退出提示模式;
- 如果在提示模式状态下,发生了震动,那么喇叭会响起;如果不在提示模式下,发生震动,那么喇叭是不会响的。
0x02:接线图
下面给出一个接线图,来辅助我们进行编程,如下图:
上面给出了一个简单的接线图,我们就按这个接线图来接线,写代码时也用这个图来定义每个针脚的作用。
0x03:代码实现
按照上面的描述和画的接线图,来实现一下代码,代码如下:
#include <intrins.h>
#include "reg52.h"
#define WARNING_ON 1
#define WARNING_OFF 0
sbit switcher = P1 ^ 1;
sbit D0_ON = P1 ^ 2;
sbit D1_OFF = P1 ^ 3;
sbit vibrate = P3 ^ 3;
void Delay2000ms() //@11.0592MHz
{
// 省略
}
void Delay500ms() //@11.0592MHz
{
// 省略
}
void main()
{
int mark = WARNING_OFF;
while (1)
{
if (D0_ON == 1)
{
switcher = 0;
Delay2000ms();
switcher = 1;
mark = WARNING_ON;
}
if (D1_OFF == 1)
{
switcher = 0;
Delay500ms();
switcher = 1;
mark = WARNING_OFF;
}
if (mark == WARNING_ON)
{
if (vibrate == 0)
{
switcher = 0;
Delay2000ms();
Delay2000ms();
}
else
{
switcher = 1;
}
}
}
}
上面是完整的代码,就是前面各种代码的整合,不再进行说明!演示情况如下:
往期文章列表
我是一个程序员,了解 C、PHP、Java、ASM、Python,有 信安、CISP 证书,写小白也能看得懂的文章,感谢关注!!!
我的网站:https://www.netor0x86.com
我录制的视频课程:
1. 入门级栈溢出分析
2. WEB端获取MAC地址真实项目案例
3. PHP扩展模块开发之DLL编写与调用
4. C语言零基础入门教程
5. PE 文件结构初识与二进制手写可执行程序