一、 实验目的
1、掌握keilc51软件与protues软件的联合仿真调试的方法 2、掌握步进电机的工作原理及控制方法 3、掌握步进电机的不同编程方法 二、 实验内容
1、用protues设计一四相六线步进电机控制电路。要求利用p1口做为步进电机的控制接口,通过达林顿阵列ULN2003A。参考电路给出。
2、编写程序,实现步进电机的正反转控制。正反转时间分别持续10秒时间。如此循环。
3、设计一可调速度步进电机控制电路。P3.0~P3.2分别接按键K1~K3,其中K1为正反转控制按键,K2为加速按键,K3为减速按键,要求速度7档可调,加减速各设三档,复位时位于4档,要求每档速度变化明显。 三、 实验仪器与设备
1、微机一台 2、keilC51 集成开发环境 3、Proteus仿真软件 四、实验说明
1、步进电机控制原理;
(1) 步进电机是利用电磁铁的作用原理,将脉冲信号换为线位移或角位移的电
机。每来一个脉冲,步进电机转动一定的角度,带动机械移动一小段距离。特点:来一个脉冲,转动一个步距角。控制脉冲频率,可控制电机转速。改变脉冲顺序,可改变转动方向。 2、ULN2003A:七达林顿阵列
ULA2003A是集成达林顿管反向驱动电路,内部还集成了一个消线圈反电动势
的二极管,可以用来驱动电机、继电器等功率器件。它是双列16脚封装、NPN晶体管矩阵,最大驱动电压50v,输入电压5v。
五、 实验步骤 1、用proteus设计电路
2、在keilc51中编写键盘识别程序,编写通过后,与proteus联合调试 3、观察1602是否能正确显示
六、实验程序及电路图 1、正反转控制
#include #define uchar unsigned char #define uint unsigned int char code foreward[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; sbit A1=P1^0; sbit B1=P1^1; sbit C1=P1^2; sbit D1=P1^3; bit flag; void delay(uchar c) {uchar a,b; for(;c>0;c--) for(b=142;b>0;b--) for(a=2;a>0;a--);} void time0() interrupt 1 { uchar count; TH0=(65536-50000)/256; TL0=(65536-50000)%256; 2.可调速控制 #include #define uchar unsigned char #define uint unsigned int char code foreward[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; char code speed[]={125,110,90,70,50,40,30}; uchar code table[]={0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8}; sbit A1=P1^0; sbit B1=P1^1; sbit C1=P1^2; sbit D1=P1^3; sbit k1=P3^0; sbit k2=P3^1; sbit k3=P3^2; bit flag,flag1; uchar i,j; count++; if(count==200) {count=0; flag=!flag;} } void main() { uchar i; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;ET0=1;TR0=1; while(1) { for(i=0;i<8&&flag==0;i++) { P1=foreward[i]; delay(100);} for(i=0;i<8&&flag==1;i++) { P1=foreward[7-i]; delay(100);} } } void delay(uint c) {uchar a,b; for(;c>0;c--) for(b=142;b>0;b--) for(a=2;a>0;a--);} void main() { TMOD=0x01; TH0=(65536-2000)/256; TL0=(65536-2000)%256; EA=1;ET0=1;TR0=1; P2=table[j];j=3; while(1) { for(i=0;i<8&&flag1==0;i++) { P1=foreward[i]; delay(speed[j]);} for(i=0;i<8&&flag1==1;i++) { P1=foreward[7-i]; delay(speed[j]);} } } void time0() interrupt 1 { TH0=(65536-2000)/256; TL0=(65536-2000)%256; P2=table[j]; if(P3!=0xff&&flag==0) { flag=1; 电路图 switch(P3) {case 0xfe:flag1=!flag1;break; case 0xfd:{if(j>=6){j=6;}else{ j++;}break;} case 0xfb:{if(j<=0){j=0;}else {j--;}break; } } } if(P3==0Xff) flag=0; } C120uFC2X120uFU119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD39383736353433322122232425262728101112131415161712345678100CRYSTAL18XTAL29RSTR1C3220u500293031PSENALEEARN1161514131211109U2916151413121110COM1C2C3C4C5C6C7CULN2003A1B2B3B4B5B6B7B123456712345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51正反转控制加速减速+52.四、 实验总结 按键检测时,要设置标志位,防止按键没被检测到。 因篇幅问题不能全部显示,请点此查看更多更全内容