红外遥控及按键控制步进电机报告
遥控器控制步进电机

遥控器控制步进电机系统一、引言随着红外技术的发展,红外遥控以其安全方便的特点越来越受人们喜爱,本文的设计就是基于简单红外遥控而设计的,用简单的红外技术遥控步进电机,带动天车运动,以达到省时省力之目的。
二、总体设计1.接收部分图12.发射部分图2三、系统要求1.整个系统要求用4个功能键控制步进电机(天车用);2.整个系统分红外发射单元和红外接收单元;(1)红外发射单元:每按一下键即发送其键值对应的红外脉冲例如:1号键发一个脉冲2号键发二个脉冲……(2)红外接收单元:接收完相应的脉冲后,求出键值,从而转到相应的控制(进、倒、停);3.停、倒为天车遥控器,控制功能(1)天车位移距离0~50m(设步进电机转5步天车移动1m)(2) K1——1左移,0右移K2——1启动,0停止K3——给定值(十位)K4——给定值(个位)4.系统功能(1)按位移设定好给定值后,按下启动键,步进电机即可带动天车到给定的位置为止;(2)可根据预先设定值正反转(左右移动),启动/停止键进行人工控制;5.四位显示:图3前两位显示给定值(0~50m)后两位显示控制值(精确到m)四、遥控器电路图1. 红外发射电路图Proteus无法仿真红外发光二极管PH303,仿真中只画了示意图,用于产生图4所示的脉冲信号,实际电路图中,将下图的模拟PH303部分接PH303即可。
图42.红外接收电路图Proteus无法仿真红外接收管PH302,仿真中只画了示意图,用于PH303产生的红外脉冲信号,实际电路图中,将下图的模拟PH302部分接PH302即可。
图5。
步进电控制实验报告

一、实验目的1. 理解步进电机的工作原理及其应用领域。
2. 掌握单片机控制步进电机的技术方法。
3. 熟悉步进电机的驱动电路设计。
4. 通过实验验证步进电机控制系统的性能。
二、实验原理步进电机是一种将电脉冲信号转换为角位移的电机,具有精度高、响应快、控制简单等优点。
其工作原理是:当输入一定频率的脉冲信号时,步进电机按照一定的步距角转动。
步进电机的步距角与线圈匝数、绕组方式有关。
本实验采用单片机控制步进电机,通过编写程序实现步进电机的正转、反转、停止、转速调节等功能。
三、实验设备1. 单片机实验平台:包括51单片机、电源、按键、数码管等。
2. 步进电机驱动模块:用于驱动步进电机,包括驱动电路和步进电机本体。
3. 实验指导书。
四、实验步骤1. 搭建实验电路(1)连接单片机实验平台,包括电源、按键、数码管等。
(2)连接步进电机驱动模块,包括电源、控制线、步进电机本体等。
(3)检查电路连接是否正确,确保无误。
2. 编写控制程序(1)初始化单片机相关端口,包括P1口、定时器等。
(2)编写步进电机控制函数,包括正转、反转、停止、转速调节等功能。
(3)编写主函数,根据按键输入实现步进电机的控制。
3. 下载程序(1)将编写好的程序下载到单片机实验平台。
(2)检查程序是否下载成功。
4. 测试实验(1)观察数码管显示的转速挡次和转动方向。
(2)通过按键控制步进电机的正转、反转、停止和转速调节。
(3)观察步进电机的转动情况,验证控制程序的正确性。
五、实验结果与分析1. 实验结果(1)通过按键控制步进电机的正转、反转、停止和转速调节。
(2)数码管显示转速挡次和转动方向。
(3)步进电机按照设定的方向和转速转动。
2. 实验分析(1)通过实验验证了单片机控制步进电机的可行性。
(2)实验结果表明,控制程序能够实现步进电机的正转、反转、停止和转速调节等功能。
(3)实验过程中,需要对步进电机驱动模块进行合理设计,以确保步进电机的稳定运行。
红外遥控综合实验报告

红外遥控综合实验报告一、实验目的通过本次实验,掌握红外遥控的原理和基本应用,了解红外遥控器的工作原理,并通过实际操作掌握红外遥控的编程与控制方法。
二、实验器材- STM32F103RD开发板- 红外遥控接收器- 红外遥控发射器- 电脑三、实验原理红外遥控技术基于红外线的传输和接收。
红外遥控接收器和发射器分别位于遥控器和被控制设备之间,实现信号的传输和解码。
红外遥控器通过发送不同的红外信号来控制不同的设备。
当按下遥控器上的按钮时,红外遥控发射器会发出特定的红外信号。
被控制设备上的红外遥控接收器接收到红外信号后,通过解码判断接收到的信号是什么指令,然后执行相应的操作。
四、实验步骤1. 准备实验器材,将红外遥控接收器和发射器分别连接到开发板上。
2. 在电脑上下载并安装开发板的驱动程序和编程软件。
3. 编写程序,实现红外遥控的编码和传输功能。
使用开发板的GPIO口来控制红外发射器的工作,并通过编程设置红外遥控发射时的频率和协议。
4. 编写程序,实现红外遥控的译码和执行功能。
使用开发板的GPIO口来接收红外遥控接收器的信号,并通过解码判断接收到的信号是什么指令,然后执行相应的操作。
5. 将程序烧录到开发板上,将遥控器和被控制设备连接好。
6. 进行遥控测试,按下遥控器上的按钮,检查被控制设备是否执行了相应的操作。
五、实验结果经过实验,我们成功实现了红外遥控的功能。
按下遥控器上的按钮时,被控制设备能够准确执行相应的操作,例如打开或关闭灯光、调节电风扇的风速等。
六、实验总结本次红外遥控综合实验通过理论与实际操作相结合的方式,让我们更深入地了解了红外遥控的原理和应用。
通过编程与控制的实践,我们进一步加深了对红外遥控技术的理解,提高了程序设计和调试的能力。
红外遥控技术在日常生活中广泛应用于电视、空调、音响、智能家居等各种设备上。
掌握了红外遥控的编程和控制方法,对我们今后的学习和工作都将有很大的帮助。
通过本次实验,我们学会了团队合作和解决实际问题的能力。
步进电机控制实训报告

一、实训背景随着科技的飞速发展,步进电机在工业自动化、精密定位、医疗设备等领域得到了广泛的应用。
为了深入了解步进电机的原理和应用,提高自身的动手实践能力,我们进行了步进电机控制实训。
二、实训目标1. 理解步进电机的原理和工作方式。
2. 掌握步进电机的驱动方法和控制方法。
3. 学会使用单片机对步进电机进行编程和控制。
4. 提高团队协作能力和问题解决能力。
三、实训内容1. 步进电机原理步进电机是一种将电脉冲信号转换为角位移或线位移的执行元件。
其特点是响应速度快、定位精度高、控制简单。
步进电机每输入一个脉冲信号,就转动一个固定的角度,称为步距角。
步距角的大小取决于电机的结构,常见的步距角有1.8度、0.9度等。
2. 步进电机驱动步进电机的驱动通常采用步进电机驱动器。
驱动器将单片机输出的脉冲信号转换为驱动步进电机的电流信号,实现对步进电机的控制。
常见的驱动器有L298、A4988等。
3. 单片机控制本实训采用AT89C51单片机作为控制核心。
通过编写程序,控制单片机输出脉冲信号,实现对步进电机的正转、反转、停止、速度等控制。
4. 实训步骤(1)搭建步进电机驱动电路,连接单片机、步进电机、按键等外围设备。
(2)编写程序,实现以下功能:- 正转、反转控制;- 速度控制;- 停止控制;- 按键控制。
(3)使用Proteus仿真软件进行程序调试,验证程序的正确性。
(4)将程序烧录到单片机中,进行实际硬件测试。
四、实训结果与分析1. 正转、反转控制通过编写程序,实现了对步进电机的正转和反转控制。
在Proteus仿真软件中,可以观察到步进电机按照设定的方向转动。
2. 速度控制通过调整脉冲信号的频率,实现了对步进电机转速的控制。
在Proteus仿真软件中,可以观察到步进电机的转速随脉冲频率的变化而变化。
3. 停止控制通过编写程序,实现了对步进电机的停止控制。
在Proteus仿真软件中,可以观察到步进电机在停止信号后立即停止转动。
红外遥控实验报告

红外遥控实验报告红外遥控实验报告引言:红外遥控技术是一种常见的无线通信技术,被广泛应用于电视遥控器、空调遥控器等各种家电产品中。
本文将介绍一次关于红外遥控的实验,包括实验目的、实验原理、实验步骤、实验结果及分析等内容。
实验目的:本次实验旨在通过搭建一个简单的红外遥控系统,探究红外遥控技术的工作原理,并验证其在实际应用中的可行性。
实验原理:红外遥控技术是基于红外线通信原理的无线通信技术。
红外线是一种电磁波,其波长较长,无法被人眼直接观察到。
在红外遥控系统中,遥控器通过发射红外信号,而设备接收器则通过接收红外信号来实现通信。
实验步骤:1. 准备材料:红外发射器、红外接收器、电源、示波器等。
2. 连接电路:将红外发射器和红外接收器分别与电源和示波器连接。
3. 设置示波器:调整示波器的参数,使其能够准确显示红外信号的波形。
4. 发射信号:通过按下遥控器上的按钮,发射红外信号。
5. 接收信号:观察示波器上的波形,确认红外信号是否被接收器正确接收。
实验结果及分析:在实验中,我们成功搭建了一个简单的红外遥控系统,并进行了信号发射和接收的测试。
通过观察示波器上的波形,我们可以清楚地看到红外信号的特征。
实验结果表明,红外遥控技术在实际应用中具有良好的可行性和稳定性。
进一步探究:除了基本的红外遥控功能外,红外技术还可以应用于更多领域。
例如,红外遥感技术可以用于地质勘探、农业监测等领域;红外成像技术可以用于夜视仪、红外热像仪等设备中。
这些应用进一步拓展了红外技术的应用范围,使其在现代科技领域中发挥了重要作用。
结论:通过本次实验,我们深入了解了红外遥控技术的工作原理,并验证了其在实际应用中的可行性。
红外遥控技术作为一种常见的无线通信技术,已经广泛应用于各种家电产品中,为人们的生活带来了便利。
同时,红外技术在其他领域的应用也显示出了巨大的潜力。
我们相信,在不久的将来,红外技术将继续发展壮大,为人类创造更多的科技奇迹。
红外遥控控制步进电机程式(可用于军舰设计)

红外遥控控制步进电机程式(可⽤于军舰设计)Ps:本程序是军舰前端控制炮台部分,后端雷达扫描程序可以给我私信索取#include#define uint unsigned int#define uchar unsigned charsbit BEEP = P2^7; //蜂鸣器控制端⼝P36sbit moto0_bit=P2^6;sbit moto1_bit=P2^5;sbit led=P2^3;/**********采⽤四相⼋拍时序**********/uchar code zz[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//电机正转时序uchar code fz[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};//电机反转时序uchar tmp;uchar irtime;uchar startflag;uchar irdata[33];uchar bitnum;uchar irreceok;uchar ircode[4];uchar irprosok;uchar disp[8];uchar moto0_zzflag;uchar moto0_fzflag;uchar moto1_zzflag;uchar moto1_fzflag;uchar ser_flag;uchar re[5];uint sp_dis;uint sz_dis;uint re_int[4];uint moto0_count;uint moto1_count;/*****************************************************函数功能:延时1ms***************************************************/void delay1ms(){unsigned char i,j;for(i=0;i<10;i++)for(j=0;j<33;j++);}/*****************************************************函数功能:延时若⼲毫秒⼊⼝参数:n***************************************************/void delay(uint n){uint i;for(i=0;idelay1ms();}/*********************************************************/ void beep() //蜂鸣器响⼀声函数{uchar i;for (i=0;i<100;i++){delay1ms();BEEP=!BEEP; //BEEP取反}BEEP=1; //关闭蜂鸣器delay(250); //延时}/**********步进电机0正转函数**********/ void moto0_zz(){uchar i;for(i=0;i<8;i++){P0=zz[i];delay(1);}}/**********步进电机0反转函数**********/ void moto0_fz() {uchar i;for(i=0;i<8;i++){P0=fz[i];delay(1);}}/**********步进电机1正转函数**********/ void moto1_zz() {uchar i;for(i=0;i<8;i++){P1=zz[i];delay(1);}}/**********步进电机1反转函数**********/ void moto1_fz() {uchar i;for(i=0;i<8;i++){P1=fz[i];delay(1);}}void timer0init(void){TMOD|=0x02;TH0=0x00;TL0=0x00;ET0=1;EA=1;TR0=1;}void serinit(){TMOD|=0x20;TH1=0xf3;TL1=0xf3;TR1=1;SM0=0;SM1=1;PCON=0x80;REN=1;EA=1;ES=1;}void send(uchar dat) { SBUF = dat;while(!TI);TI = 0;}void int0init(void){IT0=1;EX0=1;EA=1;}void irpros(void){uchar k,i,j;uchar value;k=1;for(j=0;j<4;j++){for(i=0;i<8;i++){value>>=1;if(irdata[k]>6){value=value | 0x80; }k++;}ircode[j]=value;}irprosok=1;}void main(){uint t;timer0init();int0init();serinit();for(t=0;t<512;t++) {if(moto0_bit==0) break;moto0_zz();}for(t=0;t<512;t++) {if(moto1_bit==0) break;moto1_fz();}while(1){。
红外遥控及按键控制步进电机报告

目录一、红外遥控步进电机系统设计 (1)1.1系统设计原理 (1)1.2总体设计 (1)二、系统硬件模块设计 (2)2.1 红外遥控工作模块 (2)2.2 步进电机工作模块 (3)2.2.1步进电机工作原理 (3)2.2.2步进电机的动作实现原理 (3)2.3 LED数码管模块 (5)2.4 硬件设计 (5)2.4.1 步进电机驱动电路 (5)2.4.2 红外遥控驱动电路 (6)2.4.3 系统硬件电路设计图 (6)2.4.4 在XL1000上的连线图 (7)2.4.5 系统资源分配表 (7)三、系统软件设计 (8)3.1 主程序设计 (8)3.2 中断子程序设计 (9)3.3 按键控制步进电机程序 (10)3.4 红外遥控步进电机程序 (14)四、系统调试和制作 (24)五、性能分析 (25)六、心得及体会 (26)七、参考文献 (27)一、红外遥控步进电机系统设计1.1系统设计原理利用红外遥控器控制步进电机其实和用键盘控制步进电机原理类似,只不过按键是用导线传递键是否按下的信号,而红外则是利用LED发射红外线传递按键信息。
由于红外采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms 的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms 的组合表示二进制的“1”,在解码时通过判断高低电平持续时间的长短来识别发送的键值。
控制步进电机正、反方向转动、单步、连续、快慢等动作,原理其实并不困难。
步进电机将电脉冲信号转换成角位移,即给一个脉冲,步进电机就转动一个角度,转动的角度大小与施加的脉冲数成正比,因此,单步和连续的动作区别只是单片机给步进电机脉冲个数不同而已。
每按一次单步键就是给电机一个脉冲,而连续则是不断的给电机脉冲,达到连续运转的目的。
1.2总体方案设计根据该系统设计要求,需要通过红外遥控器按下按键和显示器来改变步进电机的运动状态以及显示,只需要红外遥控器中6个按键就可满足需求,外加8位LED数码显示管即可。
红外遥控控制步进电机

唐山学院毕业设计设计题目:基于单片机的步进电机控制系统设计与实现系别:信息工程系班级:姓名:指导教师:2013年6月10 日基于单片机的步进电机控制系统设计与实现摘要步进电机是一种纯粹的数字控制电动机,是一种受电脉冲信号控制的无刷式直流电动机,是现代定位驱动装置的核心,广泛应用在机械、电力、纺织、电子、仪表、印刷以及航空航天、船舶、兵器等国防工业等领域。
基于单片机的步进电机控制系统具有稳定度高、成本低、控制方便、应用范围广等特点。
本系统是由STC89C52单片机核心处理模块,遥控器命令输入模块,ULN2003及28BYJ-48步进电机组成的电机模块,12864液晶输出模块共同组成的基于单片机的步进电机控制系统。
本设计以载波为38KHZ的红外遥控器作为用户的控制端,它的功能是把用户的命令转换为红外信号。
红外信号由TL1838接收,它可以将光信号转换为电信号,并将其发送给微控制器STC89C52。
STC89C52对电信号进行相应处理即可获得用户所发出的指令,并依此来控制28BYJ48型四相八拍电机并以12864液晶作为当前状态的显示器。
用户可以对步进电机进行加速、减速、正转、反转的控制。
本步进电机控制系统具有精度高、运行稳定、控制方便、维护简单、应用范围广等特点。
关键词:STC89C52 12864液晶步进电机红外遥控Design and Implementation of Stepper Motor Control System Based on MCUAbstractStepper motor is a kind of pure digital control motor and brushless dc motor controlled by electric pulse signal type. Stepper motor is the core of the modern orientation drive, widely used in machinery, electric power, textile, electronics, instruments, printing and aerospace, ships, weapons, and other areas of the defense industry, etc. The characteristics of the stepping motor control system based on single chip microcomputer include high stability, low cost, convenient control and wide application , etc.The stepper motor control system consists of core processor using the single chip processor, command input control module using IR remote control , display module using 12864 LCD and 28BYJ48 stepping motor module which using ULN2003 as driver.The infrared remote control with carrier for 38 KHZ is used as the control end of the user, which can convert the users’ commands into the infrared signal. The TL1838 can receive the infrared signal and convert it into electrical signal, which input to tSTC89C52.The MCU can obtain instructions of users by processing the incoming signal and control stepping motor of the 28BYJ48 type, the current status can be shown by 12864 LCD. Users could control acceleration, deceleration, forward, inversion for the stepping motor. The features of the control system of stepper motor includes high precision, stable running, convenient control and simple maintenance and wide application, etc.Key word:MCU; 12864 LCD; Stepper Motor; Infrared remote control目录1 引言 (1)2 总体设计方案 (2)2.1系统设计原理 (2)2.2总体设计框图 (2)3系统硬件模块的组成 (3)3.1单片机控制模块 (3)3.1.1 STC89C52主要结构 (3)3.1.2 STC89C52功能特性描述 (3)3.1.3 时钟电路 (6)3.1.4复位电路 (6)3.2步进电机模块 (7)3.2.1 步进电机简介 (7)3.2.2步进电机的结构 (8)3.2.3 28BYJ-48步进电机工作原理 (8)3.3ULN2003芯片概述与特点 (9)3.4红外线发射接收模块 (10)3.4.1 红外线遥控的介绍 (10)3.4.2红外通信基本原理 (10)3.4.3 红外遥控发射系统 (12)3.4.4 红外遥控接收系统 (12)3.4.5 TL1838与单片机的接口 (14)3.512864显示模块 (14)3.5.1 12864液晶的特点 (14)3.5.2 12864液晶的引脚说明 (15)3.5.3 12864液晶的读写操作 (17)3.5.4 12864液晶的控制指令 (17)3.5.5 12864液晶接口电路 (20)3.6蜂鸣器模块 (20)3.6.1 蜂鸣器介绍 (20)3.6.2 蜂鸣器的接口电路 (21)4 软件设计与调试 (22)4.1主程序流程图 (22)4.2程序设计思路 (23)4.2.1 遥控器的解码 (23)4.2.2 步进电机的控制 (23)4.2.3 显示屏的控制 (24)4.2.4 蜂鸣器的控制 (24)4.2.5 模块中的通信 (24)5 编程与下载软件 (25)5.1 Keil软件 (25)5.2STC-ISP下载软件 (26)6 硬件电路制作 (27)6.1原理图的绘制 (27)6.2电路实现的基本步骤 (27)7 结论 (30)谢辞 (31)参考文献 (32)附录 (33)1 引言步进电机是一种纯粹的数字控制电动机,又称为阶跃电机或脉冲电机[1]。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录一、红外遥控步进电机系统设计 (1)1.1系统设计原理 (1)1.2总体设计 (1)二、系统硬件模块设计 (2)2.1 红外遥控工作模块 (2)2.2 步进电机工作模块 (3)2.2.1步进电机工作原理 (3)2.2.2步进电机的动作实现原理 (3)2.3 LED数码管模块 (5)2.4 硬件设计 (5)2.4.1 步进电机驱动电路 (5)2.4.2 红外遥控驱动电路 (6)2.4.3 系统硬件电路设计图 (6)2.4.4 在XL1000上的连线图 (7)2.4.5 系统资源分配表 (7)三、系统软件设计 (8)3.1 主程序设计 (8)3.2 中断子程序设计 (9)3.3 按键控制步进电机程序 (10)3.4 红外遥控步进电机程序 (14)四、系统调试和制作 (24)五、性能分析 (25)六、心得及体会 (26)七、参考文献 (27)一、红外遥控步进电机系统设计1.1系统设计原理利用红外遥控器控制步进电机其实和用键盘控制步进电机原理类似,只不过按键是用导线传递键是否按下的信号,而红外则是利用LED发射红外线传递按键信息。
由于红外采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms 的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms 的组合表示二进制的“1”,在解码时通过判断高低电平持续时间的长短来识别发送的键值。
控制步进电机正、反方向转动、单步、连续、快慢等动作,原理其实并不困难。
步进电机将电脉冲信号转换成角位移,即给一个脉冲,步进电机就转动一个角度,转动的角度大小与施加的脉冲数成正比,因此,单步和连续的动作区别只是单片机给步进电机脉冲个数不同而已。
每按一次单步键就是给电机一个脉冲,而连续则是不断的给电机脉冲,达到连续运转的目的。
1.2总体方案设计根据该系统设计要求,需要通过红外遥控器按下按键和显示器来改变步进电机的运动状态以及显示,只需要红外遥控器中6个按键就可满足需求,外加8位LED数码显示管即可。
由于实验箱上只有8个连体数码管,因此需要动态扫描。
通过从键盘上输入正、反转命令,按键数值显示在数码管上,CPU再读取正、反转命令,加减速后执行。
经键盘可完成启动、停止、正转、反转、速度设置控制功能。
按下红外遥控器上的相关按钮电机执行相关动作,同时数码管上显示按键的数值,系统大部分都是软件实现的,整个设计框图如下:二、系统硬件模块设计2.1 红外遥控工作模块本模块应完成对红外遥控器有无键按下进行确认,当有键按下时,确定按键值,并根据所得键值进行处理,包括所按键是不是停止键还是执行键。
如是停止键,不断扫描键盘程序,等待执行键按下;如是执行键就启动产生步进电机控制信号程。
显示模块主要是完成在进行键盘按下时,通过数码管显示输入的数据值(转矩数、转动方向、转动速率及运行方式)。
红外遥控编解码原理:红外遥控系统由发射和接收两大部份组成,应用编/解码专用集成电路芯片来进行控制操作,如图1 所示。
发射部份包括键盘矩阵、编码调制、LED红外发送器;接收部份包括光、电转换放大器、解调、解码电路。
由于采用不同芯片其发送和接受的过程是不一样的,我们用的实验箱采用的是HT6221红外编码芯片。
当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。
这种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms 的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms 的组合表示二进制的“1”,如图2。
解码方法:a.解码的关键是如何识别0和1从位的定义我们可以发现0 1 均以 0.56ms的低电平开始不同的是高电平的宽度不同0为0.56ms,1为1.68ms,所以必须根据高电平的宽度区别0和1。
b.如果从0.56ms低电平过后开始延时0.56ms以后若读到的电平为低说明该位为0反之则为1为了可靠起见延时必须比0.56ms长些但又不能超过1.12ms,否则如果该位为0读到的已是下一位的高电平因此取1.12ms+0.56ms/2=0.84ms 最为可靠一般取0.84ms。
c.根据码的格式应该等待9ms 的起始码和4.5ms 的结果码完成后才能读码左右均可这样接收到的仅仅是普通的代码要得到标准的键值还必须进行代码识别和代码转换。
2.2步进电机工作模块2.2.1 步进电机工作原理步进电机是一种将电脉冲转化为角位移的执行机构。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。
现在比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)和单相式步进电机等。
2.2.2步进电机的动作实现原理(1)电机单步与连续的控制给一个脉冲,步进电机就转动一个角度,转动的角度大小与施加的脉冲数成正比,因此,单步和连续的动作区别只是单片机给步进电机脉冲个数不同而已。
每按一次单步键就是给电机一个脉冲,而连续则是不断的给电机脉冲,达到连续运转的目的。
步进电机的步进角度是7.5度,一圈360度,需要48个脉冲完成。
(2)电机正反的控制步进电机的转动需要向电机以一定的顺序分配驱动脉冲。
如四相单四拍,其脉冲分配的方式和顺序为A-B-C-D-A,如此周而复始,即可转动。
转动方向与脉冲顺序有关,如果给相反脉冲,那么电机就会反转。
在程序中,步进电机的正反转则是一个公有键,按下转动方向就相反,通过判断20号单元的第一位20H.0是0还是1,若是0则去查反转的表,否则去查正转的表,实行起来比较方便。
如图3:(3)电机快慢的控制单片机的晶振为12MHz,单周期指令执行时间为1MHz,由于机械动作需要一定时间来完成,如果以这么快的速度来给脉冲,电机是不会转动的,因此,在两个脉冲之间必须要有一定时间差,电机才有时间来执行动作。
电机转动的速度与脉冲频率成正比,控制脉冲间隔时间就相当于控制了步进电机的转动角频率即快慢。
通过单片机的定时/计数器T0来控制,定时产生脉冲的方法称为硬件定时,该法首先根据定时的时间长短设定定时器的工作模式,然后输入定时器的定时常数,则定时器就会定时溢出,单片机就会每溢出一次就产生一个脉冲控制步进电机转动,而改变装载值的大小,就会实现变速。
也就是说,步进电机的转速由单片机内部定时器的中断频率决定的,不断改变定时器的装载初值就可改变电机的运转速度。
(4)电机的停止步进电机具有瞬间启动和急速停止的优越特性。
故在设计中,不论电机处于何种状态,只要按下停止键,马上跳转到主程序,停止给脉冲,电机停止运转。
2.3 LED数码管模块图4在本次仿真中使用的是共阳极八个七段数码管。
如图4所示。
数码管是由7个发光管组成的8字形构成的,加上小数点就是8个。
分别把它命名为A、B、C、D、E、F、G、H、DP,由于接法是共阳接法,所以低电平是亮,高电平是灭,接口由单片机P0口控制。
而右边是选择使用数码管的控制接口,程序中单片机P3口控制,在按键控制步进电机中,取第一位数码管亮。
实验箱采用的数码管较为特殊,和一般的共阴、共阳数码管都不一样,在Proteus 中共阳数码管给高电平才表示选中,而实验箱采用低电平选中,各字段表也不一样。
如一般共阳给"C0H"表示"0",但实验箱需要给"28H",为了仿真的需要,后面的程序均采用的是一般共阳数码管写法,在实验箱上调试程序时进行了变更。
2.4 硬件资源分配2.4.1 步进电机驱动电路2.4.2红外遥控驱动电路2.4.3 系统硬件电路设计图2.4.4在XL1000上的连线图2.4.5系统资源分配表在上面的仿真图中,因为Proteus软件中没有红外模块,所以本次仿真用的是按键键盘代替。
1、P3.0一P3.7: 显示位选线,即选中哪个数码管。
2、P0.0一P0.7:输出字形码到LED数码管,用于显示按下的键值。
3、P1.0—:P1.5:连接六个按键,控制步进电机的单步、连续、正反转、加速、减速、停止。
4、P2.0、P2.1、P2.2、P2.3: 步进电机控制脉冲输出口,通过控制给脉冲的频率和数量达到加减速和单步、连续的目的。
5、本仿真使用了程序存储器调用,地址资源用到了15H,29H,3CH,50H,63H,77H,8AH,9EH,0B1H,0C5H,0A0H,28H,0B0H,38H,0C0H,48H,0D0H,58H,0E0H,68H。
内外部存储器是统一编址的,在0000H—FFFFH范围内选址。
控制正反转调用地址07H,03H,0BH,09H,0DH,0CH,0EH,06H。
三、系统软件设计3.1 主程序设计系统的软件设计通常采用模块化结构,软件系统总体框架一般包括三部分:主程序、中断服务子程序以及其他相应的辅助子程序(包括正转子程序、反转子程序、LED显示子程序、红外键盘子程序)。
图3.1 主程序红外遥控步进电机程序运行总思路:首先,检测是否有红外按键扫描信号;通过遥控按键,发出信号,是实验箱上感应信号后,对应数码管显示按键的数值,并且执行步进电机的工作状态,达到红外控制步进电机的效果。
3.2 中断子程序设计本次设计采用直流电源供电,只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。
按键子程序中包括按键扫描、按键去抖动、按键的键后处理.按键扫描采用单个按键的扫描,分别对不同功能的按键扫描并存放不同的按键标志。
按键去抖动采用延时去抖法。
根据按键扫描后的按键标志位结果来处理相应的子程序。
显示模块采用传统的LED数码管显示数字,程序编译容易,资源占用少。
使用八位数码管,动态扫描显示的方式。
3.3按键控制步进电机程序Minspd EQU 25Maxspd EQU 35Speed DATA 23HORG 0000HAJMP startORG 000BH ;T0的中断服务程序入口JMP BUJIN ;转到BUJINORG 0030H ;主程序start: SETB 20H.1 ;设置步进电机正转MOV R0,#00HMOV TMOD,#01HMOV TH0,#115MOV TL0,#96 ;定时约35msSETB EA ;开中断总开关SETB ET0 ;允许T0中断CLR TR0 ;停止T0工作MOV P2,#0FFHmain: MOV Speed,#MinspdMOV P3,#01HCALL DELAY ;延时96usMOV P0,#92H ;置数码管显示5JB P1.2,Q1 ;若按下P1.2口,顺序执行使步进电机反转;否则,转去执行单步工作,步进电机正转MOV P3,#01HCALL DELAYMOV P0,#0A4H ;置数码管显示2JNB P1.2,$CPL 20H.1Q1: JNB P1.0,DanbuJNB P1.1,LianxuAJMP mainDanbu: MOV P3,#01HCALL DELAYMOV P0,#0C0H ;置数码管显示0JNB P1.0,$CALL ZF ;置转动方向JMP mainLianxu: SETB TR0 ;启动中断MOV P3,#01HCALL DELAYMOV P0,#0F9H ;置数码管显示1CALL KEYJMP Lianxu ;设置步进电机在连续工作的情况下,执行正反转、加减速工作KEY: JNB P1.5,mainKY2: JNB P1.0,DanbuKY4: JB P1.2,KY6MOV P3,#01HCALL DELAYMOV P0,#0A4H ;置数码管显示2JNB P1.2,$ ;执行步进电机正反转CPL 20H.1KY6: JB P1.3, KY7MOV P3,#01HCALL DELAYMOV P0,#0B0H ;置数码管显示3JNB P1.3,$JMP Upspd ;执行步进电机加速工作KY7 : JB P1.4,K1MOV P3,#01HCALL DELAYMOV P0,#99H ;置数码管显示4JNB P1.4,$JMP Dowspd ;执行步进电机减速工作Upspd: INC SpeedMOV A,SpeedCJNE A,#Maxspd,K1DEC SpeedJMP K1Dowspd: DEC SpeedMOV A,SpeedCJNE A,#Minspd,K1MOV Speed,#MinspdK1: RETBUJIN: CALL ZFCLR TR0MOV A,SpeedPUSH PSW ;将程序状态字压入堆栈SUBB A,#Minspd ;借位减POP PSWMOV R1,AMOV DPTR,#DjH ;将表DjH的地址依次送寄存器DPTR中MOVC A,@A+DPTRMOV TH0,AMOV A,R1MOV DPTR,#DjLMOVC A,@A+DPTRMOV TL0,ARETIZF: JNB 20H.1 ,FanzhuanZhengzhuan:MOV A,R0MOV DPTR,#TABLEMOVc A,@A+DPTRJNZ K3MOV R0,#00HAJMP ZhengzhuanFanzhuan:MOV A,R0MOV DPTR,#TABLE1MOVc A,@A+DPTRJNZ K3MOV R0,#00HAJMP FanzhuanK3: MOV P2,AINC R0RETDELAY: MOV R7,#60HDJNZ R7,$RETDjH: DB 15H,29H,3CH,50H,63H,77H,8AH,9EH,0B1H,0C5H DjL: DB 0A0H,28H,0B0H,38H,0C0H,48H,0D0H,58H,0E0H,68H TABLE: DB 07H,03H,0BH,09H,0DH,0CH,0EH,06H ;正转表DB 00H ;正转结束TABLE1: DB 06H,0EH,0CH,0DH,09H,0BH,03H,07H ;反转DB 00H ;反转结束END3.4 红外遥控步进电机程序ORG 0000HSJMP START0ORG 000BH ;T0中断入口(定时器0中断)AJMP ZHDUAN ;转中断服务程序ORG 0030H ;主程序START0: MOV SP,#60HMOV P0,#0FFHMOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV 35H,#00HMOV 31H,#3CHMOV 30H,#0B0HMOV 32H,#1START:WAIT: JB P3.7, $ ;等待遥控信号出现SB: MOV R4,#8 ;8毫秒为高电平错误SBA: MOV R5,#250SBB: JB P3.7,SXB1DJNZ R5,SBBDJNZ R4,SBAMOV R4,#2JMP SBCSXB1: MOV R5,#5SXB2: JNB P3.7,SBB ;去掉20US的尖峰干扰信号DJNZ R5,SXB2JMP STARTSBC: MOV R5,#250SB1: JB P3.7,SB2 ;2MS内不为高电平错误DJNZ R5,SB1DJNZ R4,SBCJMP STARTSB2: MOV R5,#5 ;去掉20US的尖峰干扰信号SB2_A: JNB P3.7,SB1DJNZ R5,SB2_AMOV R4,#3SB2_1: MOV R5,#250SB3: JNB P3.7,SXC ;监测4.5MS高电平,如3MS内出现低电平错误DJNZ R5,SB3DJNZ R4,SB2_1MOV R4,#2JMP SB3_1SXC: MOV R5,#5 ;去掉20US的尖峰干扰信号SXC1: JB P3.7,SB3DJNZ R5,SXC1JMP STARTSB3_1: MOV R5,#250 ;监测4.5MS高电平,如5MS内不为低错误SB3_2: JNB P3.7,SB4DJNZ R5,SB3_2DJNZ R4,SB3_1JMP STARTSB4: MOV R5,#5 ;去掉20US的尖峰干扰信号SB4_1: JB P3.7,SB3_2DJNZ R5,SB4_1MOV R1,#1AH ;设定1AH为起始RAM区MOV R2,#4PP: MOV R3,#8JJJJ: MOV R5,#250JJJJ2: JB P3.7,JJJJ3 ;1MS内不为低电平错误DJNZ R5,JJJJ2JMP STARTJJJJ3: LCALL YS1 ;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态MOV C,P3.7 ;将P3.7状态0或1存入C中JNC UUU ;如果为0就跳转到UUUMOV R5,#250JJJJ4: JNB P3.7,UUUNOPDJNZ R5,JJJJ4JMP STARTUUU: MOV A,@R1 ;将R1中地址的给ARRC A ;将C中的值移入A中的最低位MOV @R1,A ;将A中的数暂存在R1中DJNZ R3,JJJJ ;接收地址码的高8位INC R1 ;对R1加1,换成下一个RAMDJNZ R2,PP;以下对代码是否正确和定义进行识别MOV A,1AH ;比较高8位地址码XRL A,#00000000B ;判断1AH的值是否等于00000000,相等的话A为0JNZ EXIT ;如果不等解码失败退出MOV A,1BH ;比较低8位地址XRL A,#11111111B ;再判高8位地址是否正确JNZ EXIT ;如果不相等说明解码失败退出LCALL YS3MOV A,1CH ;比较数据码和数据反码是否正确?CPL AXRL A,1DH ;将1CH的值取反后和1DH比较不同则无效丢弃,核对数据是否准确JNZ EXIT ;如果不相等说明解码失败退出LCALL YS3CLR P2.6 ;选中数码管CLR P3.3 ;解码成功喇叭响?AJMP BIJIAO;判断在118毫秒内是否有连发码AA: MOV R1,#25XX: ACALL YS2JNB P3.7,HH ;跳转到HHDJNZ R1,XXEXIT: ;对所有端口清零AJMP START;连发码判断程序段-----------HH: MOV R6,#4S: ACALL YS1 ;调用882微秒延时子程序JB P3.7,EXIT ;延时882微秒后判断P3.7脚是否出现高电平如果有就退出解码程序DJNZ R6, S ;重复4次,目的是确认JNB P3.7, $ ;等待高电?LCALL YS3AJMP AABIJIAO: M OV A,1CH ;红外键值;显示按键MOV P2,#01HCJNE A,#10h,T1MOV P0,#7EH ;数码管显示1T1: CJNE A,#03h,T2MOV P0,#0A2H ;数码管显示2T2: CJNE A,#01h,T3MOV P0,#62H ;数码管显示3 T3: CJNE A,#06h,T4MOV P0,#74H ;数码管显示4 T4: CJNE A,#09h,T5MOV P0,#61H ;数码管显示5 T5: CJNE A,#1dh,T6MOV P0,#21H ;数码管显示6 T6: CJNE A,#1fh,NEXTMOV P0,#7AH ;数码管显示7 ;T7: AJMP WAIT;单步正转NEXT: CJNE A,#10H,LRUN2CLR ET0 ;禁止T0中断SJMP RRUN1RRUN: MOV 35H,#00H ;RRUN1: MOV A,35HMOV DPTR,#TABRMOVC A,@A+DPTRJZ RRUNMOV P1 , AINC 35HAJMP WAIT;单步逆转LRUN2: CJNE A,#03H,CRRUN2CLR ET0SJMP LRUN1LRUN: MOV 35H,#00HLRUN1: MOV A,35HMOV DPTR,#TABLMOVC A,@A+DPTRJZ LRUNMOV P1 , AINC 35HAJMP WAIT;连续正转CRRUN2: CJNE A, #01H,CLRUN2SETB 20H.0 ;标志位为1,说明正转MOV TMOD ,#01HMOV TH0,31HMOV TL0,30HSETB TR0SETB EASETB ET0AJMP WAIT;连续逆转CLRUN2: CJNE A, #06H,JIASUCLR 20H.0 ;标志位为0,说明反转MOV TMOD ,#01HMOV TH0,31HMOV TL0,30HSETB TR0SETB EASETB ET0AJMP WAIT;按键加速JIASU: CJNE A,#09H,JIANSUMOV A,32HCJNE A,#5,JIA1JIA1: INC 32HINC AMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P2,#03HMOV P0,AMOV A,32HCJNE A,#1,JIA2MOV 31H,#3CHMOV 30H,#0B0HAJMP WAITJIA2: CJNE A,#2,JIA3MOV 31H,#63HMOV 30H,#0C0HAJMP WAITJIA3: CJNE A,#3,JIA4MOV 31H,#8AHMOV 30H,#0D0HAJMP WAITJIA4: CJNE A,#4,JIA5MOV 31H,#0B1HMOV 30H,#0E0HAJMP WAITJIA5: CJNE A,#5,JIAMAXMOV 31H, #0D8HMOV 30H, #0F0H JIAMAX: AJMP WAIT;按键减速JIANSU: CJNE A,#1DH,STOPCJNE A,#1,JIAN1AJMP WAITJIAN1: DEC 32HDEC AMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P2,#03HMOV P0,AMOV A,32HCJNE A,#1,JIAN2MOV 31H,#3CHMOV 30H,#0B0HAJMP WAITJIAN2: CJNE A,#2,JIAN3MOV 31H,#63HMOV 30H,#0C0HAJMP WAITJIAN3: CJNE A,#3,JIAN4MOV 31H,#8AHMOV 30H,#0D0HAJMP WAITJIAN4: CJNE A,#4,JIAN5MOV 31H,#0B1HMOV 30H,#0E0HAJMP WAITJIAN5: CJNE A,#5,JIANMAXMOV 31H, #0D8HMOV 30H, #0F0HJIANMAX: AJMP WAITSTOP: CJNE A,#1FH,FANHUICLR ET0MOV P3,0FFHAJMP WAITFANHUI: AJMP WAIT; 中断ZHDUAN: JB 20H.0,SZHNZH : MOV DPTR,#TABLSJMP XHUANSZH: MOV DPTR,#TABRSJMP XHUANXHUAN1: MOV 35H,#00HXHUAN: MOV A,35HMOVC A,@A+DPTRJZ XHUAN1MOV P1 , AINC 35HMOV TMOD ,#01HMOV TH0,31HMOV TL0,30HSETB TR0RETIYS1: MOV R4,#20 ;延时子程序1,882微秒D1: MOV R5,#20DJNZ R5,$DJNZ R4,D1RETYS2: MOV R4,#10 ;延时子程序2,4740微秒D2: MOV R5,#235DJNZ R5,$DJNZ R4,D2RETYS3: MOV R4,#2 ;延时程序3,1000微秒D3:MOV R5,#248DJNZ R5,$DJNZ R4,D3RETTABLE: DB 28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h; TABR: DB 03H,09H,0CH,06H,00HTABL: DB 03H,06H,0CH,09H,00H;0 1 2 3 4 5 6 7 8 9END四、系统调试和制作本次课程设计使用的是汇编语言编程,然后在Keil uVision2软件里编译调试的。