首页 » 智能 » 华为单片机编程实战-无线红外探测器03-情形搭建及轨范详解_存放器_准时器

华为单片机编程实战-无线红外探测器03-情形搭建及轨范详解_存放器_准时器

少女玫瑰心 2024-12-08 07:50:18 0

扫一扫用手机浏览

文章目录 [+]

· 红外报警检测

· 电池低压检测

华为单片机编程实战-无线红外探测器03-情形搭建及轨范详解_存放器_准时器 华为单片机编程实战-无线红外探测器03-情形搭建及轨范详解_存放器_准时器 智能

· 防拆开关检测

华为单片机编程实战-无线红外探测器03-情形搭建及轨范详解_存放器_准时器 华为单片机编程实战-无线红外探测器03-情形搭建及轨范详解_存放器_准时器 智能
(图片来自网络侵删)

· OOK无线发射

· 设备低功耗设计

二、搭建软件开拓环境

本产品的主控芯片是STC15W204S。

1. Keil软件的安装

关于Keil C51的安装我在这里就不给大家先容了,这块视频教程大家直接在小破站搜华维单片机编程,看单片机c措辞编程视频教程第4节即可。

2.安装STC的库文件到Keil软件里

①打开STC-ISP软件

图片1

②选择Keil仿真设置-> 增加型号和头文件到Keil中,如下图。

图片2

③选择Keil C51的安装目录,点击确定

图片3

④安装完成

图片4

3. 项目工程新建:

双击Keil 软件图标,打开软件

图片5

选择Project ->new uvision Project…

图片6

选择工程文件夹,给工程命名,然后点击确定。

图片7

选择单片机对应的型号,如下图,点击OK

图片8

新建main.c 文件,并添加到工程中,在这里就给大家不先容了。

三、软件设计

这里会对每个模块的代码进行详细讲解,整体源代码可以在公号华维单片机编程拿到。

1.红外报警检测

我们先看一下硬件接口:

图片9

图片10

· 逻辑剖析:

1. 无线红外报警触发的逻辑,我们在硬件设计中,已经有讲过, 如果红外报警PIR_ALARM 脚会有一个低落沿旗子暗记

2. PIR_ALARM 连接到单片机的P3.6,也是单片机的外部中断2功能脚。

3. 单片机平时须要进入休眠状态,所有红外报警须要利用外部中断唤醒功能。

· 我们先理解一下单片机的IO寄存器和外部中断2寄存器配置:

IO的寄存器先容:

STC单片机的IO有3个寄存器。
例如P3.6 包括P3, P3M0、P3M1。

个中P3M0、P3M1是用来配置单片机IO的模式的详细如下:

图片11

无线红外报警器的P3.6口,我们配置为准双向口即可。

P3 口和传统51单片机的功能是一样的,P3的输入输出端口。

外部中断2的寄存器先容:

STC15W系列单片机的INT2只支持低落沿中断。
详细的信息大家可以查阅STC15系列单片机的规格书。

外部中断2干系的寄存器INT_CLK0如下:

图片12

EX2= 1 打开外部中断2功能。

· 软件程序开拓:

程序初始化:

图片13

外部中断2的中断做事函数

图片14

报警旗子暗记处理程序

图片15

2.电池低压检测

· 我们先看一下硬件接口:

图片16

关于单片机的低压检测电路,在硬件设计中,我们已经做过先容,是低落沿报警触发。

Low_vot 和单片机的NIT4(P3.0),连接,A1是一个跳线帽,是为了防止低压检测线路对单片机的烧录有影响,导致无法烧录。

在程序烧录的时候,须要拔掉A1,完成烧录后须要规复A1跳线帽。

· 干系寄存器先容:

P3.6寄存器的功能关于单片机的低压检测电路,在硬件设计中,我们已经做过先容,是低落沿报警触发。

P3.6IO的寄存器配置和2.1.3.1中的P3 端口的配置 同等,在这里就给大家不在重复讲解了。

电池低压检测的办法也是通过外部中,在这里用到的是外部中断INT4. 关于INT4的寄存器如下,配置方法和INT2一样:

图片17

· 软件程序开拓:

程序初始化:

图片18

外部中断4的中断做事函数

图片19

报警旗子暗记处理程序

图片20

图片21

3.防拆开关检测

· 我们先看一下硬件接口:

图片22

· 逻辑剖析:

防拆开关S1和R14 组成了产品的防拆功能。
个中R14是上拉浸染。

防拆开关按下去防拆开关的1脚和2脚连接,单片机的P3.3是高电平,如果防拆开关松开,1脚和3脚连接,P3.3变成低电平。

即: 触发防拆开关,P3.3由高电平变成低电平(低落沿触发);

P3.3是单片机的外部中断1接口(INT1).检测红外防拆报警便是外部中断1的低落沿中断。

· 干系寄存器先容:

单片机P3.3 端口的配置

干系配置和低压检测,红外报警检测同等。

外部中断1 干系寄存器先容

外部中断1 我们须要配置的寄存器包括IE中断许可寄存器,和TCON 定时器/计数器中断掌握寄存器。
详细如下:

图片23

在我们的防拆程序中利用的外部中断1的掌握为EX1 须要置为1,打开外部中断1.

图片24

图片25

单片机的外部中断1 可以配置成上升沿触发,或低落沿触发。
该寄存器中的IT1=1表示外部中断1为低落沿触发 ;IT1=0 表示为上升沿触发。
我们产品中利用的是低落沿触发,所有IT1 须要配置成1。

· 软件程序开拓:

程序初始化:

图片26

外部中断1的中断做事函数

图片27

图片28

报警旗子暗记处理程序

图片29

4.OOK无线发射

图片30

· 我们先看一下硬件接口:

· 图片31

从事理图的图纸大家可以看到,无线发射数据和单片机的P3.2脚位连接。

· 学习理解一些EV1527 OOK的无线数据

在程序开拓之前,大家首先要学习一下无线数据发射的格式和定义。
大家可以在网上百度下载ev1527 芯片资料 ,然后对照我们后面的内容浏览,可以帮助更有效的理解OOK无线数据发射。

我们先看一下数据格式,如下图。

· 图片32

从上图我们可以看出,芯片的数据内容是 :同步码+20bit地址+4bit数据码。

20bit +4bit =24bit = 3byte。

从上图,我们可以看到有一个单位LCK. 那LCK的定义是什么,韶光是多久?

1LCK = 8个0SC CLOKC.

我们在看一个表格,如下,这个表格定义了16个LCK的韶光,从而我们就可以算出1个CLK的韶光:

· 图片33

从表格可以看出,LCK的韶光和 事情电源,以及前面的振荡电阻(47K-360K)有关。

本产品选择的是330K的振荡电阻,事情电压是12V。
所有我们可以锁定16LCK的韶光为1.44ms. 那一个LCK= 90奇妙。

我们打算一下同步旗子暗记,1,0 的旗子暗记。

同步旗子暗记: 4LCK高电平,128LCK 低电平 即: 360us 高电平 11.52ms低电平

数据1: 12LCK 高电平,4LCK 低电平 即: 1.08ms高电平 360us 低电平

数据0: 4LCK 高电平,12LCK 低电平 即: 360ms高电平 1.08ms 低电平

OOKSent 脚位发出的波形如下:

· 图片34

· 程序代码设计

须要实现OOK无线数据的发射,须要利用到单片机的定时器 和IO输出两个功能。

单片机的IO 配置

单片机的IO 默认是 准双向输入输出端口,我们在程序里就不配置了,我们直接将OOKSent 拉低即可。

程序如下:

· 图片35

定时器配置

本产品中我们利用的是单片机的定时器0. 我们先理解一下单片机干系的寄存器

定时器的干系寄存器:

· 寄存器AUXR,

· 配置定时器0的事情频率,T0X12 = 0 12T模式,=1为1T模式。
我们选择12T模式

· 图片36

· 寄存器TMOD 定时器事情模式寄存器

· 图片37

· 图片38

我们产品中配置为16为自动重装定时器. C/T 和GATE 直接置0 即可。

· TH0 TL0寄存器

定时器0的计数器,数据自动增加到FFFF 溢出,发生中断。

· 定时器掌握寄存器TCON

· 图片39

· 图片40

TF0:定时器0中断溢出位。
TH0 TL0中的数据增加到FFFF时,TF0 就置为1,须要手动清0

TR0: 定时器0 的开关掌握位。
=1打开定时器0 =1 关闭定时器0

· 中断许可寄存器IE

· 图片41

ET0 = 0: 定时器0溢出标志位TF0=1 的时候,程序就不会自动进入中断做事函数

ET0 = 1: 定时器0溢出标志位TF0=1 的时候,程序就会自动进入中断做事函数

· 定时器初始化程序设计

定时器初始化:

· 图片42

把稳,我们初始化的时候,定时器0 是关闭的,再我们利用的时候再打开。

无线数据中同步旗子暗记,数据1 、数据0数据长度的打算。

上小节剖析了同步旗子暗记,和数据1 ,数据0的数据的韶光长度如下:

同步旗子暗记: 4LCK高电平,128LCK 低电平 即: 360us 高电平 11.52ms低电平

数据1: 12LCK 高电平,4LCK 低电平 即: 1.08ms高电平 360us 低电平

数据0: 4LCK 高电平,12LCK 低电平 即: 360us高电平 1.08ms 低电平

从上面我们大略的总结一下,我们须要做3个延时 分别是: 360us 1.08ms 11.52ms。

下面我们打算一下3个延时定时器0的TH0 TL0 分别须要添补的数值:

360us 延时TH0 TL0对应的数值.(主要)

我们选择的是单片机的内部时钟5.5296Mhz,定时器时钟是12T ,我们可以打算出定时器一个计数值的韶光,打算公式如下:

1S/5.5296MHZ12 = 1S/5529600M0HZ12 = 0.0000217S = 2.17uS。

360uS 延时须要的定时器的计数值 = 360/2.17 = 166.

那TH0 TL0填写的数值是多少? TH0 TL0的数值增加到0xFFFF 再增加1定时器溢出。

0xFFFF对应的65535,定时器0是计数到65536溢出。

以是我们须要用65536减去166 ,65536-166 = 65370。

然后转换成16进制,添补到TH0 TL0,

65370是十进制,我们须要转换成16进制 0xFF5A

TH0 = 65370/256; //FFH

TL0 = 65370%256; //5AH

1.08ms 延时TH0 TL0对应的数值

同样的事理,我们打算出1.08ms 对应的TH0 TL0寄存器对应的值

1.08ms/2.17us = 1080us/2.17us= 498 65536-498 = 65038

TH0 = 65038/256; //FEH

THL = 65038%256; //0EH

11.52ms 延时TH0 TL0对应的数值

同样的事理,我们打算出11.52ms 对应的TH0 TL0寄存器对应的值

11.52ms/2.17us = 11520us/2.17us =5309 65536-5309 = 60227

TH0 =60227/256; //EBH

THL = 60227%256; //43H

我们用宏定义来定义一下同步旗子暗记,数据1 和数据0。

· 图片43

OOK 无线发射数据的转换

上节打算出了同步数据,数据1,数据0的高低电平,以及对用的定时器添补的数据,接下来我们就须要把须要发射的数据转换成以下的波形。

· 图片44

在上面的章节中,我们剖析了,OOK的无线发射数据内容是 :同步码+20bit地址+4bit数据码。

打算OOK无线发射数据,定时器0的寄存器TH0 TL0 须要的字节

同步码的 高电平和低电平,分别须要定时器0精准定时,分别占用2个字节,共4个字节.

20个地址+4位数据码 =24bit 数据。

每个数据要么是0,要么是1,0和1和同步旗子暗记一样,须要分别精准定时高电平和电平的持续韶光,1个数字须要4个,共24位,则244 =96个字节。

以是存储一帧数据须要定时器的字节数位100个。

程序设计如下:

· 图片45

· 图片46

无线数据发射代码:

· 图片47

5. 设备低功耗设计

因我们的产品是电池供电,以是我们的程序须要做低功耗设计。

· STC15W单片机的事情模式。

STC15单片机支持3种省电模式,分别是:低速模式,空闲模式,和掉电模式。
三种模式的范例功耗分别是 2.7mA-7mA, 1.8mA,<0.1A。
掉电模式的最小,我们选择的便是掉电模式。

· 掉电模式对应的寄存器先容:

· 掉电掌握寄存器PCON

· 图片48

· 图片49

· 程序设计:

· 图片50

"大众号:华维单片机编程

至此,红外探测器代码部分就讲解完了,同学们可以收藏下来,有不懂的可以向我问答哈。

来日诰日我们来讲讲“无线红外探测器04:产品测试及验证”

相关文章

语言分布变迁,见证时代脉动与文化交融

随着全球化进程的不断推进,语言分布的变迁已成为时代变迁的重要标志。从古代的方言割据到现代的全球语言格局,语言分布的变迁不仅反映了人...

智能 2025-01-01 阅读0 评论0