当前位置:
文档之家› 单片机实验 电机控制与综合实验
单片机实验 电机控制与综合实验
LED = LEDBuf[i];//取段码
OUTSEG = LED;
OUTBIT =~Pos;//显示一位八段管
Delay(2);
Pos >>= 1;
}
}
void UART0_ISR(void) interrupt 4{//UART0中断服务子程序
unsigned char temp;
if(RI) {
3、键盘设计方法有几种,分别是什么,它们的原理是什么?
stop_flag=0;//运行8192/2=4096拍,步距角5.625°/64
//两者相乘,即运行360度
delay(8192);
stop_flag=1;//停止1秒
delay(2000);
turn=1;//转动方向=1
speedlevel=4;//转速参数=4,1拍2ms
stop_flag=0;//运行16384/4=4096拍
(3)将MCU的INT0连接到DC_MOTOR的SPEED,DC_MOTOR的DRV连接到ANOUT。
接收设备乙:
(1)将MCU的TXD、RXD、INT0(P3.2)分别连接到RS485的TXD、RXD、E485;
(2)IO1~IO8顺次连接LED_A~LED_DP,CAP0、SDA、SCL顺次连接LED_C1、LED_C2、LED_C3、LED_C4。
case 1: //0、1
P0_0=1;P0_1=1;P0_2=0;P0_3=0;break;
case 2: //1
P0_0=0;P0_1=1;P0_2=0;P0_3=0;break;
case 3: //1、2
P0_0=0;P0_1=1;P0_2=1;P0_3=0;break;
case 4: //2
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
6)、备注:在该RS485的通讯中,关键是设置RS485的E485端的状态,从而决定是接收回来数据还是发送出去数据。
结果:
3、将直流电机的转速直接显示在当前实验板的数码管上。
五、实验结果及误差分析:
六、讨论的问题及结论、改进实验的建议:
1、显示设计的方法有几种,分别是什么,它们的原理是什么?
2、LED显示接口电路为什么需要驱动?如何解决驱动的问题?
}
}
2、直流电机检测,并通信。
步骤:
1)、将甲、乙两个实验箱MCU模块的跳线帽JP2端都短接在上侧。甲做发送设备,乙做接收设备。
2)、连线:
发送设备甲:
(1)将MCU的TXD、RXD、IO1(P0.0)和INT0分别连接到RS485的TXD、RXD、E485和单脉冲输出P-孔。
(2)顺序连接甲、乙两个实验箱的RS485的UR1差分接口(A、B分别对接)。
for(t=0;t<120;t++);
}
}
void Display(){
unsigned char i;
unsigned char Pos;
unsigned char LED;
Pos = 0x08;//初始位选字,从左边开始显示
for (i = 0; i <4; i++) {
OUTBIT = 0;//关所有八段管
}
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;
#include <reg51.h>
#define OUTBIT P1
#define OUTSEG P0
sbit EN = P3^2;
unsigned char LEDBuf[]={0,0,0,0};//显示缓冲区
code unsigned char LEDMAP[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f};
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
void init(void) {
PCON = 0x80;
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xfa;
TL1 = 0xfa;
TR1 = 1;
ES = 1;
EA = 1;
EN = 0;
}
void Delay(unsignedint x){
unsignedchar t;
while(x--){
实验箱步进电机28BYJ48,面板标注一周64格,每格5.625°。
28BYJ48基本参数及驱动方式:
5V,5线(含共电源线)4相,转子8齿,双拍步距角360/(4×8×2)=5.625°,减速比1/64。其中红色5号线,橙色4号线,黄色3号线,粉色2号线,蓝色1号线,由74LS07驱动。
四、实验内容与步骤(方法)、实验数据(表格)、数据处理:
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,速度最快
P0_0=0;P0_1=0;P0_2=1;P0_3=0;break;
case 5: //2、3
P0_0=0;P0_1=0;P0_2=1;P0_3=1;break;
case 6: //3
P0_0=0;P0_1=0;P0_2=0;P0_3=1;break;
case 7: //3、0
P0_0=1;P0_1=0;P0_2=0;P0_3=1;
3
3
分析、解决问题及创新能力
2
4
实验结果、数据处理
2
5
讨论及建议
1
一、实验目的:
1、掌握电机的应用;
2、掌握综合系统的设计。
二、实验设备(名称、型号):
联想启天M710E计算机、连接导线等
Techshine® EL-NC800综合创新实验实训系统
三、实验(设计)原理概述:
步进电机相数:产生不同对极N、S磁场的激磁线圈对数。常用m表示。
3)、分别连接好仿真器,上电,在甲设备PC机上打开Keil C环境,编译如下程序,进入调试状态,即将程序下载到“发送设备甲”的仿真器中。
#include <reg51.h>
sbit EN=P0^0;
unsigned int speedNum=0;
unsigned char timerCounter=0;
EN = 1;
}
void Speed_ISR(void) interrupt 0 { //电机计数中断程序
speedNum ++;
}
void T0_ISR(void) interrupt 1 { //定时1s中断程序
timerCounter ++;
if(timerCounter==20){
timerCounter=0;
步进电机拍数:完成一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即A-B-C-D-A,四相双四拍运行方式即AB-BC-CD-DA-AB,四相八拍运行方式即A-AB-B-BC-C-CD-D-DA-A。为提高步进电机负载能力和运行平稳,可使用四相八拍驱动方式。
if(spcount<=0){//如果转速参数计数<=0
spcount=speedlevel;//转速参数计数=转速参数
gorun();//每0.5ms步进
}
}
void delay(unsigned int endcount){
count=0;//定时中断计数=0,保证进入如下循环
do{}while(count<endcount);//如果定时中断计数<endcount循环
渤海大学学生实验报告
课程名称:单片机开课实验室:EDA技术实验室
实验室位置:理工3号楼707室完成实验时间:年月日
学院
新能源学院
专业/年级/班
微电子/2012/1
姓名
#####
实验题目
电机控制与综合实验
学号
#######
实验环境
指导教师
成绩
成绩评定标准:
序号
项目
满分成绩
备注
1
预习、实验原理
2
2