您的当前位置:首页正文

单片机实验四总结报告 2

来源:个人技术集锦


单片机实验四报告

直流电机实验实验

一. 实验目的

利用 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<10;i++) for(j=0;j<100;j++); }

总结:

通过是要进一步熟悉了之前对于51单片机的开发环境,巩固掌握了单片机开发语言的使用以及循环结构的设置及调用。通过上机,将书本上学习到的知识运用到实际中,实际操作的过程中通过修改代码达到改变控制的效果。

因篇幅问题不能全部显示,请点此查看更多更全内容