ImageVerifierCode 换一换
格式:DOCX , 页数:37 ,大小:95.07KB ,
资源ID:8469101      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8469101.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机课程设计直流电机控制器程序设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、单片机课程设计直流电机控制器程序设计沈 阳 工 程 学 院课 程 设 计设计题目: 直流电机控制器程序设计 系 别 班级 学生姓名 学号 指导教师 职称 起止日期:2010年 12月 27 日起至 2011年 1 月 7 日止沈阳工程学院课程设计任务书课程设计题目: 直流电机控制器程序设计 系 别 班级 学生姓名 学号 指导教师 职称 课程设计进行地点: 任 务 下 达 时 间: 10年 12月27日起止日期: 10年12月27日起至11年1月7日止教研室主任 年 月 日批准1.设计主要内容及要求;编写直流电机控制器程序。要求:1)具有PWM调速功能。 2)可以固定值调速,也可以连续调速。 3

2、)能够进行速度级别显示。2.对设计论文撰写内容、格式、字数的要求;(1).课程设计论文是体现和总结课程设计成果的载体,一般不应少于3000字。(2).学生应撰写的内容为:中文摘要和关键词、目录、正文、参考文献等。课程设计论文的结构及各部分内容要求可参照沈阳工程学院毕业设计(论文)撰写规范执行。应做到文理通顺,内容正确完整,书写工整,装订整齐。(3).论文要求打印,打印时按沈阳工程学院毕业设计(论文)撰写规范的要求进行打印。(4). 课程设计论文装订顺序为:封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。3.时间进度安排;顺序阶段日期计 划 完 成 内 容备注112月27日

3、教师讲解题目,学生查阅相关资料212月28日查阅相关资料、进行方案论证312月29日确定调速和显示方法412月30、31日编写程序51月4、5日调试程序61月6日撰写论文71月7日论文答辩沈 阳 工 程 学 院 单片机 课程设计成绩评定表系(部): 班级: 学生姓名: 指 导 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分调研论证能独立查阅文献,收集资料;能制定课程设计方案和日程安排。0.15432工作能力态度工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作, 0.25432工作量按期圆满完成规定的设计任务,工作量饱满,难度适宜。0.25432说明书的质量说明书立论

4、正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.55432指导教师评审成绩(加权分合计乘以12) 分加权分合计指 导 教 师 签 名: 年 月 日评 阅 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分查阅文献查阅文献有一定广泛性;有综合归纳资料的能力0.25432工作量工作量饱满,难度适中。0.55432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.35432评阅教师评审成绩(加权分合计乘以8)分加权分合计评 阅 教 师 签 名: 年 月 日课 程

5、设 计 总 评 成 绩分中 文 摘 要 直流电动机以其良好的线性调速特性、简单的控制性能、较高的效率、优异的动态特性, 一直占据着调速控制的统治地位。但是模拟控制电路有以下缺陷:模拟电路容易随时间漂移,会产生一些不必要的热损耗,以及对噪声敏感等。在用了PWM技术后,避免了以上的缺陷,实现了数字方式来控制模拟信号,可以大幅度降低成本和功耗。PWM输出脉冲占空比的变化,利用占空比的变化调整加在电机电枢绕组上的电压,改变电压随即改变电机电流,转速依据电流的大小来改变。脉宽调制(PWM)是利用数字输出对模拟电路进行控制的一种有效技术,尤其是在对电机的转速控制方面,可大大节省能量。系统的响应速度和稳定精

6、度等指标比较好;具有很强的抗噪性,且有节约空间、比较经济;电枢电流的脉动量小,容易连续,而且可以不必外加滤波电抗也可以平稳工作;系统的调速范围宽;使用元件少、线路简单。我的设计方案主要是通过控制定时器的初值,实现占空比可调,还应用了单片机中的LCD显示,定时器,外部中断从而达到学习、了解单片机相关指令在各方面的应用。它能实现的基本功能包括运行的开启与停止,连续调速,固定值调速,LCD显示,并且实现连续调速与固定值调速之间的双向切换功能。 关键词 单片机,LCD显示,PWM 无极调速 ,外部中断课程设计任务书 I沈 阳 工 程 学 院 III单片机 课程设计成绩评定表 III中 文 摘 要 IV

7、1 设计任务描述 11.1 设计题目:直流电机控制器程序设计 11.2 设计要求 11.2.1 设计目的 12 设计思路 23 设计方框图 34 各部分程序设计及参数计算 44.1PWM调速 44.2定时器初始化: 44.3 连续调速 54.4连续调速跳转到固定值调速 64.5固定值调速 74.6固定值调速跳转到连续调速 84.7 液晶显示 84.8 灯循环亮 104.9 延时 105 单片机和主要电路简介 115.1 C8051单片机简介 115.2 PWM调速原理 115.3 液晶显示电路 116 程序流程图 137 小结 148致谢 159 参考文献 16附录 程序清单 171 设计任务

8、描述1.1 设计题目:直流电机控制器程序设计1.2 设计要求1.2.1 设计目的熟练地应用C8051单片机,运用定时器,外部中断和液晶显示。采用PWM调速是比较方便的。通过改变电机电枢电压接通时间与通电周期的比值(占空比)来控制电机速度。课程设计能够将所学内容应用到实践。 1.2.2 基本要求1)具有PWM调速功能。 2)可以固定值调速,也可以连续调速。 3)能够进行速度级别显示。1.2.3 发挥部分1)单片机外部中断能控制电动机开启与停止2)当开启PWM脉冲时,LCD显示 welcome to this system 3)LCD能够实时显示电动机的当前转速 THE SPEED IS r/mi

9、n 4)LCD能够显示电动机的状态 加速显示up 减速显示down 5)通过LED显示灯的两灭,可以知道现在的脉冲占空比的值 6) 可以实现电动机连续调速与固定值调速之间的双向切换2 设计思路调速信号的产生众所周知, 直流电动机转速n可表示如下:式中: U-电枢两端的电压 I-电枢电流 R -􀀂电枢电路总电阻;-每级磁通量 k-􀀂电动机结构参数。从式中可知, 改变U、􀀁、R 等变量都可达到调速的目的, 但最方便有效的调速方法是对电枢电压U进行控制。设计方案是应用PWM脉冲宽度调制技术实现速度的调节,通过改变电机电枢电压接通时间与通电周期的比

10、值(占空比)来控制电机速度。即通过调节高低电平的比值来调节占空比,可以用来个定时器T0,T1来实现,则占空比,当我们选择定时方式1时,每次都要重装初值,可以通过改变定时的重装初值, 来改变定时器的定时时间,从而来改变占空比。 1.无级调速:选用了两个定时器T0和T1,分别控制高电平和低电平,每次按下中断6,定时器T0加100,定时器T1减100,每次按下中断7,定时器T0减100,定时器T1加100,这样就实现了定时周期不变,占空比改变,高电平所占时间增加,低电平所占时间减小,此时输出电压变大,若连接电动机,电动机处于加速状态。高电平所占时间减小,低电平所占时间增大,此时输出电压变小,若连接电

11、动机,电动机处于减速状态。2.固定值调速:在固定值调速过程中,每次按下中断6,程序跳转到不同初始值的设定程序, 执行不同初始值的程序,转速就不同,从而实现固定值调速。 3.液晶显示:因为调速过程中一直保持周期不变,则高电平的时长与电流的大小成正比,而高电平的时长,与定时器的初值有关,定时器初值经过运算后的结果发送给LCD显示,这样可以使显示的数值更接近实际转速,而不是凭空想象,具有实际用途。在每次加速的子程序后,把一个变量置1,然后在显示程序中对这一位进行判断,若如果为1,则显示up,不为1,则显示down,从而能够对加速和减速在液晶中显示出来。同理,在液晶显示程序中,对另一个变量进行判断,可

12、以再开启时显示 welcome to this system4.灯的显示:在固定值调速的过程中每按下INT6,电动机的转速发生变化,当不同的灯亮时,我们就可以知道现在占空比是多少,有利于观察和调节占空比。5停止:在固定值调速中,按下INT6能跳转到我设定的5个固定值,如果不按INT7, 再按下INT7时,电动机停转。3 设计方框图4 各部分程序设计及参数计算4.1定时器初始化:1)选择时钟脉冲fosc=16MHz 并选择12分频, 则CKCON=00H2)选择定时器T0和T1,定时器T0的中断向量表是000BH,定时器T1的中断 向量表是001BH, 工作方式1,TMOD=11H,初值相等,实

13、现方波。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=0

14、X30;/中断6,7使能 while(1);4.2 方波脉冲的实现当按下INT6时,执行TR0=1,从而开启定时器T0,当定时时间到了以后,跳到中断TIME0,并且关掉T0,开启T1;进入中断TIME1后,并且关掉T1,开启T0;这样不断的循环,就出现了方波。/定时器中断0/void time0() interrupt 1 P00=1;/端口输出高电平 TR0=0;/关闭定时器T0 TH1=c1;/重装初值 TL1=c2; TR1=1;/开启定时器1/定时器中断1/void time1() interrupt 3 P00=0;/端口输出低电平 TR1=0;/关闭定时器T1 TH0=c3;/重装

15、初值 TL0=c4; TR0=1;/关闭定时器T0 4.3连续减速调速 用c5来记录当前的状态,第一次按INT6时,执行case1,即开启方波脉冲,还执行才C11=0,即液晶会显示 welcome to this system;第二次按INT6时,执行case2,调用lianxujian()函数,并且调用we(c3),显示当前转速;以下同理,第五次按INT6时,执行case5,调用lianxujian()函数,并且调用we(c3),显示当前转速;并且执行c5=1;调回case2,继续减速,从而实现连续减速。 void INT6 interrupt 18 P3IF=0; /中断标志位清零 c5=

16、c5+01; switch(c5) case 1:TR0=1;/开启定时T0,P0.0输出方波 c11=0;/显示 welcome to this system we(c3);/显示当前转速 for(i=0;i=24000;i+);/延时程序 break; case 2:lianxujian(); we(c3);/显示当前转速 for(i=0;i=24000;i+); break; case 3:lianxujian(); we(c3); for(i=0;i=24000;i+); break; case 4:lianxujian(); we(c3); for(i;i=24000;i+); br

17、eak; case 5: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)函数,实现固定值调速。

18、由于每次的n值不同,就会有不同的占空比。第六次按下INT6时,就回执行case11,执行TR0=0,TR1=0,从而关闭电动机。同时可以通过观察灯的亮灭来,知道当前的占空比是多少,当LED1亮时,占空比为10%;当LED3亮时,占空比为30%;当LED5亮时,占空比为50%;当LED7亮时,占空比为70%;当LED全灭时,占空比为90%;跳转部分程序:case 6:gudingzhi(12);/占空比10% we(c3); P11=0; for(i=0;i=18000;i+); break; case 7:gudingzhi(6);/占空比30% we(c3); P11=1; P13=0; f

19、or(i=0;i=18000;i+); break; case 8:gudingzhi(0);/占空比50% we(c3); P11=1; P13=1; P15=0; for(i=0;i=20000;i+); break; case 9:gudingzhi(-6);/70% we(c3); P11=1; P13=1; P15=1; P17=0; for(i=0;i=20000;i+); break; case 10:gudingzhi(-12);/占空比90% we(c3); P17=1; for(i=0;i=20000;i+); break; case 11:TR0=0;/关闭定时器T0 T

20、R1=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=

21、1,每按下INT7时,执行连续加速。从而实现固定值和连续减速到连续加速的控制; 转换的部分程序如下: void INT7 interrupt 19 P3IF=0; if(P30=0) /当P30=0时,执行这个程序 c6=c6+01; / 这个程序实现连减和固定值调 switch(c6) / 速的切换 case 1:P3IF=0; c5=1;/跳到连续减调速 P30=1;/ P30端口置1 we(c3); for(i=0;i=9000;i+); break; case 2:P3IF=0; c5=5;/跳到固定值调速 P30=1;/P30端口置1 c6=0; we(c3); for(i=0;i=

22、9000;i+); break; else c10=c10+01; /当P30=1时,实现连续加调速 switch(c10) case 1 : P3IF=0; liannxujia(); P30=0; we(c3); for(i=0;i=9000;i+); break; case 2: P3IF=0; liannxujia(); we(c3); for(i=0;i=9000;i+); break; case 3 : P3IF=0; liannxujia(); c10=0; we(c3); for(i=0;i0;lcddatacount-) data1=*lcdpoint; P7=data1;

23、P6=0x04; P6=0x05; lcdpoint+; for(x=0;x100;x+); for(x=0;x500;x+); P7=0xc0;/实现换行功能 P6=0x1; P6=0x0; for(x=0;x100;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;x100;x+); lc

24、dpoint=&netdata;/显示十位 for(lcddatacount=0;lcddatacount=10;lcddatacount+) if(lcddatacount=p) data1=*lcdpoint; P7=data1; P6=0x05; P6=0x04; lcdpoint+; else lcdpoint+; for(x=0;x100;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;x0;lcddatacount-) data1=*lcdpoint; P7=data1; P6=0x04; P6=0x05; lcdpoint+; for(x=0;x100;x+); for(

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

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