单片机实验四报告
直流电机实验实验
一. 实验目的
利用 PWM 控制直流电机的转动速度。
二. 实验设备及器件
IBM PC 机 一台
DP-51PRO 单片机综合仿真实验仪 一台
三. 实验内容
学习如何控制直流电机。PWM
功率驱动电路如下:
原理图如图 3.34,只要ZDJ_A 的电压比ZDJ_B 的电压高,电机正转。如果ZDJ_B 的电压比ZDJ_A 高,电机反转。
四. 实验要求
利用实验六的程序,用D1 区的按键KEY2 与KEY3 改变PWM 的占空比来控制直 流电机的转速。
五. 实验步骤
1.用导线连接 A2 区的P11 与D1 区J53 接口的KEY1。
2.用导线连接 A2 区的P12 与D1 区J53 接口的KEY2。
3.用导线连接 A2 区的P10 与B8 区的J78 接口ZDJ_A。
4.B8 区J78 接口的ZDJ_B 连接到C1 区的GND。
5.短接 B8 区JP18 的电机电源跳线。
六. 实验参考程序
#include \"reg52.h\"
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
unsigned char PWMH;//高电平脉冲的个数
//总脉冲个数 unsigned char PWM;
unsigned char COUNTER;
void K1CHECK();
void K2CHECK();
void INTTO() interrupt 1//定时器0中断服务程序,在这里控制P1_0口的输出电平,驱动电机
{
COUNTER++;//计数值加1 if((COUNTER!=PWMH)&&(COUNTER==PWM))//如果脉冲计数个数达到了预定的总脉冲个数
{
COUNTER=1;
} P1_0=1;//计数器复位 //P1.0变为高电平1,开始新的下一周期
else if(COUNTER==PWMH)//如果脉冲计数个数达到了预定的高电平脉冲数
P1_0=0;//P1.0输出为高电平1的脉冲个数已经达到,开始变为低电平0
}
main()
{
PWMH=0x02;//预定高电平脉冲个数
COUNTER=0x01;PWM=0x15;//预定总脉冲个数 TMOD=0x02;TL0=0x38;TH0=0x38; ET0=1;EA=1;TR0=1;while(1) {if(P1_1==0)K1CHECK();//扫描按键KEY1,如果符合,进入电机转速加速处理函数 if(P1_2==0)//定时器0在模式2下工作 //定时器每200us产生一次溢出,设定自动重装的值。//使能定时器0中断 //使能总中断 //定时器0开始计时
K2CHECK();//扫描按键KEY2,如果符合,进入电机转速减速处理函数
}
}
void K1CHECK()
{
while(P1_1==0); if(PWMH!=PWM) {PWMH++;//高电平脉冲个数加1,增加占空比 if(PWMH==PWM)//如果高电平脉冲个数等于总的脉冲个数, {} TR0=0;//关闭定时器, P1_0=1;//P1_0恒输出1,达到最大转速 else {} if(PWMH==0x02)//高电平脉冲个数增加到2时候,开启定时器 {TR0=1;}
}
}
void K2CHECK()
{
unsigned char TEMP;
while(P1_2==0);
if(PWMH!=0x01) {PWMH--;//高电平脉冲个数减1,减少占空比TEMP=PWM; TEMP--; if(PWMH==0x01)//如果高电平脉冲个数减少到1, {} else {} if(PWMH==TEMP) {} TR0=1;TR0=0;//关闭定时器, P1_0=0;//P1_0恒输出0,电机停止转动
} }
步进电机控制实验
一.实验目的
了解步进电机的工作原理,掌握它的转动控制方式和调速方法。
二. 实验设备及器件
IBM PC 机 一台
DP-51PRO 单片机综合仿真实验仪 一台
三. 实验内容
1.编写程序,通过单片机的 P1 口控制步进电机的控制端,使其按一定的控制方式进 行转动。
2.分别采用双四拍(AB→BC→CD→DA→AB)方式、单四拍(A→B→C→D→A)方
式和单双八拍(A→AB→B→BC→C→CD→D→DA→A)方式编程,控制步进电机 的转动方向和转速。
3.观察不同控制方式下,步进电机转动时的振动情况和步进角的大小,比较这几种控 制方式的优缺点。
四. 实验要求
学会步进电机的工作原理和控制方法,掌握一些简单的控制电路和基本的电机基础
知识。
五. 实验步骤
1.安装C10区JP6接口上的短路帽,将C10区J41接口与A2区J61接口的P10~P13 对应相连。
2.打开程序调试软件,下载运行编写好的软件程序,观察步进电机的转动情况。
3.修改步进电机的控制程序,再次运行程序,比较它们的不同控制效果。
六. 实验程序代码
#include \"reg51.h\"
void DELAY();
main()
{
while(1) {
P1=0x08;DELAY(); P1=0x0C;DELAY(); P1=0x04;DELAY(); P1=0x06;DELAY(); P1=0x02;DELAY(); P1=0x03;DELAY(); P1=0x01;DELAY(); P1=0x09;DELAY(); //A //AB //B //BC //C //CD //D //DA
}
}
void DELAY()
{
unsigned char i,j;
for(i=0;i
for(j=0;j
}
总结:
通过是要进一步熟悉了之前对于51单片机的开发环境,巩固掌握了单片机开发语言的使用以及循环结构的设置及调用。通过上机,将书本上学习到的知识运用到实际中,实际操作的过程中通过修改代码达到改变控制的效果。