欢迎来到天天文库
浏览记录
ID:39615497
大小:127.00 KB
页数:6页
时间:2019-07-07
《实验4 用单片机I0口驱动步进电动机》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、CHANGZHOUINSTITUTEOFTECHNOLOGY新型单片机实践题目:用单片机I/O口驱动步进电机二级学院(直属学部):延陵学院专业:电气工程及其自动化班级:10电Y2学生姓名:熊群学号:10120827一、实验目的1、进一步掌控单片机应用系统的软硬件设计方法2、熟悉步进电机的工作原理和驱动程序的编写3、了解单片机系统常用的功率驱动电路ULN2803的应用二、实验电路元器件编号元器件名称说明U1AT89C52AT89C52单片机U2ULN2803大电流输出达林顿管列阵×8K1~K6SWITCH按键M1MOTOR-
2、STEPPER步进电动机三、实验流程图四、调试和实验现象1、当按下K7的时候,电机开始顺时针启动;当按下K6的时候,电机逆时针转动。2、按下K1,K2,K3,K4时会有加速效果,全部按下的时候效果很明显。五、实验程序#include//片内寄存器定义#includeunsignedcharucMotorDrvPuls;/*电动机运转时初值*/#defineOUTPUTP2/*定义P2口为电动机驱动信号口*/#defineINPUTP1/*定义P1口为控制信号输入口*/sbitSTAR
3、TUP=P1^7;//启动/停止开关sbitFORREV=P1^6;//正转/反转开关voidtime(unsignedintucMs);/*延时单位:ms*//*************电动机定位*****************/voidposition(void)//延时50us{OUTPUT=0x11;time(200);OUTPUT=0x22;time(200);OUTPUT=0x44;time(200);OUTPUT=0x88;time(200);ucMotorDrvPuls=0x11;OUTPUT=0x11;
4、}/**************主程序********************/voidmain(){unsignedcharucTimes;time(100);position();//步进电动机定位OUTPUT=0x0;//步进电动机停止time(100);P1=0xff;//P1口输入,首先置全1while(1){ucTimes=(P1^0x0f)&0x0f;//读P1口低4位并取反if(!STARTUP){//启动/停止开关=0,启动if(FORREV){//正转/反转开关=1,正转OUTPUT=ucMotorDr
5、vPuls;//送正转控制信号ucMotorDrvPuls=_crol_(ucMotorDrvPuls,1);//计算下一个控制信号}else{//正转/反转开关=0,反转OUTPUT=ucMotorDrvPuls;//送反转控制信号ucMotorDrvPuls=_cror_(ucMotorDrvPuls,1);//计算下一个控制信号}time(380-ucTimes*16);//延时}else{ucMotorDrvPuls=0x11;//设置初始值}}}voiddelay_5us(void)//延时5us,晶振改变时只改
6、变这一个函数{_nop_();_nop_();_nop_();_nop_();}/*delay_50us*/voiddelay_50us(void)//延时50us{unsignedchari;for(i=0;i<4;i++){delay_5us();}}/******************延时100us********************/voiddelay_100us(void)//延时100us{delay_50us();delay_50us();}/*延时单位:ms*/voidtime(unsignedint
7、ucMs){unsignedcharj;while(ucMs>0){for(j=0;j<10;j++)delay_100us();ucMs--;}}六、实验效果图
此文档下载收益归作者所有