欢迎来到天天文库
浏览记录
ID:61459777
大小:229.00 KB
页数:5页
时间:2021-02-01
《单片机实验四总结报告 .doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、单片机实验四报告直流电机实验实验一.实验目的利用PWM控制直流电机的转动速度。二.实验设备及器件IBMPC机一台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区
2、的J78接口ZDJ_A。4.B8区J78接口的ZDJ_B连接到C1区的GND。5.短接B8区JP18的电机电源跳线。六.实验参考程序#include"reg52.h"sbitP1_0=P1^0;sbitP1_1=P1^1;sbitP1_2=P1^2;unsignedcharPWMH;//高电平脉冲的个数unsignedcharPWM;//总脉冲个数unsignedcharCOUNTER;voidK1CHECK();voidK2CHECK();voidINTTO()interrupt1//定时器0中断服务程序,在这里控制P1_0口的输出电平,驱动电机{COUNTER++;//计数值加1if
3、((COUNTER!=PWMH)&&(COUNTER==PWM))//如果脉冲计数个数达到了预定的总脉冲个数{COUNTER=1;//计数器复位P1_0=1;//P1.0变为高电平1,开始新的下一周期}elseif(COUNTER==PWMH)//如果脉冲计数个数达到了预定的高电平脉冲数P1_0=0;//P1.0输出为高电平1的脉冲个数已经达到,开始变为低电平0}main(){PWMH=0x02;//预定高电平脉冲个数COUNTER=0x01;PWM=0x15;//预定总脉冲个数TMOD=0x02;//定时器0在模式2下工作TL0=0x38;//定时器每200us产生一次溢出,设定自动重
4、装的值。TH0=0x38;ET0=1;//使能定时器0中断EA=1;//使能总中断TR0=1;//定时器0开始计时while(1){if(P1_1==0)K1CHECK();//扫描按键KEY1,如果符合,进入电机转速加速处理函数if(P1_2==0)K2CHECK();//扫描按键KEY2,如果符合,进入电机转速减速处理函数}}voidK1CHECK(){while(P1_1==0);if(PWMH!=PWM){PWMH++;//高电平脉冲个数加1,增加占空比if(PWMH==PWM)//如果高电平脉冲个数等于总的脉冲个数,{TR0=0;//关闭定时器,P1_0=1;//P1_0恒输出
5、1,达到最大转速}else{if(PWMH==0x02)//高电平脉冲个数增加到2时候,开启定时器{TR0=1;}}}}voidK2CHECK(){unsignedcharTEMP;while(P1_2==0);if(PWMH!=0x01){PWMH--;//高电平脉冲个数减1,减少占空比TEMP=PWM;TEMP--;if(PWMH==0x01)//如果高电平脉冲个数减少到1,{TR0=0;//关闭定时器,P1_0=0;//P1_0恒输出0,电机停止转动}else{if(PWMH==TEMP){TR0=1;}}}}步进电机控制实验一.实验目的了解步进电机的工作原理,掌握它的转动控制方式
6、和调速方法。二.实验设备及器件IBMPC机一台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接口上的短路
7、帽,将C10区J41接口与A2区J61接口的P10~P13对应相连。2.打开程序调试软件,下载运行编写好的软件程序,观察步进电机的转动情况。3.修改步进电机的控制程序,再次运行程序,比较它们的不同控制效果。六.实验程序代码#include"reg51.h"voidDELAY();main(){while(1){P1=0x08;//ADELAY();P1=0x0C;//ABDELAY();P1=0x04;//BDELAY();P1=0
此文档下载收益归作者所有