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