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

遥控器控制步进电机系统一、引言随着红外技术的发展,红外遥控以其安全方便的特点越来越受人们喜爱,本文的设计就是基于简单红外遥控而设计的,用简单的红外技术遥控步进电机,带动天车运动,以达到省时省力之目的。
二、总体设计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]。
控制步进电机实验报告(3篇)

第1篇一、实验目的1. 理解步进电机的工作原理及控制方法。
2. 掌握单片机与步进电机驱动模块的接口连接方法。
3. 学习使用C语言编写程序,实现对步进电机的正反转、转速和定位控制。
4. 通过实验,加深对单片机控制系统的理解。
二、实验原理步进电机是一种将电脉冲信号转换为角位移或线位移的电机,其特点是控制精度高、响应速度快、定位准确。
步进电机控制实验主要涉及以下几个方面:1. 步进电机驱动模块:常用的驱动模块有ULN2003、A4988等,它们可以将单片机的数字信号转换为步进电机的控制信号。
2. 单片机:单片机是整个控制系统的核心,负责接收按键输入、处理数据、控制步进电机驱动模块等。
3. 步进电机:步进电机分为单相、双相和三相等类型,本实验使用的是双相四线步进电机。
三、实验设备1. 单片机开发板:例如STC89C52、STM32等。
2. 步进电机驱动模块:例如ULN2003、A4988等。
3. 双相四线步进电机。
4. 按键。
5. 数码管。
6. 电阻、电容等元件。
7. 电源。
四、实验步骤1. 硬件连接(1)将步进电机驱动模块的输入端(IN1、IN2、IN3、IN4)分别连接到单片机的P1.0、P1.1、P1.2、P1.3口。
(2)将按键的输入端连接到单片机的P3.0口。
(3)将数码管的段选端连接到单片机的P2口。
(4)将步进电机驱动模块的电源端连接到电源。
(5)将步进电机连接到驱动模块的输出端。
2. 编写程序(1)初始化单片机I/O端口,设置P1口为输出端口,P3.0口为输入端口,P2口为输出端口。
(2)编写按键扫描函数,用于读取按键状态。
(3)编写步进电机控制函数,实现正反转、转速和定位控制。
(4)编写主函数,实现以下功能:a. 初始化数码管显示;b. 读取按键状态;c. 根据按键状态调用步进电机控制函数;d. 更新数码管显示。
3. 调试程序(1)将程序烧写到单片机中;(2)打开电源,观察数码管显示和步进电机运行状态;(3)根据需要调整程序,实现不同的控制效果。
红外遥控测试实验报告(3篇)

第1篇一、实验目的1. 了解红外遥控的基本原理和组成。
2. 掌握红外遥控信号的发射和接收技术。
3. 评估红外遥控系统的性能,包括遥控距离、角度和抗干扰能力。
4. 分析实验过程中遇到的问题,并提出相应的解决方案。
二、实验原理红外遥控技术是一种无线通信技术,通过发射端发送红外信号,接收端接收并解析红外信号,从而实现对设备的控制。
红外遥控系统主要由发射端、传输介质和接收端组成。
三、实验器材1. 红外遥控器2. 红外接收模块3. 逻辑分析仪4. 万用表5. 电源6. 调试工具四、实验步骤1. 搭建实验平台:将红外遥控器和红外接收模块连接到逻辑分析仪,并将逻辑分析仪与电脑连接,以便实时观察和分析信号。
2. 测试遥控距离:在实验室内,保持红外遥控器和红外接收模块之间距离不变,逐步增加距离,记录不同距离下的遥控效果。
3. 测试遥控角度:在实验室内,保持红外遥控器和红外接收模块之间距离不变,改变红外遥控器与红外接收模块之间的角度,记录不同角度下的遥控效果。
4. 测试抗干扰能力:在实验室内,向红外遥控器和红外接收模块之间添加干扰信号,观察红外遥控系统的抗干扰能力。
五、实验结果与分析1. 遥控距离测试:在实验过程中,当红外遥控器和红外接收模块之间距离为5米时,遥控效果良好;当距离增加到10米时,遥控效果有所下降;当距离增加到15米时,遥控效果基本失效。
这表明红外遥控系统的遥控距离与发射端和接收端之间的距离有关,距离越远,遥控效果越差。
2. 遥控角度测试:在实验过程中,当红外遥控器和红外接收模块之间距离为5米时,在正前方角度范围内,遥控效果良好;当角度增加到45度时,遥控效果有所下降;当角度增加到90度时,遥控效果基本失效。
这表明红外遥控系统的遥控角度与发射端和接收端之间的角度有关,角度越大,遥控效果越差。
3. 抗干扰能力测试:在实验过程中,向红外遥控器和红外接收模块之间添加干扰信号,发现当干扰信号强度较高时,红外遥控系统的抗干扰能力较差,容易导致遥控失效。
利用红外技术和单片机对步进电机的无线控制

利用红外技术和单片机对步进电机的无线控制随着无线技术的发展,越来越多的设备开始采用无线控制,而在机械设备中,步进电机的无线控制更是常见,而且成本相对较低,可靠性较高。
本文将介绍如何利用红外技术和单片机对步进电机进行无线控制。
一、步进电机简介步进电机是一种带有指向性的电动机,可以控制其旋转的方向和步数,非常适合用于一些需要精准控制的场合,例如机器人控制、CNC数控机床、3D打印机等。
它的转子是通过不断改变磁场来实现旋转,适用于低速高扭矩的控制。
二、红外技术的优势红外技术是一种无线通信技术,优点是无需物理连接,使用方便,隔墙透视效果极佳,广泛应用于智能家居、电子产品等领域。
由于控制步进电机需要对其进行精准的定位和调节,红外技术可以实现精度控制。
三、单片机的作用单片机是一种集成电路,可以通过编程控制其输出和输入,是控制步进电机的重要组成部分。
单片机可以接收来自红外遥控器的信号,控制步进电机的速度和方向,帮助用户实现相应的操作。
四、无线控制步进电机的实现1、红外遥控器为了实现无线控制步进电机,用户需要首先找到一款可靠的红外遥控器。
如果自己编写红外遥控器,需要确保其稳定性和精度。
2、红外接收器在接收控制信号之前,需要选择一款品质优良的红外接收器,可以支持多个控制通道,并具有较高的解码效率,避免信号误差和延迟。
3、单片机单片机可以作为控制系统的核心,可以接收红外信号并将信号解码成二进制,然后通过控制电路生成相应的步进电机驱动信号,实现无线控制步进电机的功能。
4、电机驱动电路电机驱动电路是连接单片机和步进电机的桥梁,需要根据步进电机的规格和工作参数来设计和调节。
常见的电机驱动电路有L293D、ULN2003和A4988等,可以选择合适的电路来驱动步进电机。
5、步进电机最后,需要选择合适的步进电机,确保其匹配上述电路和电路参数,同时具有高精度、低噪音、高效率等特点。
常见的步进电机有42步、57步、86步等,可以根据实际需求进行选择。
步电机控制实验报告

一、实验目的1. 理解步进电机的工作原理和特性;2. 掌握步进电机的驱动电路设计;3. 学会使用步进电机驱动器;4. 实现步进电机的正反转、转速调节及位置控制。
二、实验器材1. 步进电机:NEMA 17 42BYG250-20042. 步进电机驱动器:A4988步进电机驱动模块3. 电源:12V 2A4. 连接导线5. 实验平台:Arduino Uno6. 实验软件:Arduino IDE三、实验原理步进电机是一种将电脉冲信号转换为角位移的电机,具有响应速度快、定位精度高、控制简单等优点。
步进电机的工作原理是:当输入一个电脉冲时,步进电机内部的转子就旋转一个固定的角度,这个角度称为步距角。
步进电机的步距角取决于其结构,常见的步距角有1.8°、0.9°等。
步进电机的驱动电路主要由电源、驱动模块和步进电机组成。
驱动模块负责将输入的脉冲信号转换为步进电机所需的电流,从而实现电机的转动。
四、实验步骤1. 步进电机驱动电路搭建(1)将步进电机驱动模块的VCC、GND、ENA、IN1、IN2、IN3、IN4分别连接到电源的12V、GND、GND、Arduino Uno的数字引脚2、3、4、5;(2)将步进电机的A、B、C、D分别连接到驱动模块的A、B、C、D;(3)连接电源和步进电机。
2. 步进电机控制程序编写(1)在Arduino IDE中创建一个新的项目,命名为“StepMotorControl”;(2)编写如下代码:```cpp#include <Stepper.h>const int stepsPerRevolution = 200; // 步进电机每转一周的步数Stepper myStepper(stepsPerRevolution, 2, 3, 4, 5);void setup() {myStepper.setSpeed(60); // 设置步进电机的转速,单位为步/秒}void loop() {myStepper.step(stepsPerRevolution); // 正转一周delay(1000);myStepper.step(-stepsPerRevolution); // 反转一周delay(1000);}```(3)将编写好的代码上传到Arduino Uno。
红外遥控控制实验报告(3篇)

第1篇一、实验目的1. 掌握红外遥控的基本原理和设计方法。
2. 了解红外遥控系统的组成和功能。
3. 学会使用红外遥控器件,实现基本的遥控功能。
4. 提高电子电路设计和编程能力。
二、实验原理红外遥控技术是一种通过红外线进行信号传输的控制技术。
它利用红外线作为载波,将控制信号(如按键信息)调制到红外线中,通过红外发射器发射出去,再由红外接收器接收并解调,最终实现对设备的控制。
三、实验器材1. 红外发射器2. 红外接收器3. 电脑4. 单片机(如STC89C52)5. 电阻、电容、二极管等电子元件6. 实验电路板7. 编程软件(如Keil)四、实验步骤1. 电路搭建:根据实验要求,搭建红外发射器和接收器的电路。
电路主要包括单片机、红外发射二极管、红外接收头、电阻、电容等元件。
2. 程序编写:使用编程软件编写单片机程序,实现红外遥控的基本功能。
程序主要包括以下部分:- 红外接收模块:读取红外接收头接收到的红外信号,并进行解调。
- 红外编码模块:将解调后的红外信号转换为对应的按键信息。
- 控制模块:根据按键信息,实现对设备的控制。
3. 实验测试:将编写好的程序烧录到单片机中,进行实验测试。
测试内容包括:- 红外发射器是否能够正常发射信号。
- 红外接收器是否能够正常接收并解调信号。
- 单片机是否能够正确识别按键信息,并实现对设备的控制。
4. 结果分析:根据实验结果,分析红外遥控系统的性能,如响应速度、控制距离等。
五、实验结果与分析1. 红外发射器测试:实验结果表明,红外发射器能够正常发射信号,且信号强度足够远距离传输。
2. 红外接收器测试:实验结果表明,红外接收器能够正常接收并解调信号,且解调准确率较高。
3. 单片机控制测试:实验结果表明,单片机能够正确识别按键信息,并实现对设备的控制。
控制响应速度较快,满足实验要求。
4. 结果分析:通过本次实验,我们掌握了红外遥控的基本原理和设计方法,了解了红外遥控系统的组成和功能。
步进电机控制实验报告

步进电机控制实验报告步进电机控制实验报告引言步进电机是一种常见的电机类型,具有精准的位置控制和可靠的运动控制能力。
在本次实验中,我们将学习如何使用Arduino控制步进电机,并通过实际操作来验证控制的可行性和有效性。
一、实验目的本次实验的主要目的是掌握步进电机的控制原理和方法,了解步进电机的特点以及其在实际应用中的作用。
通过实验,我们将学习如何使用Arduino来控制步进电机的旋转方向和步进角度,并能够实现精确的位置控制。
二、实验器材1. Arduino开发板2. 步进电机3. 驱动模块4. 连接线三、实验步骤1. 连接步进电机和驱动模块:将步进电机的相线连接到驱动模块的对应接口上,并将驱动模块与Arduino开发板连接。
2. 编写控制程序:在Arduino开发环境中,编写控制步进电机的程序。
首先,定义步进电机的旋转方向和步进角度,然后利用Arduino的输出引脚控制驱动模块,从而控制步进电机的旋转。
3. 上传程序并测试:将编写好的程序上传到Arduino开发板上,并将步进电机连接到电源。
通过控制程序中的参数,观察步进电机的旋转方向和步进角度,验证控制的准确性和可行性。
四、实验结果与分析经过实验,我们成功地控制了步进电机的旋转方向和步进角度。
通过改变控制程序中的参数,我们可以实现步进电机的正转、反转和停止等操作。
实验结果表明,步进电机的控制精度较高,可以实现精确的位置控制。
五、实验总结通过本次实验,我们深入了解了步进电机的控制原理和方法,并通过实际操作验证了控制的可行性和有效性。
步进电机作为一种常见的电机类型,在工业自动化和机器人领域有着广泛的应用。
掌握步进电机的控制技术,对于我们今后的学习和工作具有重要的意义。
六、实验心得本次实验让我对步进电机的控制有了更深入的了解。
通过编写控制程序,我学会了如何利用Arduino来控制步进电机的旋转方向和步进角度。
实验过程中,我遇到了一些问题,例如如何正确连接步进电机和驱动模块,以及如何调试控制程序等。
基于STC89C52单片机红外遥控步进电机

项目名称:基于STC89C52单片机红外遥控步进电机一、摘要>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>二、关键词>>>>>>>>>>>>>>>>>>>>>>>>>>>>>三、STC89S52概述>>>>>>>>>>>>>>>>>>>>>>1.概述>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>2.主要性能>>>>>>>>>>>>>>>>>>>>>>>>>>3.单片机引脚分布图>>>>>>>>>>>>>>>>>>>四、功能描述及分析>>>>>>>>>>>>>>>>>>>>>>五、软件描述>>>>>>>>>>>>>>>>>>>>>>>>>>>1.程序流程图>>>>>>>>>>>>>>>>>>>>>>>>2.判断编码电平流程图>>>>>>>>>>>>>>>>>六、操作说明>>>>>>>>>>>>>>>>>>>>>>>>>>>七、实施步骤>>>>>>>>>>>>>>>>>>>>>>>>>>>1.步骤>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>2.PCB制作流程>>>>>>>>>>>>>>>>>>>>>>>3.原理图及电路分析>>>>>>>>>>>>>>>>>>>>八、项目制作原件清单>>>>>>>>>>>>>>>>>>>>九、项目程序>>>>>>>>>>>>>>>>>>>>>>>>>>>>十、毕业作品实物照>>>>>>>>>>>>>>>>>>>>>>> 十一、毕业设计总结>>>>>>>>>>>>>>>>>>>>>>>一、摘要随着我国工业化、信息化进程的高速发展,电子信息产业蓬勃发展,国内对单片机及其外围设备研究越来越深入,实用也越来越广泛。
题目:基于红外遥控的步进电机.03

系统结构
(二)红外接收系统 红外接收系统主要有由光敏二极管构成的红外接收
电路及单片机构成。红外接收系统硬件电路结构图如 图2-2所示。
系统结构
(三)单片机控制步进电机系统 单片机控制步进电机系统主要由单片机、液晶显示
及步进电机构成。单片机控制步进电机系统硬件电路 结构图如图2-3所示。
红外遥控步进电机课题设计要求: 1、实现红外遥控; 2、通过红外遥控,实现步进电机的正转、反 转及转速控制; 3、在液晶屏上显示出来。
设计要点
系统设计主要包括硬件和软件两大部分,依 据控制系统的工作原理和技术性能,将硬件和软 件分开设计。
硬件设计部分包括合理选择元器件、绘制电 路原理图等。
VCC
复位电路设计
RE SE T
C3
R1
VCC
10μF
10K
D1
Res et
1N414 8
四、软件程序设计
红外遥控步进电机总体程序结构图
键盘扫描程序流程图
红外发射程序流程图
红外接收程序流程图
液晶显示程序流程图
单片机控制步进电机程序流程图
毕业论文答辩
题目:基于红外遥控的步进电机控制设计
指导老师:陈锦妮 学生:崔鑫
一、概述
在目前这个科技突飞猛进的时代,科技的发展也越 来越实用化、生活化,与人类的生活息息相关,为人 类提供便捷。集很多优势和特点于一身的红外控制、 单片机、步进电机的结合必然的成为了一种趋势,红 外遥控步进电机应运而生。随着它的发展与应用,人 们的生活也将更加便捷。基于单片机的红外遥控技术 是一种无线、非接触控制技术,具有抗干扰能力强, 信息传输可靠,功耗低,成本低,易实现等显著优点, 被诸多电子设备特别是家用电器广泛采用,并越来越 多的应用到计算机系统中。本文介绍的系统可以通过 红外遥控实现对步进电机的转速和角位移的控制,并 通过液晶显示器显示出来。
步进电机实验报告(1)

步进电机控制实验一、实验目的步进电机作为一种数字控制电机,可以准确的控制角度和距离应用非常广泛,本实验利用SPCE061A单片机通过自己编写程序实现步进电机的控制使我们加深对步进电机的了解,同时学会使用步进电机的驱动芯片WZM-2H042M。
另外要求我们掌握单片机控制步进电机的硬件接口电路,以及熟悉步进电机的工作特性。
二、实验内容根据步进电机驱动电路,使用单片机驱动步进电机,控制步进电机正转、反转操作。
三、实验要求按实验内容编写程序,并在实验仪上调试和验证。
四、实验说明1.步进电动机有三线式、五线式、六线式三种,但其控制方式均相同,必须以脉冲电流来驱动。
若每旋转一圈以20个励磁信号来计算,则每个励磁信号前进18度,其旋转角度与脉冲数成正比,正、反转可由脉冲顺序来控制。
2.步进电动机的励磁方式可分为全部励磁及半步励磁,其中全步励磁又有1相励磁及2相励磁之分,而半步励磁又称1-2相励磁。
图为步进电动机的控制等效电路,适应控制A、B、/A、/B的励磁信号,即可控制步进电动机的转动。
每输出一个脉冲信号,步进电动机只走一步。
因此,依序不断送出脉冲信号,即可步进电动机连续转动。
a.1相励磁法:在每一瞬间只有一个线圈导通。
消耗电力小,精确度良好,但转矩小,振动较大,每送一励磁信号可走18度。
若欲以1相励磁法控制步进电动机正转,其励磁顺序如图所示。
若励磁信号反向传送,则步进电动机反转。
励磁顺序: A→B→C→D→AA B C DSTEP1 1 0 0 02 0 1 0 03 0 0 1 04 0 0 0 1b.2相励磁法:在每一瞬间会有二个线圈同时导通。
因其转矩大,振动小,故为目前使用最多的励磁方式,每送一励磁信号可走18度。
若以2相励磁法控制步进电动机正转,其励磁顺序如图所示。
若励磁信号反向传送,则步进电动机反转。
励磁顺序: AB→BC→CD→DA→ABSTEP A B C D1 1 1 0 02 0 1 1 03 0 0 1 14 1 0 0 1c.1-2相励磁法:为1相与2相轮流交替导通。
红外遥控步进电机

红外控制步进电机一、引言红外线遥控是目前使用最广泛的一种通信和遥控手段。
由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。
工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。
1、红外遥控系统通用红外遥控系统由发射和接收两大部分组成。
应用编/解码专用集成电路芯片来进行控制操作,如图1所示。
发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。
图1 红外遥控系统原理图2、红外发射器及其编码遥控发射器专用芯片很多,本实验以日本NEC的uPD6121G组成发射电路(一般家庭用的DVD、VCD、音响都使用这种编码方式)。
当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。
这种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.6 85ms、周期为2.25ms的组合表示二进制的“1”,特别注意所有波形,其接收端的与发射相反,其发射波形如图2所示。
图2 遥控码的“0”和“1”上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。
然后再通过红外发射二极管产生红外线向空间发射,为了使接受可靠,一般发射还需发射引导码,引导码位9ms的高电平和4.5ms的低电平,如图3所示。
图3 遥控发射波形数据UPD6121G产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。
该芯片的用户识别码固定为十六进制01H;后16位为8位操作码(功能码)及其反码。
UPD6121G最多额128种不同组合的编码。
- 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软件里编译调试的。