加入收藏夹
杭州电子计算机工作室 欢迎您! 本站永久域名:http://www.hificat.com    返回首页 || 汇款须知 || 汇款确认及留言 || 留言板 || 论坛


手把手教你用增强型51实验板实现无线遥控步进电机 《电子制作》2006年10月 站长原创,如需引用请注明出处

   上一期,我们已经利用增强型51实验板学会了红外线遥控的基本原理及控制方法,目前来看,遥控主要分为红外线遥控和无线电遥控两种方式,红外线遥控的缺点在于发射部分相对于接收部分具有一定的方向性,而无线电遥控的方式没有方向性,可以还可以进行穿墙控制,在日常生活及工业控制中,有着非常广泛的应用。这一期,我们将把无线模块的原理及使用方法与以往所学的知识结合起来进行学习,通过无线遥控器来控制步进电机的转动方向与转动速度,当然,您也可以让无线遥控器来控制其它的设备,这就取决于您的程序代码。
先来看一下,我们在本次实验中所用到的无线收发模块,200米四键遥控模块,常用于报警器设防、车库门遥控、摩托车、汽车的防盗报警等,遥控模块价格低廉,发射机手柄体积小巧、外观精致,耗电尽可能省,工作稳定可靠,采用优质塑料外壳,带保险盖,防止误碰按键,天线拉出时长13厘米,遥控器只有20克。
    无线遥控接收板,接收模块有七根引脚,分别为VCC、D3、D2、D1、D0、VT、GND,其中VCC为5V供电端,GND为接地端,VT端为解码有效输出端,D3、D2、D1、D0为四位数据锁存输出端,有信号时能输出5V左右的高电平,驱动电流约2mA,与发射器上的四为个按键一一相对应,天线是一根长度为23厘米的软导线。无线发射器和接收模块如图1所示。
图1

    全新的无线接收板上是没有焊接任何连接线的,所以,我们在使用前需要将引线用电铬铁焊上,如图2所示,以便我们将其与增强型51实验板相连接,我们在配送的引线是接插式的,所以焊完之后,直接插到实验板上即可,前面我们已经讲过,无线接收模块共有7个脚,那我们应该怎样与增强型51实验板相连接呢?您仔细看一下实验板,会发现实验板绿色锁紧座旁边已预留了两条40芯的插针,这就是增强型51实验板的扩展接口,您可以外接您所需要的实验电路,使得实验板的功能更强大,也充分体现了它的灵活性。两排40芯的插针,即51单片机的40个引脚,所以我们只要将无线接收模块的各引线插在对应的引脚针上即可,如:接收板的VCC和GND端即与51单片机的“电源”和“地”端相连,接收板VT端为解码有效输出端,即按发射器上任何一个按键,它都会有脉动的信号输出,一般我们把这个端口与LED发光管相连,用来作指示灯使用,可以让用户知道,遥控器按键是否被按下,至于D3、D2、D1、D0为遥控器四个通道的输出端,我们将其与单片机的任意P口相连都可以,考虑到增强型51实验板的特性,在P1口端接的是8个LED发光管,所以我们将D3、D2、D1、D0及VT端分别与P1.0、P1.1、P1.2、P1.3、P1.4相连,这样连的目的是可以通过发光管直观地反映遥控器各按键的控制状态,同时也便于程序的调试,没有发光管的指示,万一程序有误,就感觉像盲人那样,摸不着头脑了。
图2

    首先,我们仍旧使用仿真器来调试程序,先将无线接收板与增强型51实验板相连,同时把步进电机缆线插到实验板上,连上我们的51微型仿真器,接通外接电源,如图3所示。
图3

    注意:步进电机一共有4条线,但我们与实验板相连的白色插口上共有6个孔,在插口的最左边空出了一个位置,用于标记插口方向。硬件连接完成后,如果您的计算机上还没有安装仿真及编程软件Keil,那得进行软件的安装过程, KEIL软件位于配套光盘“Keil C51”目录下,它是我们进行仿真及编程的实验开发环境。安装完成后,在KEIL中新建一个“工程”,再新建一个C程序文件,在文件中输入以下程序代码,我们的无线发射器上共有四个按键,现在我们将其功能定义为:第1、2个键分别遥控步进电机快速顺时针转动和快速逆时针转动,第3、4个键分别遥控步进电机慢速顺时针转动和慢速逆时针转动,该功能看似简单,但在很多场合都有这样的控制需求,非常实用。(KEIL具体的基本使用方法及步骤可以参见笔者于2005年4月写的“单片机快速入门”一文):
#include <reg51.h> //标号:1

sbit D3 = P1^0; //标号:2
sbit D2 = P1^1; //标号:3
sbit D1 = P1^2; //标号:4
sbit D0 = P1^3; //标号:5
sbit VT = P1^4; //标号:6

void deasil(int delay) //标号:7
{
int i; //标号:8
P0=0xfe; //标号:9
for(i=0;i<delay;i++); //标号:10
P0=0xfd; //标号:11
for(i=0;i<delay;i++); //标号:12
P0=0xfb; //标号:13
for(i=0;i<delay;i++); //标号:14
P0=0xf7; //标号:15
for(i=0;i<delay;i++); //标号:16
}

void widdershins(int delay) //标号:17
{
int i; //标号:18
P0=0xf7; //标号:19
for(i=0;i<delay;i++); //标号:20
P0=0xfb; //标号:21
for(i=0;i<delay;i++); //标号:22
P0=0xfd; //标号:23
for(i=0;i<delay;i++); //标号:24
P0=0xfe; //标号:25
for(i=0;i<delay;i++); //标号:26
}

main() //标号:27
{
while(1) //标号:28
{
if (D3==1) deasil(2000); //标号:29
if (D2==1) widdershins(2000); //标号:30
if (D1==1) deasil(5000); //标号:31
if (D0==1) widdershins(5000); //标号:32
}
}

    编好程序,执行编译操作生成HEX文件后,使用仿真器进行调试,这时您按无线发射器上四个键,步进电机就会按我们事先所设定的功能根据按键来执行了。那它究竟是如何工作的,无线模块又是如何与步进电机相结合来进行控制的呢?下面我们就一起来分析一下程序代码。1号语句:程序中包含REG51.h文件的目的是为了要使用P0这个符号,即通知C编译器,程序中所写的P0是指51单片机的P0端口而不是其它变量。2—6号语句:在C语言里,如果直接写P1.0,C编译器并不能识别,而且P1.0也不是一个合法的C语言变量名,所以得给它另起一个名字,这里起的名为D3,可是D3是不是就是P1.0呢?你这么认为,C编译器可不这么认为,所以必须给它们建立联系,这里使用了Keil C的关键字sbit来定义,同理,我们将P1.0、P1.1、P1.2、P1.3、P1.4分别定义为D3、D2、D1、D0、VT,但VT我们在程序中没有使用到,也可以不定义,在此为了方便以后程序的扩充才定义的,我们前面也曾讲过D3——D0、VT也可以插在单片机的其它P口上,只要我们在程序中的定义语句中设对应就可以了。7号语句:定义步进电机顺时针转动的函数,参数delay用来设定其传动速度。8号语句:定义整型变量i,9——16号语句:步进电机顺时针转动的控制时序驱动。17号语句:定义步进电机逆时针转动的函数,参数delay用来设定其传动速度。8号语句:定义整型变量i,18——26号语句:步进电机逆时针转动的控制时序驱动。语句27:main称为“主函数”。每一个C语言程序有且只有一个主函数,函数后面一定有一对大括号“{}”,在大括号里面书写其它程序。28号语句:该语句是死循环语句,即单片机上电后,就不停地去执行while循环体内的语句,即不停地去判断遥控发射器按下的是哪个键,然后再做相应的控制。29——32号语句:我们的核心控制语句就在这四句中,29号语句:判断D3位如果等于1,前面我们已经用sbit语句定义过D3为P1.0口,那么29号语句实际意义可以这样理解:即判断P1.0口上如果为高电平,那么执行deasil(2000)这个函数。deasil函数的参数为涉及步进电机的转速,我们取为2000,这是相对后面的5000来设的,假定它为慢速度,当然您也可以根据自己的情况来设定其它的值,那它就会体现出不一样的转动速度。理解了29号语句,相信你看后面的30——32号语句,就马上可以想到它们的功能了吧。30号语句:如果D2端为高电平,步进电机执行逆时针慢速转动。31号语句:如果D1端为高电平,步进电机执行顺时针快速转动。31号语句:如果D0端为高电平,步进电机执行逆时针快速转动。
通过仿真执行,程序正确无误后,这时我们使用编程器将HEX文件烧入AT89S51单片机内,再把烧好的芯片插到实验板上,如图4所示,现在脱离了仿真器,这是一个真正的作品了,仿真器是我们在调试程序时提高效率所使用的,比如我们的程序有50行,假设代表了5个驱动硬件的动作,这时候如果有仿真器的话,我们可以让这5个动作一个个地执行,同时能够观察到在执行这5个动作的过程中,单片机内部的各单元状态是怎么样的,也就是可以细致的分析一下整个程序在硬件中的具体工作过程。这样我们就可以了解程序中是不是有问题存在,所以叫做仿真。

图4

    最后,要提醒大家一下,在做无线遥控实验需要注意的是:有朋友可能会问,如果我有两个遥控器和两个接收板,会不会产生互相之间的误触发影响,比如,我按了一个无线发射器的键导致两个接收板同时触发了,如何去解决这个问题呢?其实,在每个发射和接收装上,厂家一般都预留地址编码区,采用焊锡搭焊的方式来选择:悬空、接正电源、接地三种状态,出厂是一般都悬空,便于客户自己修改地址码,如图所示,所谓的设置地址码就是用焊锡将上下相邻的焊盘用焊锡桥搭短路起来。只有发射和接收板的地址码一致时,系统才能正常工作。


上一页(手把手教你用增强型51实验板的液晶显示功能) 下一页(未完待续)

--->>>返回首页


以上部分内容转载于网上,如有涉及到版权问题,请即通知本人删除 ICP备05019516号 MSN:hificat@hotmail.com
联系地址:浙江省杭州市拱墅区普金家园11-3-702 邮政编码:310015 Email:hificat@163.com support@kincony.com
电话:0571-85956028 传真:0571-88230070 手机:13185018567 在线咨询 在线咨询 QQ:420951892
杭州晶控电子有限公司 版权所有 COPYRIGHT2003——2008 HANGZHOU KinCony ELECTRONICS CO.,LTD All rights reserved