单片机实验电机控制与综合实验.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机实验电机控制与综合实验

渤海大学学生实验报告(理工类) 课程名称: 开课实验室: 实验室 实验室位置: 理工3号 楼 707 室 完成实验时间: 年 月 日 学院 专业/年级/班 /2012/1 姓名 实验题目 学号 实验环境 指导教师 成绩 成绩评定标准: 序号 项目 满分成绩 备注 1 预习、实验原理 2 2 实验内容与实验步骤 3 3 分析、解决问题及创新能力 2 4 实验结果、数据处理 2 5 讨论及建议 1 一、实验目的: 二、实验设备(名称、型号): 、连接导线等? EL-NC800综合创新实验实训系统 三、实验(设计)原理概述: 5V,5线(含共电源线)4相,转子8齿,双拍步距角360/(4×8×2)=5.625°,减速比1/64。其中红色5号线,橙色4号线,黄色3号线,粉色2号线,蓝色1号线,由74LS07驱动。 四、1、。 编程: 连线:将MCU的IO1IO4分别连接到STEP MOTOR的ORANGE、YELLOW、PINK、BLUE管脚。#include reg51.h sbit P0_0=P0^0; sbit P0_1=P0^1; sbit P0_2=P0^2; sbit P0_3=P0^3; static unsigned int count; //定时中断次数计数 static int step_index; //步进索引数,值为0-7,记录步进位置 static bit turn; //转动方向,为1逆时针,为0顺时针 static bit stop_flag; //停止标志,为1停止,为0运行 static int speedlevel; //转速参数,数值越大速度越慢,最小值为1,速度最快 static int spcount; //转速参数计数 void delay(unsigned int endcount);//延时函数声明,延时为endcount*0.5毫秒 void gorun(); //控制步进函数声明 void main(void){ count=0; //定时中断计数=0 step_index=0; //步进索引数=0 spcount=0; //转速参数计数=0 stop_flag=1;P0_0=0;P0_1=0;P0_2=0;P0_3=0; //停止 EA=1;ET0=1;TMOD=0x01;TH0=0xFE;TL0=0x0C;TR0=1; //允许T0方式1中断定时0.5ms启动 do{ turn=0; //转动方向=0 speedlevel=2; //转速参数=2,每拍1ms stop_flag=0; //运行 //两者相乘,即运行360度 delay(8192); stop_flag=1; //停止1秒 delay(2000); turn=1; //转动方向=1 speedlevel=4; //转速参数=4,1拍2ms stop_flag=0; //运行 delay(16384); stop_flag=1; //停止1秒 delay(2000); }while(1); } void timeint(void) interrupt 1{ //定时器0中断处理 TH0=0xFE;TL0=0x0C; //重装0.5ms初值 count++; //每0.5ms计数加1 spcount--; //每0.5ms转速参数计数减1 if(spcount=0){ //如果转速参数计数=0 spcount=speedlevel; //转速参数计数=转速参数 gorun(); //每0.5ms步进 } } void delay(unsigned int endcount){ count=0; //定时中断计数=0,保证进入如下循环 do{}while(countendcount); //如果定时中断计数endcount循环 } void gorun(){ //控制步进函数 if (stop_flag==1){ //如果停止标志=1,停止 P0_0=0;P0_1=0;P0_2=0;P0_3=0; return; //返回 } switch(step_index){ //步进索引数,值为0-7 case 0: //0 P0_0=1;P0_1=0;P0_2=0;P0_3=0;break; case 1: //0、1 P0_0=1;P0_1

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档