单片机课程设计直流电机控制器程序设计.docx
- 文档编号:8469101
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:37
- 大小:95.07KB
单片机课程设计直流电机控制器程序设计.docx
《单片机课程设计直流电机控制器程序设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计直流电机控制器程序设计.docx(37页珍藏版)》请在冰豆网上搜索。
单片机课程设计直流电机控制器程序设计
沈阳工程学院
课程设计
设计题目:
直流电机控制器程序设计
系别班级
学生姓名学号
指导教师职称
起止日期:
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(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 直流电机 控制器 程序设计