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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

成都大学分数线.docx

1、成都大学分数线四川职业技术学院单片机技术课程设计报告设计题目: 直流电机的控制 专 业: 机电一体化技术 班 级: 2009级机电1班 设计小组: 第 12 组 组 员: 叶卫、胡玉江、严健 指导教师: 李海兵 刘宸 日 期:2011.5.16 2011.5.27 四川职业技术学院课程设计(论 文)任务书 电子电气工程 系 机电一体化技术 专业 2009级09机电1班学生叶卫、胡玉江、严健 学号 26 24 19 日期 2011.5.27 课程设计(论文)内容与要求:一、设计任务 利用单片机系统设计一个对直流电机的控制2、课程设计要求 1给定条件(1) AT89S52单片机(2) 四位显示数码

2、管(3) 电解电容,电阻,按钮,开关,导线2技术指标(1)实现电动机正反转控制(2)PWM脉冲宽度调制,实现对电机的调速(3)可用键盘设置对电机进行正转、停止、反转、快速、慢速。指导教师 李海兵 刘宸 课程设计成绩评定表课 程 设 计 评 语: 指导教师(签名) 时间 年 月 日课程设计成绩: 指导教师(签名) 时间 年 月 日目 录一、摘要 5二、认识单片机 51、几个基本概念 52、认识AT89S51、PWM 5三、课题设计 71、课题目标 72、课题分析 8四、系统硬件设计 81、硬件清单 82、硬件仿真图 93、焊接实物图 9五、软件设计 91、软件设计思路 92、软件设计框图 103

3、、PWM的具体控制程序 11六、编译程序 111、源程序 112、程序设计说明 133、软件仿真效果图 14七、程序设计心得体会 16八、参考文献 16一、摘要本设计以AT89S52单片机为核心,以4个按键作为输入达到控制直流电机的启停、速度和方向调整。在设计中,采用了PWM技术对直流电机进行控制,PWM是按一定规律改变脉冲列的脉冲列脉冲幅度,以调节输出量值和波形的一种调制方式。是一种对模拟信号电平进行数字编码的方法,通过高分频率计数器的使用对模拟信号的电平进行编译。PWM系统在很多方面具有较大的优越性:主电路简单,所需功率器件少,低速性好,调节范围宽;开关频率高,快速响应好;功率损耗小,装置

4、效率较高。PWM变换器有不可逆和可逆两类,可逆变换器又有双极式、单级式和受限单级式等多种电路。应用最普遍的两种方式:受限单级性方式驱动和受限倍频单极性驱动方式。二、认识单片机 1、几个基本概念 单片机就是在一块硅片上集成了CPU、存储器、输入、输出接口、振荡电路、计数器等的一块集成电路。单片机最小系统就是能让单片机工作起来的一个最基本的组成电路。 2、认识AT89S51、PWMAT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100

5、次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。主要特性: 与MCS-51 兼容4K字节可编程闪烁存储器寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24MHz三级程序存储器锁定1288位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路 管脚说明:VC

6、C:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部

7、上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用

8、作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。/PSEN:外部程序存储器的选通信号。

9、在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振

10、荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。PWM调速 近年来,直流电机的结构和控制方式都发生了很大的变化。随着计算机进入控制领域,以及新型的电力电子功率元器件的不断出现,使采用全控型的开关功率元件进行脉冲调制(PWM)控制方式以成为绝对主流。这种控制方式很容易实现在单片机控制中的实现,从而为直流电机控制数字化提供平台三、课题设计 1、课题目标 利用单片机和PWM组成系统,通过程序的控制,实现对直流电机的控制,能控制速度和方向,通过控制脉冲的方向达到控制电动机正反转

11、的目的。 2、课题分析电机调速:需采用由达林顿管组成的H型PWM电路。用单片机控制达林顿管使之工作在占空比可调的开关状态,精确调整电动机转速。这种电路由于工作在管子的饱和截止模式下,效率非常高;H型电路保证了可以简单地实现转速和方向的控制;电子开关的速度很快,稳定性也极佳,是一种广泛采用的PWM调速技术。PWM调速方式:单极性工作制。单极性工作制是单片机控制口一端置低电平,另一端输出PWM信号,两口的输出切换和对PWM的占空比调节决定电动机的转向和转速。PWM的调脉方式:调脉宽的方式有三种:定频调宽、定宽调频和调宽调频。我们采用了定频调宽方式,因为采用这种方式,电动机在运转时比较稳定;并且在采

12、用单片机产生PWM脉冲的软件实现上比较方便。本任务中,PWM的原理对于小规模直流电动机调速系统,使用微型机和单片机是极为方便的。其方法是通过改变电动机定子电压接通和断开时间的比值(即占空比)来控制马达速度,这种方法称为脉冲宽度调速。四、系统硬件设计 1、硬件清单三极管S90148个按键5个AT89S52一只下载插座1个单片机电路板1块10uF电容1个1K电阻8只12MHz晶振1只10K电阻1只470欧电阻8只三极管S90152个二极管4个20pF电容2个连接导线若干四位数码管1个 2、硬件仿真图3、焊接实物图五、软件设计 5.1软件设计整体介绍 本系统编程部分工作采用KELI-C51语言完成,

13、采用模块化的设计方法,与各子程序做为实现各部分功能和过程的入口,完成键盘输入、按键识别和功能、PWM脉宽控制和LED显示等部分的设计。单片机资源分配如下表:P0显示模块接口外部中断0(P3.2)键盘中断P1键盘模块接口P2.0/P2.1PWM电机驱动接口内部定时器0系统时钟5.2软件设计流程图系统主函数流程PWM脉宽控制:本设计中采用软件延时方式对脉冲宽度进行控制,延时程序函数如下:void delay(unsigned char dlylevel) int i=50*dlylevel; while(-i); 此函数为带参数DLYLEVEL,约产生DLYLEVEL*400us的延时,因此一个脉

14、冲周期可以由高电平持续时间系数hlt和低电平持续时间系数llt组成,本设计中采用的脉冲频率为25Hz,可得hlt+llt=100,占空比为hlt/(hlt+llt),因此要实现定频调宽的调速方式,只需通过程序改变全局变量hlt,llt的值,该子程序流程图如图四。键盘中断处理子程序:采用中断方式,按下键,单片机P3.2脚产生一负跳沿,响应该中断处理程序,完成延时去抖动、键码识别、按键功能执行。调速档、持续加/减速:调速档通过(0-6)共七档固定占空比,即相应档位相应改变hlt,llt的值,以实现调速档位的实现。而要实现按住加/减速键不放时恒加或恒减速直到放开停止,就需在判断是否松开该按键时,每进

15、行一次增加/减少1%占空比(即hlt+/-;llt-/+),其程序流程图如图五。显示子程序:利用数组方式定义显示缓存区,缓存区有8位,分别存放各个LED管要显示的值。显示子程序为一带参子程序,参数为显示缓存的数组名,通过for(i=0;i8;i+)方式对每位加上位选码,送到P0口并进行一两毫秒延时。该显示子程序只对各个LED管分别点亮一次,因此在运行过程中,每秒执行的次数不应低于每秒24次。定时中断处理程序:采用定时方式1,因为单片机使用12M晶振,可产生最高约为65.5ms的延时。对定时器置初值3CB0H可定时50ms,即系统时钟精度可达0.05s。当50ms定时时间到,定时器溢出则响应该定

16、时中断处理程序,完成对定时器的再次赋值,并对全局变量time加1,这样,通过变量time可计算出系统的运行时间。 对于一个数的显示,先应转成BCD码,即取出每一个位,分别送入显示缓存区,对于转BCD的算法,应对一个数循环除10取模,直至为0,程序如下:dodispbuffbcd_p=bechange%10; /dispbuff为显示缓冲区数组 bcd_p+;while(bechange/=10) /disp_p为数组指针5.3软件设计中的特点:1、 对于电机的启停,在PWM控制上使用渐变的脉宽调整,即开启后由停止匀加速到默认速度,停止则由于当前速度逐渐降至零。这样有利于保护电机,如电机运用于小

17、车上,在启动上采用此方式也可加大启动速度,防止打滑。2、 对于运行时间的计算、显示。配合传感器技术可用于计算距离,速度等重要的运行数据。3、 键盘处理上采用中断方式,不必使程序对键盘反复扫描,提高了程序的效率。 六、编译程序 1、源程序#include #define uchar unsigned char #define uint unsigned int sbit open=p20; sbit close=p21; sbit swap=p22; sbit sub_speed=p23; sbit abb_speed=p24; sbit PWM1=p30; sbit PWM2=p31; sbi

18、t E=p37; sbit RW=P36; sbit RS=p35; sbit test=p34; int time=0; int high=20; int period=30; int change=0; int flag=0; int num_medium=0; int num_display=0; int count_speed=0; uchar wword=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39; void delay(chart) uint i; while (t) /对于12MHz时钟定时 for(i=0;i125;i+)

19、 t-; /写命令函数LCP void wc51r(uchar j) RS=0; RW=0; P1=j E=1; E=0; dalay(3); /写数据函数LCP void wc51ddr(uchar j) RS=1 RW=0 P1=j E=1 E=0 delay(2); /初始化函数LCP void init() wc51r(0x01); wc51r(0x38); wc51r(0x0c); wc51r(0x06); void time0_int(void)intterrupt time+ THO=0xec TLO=0x78; if change=0 PWM2=1; if(time=high)

20、 PWM1=0; else if(time=period) PWM1=1; time=0; else PWM1=1 if(time=high) PWM2=0; else if(time=period) PWM2=1 time=0; void datamnee uint data MM,NN; wc51r(0xc2); wc51ddr(s); wc51ddr(p); wc51ddr(e); wc51ddr(d); wc51ddr(0x30); NN=num_display%100; MM=num_display/100; wc51ddr wwordMM; MM=NN/10; NN=NN%10;

21、wc51ddr(wwordMM); wc51ddr(wwordNN); void motor_control() if (open=1) EA=1: if(close=1) EA=0; if(swap=1) change=change; while(swap!=0) if(sub_speed=1) high+; if(high=30) EA=0; while(sub_speed!=0) if(abb_speed=1) high-; if(high=5) high=5; while(add_speed!=0) void main() P2=0x00; ET0=1; ET1=1; TMOP=0x1

22、1; THO=0xec;/定时器T0设置参数 TLO=0x78; TH1=0x3c;/定时器T1设置参数 TL1=0xb0; TR0=1; TR1=1; init();/液晶显示初始化程序 while(1) wc51r(0x84); wc51ddr(H); WC51ddr(e); wc51ddr(l); wc51ddr(o); if(test=0) num_medium+; datamade(); motor_control(); 2、程序设计说明 首先定义变量flag为定义Key1按键,Tocount为Key2按下的次数,把每一个周期平均分成多个点,如:100Hz每个周期10ms,为了方便将

23、每个周期分成250个点,则每两个点之间的时间间距为40微秒,期分别分为250个点,则每两个点之间的时间相差40微秒,当Key1按下时可以实现;200Hz每个周期5ms,则将每个周期分别分为125个点,每两个点之间的时间也相差40微秒,当key2按下一次Tocount由1自增为2,n=250/Tocount=125,这样可以实现。频率300-1000Hz一次类推。对于这个固定的时间间隔,程序中采用定时中断完成。为了保证定时的准确,在定时中断服务程序仅设置已被标志。通过Key1来控制,当第一次按键时,实现锯齿波;当第二次按键时,实现方波的切换。以此循环,实现锯齿波和方波之间的切换。采用DAC083

24、2数/模转换电路,输出5V的模拟电压。由于DAC0832采用了直通方式,所以只需要往其数据端口直接加上数值,就能从DAC0832后面的运放的输出端得到所需要的模拟电压。由于其输出电压可根据公式计算得来5V电压3、软件仿真效果图 仿真图 七、程序设计心得体会 在两位老师的带领下,我们班在学院L415进行了为期两周的单片机实训。在前期理论的学习之中我们存在很多的问题,所以尽总感觉自己还是有许多的东西弄不太清楚,于是就去图书馆查阅资料,请教同学和老师。经过他们的解释分析之后,我们看到了我们的不足,我们对于很多东西的不熟悉,所以我们决定自己认真考虑、独立的设计这次课程,这样可以让我们更加熟悉书上所学的

25、知识,并且还增加了一些设计技能。在老师的指导下我们的软硬件设计变得很容易了。 而经过这次单片机实训,让我进一步接触到了单片机,发现了自己存在着很多欠缺:以前学习专业课程时比较呆板、不够灵活,不太清楚该如何应用所学知识,对所学的相关课程不能很好的融会贯通。更体会到所学理论知识的重要性,知识掌握得越多,设计得就会更全面、顺利。在实训过程中,我了解了许多有关电子元件、单片机芯片方面有价值的资料,既重温了前面所学的专业知识,能够进行很好的链接模拟/数字电路、单片机原理,电动机和电机等方面的知识,又扩充了视野,补充了新的专业知识,更提高了自己的应用能力。回顾这次毕业设计的整个过程,我深深地感受到这次毕业设计让我把理论和实际进一步相结合,巩固了基础知识并培养了我的创新意识和团队合作精神。所有的这些对我以后的工作和学习都很大的帮助 。 最后非常感谢学校以及老师给我们提供的这次实训,让我们在实践中去巩固我们的知识,提高了我们的动手能力与实际操作能力。 八、参考文献1 朱永金 成友才 单片机应用技术 中国劳动社会保障出版社2007.2 何立兵 单片机高级教程 北京航空航天大学出版社 2001.

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

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