单片机课程设计直流电机控制器程序设计.docx

上传人:b****6 文档编号:8469101 上传时间:2023-01-31 格式:DOCX 页数:37 大小:95.07KB
下载 相关 举报
单片机课程设计直流电机控制器程序设计.docx_第1页
第1页 / 共37页
单片机课程设计直流电机控制器程序设计.docx_第2页
第2页 / 共37页
单片机课程设计直流电机控制器程序设计.docx_第3页
第3页 / 共37页
单片机课程设计直流电机控制器程序设计.docx_第4页
第4页 / 共37页
单片机课程设计直流电机控制器程序设计.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

单片机课程设计直流电机控制器程序设计.docx

《单片机课程设计直流电机控制器程序设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计直流电机控制器程序设计.docx(37页珍藏版)》请在冰豆网上搜索。

单片机课程设计直流电机控制器程序设计.docx

单片机课程设计直流电机控制器程序设计

 

沈阳工程学院

课程设计

 

设计题目:

直流电机控制器程序设计

 

系别班级

学生姓名学号

指导教师职称

起止日期:

2010年12月27日起——至2011年1月7日止

 

沈阳工程学院

课程设计任务书

 

课程设计题目:

直流电机控制器程序设计

 

系别班级

学生姓名学号

指导教师职称

课程设计进行地点:

任务下达时间:

10年12月27日

起止日期:

10年12月27日起——至11年1月7日止

教研室主任年月日批准

 

1.设计主要内容及要求;

编写直流电机控制器程序。

要求:

1)具有PWM调速功能。

2)可以固定值调速,也可以连续调速。

3)能够进行速度级别显示。

2.对设计论文撰写内容、格式、字数的要求;

(1).课程设计论文是体现和总结课程设计成果的载体,一般不应少于3000字。

(2).学生应撰写的内容为:

中文摘要和关键词、目录、正文、参考文献等。

课程设计论文的结构及各部分内容要求可参照《沈阳工程学院毕业设计(论文)撰写规范》执行。

应做到文理通顺,内容正确完整,书写工整,装订整齐。

(3).论文要求打印,打印时按《沈阳工程学院毕业设计(论文)撰写规范》的要求进行打印。

(4).课程设计论文装订顺序为:

封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。

3.时间进度安排;

顺序

阶段日期

计划完成内容

备注

1

12月27日

教师讲解题目,学生查阅相关资料

2

12月28日

查阅相关资料、进行方案论证

3

12月29日

确定调速和显示方法

4

12月30、31

编写程序

5

1月4、5日

调试程序

6

1月6日

撰写论文

7

1月7日

论文答辩

沈阳工程学院

单片机课程设计成绩评定表

系(部):

班级:

学生姓名:

指导教师评审意见

评价

内容

具体要求

权重

评分

加权分

调研

论证

能独立查阅文献,收集资料;能制定课程设计方案和日程安排。

0.1

5

4

3

2

工作能力

态度

工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作,

0.2

5

4

3

2

工作量

按期圆满完成规定的设计任务,工作量饱满,难度适宜。

0.2

5

4

3

2

说明书的质量

说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。

0.5

5

4

3

2

指导教师评审成绩

(加权分合计乘以12)

加权分合计

指导教师签名:

年月日

评阅教师评审意见

评价

内容

具体要求

权重

评分

加权分

查阅

文献

查阅文献有一定广泛性;有综合归纳资料的能力

0.2

5

4

3

2

工作量

工作量饱满,难度适中。

0.5

5

4

3

2

说明书的质量

说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。

0.3

5

4

3

2

评阅教师评审成绩

(加权分合计乘以8)

加权分合计

评阅教师签名:

年月日

课程设计总评成绩

中文摘要

直流电动机以其良好的线性调速特性、简单的控制性能、较高的效率、优异的动态特性,一直占据着调速控制的统治地位。

但是模拟控制电路有以下缺陷:

模拟电路容易随时间漂移,会产生一些不必要的热损耗,以及对噪声敏感等。

在用了PWM技术后,避免了以上的缺陷,实现了数字方式来控制模拟信号,可以大幅度降低成本和功耗。

PWM输出脉冲占空比的变化,利用占空比的变化调整加在电机电枢绕组上的电压,改变电压随即改变电机电流,转速依据电流的大小来改变。

脉宽调制(PWM)是利用数字输出对模拟电路进行控制的一种有效技术,尤其是在对电机的转速控制方面,可大大节省能量。

系统的响应速度和稳定精度等指标比较好;具有很强的抗噪性,且有节约空间、比较经济;电枢电流的脉动量小,容易连续,而且可以不必外加滤波电抗也可以平稳工作;系统的调速范围宽;使用元件少、线路简单。

我的设计方案主要是通过控制定时器的初值,实现占空比可调,还应用了单片机中的LCD显示,定时器,外部中断从而达到学习、了解单片机相关指令在各方面的应用。

它能实现的基本功能包括运行的开启与停止,连续调速,固定值调速,LCD显示,并且实现连续调速与固定值调速之间的双向切换功能。

关键词单片机,LCD显示,PWM无极调速,外部中断

 

课程设计任务书I

沈阳工程学院III

单片机课程设计成绩评定表III

中文摘要IV

1设计任务描述1

1.1设计题目:

直流电机控制器程序设计1

1.2设计要求1

1.2.1设计目的1

2设计思路2

3设计方框图3

4各部分程序设计及参数计算4

4.1PWM调速4

4.2定时器初始化:

4

4.3连续调速5

4.4连续调速跳转到固定值调速6

4.5固定值调速7

4.6固定值调速跳转到连续调速8

4.7液晶显示8

4.8灯循环亮10

4.9延时10

5单片机和主要电路简介11

5.1C8051单片机简介11

5.2PWM调速原理11

5.3液晶显示电路11

6程序流程图13

7小结14

8致谢15

9参考文献16

附录程序清单17

1设计任务描述

1.1设计题目:

直流电机控制器程序设计

1.2设计要求

1.2.1设计目的

熟练地应用C8051单片机,运用定时器,外部中断和液晶显示。

采用PWM调速是比较方便的。

通过改变电机电枢电压接通时间与通电周期的比值(占空比)来控制电机速度。

课程设计能够将所学内容应用到实践。

1.2.2基本要求

1)具有PWM调速功能。

2)可以固定值调速,也可以连续调速。

3)能够进行速度级别显示。

1.2.3发挥部分

1)单片机外部中断能控制电动机开启与停止

2)当开启PWM脉冲时,LCD显示welcometothissystem

3)LCD能够实时显示电动机的当前转速THESPEEDISr/min

4)LCD能够显示电动机的状态加速显示up减速显示down

5)通过LED显示灯的两灭,可以知道现在的脉冲占空比的值

6)可以实现电动机连续调速与固定值调速之间的双向切换

 

2设计思路

调速信号的产生

众所周知,直流电动机转速n可表示如下:

式中:

U-电枢两端的电压I-电枢电流R-􀀂电枢电路总电阻;

-每级磁通量k-�􀀂电动机结构参数。

从式中可知,改变U、􀀁、R等变量都可达到调速的目的,但最方便有效的调速方法是对电枢电压U进行控制。

设计方案是应用PWM脉冲宽度调制技术实现速度的调节,通过改变电机电枢电压接通时间与通电周期的比值(占空比)来控制电机速度。

即通过调节高低电平的比值来调节占空比,可以用来个定时器T0,T1来实现,则占空比

当我们选择定时方式1时,每次都要重装初值,可以通过改变定时的重装初值,来改变定时器的定时时间,从而来改变占空比。

1.无级调速:

选用了两个定时器T0和T1,分别控制高电平和低电平,每次按下中断6,定时器T0加100,定时器T1减100,每次按下中断7,定时器T0减100,定时器T1加100,这样就实现了定时周期不变,占空比改变,高电平所占时间增加,低电平所占时间减小,此时输出电压变大,若连接电动机,电动机处于加速状态。

高电平所占时间减小,低电平所占时间增大,此时输出电压变小,若连接电动机,电动机处于减速状态。

2.固定值调速:

在固定值调速过程中,每次按下中断6,程序跳转到不同初始值的设定程序,执行不同初始值的程序,转速就不同,从而实现固定值调速。

3.液晶显示:

因为调速过程中一直保持周期不变,则高电平的时长与电流的大小成正比,

而高电平的时长,与定时器的初值有关,定时器初值经过运算后的结果发送给LCD显示,这样可以使显示的数值更接近实际转速,而不是凭空想象,具有实际用途。

在每次加速的子程序后,把一个变量置1,然后在显示程序中对这一位进行判断,若如果为1,则显示up,不为1,则显示down,从而能够对加速和减速在液晶中显示出来。

同理,在液晶显示程序中,对另一个变量进行判断,可以再开启时显示welcometothissystem

4.灯的显示:

在固定值调速的过程中每按下INT6,电动机的转速发生变化,当不同的灯亮时,我们就可以知道现在占空比是多少,有利于观察和调节占空比。

5停止:

在固定值调速中,按下INT6能跳转到我设定的5个固定值,如果不按INT7,再按下INT7时,电动机停转。

 

3设计方框图

 

 

4各部分程序设计及参数计算

4.1定时器初始化:

1)选择时钟脉冲fosc=16MHz并选择12分频,则CKCON=00H

2)选择定时器T0和T1,定时器T0的中断向量表是000BH,定时器T1的中断

向量表是001BH,工作方式1,TMOD=11H,初值相等,实现方波。

3)输出端口为推挽方式

4)we(0);显示0转/分

5)while

(1);不断循环执行以下程序

初始化部分程序:

CKCON&=0XE7;////选择12分频

TMOD=0X11;/////////选择定时器0,1和工作方式一

OSCICN=0X07;//////选择系统时钟16MHZ

P00=0;/////////////////////输出端口清零

TH0=c3;//////////////////定时器T0赋初值

TL0=c4;

TH1=c1;////////////////定时器T1赋初值

TL1=c2;

EA=1;////////////////////中断总使能

ET0=1;///////////////////允许T0中断

ET1=1;///////////////////允许T1中断

we(0);//////////////////////显示0转/分

XBR2=0X40;////////////交叉开关使能

P1MDOUT=0XFF;////P1口输出方式为推挽

EIE2=0X30;//////////////中断6,7使能

while

(1);

4.2方波脉冲的实现

当按下INT6时,执行TR0=1,从而开启定时器T0,当定时时间到了以后,跳到中断TIME0,并且关掉T0,开启T1;进入中断TIME1后,并且关掉T1,开启T0;这样不断的循环,就出现了方波。

////////定时器中断0///////////

voidtime0()interrupt1

{P00=1;///////端口输出高电平

TR0=0;//////关闭定时器T0

TH1=c1;/////重装初值

TL1=c2;

TR1=1;////////开启定时器T1

}

////////定时器中断1///////////

voidtime1()interrupt3

{P00=0;/////////端口输出低电平

TR1=0;/////////关闭定时器T1

TH0=c3;///////重装初值

TL0=c4;

TR0=1;////////关闭定时器T0

}

4.3连续减速调速

用c5来记录当前的状态,第一次按INT6时,执行case1,即开启方波脉冲,还执行才C11=0,即液晶会显示welcometothissystem;

第二次按INT6时,执行case2,调用lianxujian()函数,并且调用we(c3),显示当前转速;以下同理,第五次按INT6时,执行case5,调用lianxujian()函数,并且调用we(c3),显示当前转速;并且执行c5=1;调回case2,继续减速,从而实现连续减速。

voidINT6interrupt18

{P3IF=0;////////////中断标志位清零

c5=c5+01;

switch(c5)

{case1:

TR0=1;////开启定时T0,P0.0输出方波

c11=0;//////显示welcometothissystem

we(c3);/////显示当前转速

{for(i=0;i<=24000;i++);};///延时程序

break;

case2:

lianxujian();

we(c3);///////显示当前转速

{for(i=0;i<=24000;i++);};

break;

case3:

lianxujian();

we(c3);

{for(i=0;i<=24000;i++);};

break;

case4:

lianxujian();

we(c3);

{for(i;i<=24000;i++);};

break;

case5:

lianxujian();

c5=1;//////c5置1,回到case1,实现连续加速

we(c3);

{for(i;i<=24000;i++);};

break;

4.5固定值调速

我所设计的程序中,有五个固定值,当到达第五个固定值后,再按INT6,则电动机停转。

在P30没有接地时,当按INT7时,执行c5=5,这之后第一次按下INT6时,就回执行case6,调用gudingzhi(n)函数,实现固定值调速。

第二次按下INT6时,就回执行case7,调用gudingzhi(n)函数,实现固定值调速。

第三次按下INT6时,就回执行case7,调用gudingzhi(n)函数,实现固定值调速。

由于每次的n值不同,就会有不同的占空比。

第六次按下INT6时,就回执行case11,执行TR0=0,TR1=0,从而关闭电动机。

同时可以通过观察灯的亮灭来,知道当前的占空比是多少,当LED1亮时,占空比为10%;当LED3亮时,占空比为30%;当LED5亮时,占空比为50%;当LED7亮时,占空比为70%;当LED全灭时,占空比为90%;

跳转部分程序:

case6:

gudingzhi(12);////占空比10%

we(c3);

P11=0;

{for(i=0;i<=18000;i++);};

break;

case7:

gudingzhi(6);////占空比30%

we(c3);

P11=1;

P13=0;

{for(i=0;i<=18000;i++);};

break;

case8:

gudingzhi(0);////占空比50%

we(c3);

P11=1;

P13=1;

P15=0;

{for(i=0;i<=20000;i++);};

break;

case9:

gudingzhi(-6);///70%

we(c3);

P11=1;

P13=1;

P15=1;

P17=0;

{for(i=0;i<=20000;i++);};

break;

case10:

gudingzhi(-12);///占空比90%

we(c3);

P17=1;

{for(i=0;i<=20000;i++);};

break;

case11:

TR0=0;/////关闭定时器T0

TR1=0;/////关闭定时器T1

c5=0;///////回到连续加调速

P16=0;

{for(i;i<=24000;i++);};

break;

}

4.6固定值调速跳转到连续调速

由于P30接地,则P30=0,不会发生跳转,每按INT7后,执行if以后的语句,实现固定值与连续减之间的切换;当P30没有接地,即P30=1,则执行else后的语句:

当电动机处于固定值状态时,实现固定值与连续加速之间的调速;当处于连续减的状态时,就实现了连续减和连续加的切换。

因此实现了连续加,连续减,和固定值三者之间的调速。

P30=0,当按下INT7时,会在C5=1和C5=5之间切换,再按INT6会实现固定值与连续减之间的切换;

P30=1,每按下INT7时,执行连续加速。

从而实现固定值和连续减速到连续加速的控制;

转换的部分程序如下:

voidINT7interrupt19

{P3IF=0;

if(P30==0)/////当P30=0时,执行这个程序

c6=c6+01;///这个程序实现连减和固定值调

switch(c6)////速的切换

{case1:

P3IF=0;

c5=1;////跳到连续减调速

P30=1;//////P30端口置1

we(c3);

{for(i=0;i<=9000;i++);};

break;

case2:

P3IF=0;

c5=5;///////////跳到固定值调速

P30=1;////P30端口置1

c6=0;

we(c3);

{for(i=0;i<=9000;i++);};

break;

}

elsec10=c10+01;/////当P30=1时,实现连续加调速

switch(c10)

{case1:

P3IF=0;

liannxujia();

P30=0;

we(c3);

{for(i=0;i<=9000;i++);};

break;

case2:

P3IF=0;

liannxujia();

we(c3);

{for(i=0;i<=9000;i++);};

break;

case3:

P3IF=0;

liannxujia();

c10=0;

we(c3);

{for(i=0;i<=9000;i++)

}

4.7液晶显示

当程序跳转到某个固定值时,调用显示与其对应的液晶显示子程序。

将设定的固定值转化成对应的ASCII码送入到数据口。

把要显示的数据送到P7口就可以了,每次显示前要刷新。

部分程序如下:

////////////////////////显示程序//////////////////

voidwe(intw)

{

unsignedcharxdatanetdata[10]={48,49,50,51,52,53,54,55,56,57};

unsignedcharxdatancedata[7]={32,32,114,47,109,105,110};

unsignedcharxdatancfdata[3]={32,117,112};

unsignedcharxdatancgdata[5]={32,100,111,119,110};

unsignedcharxdatancddata[13]={84,84,72,69,32,83,80,69,69,68,32,73,83};

unsignedcharxdatanchdata[14]={32,119,101,108,99,111,109,101,32,116,111,32,32,32};

unsignedcharxdatancidata[13]={32,32,116,104,105,115,32,115,121,115,116,101,109};

staticunsignedchardata1;

unsignedchar*lcdpoint;

unsignedcharlcddatacount;

voidsysclk(void);

voidport(void);

voidlcd(void);

voidsend(void);

WDTCN=0XDE;

WDTCN=0XAD;

sysclk();

port();

lcd();

if(c11==0)

{w=w+w+w;

o=w%10;////////////取各位

p=(w/10)%10;/////取十位

q=w/100;/////////取百位

lcdpoint=&ncddata;显示THESPEEDIS

for(lcddatacount=13;lcddatacount>0;lcddatacount--)

{data1=*lcdpoint;

P7=data1;

P6=0x04;

P6=0x05;

lcdpoint++;

for(x=0;x<100;x++);

}

for(x=0;x<500;x++);

P7=0xc0;///////////////实现换行功能

P6=0x1;

P6=0x0;

for(x=0;x<100;x++);

lcdpoint=&netdata;///显示百位

for(lcddatacount=0;lcddatacount<=10;lcddatacount++)

{if(lcddatacount==q)

{data1=*lcdpoint;

P7=data1;

P6=0x05;

P6=0x04;

lcdpoint++;}

else

lcdpoint++;

for(x=0;x<100;x++);

}

lcdpoint=&netdata;//////显示十位

for(lcddatacount=0;lcddatacount<=10;lcddatacount++)

{if(lcddatacount==p)

{data1=*lcdpoint;

P7=data1;

P6=0x05;

P6=0x04;

lcdpoint++;}

else

lcdpoint++;

for(x=0;x<100;x++);

}

lcdpoint=&netdata;/////显示个位

for(lcddatacount=0;lcddatacount<=10;lcddatacount++)

{if(lcddatacount==o)

{data1=*lcdpoint;

P7=data1;

P6=0x05;

P6=0x04;

lcdpoint++;}

else

lcdpoint++;

for(x=0;x<100;x++);

}

lcdpoint=&ncedata;///////显示r/min

for(lcddatacount=7;lcddatacount>0;lcddatacount--)

{data1=*lcdpoint;

P7=data1;

P6=0x04;

P6=0x05;

lcdpoint++;

for(x=0;x<100;x++);

}

for(

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

当前位置:首页 > 小学教育 > 语文

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

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