直流电机正反转控制.docx

上传人:b****7 文档编号:15392143 上传时间:2023-07-04 格式:DOCX 页数:13 大小:89.90KB
下载 相关 举报
直流电机正反转控制.docx_第1页
第1页 / 共13页
直流电机正反转控制.docx_第2页
第2页 / 共13页
直流电机正反转控制.docx_第3页
第3页 / 共13页
直流电机正反转控制.docx_第4页
第4页 / 共13页
直流电机正反转控制.docx_第5页
第5页 / 共13页
直流电机正反转控制.docx_第6页
第6页 / 共13页
直流电机正反转控制.docx_第7页
第7页 / 共13页
直流电机正反转控制.docx_第8页
第8页 / 共13页
直流电机正反转控制.docx_第9页
第9页 / 共13页
直流电机正反转控制.docx_第10页
第10页 / 共13页
直流电机正反转控制.docx_第11页
第11页 / 共13页
直流电机正反转控制.docx_第12页
第12页 / 共13页
直流电机正反转控制.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

直流电机正反转控制.docx

《直流电机正反转控制.docx》由会员分享,可在线阅读,更多相关《直流电机正反转控制.docx(13页珍藏版)》请在冰点文库上搜索。

直流电机正反转控制.docx

直流电机正反转控制

(课程设计说明书

(2015/2016学年第二学期)

课程名称:

单片机应用技术课程设计

题目:

直流电机正反转控制

专业班级:

电气工程及其自动化1321班

学生姓名:

学号:

指导教师:

设计周数:

两周

设计成绩:

2016年6月24日

一、课程设计目的-----------------------------------3

二、课程设计任务及要求-----------------------------3

2.1原始数据及主要任务------------------------------------------3

2.2技术要求----------------------------------------------------3

三、单片机简介-------------------------------------3

四、软件设计---------------------------------------4

4.1系统分析及应用种类-------------------------------------------4

4.2系统设计-----------------------------------------------------5

5、电路设计---------------------------------------5

5.1电机驱动电路设计------------------------------------------5

5.2显示电路设计-------------------------------------------------6

5.3按键设计-----------------------------------------------------6

5.4Proteus仿真图-----------------------------------------------6

5.5Protel99se原理图-------------------------------------------7

六、程序设计---------------------------------------7

七、操作控制--------------------------------------12

八、心得体会--------------------------------------12

九、参考文献--------------------------------------12

一、课程设计目的

通过长达两周的课程设计,加深对《单片机》课程所学理论知识的理解,运用所学理论知识解决实际问题。

结合课程设计的内容,学会利用Protel软件绘制电路原理图,掌握电路的设计与组装方法,进行软硬件联机调试。

学会查阅相关专业技术资料及设计手册,提高进行独立设计的能力并完成课程设计相关任务。

二、课程设计任务及要求

2.1原始数据及主要任务

1.设计直流电机控制电路。

2.设计数码管显示电路。

3.设计开关电路。

4.分配地址,编写系统程序。

5.利用Protel设计硬件电路原理图和PCB图。

6.软硬件联机调试。

7.书写设计报告。

2.2技术要求

设计一个以MCS-51单片机为核心,使用I/O口控制三极管连接继电器驱动小型,直流电机,控制正反转。

用两个数码管分别显示两个正反转控制开关控制电机正反转的次数。

三、单片机简介

AT89C51单片机,其内部带有4KB的掩膜ROM。

无需扩展外部程序存储器。

其中:

CVV:

供电电压。

GND:

接地。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

P3口也可作为AT89C51的一些特殊功能口:

P3.0RXD(串行输入口);P3.1TXD(串行输出口);P3.2/INT0(外部中断0);P3.3/INT1(外部中断1);P3.4T0(记时器0外部输入);P3.5T1(记时器1外部输入);P3.6/WR(外部数据存储器写选通);P3.7/RD(外部数据存储器读选通)。

RST:

复位输入。

EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器,不管是否有内部程序存储器。

当/EA端保持高电平时,此间内部程序存储器。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:

来自反向振荡器的输出。

4、软件设计

4.1系统分析及应用种类:

应用的软件有Protel99seProteus7.5KeiluVision4.

1Protel99se的应用

(1)在桌面上新建立文件夹重名名为直流电机正反转控制

(2)打开Protel99se软件

(3)运行Protel99se

(4)点击File文件New新建

(5)注意保存形式为.DDB

2Proteus7.5的应用

(1)打开Proteus7.5软件。

(2)在左上文件中新建设计。

(3)在界面的正上方的“库”中搜索要用的元件,然后拖入新建设计中。

(4)连线,连线有三种无模式连线,自动连线模式,动态光标显示。

(5)移动元件备注元件等。

3KeiluVision4的应用

(1)打开KeiluVision4,点击project,在新建Keilproject。

(2)首先要选择保存的途径,在新建文件名,最后保存文件。

(3)保存文件啊后会弹出窗口,选择要运行的文件,选好后点击OK会弹出“是”或“否”,只需按否。

(4)新建编写程序窗口。

(5)在新建编写程序窗口写程序。

(6)保存程序文件必须是.C。

(7)最后,将相关的程序放到Protuse软件中进行仿真。

4.2系统设计:

根据课程设计要求在各个软件中进行设计。

1.首先应用Protel99se进行原理图设计,

(1)在Protel99se中先设计单片机画出80C51引脚图。

(2)在Protel99se中设计画出共阳极数码管的引脚图。

(3)然后再Protel99se设计原理图界面插入设计的单片机引脚元件和共阳极数码管引脚元件,按课程要求设计电路,其次进行链接元件。

2.设计原理通过后,在Proteus7.5进行设计图的修饰和绘制。

3.在Proteus7.5中绘制好原理图,然后在KeiluVision4中按要求编写设计程序。

4.编写好程序在KeiluVision4中编译无误后将程序导入Proteus7.5的原理图中进行仿真。

五、电路设计

1、电机驱动电路设计:

驱动电路为三极管驱动的桥式电路。

2.显示电路设计

采用LED共阴极数码管动态显示数据与个项参数,方法简单,容易控制,如图:

3.按键设计

该系统中只运用到三个控制按钮,即“正转”,“反转”,“停止”,由于按钮较少,所以采用独立键电路,这种按键电路的按键结构相对行列式按键电路更简单。

如图:

4、Proteus仿真图

5.Protel99se原理图

6、程序设计

#include

#include

#defineINT8Uunsignedchar

#defineINT16Uunsignedint

#defineS1_ON()(P3&(1<<0))==0x00//正转

#defineS2_ON()(P3&(1<<2))==0x00//停转

#defineS3_ON()(P3&(1<<1))==0x00//反转

#defineForward0

#defineStop1

#defineBackward2

sbitM_DIR=P1^0;//方向控制

sbitM_PWM=P1^1;//PWM调速控制

sbitKey_INC=P3^0;//加速键

sbitKey_DEC=P3^1;//减速键

#defineu8unsignedchar

#defines8signedchar

#defineu16unsignedshort

#defines16signedshort

#defineu32unsignedint

#defines32signedint

#definefp32float

#definefp64double

sbitw1=P1^2;

sbitw2=P1^3;

#defineDIG_SEGP2//段选

u8codeu8DigTab[18]=

{

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x00,0x39,0x5e,0x79,0x71,

0x40,0x00

};

//0、1、2、3、4、5、6、7、

//8、9、A、B、C、D、E、F、

//-

u8idatau8DigShow1;

u8idatau8DigShow2;

u8idatau8DigShow3;

u8idatau8DigShow4;

u8u8DigShowTemp=0;

voiddelay_ms(u16cnt)

{

u16x;

for(;cnt>0;cnt--)

{

for(x=110;x>0;x--);

}

}

//-----------------------------------------------------------------

//延时函数

//-----------------------------------------------------------------

voiddelay_us(INT16Ux){for(;x>0;x--)_nop_();}

//-----------------------------------------------------------------

//主程序

//-----------------------------------------------------------------

/*************************************************************

*函数名:

dis_dri

*函数功能:

数码管扫描函数

*输入:

*输出:

**************************************************************/

voiddis_dri(void)

{

staticu8u8DisStep=1;

DIG_SEG=0x00;

switch(u8DisStep)

{

case1:

//显示第1位

{

u8DigShowTemp=u8DigTab[u8DigShow1];

DIG_SEG=u8DigShowTemp;

w1=0;w2=1;

}

break;

case2:

//显示第2位

{

u8DigShowTemp=u8DigTab[u8DigShow2];

DIG_SEG=u8DigShowTemp;

w1=1;w2=0;}

break;

}

u8DisStep++;

if(u8DisStep>2)//扫描完8个数码管后,重新从第一个开始扫描

{

u8DisStep=1;

}

}

voidmain()

{

TMOD|=0x01;

TH0=0xf8;

TL0=0x2f;//?

?

?

?

?

?

?

(65535-63535)

TR0=1;//?

?

?

?

?

ET0=1;//?

?

?

ES=1;

EA=1;

u8DigShow1=0;

u8DigShow2=0;

u8DigShow3=0;

u8DigShow4=0;

while

(1)

{

intspeed=200;

charstr_flag;

charcnt_a;

charcnt_b;

if(S2_ON())

{

P0=~(1<

M_DIR=0;M_PWM=0;

str_flag=0;

continue;

}

if(S1_ON())

{

delay_ms(10);

if(S1_ON())

{

while((P3&(1<<0))==0x00);

M_DIR=0;P0=~(1<

str_flag=1;

if(++cnt_a>10)

{

cnt_a=1;

}

u8DigShow1=cnt_a%10;

}

}

if(S3_ON())

{

delay_ms(10);

if(S3_ON())

{

while((P3&(1<<1))==0x00);

if(++cnt_b>10)

{

cnt_b=1;

}

u8DigShow2=cnt_b%10;

}

M_DIR=1;P0=~(1<

str_flag=1;

}

if(Key_INC==0)speed=speed<400?

speed+1:

400;

if(Key_INC==0)speed=speed>0?

speed-1:

0;

if(str_flag==1)

{

M_PWM=1;delay_us(speed);

M_PWM=0;delay_us(400-speed);

}

}

}

voidtime0_interrupt()interrupt1

{

dis_dri();

TH0=0xf8;

TL0=0x2f;//?

?

?

?

(65535-63535)

TR0=1;

}

7、操作控制

1、当按下正转按钮时,直流电机根据制定默认状态开始转动,直流电机正转,数码管计数正转次数(此时按下反转不影响正转且反转数码管不计数);

2、当再次按下反转按钮时,直流电机反向转动,当按下反转按钮时,直流电机反转,数码管计数反转次数(此时按下正转不影响反转切正传数码管不计数);

3、当数码管计数满以后,数字归零,

4、按下停止按钮,电机停止转动。

八、心得体会

9、参考文献

【1】张毅刚.单片机原理及应用.高等教育出版社

【2】康华光电子技术基础模拟部分高等教育出版社

【3】郭天祥51单片机C语言教程电子工业出版社

【4】康光华电子技术基础模拟部分高等教育出版社

课程设计

评语

课程设计

成绩

指导教师

(签字)

年月日

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2