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