单片机实验报告步进电机控制系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息科学与技术学院
单片机及嵌入式课程设计
设计题目:步进电机控制系统
指导老师:林凡强
姓名:
学号:
班级:
二零一二年6月
1. 实验要求:
(1)正反转
(2)调速
(3)键盘输入
(4)数码管显示
2.设计要求:
(1)、按下不同的键,分别使步进电机实现顺时针和逆时针旋转。
(2)、电机运转状态可以是正反转,加速减速,几种不同速度的组合。
3、设计目的:
(1)学习基本电机系统程序编写等
(2)掌握电机的控制方法等
4、设计实验设备
硬件:PC机一台
自制单片机实验仪一套
其他小工具等
软件:Windows98/XP/2000系统,keil7.0集成开发环境
5、程序:
#include"reg51.h"
#define uint unsigned int
//#define delay_ms 5 //延时
sbit W=P3^6;
sbit R=P3^7;
sbit SEND=P3^0;
sbit CLOCK=P3^1;
int delay_ms=30;
sbit bu1=P1^4;
sbit bu2=P1^5;
sbit bu3=P1^6;
sbit bu4=P1^7;
uint flag=0;
unsigned int table[]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09,0xff}; uint h=0;
void delay(uint n) //延时程序
{
uint i,j;
for(i=0;i<100;i++)
for(j=0;j<n;j++);
}
void zhengzhuan() //正转
{
bu1=~bu1;
delay(delay_ms);
bu1=~bu1;
bu2=~bu2;
delay(delay_ms);
bu2=~bu2;
bu3=~bu3;
delay(delay_ms);
bu3=~bu3;
bu4=~bu4;
delay(delay_ms);
bu1=~bu1;
}
void fanzhuan() //反转
{
bu4=~bu4;
delay(delay_ms);
bu4=~bu4;
bu3=~bu3;
delay(delay_ms);
bu3=~bu3;
bu2=~bu2;
delay(delay_ms);
bu2=~bu2;
bu1=~bu1;
delay(delay_ms);
bu1=~bu1;
}
void senddata(unsigned int dat) //发送数据程序
{
unsigned int i=0;
for(;i<8;i++)
{
CLOCK=0;
SEND=dat>>i&1;
;
CLOCK=~CLOCK;
}
}
uint saomiao() //键盘扫描程序{
uint i,j,k1,k2=0x01,n;
uint A[]={0xfe,0xfd,0xfb,0xf7};
for(i=0;i<4;i++)
{
k2=0x01;
W=0;
P2=0x60;
P0=A[i];
delay(1);
W=1;
P2=0xA0;
W=0;
// k1=P0&0x0f;
// if(k1!=0x0f)
// {
for(j=0;j<4;j++)
{
n=P0&0x0F;
if(!(n&k2))
{
return(4*i+j);
}
k2<<=1;
}
// }
}
delay(100);
return(10) ;
}
void main()
{
uint m,r;
// W=0;
// P2=0x60;
// P0=0x00;
// ;
// W=1; //锁存P0口输出数据// P2=0xA0;
// W=0;
while(1)
{
W=0;
P2=0x60;
P0=0xf0;
W=1; //锁存P0口输出数据
P2=0xA0;
W=0;
m=P0&0x0F;
if(m!=0x0f)
{
delay(50);
m=P0&0x0f;
if(m!=0x0f)
{
// flag=!flag;
// switch(flag)
// {
// case 0: zhengzhuan();
// break;
// case 1: fanzhuan();
// break;
// default : ;
// }
h=saomiao();
senddata(table[h]);
}
}
r=h;
if(r==1)
{
zhengzhuan();
}
if(r==2)
{
fanzhuan();
}
if(r==5)
{delay_ms+=5;
if(delay_ms>100)delay_ms=200;
}
if(r==4)
{delay_ms-=5;
if(delay_ms<=5)
{
delay_ms= 5;
}
}
}
}
6、实验心得:
20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快
步进电机是一种将电脉冲信号转换成相应的角位移(或线位移)的电磁机械装置[1]。
现在比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)等。
整个实验过程中呢,源程序的编写比较麻烦,调试多次也没有得出理想的结果!
采用提出的步进电机控制系统,步进电机在工作频率内运行平稳,定位精度高。
该系统有效,实用,已在无人机器人系统中得到验证,结果有效可行。