基于STC89C52的红外控制风扇方案的设计与实现

作者: 杨凌

基于STC89C52的红外控制风扇方案的设计与实现0

关键词:红外控制;风扇;按键;转速;定时

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2024)21-0104-04

0 引言

在现代生活中,人们越来越追求智能、便捷的生活。红外控制风扇作为家居生活中必不可少的物品,通过红外遥控器便能远程控制风扇,在炎热的天气中为人们带来凉爽。本文设计的是基于STC89C52的红外遥控风扇,能够实现遥控器控制风扇的开关、风扇转速和风扇定时时间。同时还增加按键来单独控制风扇状态,在红外遥控器不在身旁的时候,可以通过按键来控制风扇的状态,更好地满足人们的生活需求。

1 基于STC89C52的红外控制风扇方案的设计

STC89C52是目前市场上常用的单片机处理芯片之一,它价格便宜,性能稳定,不仅功耗低且具备较好的抗干扰性能,因此深受人们的喜爱。同时,STC89C52内部配置了丰富的外设及相关资源,能够实现多种功能,它的可编程性强[1],能满足人们的基本生活需求。因此,本文的设计方案选择STC89C52单片机处理芯片。

在硬件方面,基于STC89C52的红外控制风扇方案的设计模块有:数码管模块、风扇模块、按键模块、红外遥控器。在软件方面,主要采用C语言程序编写代码,用KEIL4软件进行程序编译。

1.1 风扇转速模块

风扇模块采用ULN2003D芯片驱动,由于单片机本身的引脚产生的电压及电流较小,无法驱动风扇电机转动,因此采用大电流驱动芯片ULN2003D,它的输出可达500mA/50V [2]。如图1所示。

在硬件方面,风扇的两根线一根接在输出端口OUT1,另一端接在5V电压VCC上。由图1可知,芯片ULN2003D的输入引脚IN1连接单片机P10引脚,因此,只需控制P10引脚值,当P10引脚为高电平时,风扇转动;当P10引脚为低电平时,风扇停止转动。

风扇驱动后,通过PWM原理来控制风扇的转速。PWM 全称为Pulse Width Modulation(脉冲宽度调制)[3],即通过控制高低电平的宽度来控制风扇的转速。对于方波信号,在相同的周期里,高电平所占时间越长,风扇的转速越快,风量越大;高电平所占时间越短,风扇的转速越慢,风量越小。这也称为占空比调节[4]。在本文的设计方案中,应用了不同的占空比值,使风扇具备3种转速。

1.2 数码管显示模块

本文的显示模块由两个四位一体的共阴极数码管构成。共阴极数码管是指每个数码管的公共端接地,通过控制每个数码管的段选位来控制数码管显示的字符[5]。单个数码管结构图如图2所示,当某一段引脚为高电平时,对应二极管发光,例如,要显示字符“H”,需要点亮b,c,e,f,g段,那么对应的b,c,e,f,g引脚应设为高电平,其余引脚设为低电平。

数码管用于显示风扇的转速以及定时时间。本文方案的设计原理是基于数码管动态显示,即多个数码管轮流显示,当数码管与数码管之间的显示间隔时间足够短,短到人眼无法分辨时,看上去则是多个数码管同时显示。为了驱动数码管,同时节省单片机的I/O端口,通常采用74HC138译码器连接多位数码管的公共端[6]。本文采用3个数码管,其中1个数码管用于显示风扇档位,两个数码管用于显示定时时间。

1.3 红外遥控模块

本文设计的风扇能够通过遥控器远程控制风扇转速、定时时间、风扇开关。遥控器带有红外发射装置,通过发送红外信号来远程控制风扇,风扇则是通过红外接收管来接收红外遥控信号。红外遥控器在数据传输时使用的是 NEC 协议。在NEC 协议中,一个脉冲对应 560us 的连续载波,根据高低电平持续时间来判断发送的是1还是0。通常,一个逻辑 1 传输需要 2.25ms,其中有560us 脉冲和1680us 低电平;一个逻辑 0 的传输需要 1.125ms,其中有560us 脉冲和560us 低电平[7]。

在风扇开发板接收端,对红外进行解码,接收端接收到的数据码包括引导码、地址码、地址反码、控制码和控制反码[8]。其中引导码用于判断是否准备接收数据,地址码用于确认是哪台设备发送的数据码,控制码用于接收是哪个遥控按键按下,地址反码和控制反码分别用于判断接收到的地址和控制码数据是否正确。

本文方案采用红外遥控的按键1、按键2、按键3 来控制风扇三档转速,关闭按键用于控制风扇的关闭,按键vol+和按键vol-用于控制风扇定时时间。经过测试,确定按键的控制码,如表1所示。

在方案设计中,用变量x来记录红外遥控的按键值,根据不同的按键值对应不同的风扇状态变量,最终在主程序中通过判断风扇状态变量state的值来控制风扇的不同状态。红外遥控控制风扇转速的部分代码如下。

1.4 定时模块

本文设计的风扇定时采用STC89C52单片机中的定时器0,定时器0是一个16位的计数器,由两个8位计数器TH0和TL0构成,TH0表示计数值高8位,TL0 表示计数值低8位。定时器的工作方式共有4种,根据实际需求,本文设计的方案选择工作方式1,即16 位计数,计数范围为0000H~FFFFH。在对定时器初始化时,设置定时器为软件启动,工作方式1,设置初始值,同时开中断。具体代码如下。

风扇定时时间可以被设置为0.5h、1.0h、1.5h等,每次设定时间的间隔为0.5h,最大定时时间为9.5h,到了定时时间后,定时器关闭,定时时间归0,同时风扇关闭。

1.5 按键模块

本文设计的红外遥控风扇方案能够实现按键独立控制风扇的状态:档位1,档位2,档位3,关闭。按键电路图如图3所示,本文采用按键K4,当按键按下时,单片机引脚P33为低电平,按键没有按下时,单片机引脚P33为高电平。由此来判断按键是否按下。每按一次按键,风扇切换到下一个状态。

由于定时器0采用了外部中断1,红外遥控采用了外部中断0,因此采用外部中断2来实现按键控制。在本文方案中,采用变量state来记录风扇状态,每次按下按键,风扇状态变量+1,在主程序中根据状态变量state的值来控制风扇。具体代码如下。

2 基于STC89C52 的红外控制风扇的实现

2.1 红外控制风扇

转速硬件初始状态如图4所示,相关硬件包含了红外遥控、风扇、数码管、按键。当按下红外遥控按键“1”时,数码管显示1,风扇转速为1档,如图5所示;当按下红外遥控按键“2”时,数码管显示2,风扇转速为2档,如图6所示;当按下红外遥控按键“3”时,数码管显示3,风扇转速为3档,如图7所示。

2.2 红外控制风扇定时

按下红外遥控按键“VOL+”可增加定时时间,每按一次,定时时间增加0.5h,按下红外遥控按键“VOL-”可减少定时时间,每按1次,定时时间减少0.5h。风扇在2档的情况下,定时时间为0.5h如图8所示,定时时间为1.0h如图9所示,定时时间为1.5h如图10所示。

2.3 按键控制风扇转速

按键K4可控制风扇的转速,风扇共有四种状态,分别为:档位1,档位2,档位3,关闭。按键每按一次,风扇状态跳转到下一个状态。在图10的基础下,按下按键K4,风扇转速变为3,如图11所示,继续按下按键,风扇为关闭状态,如图12所示。

2.4 关闭风扇

关闭风扇是指风扇停止转动,同时定时关闭。本设计包含两种关闭方式,一种为按键关闭风扇,如图12所示。一种为红外遥控控制,按下红外遥控关闭按键,也可以关闭风扇,如图13所示。

3 结论

本文设计的基于STC89C52的红外控制风扇方案具备红外遥控器远程控制风扇的转速,风扇转速设有三个档位。此外,红外遥控器还能远程控制风扇的定时时间,并实现风扇的关闭功能。同时,方案还设置了独立按键来控制风扇的转速和关闭。方案有效可行,功能能够满足人们日常生活的基本需求。

经典小说推荐

杂志订阅