基于STC89C52单片机的智能风扇

1.设计要求

                利用直流电机充当风扇,

                键盘可以调整风扇的转速,

                数码管显示风扇的转速。

2.设计概述

        本实验所用芯片为STC89C52,所用硬件是由华清远见基于STC89C52开发的智能小车,该小车具有流水灯模块、蜂鸣器模块、独立键盘模块、矩阵键盘模块等。本实验使用直流电机充当电风扇,使用中断方式控制风扇启动与停止,独立键盘模块的s4可以控制风扇启动,档位加一,s5可以关闭风扇,即无论风扇当前处于哪个档位都能马上关闭风扇,此外,共阴极数码管会实时显示风扇当前的档位,即转速。风扇从0档开始,共十个档位,其中0档位关闭状态,风扇不启动,数码管显示0,9档为最高档,风扇转速最快,数码管显示9。

3、原理图以及线路连接

        本实验要使用到底板的电机模块,所以要连接线路,这里由于使用的是之前循迹小车的函数模块,所以在软件使用sbit位命名时,六个位全部要命名,否则会报错,但线路连接时其他的位都不要用到,所以只需要连接使用的几个位即可,电机以及数码管的具体原理会在软件设计中详细说明,具体连接方式如下:

J10-EN2接C52-P1.5                       //EN2为右电机的使能端,只有当EN2为1时,右电机才能启动

J10-IN3接C52-P1.6                        //IN3控制右电机正转,当IN3为1,IN4为0时,左电机正转

J10-IN4接C52-P1.7                        //IN4控制右电机反转,当IN4为1,IN3为0时,左电机反转

电机驱动模块原理图

数码管模块原理图

4.软件设计 

电机模块

        电机为直流电机,当使能端开启,IN1为高电平,IN2为低电平时,电流由IN1流向IN2,电机反向转动,当电流流向改变,即IN1为低电平,IN2为高电平时,电流由IN2流向IN1,电流流向相反,电机转向也相反。        

这里使用的是循迹小车的左转函数以及停止函数,使用有电机模拟风扇,当左转函数运行时,电流由IN3流向IN4,电机正转,即风扇转动。

数码管模块

        数码管模块由两个数码管锁存器以及8个八位共阴极数码管组成。

        两个数码管锁存器的使能端分别为WELA和DULA

 

其中WELA为位选择使能端,当WELA为1时,可通过端口P0向寄存器输入数据选择数码管,如图,当WELA为1时,将P0口0位置0,即选择0号数码管,选择完毕之后要讲输入关掉,即WELA = 0;

DULA为数据输入使能端,当DULA为1时,通过端口P0向寄存器输入数据,如图,当DULA为1时,向P0口输入数据,P0口输入数据对应数据已经给出,如0x3F对应“ 0 ”。输入完毕之后关闭输入,DULA = 0。

独立按键模块

一般按键对于输入时机把控严格,所以选用高效的中断按键。由于前面PWM也使用了中断,所以要使按键输入有效,要使INT0和INT1优先级高于定时器中断。

定时器以及中断相关初始化

 各中断函数设计

 定时器中断,用PWM控制转速,数码管显示相应档位。

外部中断0,INT0:当按键s4按下,并判断不是误触且没有达到最高档位时,档位+1,当达到最高档位时输入无效。

外部中断1,INT1:当按键s5按下时,档位置0,即关闭风扇,数码管显示0.

5.总结

        本实验采用中断按键方式,相对于一般按键,中断按键具有灵敏度高的优势,也因为小车中断按键稀少,所以不能自由调制档位。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值