课程设计报告之直流电机控制(C语言版)Word文档格式.doc

上传人:b****3 文档编号:15413658 上传时间:2022-10-30 格式:DOC 页数:13 大小:306KB
下载 相关 举报
课程设计报告之直流电机控制(C语言版)Word文档格式.doc_第1页
第1页 / 共13页
课程设计报告之直流电机控制(C语言版)Word文档格式.doc_第2页
第2页 / 共13页
课程设计报告之直流电机控制(C语言版)Word文档格式.doc_第3页
第3页 / 共13页
课程设计报告之直流电机控制(C语言版)Word文档格式.doc_第4页
第4页 / 共13页
课程设计报告之直流电机控制(C语言版)Word文档格式.doc_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

课程设计报告之直流电机控制(C语言版)Word文档格式.doc

《课程设计报告之直流电机控制(C语言版)Word文档格式.doc》由会员分享,可在线阅读,更多相关《课程设计报告之直流电机控制(C语言版)Word文档格式.doc(13页珍藏版)》请在冰豆网上搜索。

课程设计报告之直流电机控制(C语言版)Word文档格式.doc

2).通过改变pwm的极性从而改变电机的转向,实现正反转

3).能够通过数码显示管显示电机的转速和电机的转向

4).通过启动键唯一启动电机,从而达到防止电机误启动的目的

5).能够通过键盘快速达到电机预先设定的速度和转向

备注:

由于没有传感器,所以本课程设计中没有设计测速模块,所显示的速度为理论速度,并非电机的实际转速

二.设计原理图

注:

本原理图采用proteus绘制

三.设计原理及其实现方法

1.速度调节的实现

通过控制L298的使能端“允许”或者“禁止”,通过改变a

(脉冲宽度)的值,从而达到控制PWM脉冲宽度调节电机转速的目的

2.转向的控制

通过L298中的H桥,从AT89C51中的P1_6和P1_7输出控制信号控制BJT的基极电压,控制L298中H桥的BJT通断,从而达到控制电机转向的目的

附:

A.L298的原理图

B.本设计所需要芯片以及作用

AT89C51:

单片机

L298:

控制电机驱动和转向

74L408:

四与门芯片

8255A:

用于扩展51端口,作显示用

2803:

显示缓冲用

MAX239:

串口通讯芯片

四.流程图

入口

启动

NY

P1_5=1,P1_4=1

停止

P1_5=0

Y

加速

N

a=a+n,P1_4=0

Y

a>

150

a=150

Y

a=a-n,P1_4=0

减速

P1_6=0,P1_7=1,P1_4=1

Or

P1_6=1,P1_7=0,P1_4=1

a<

10

NN

反转/正传

Y

a=10

进入预先设定的值

预设速度

YN

电机停转

五.程序清单

#include<

at89x51.h>

motor_ctr.h>

absacc.h>

stdio.h>

intrins.h>

#definePAXBYTE[0x1FFF]//A口地址;

#definePBXBYTE[0x3FFF]//B口地址;

#definePCXBYTE[0x5FFF]//C口地址;

#defineCONXBYTE[0x7FFF]//*控制字地*/;

ucharkey=0;

//定义key为全局变量

uinta=100;

ucharn=5;

//单次增加的步长,用于输出脉冲占空比控制

uintk1=0,mn=10;

//设置mn为转向标志位

ucharbai,shi,ge;

uintseg_code[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,0xff};

//0~9的七段显示代码;

/*THEMAINPROCESS*/

voidmain()

{

CON=0x80;

P1_5=0;

//使电机停转;

TMOD=0x15;

//定时器1工作在模式1

TH1=0xFF;

//定时器1的溢出中断时间为50ms;

TL1=0xb0;

ET1=1;

TR1=1;

while

(1)

{

key=GetKey();

/*case1~case9是预先设定的速度,方便电机直接调节到该速度,避免通过’+’键调节*/

switch(key)

{case'

1'

:

{a=10;

break;

}

case'

2'

{a=25;

break;

}

case'

3'

{a=40;

4'

{a=55;

5'

{a=70;

6'

{a=90;

7'

{a=110;

8'

{a=130;

9'

{a=150;

+'

{P1_4=0;

control();

} //电机加速

case'

-'

{control();

} //’-‘代表减速

='

{P1_7=0;

P1_6=1;

mn=0;

}//电机顺时针转

c'

{P1_7=1;

P1_6=0;

mn=1;

control();

} //逆时针转

/'

} //‘/‘键按下时,电机开始转动

default:

break;

//不影响电机运行

}

}

}

/*THEENDOFMAINPROCESS*/

/*THEINTERRUPTIONFUNCTION*/

voidtime()interrupt3//中断号为3,即是定时器1溢出中断

{//此处是计时50ms中断一次

TR1=0;

//此函数用于显示速度

k1+=TL0;

display(a/100,a%100/10,a%10,mn);

/*if(count==51)

{

sprintf(s,"

%04d"

k1%1000);

//注意sprintf的用法;

//确保有四位输出

count=1;

k1=0;

}

display(a,bai,shi,ge);

*/

TH1=0x3c;

TL1=0xb0;

TH0=0x00;

TL0=0x00;

TR1=1;

}

/*THEINTERRUPTIONFUNCTION*/

/*THEGETKEYFUNCTIONWHICHWASUSEDTOGETTHEINFORMATIONFROMTHEKEY*/

/*行信号从P1口的低四位读进,列信号从P2口的高四位读进*/

ucharGetKey()

{

P1_0=0;

P1_1=1;

P1_2=1;

P1_3=1;

P2_0=1;

P2_1=1;

P2_2=1;

P2_3=1;

_nop_();

_nop_();

//适当的延时以便消除抖动

if(!

P2_0)return'

;

if(!

P2_1)return'

P2_2)return'

if(!

P2_3)return'

P1_0=1;

P1_1=0;

P2_3){P1_4=0;

return'

*'

P1_0=1;

P1_2=0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 工作计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1