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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机实现步进式PWM输出.docx

1、单片机实现步进式PWM输出单片机实现步进式PWM输出摘 要: 本文介绍了一种新型PWM输出的方式。它是用89C52作为主控部分,用8254-2可编程定时器/计数器来实现1Hz3kHz步进式PWM的输出;具有分辨率高、反应速度快及占用CPU时间少的优点。本设计给出了硬件结构的组成图以及程序设计,很好的完成了软硬件的结合,并实现了预期的功能。且本系统运行稳定,结构简单,应用范围广,所以可以通过扩展而达到实际的应用。关键词:单片机AT89C52 8254-2 脉宽调制(PWM)Microprocessor Stepper PWM outputAbstract:This paper introduce

2、s a new type of PWM output mode. It is part of 89C52 as a master, with the 8254-2 programmable timer / counter to implement step-1Hz 3kHz PWM output; high resolution, fast response, and less CPU-time advantage. This design gives the hardware structure diagram and program design, a good combination o

3、f software and hardware to complete and achieve the desired functionality. And the operation of this system stable, simple structure, wide application, it can be extended to achieve practical application.Key Words: SCM AT89C52 8254-2 pulse width modulation (PWM) 引言脉冲宽度调制(Pulse Width Modulation,PWM),

4、简称脉宽调制,是一种最初用于无线电通信的信号调制技术,后来在控制领域中(比如舵机控制、电机调速)也得到很好的应用,从而形成了独特的PWM控制技术。PWM控制的基本原理很早就已提出,但是受电力电子器件发展水平的制约,在20世纪80年代以前一直未能实现。直到进入20世纪80年代,随着全控型电力电子器件的出现和迅速发展,PWM控制技术才得到真正应用。随着电子电力技术、微电子技术和自动控制技术的发展以及各种新的理论方法,如现代控制理论和非线性系统控制思想的应用,PWM控制技术获得了空前的发展。概述在实际应用时,常常是通过调整PWM信号的脉宽来实现控制的,对脉宽的调整即改变方波信号的占空比。本例将实现周

5、期为20ms,而脉宽各不相同(分别为1ms、2ms和3ms)的3路PWM信号输出。采用脉冲计数法实现,即由51单片机配置专用可编程计数芯片的计数值,计数芯片输出满足占空比要求的PWM信号。此种方法不需要外部的信号源输入,硬件电路简化,通过软件的处理即可实现不同脉宽PWM信号的输出。1.1 PWM基本原理及其实现方法 PWM是通过控制固定电压的直流电源开关频率,从而改变负载两端的电压,进而达到控制要求的一种电压调整方法。PWM可以应用在许多方面,如电机调速、温度控制、压力控制等。 脉冲宽度调制波通常由一列占空比不同的矩形脉冲构成,其占空比与信号的瞬时采样值成比例。 如图1(a)和(b)所示分别表

6、示脉冲宽度调制系统的原理框图和波形图。图1 脉冲宽度调制系统的原理框图和波形图 该系统有一个比较器和一个周期为Ts的锯齿波发生器组成。语音信号如果大于锯齿波信号,比较器输出正常数A,否则输出0。因此,从图1中可以看出,比较器输出一列下降沿调制的脉冲宽度调制波。 通过图1(b)的分析可以看出,生成的矩形脉冲的宽度取决于脉冲下降沿时刻t k时的语音信号幅度值。因而,采样值之间的时间间隔是非均匀的。在系统的输入端插入一个采样保持电路可以得到均匀的采样信号,但是对于实际中tk-kTsTs的情况,均匀采样和非均匀采样差异非常小。脉冲宽度调制波可以直接通过低通滤波器进行解调。实现数字脉冲宽度调制器的基本思

7、想如图2所示。图2 数字脉冲宽度调制器的构成图2中,在时钟脉冲的作用下,循环计数器的5位输出逐次增大。5位数字调制信号用一个寄存器来控制,不断于循环计数器的输出进行比较,当调制信号大于循环计数器的输出时,比较器输出高电平,否则输出低电平。循环计数器循环一个周期后,向寄存器发出一个使能信号EN,寄存器送入下一组数据。在每一个计数器计数周期,由于输入的调制信号的大小不同,比较器输出端输出的高电平个数不一样,因而产生出占空比不同的脉冲宽度调制波。奇偶序列的产生方法是将计数器的最后一位作为比较数据的最低位,在一个计数周期内,前半个周期计数器输出最低位为0,其他高位逐次增大,则产生的数据即为偶数序列;后

8、半个周期输出最低位为1,其余高位依次减小,产生的数据为依次减小的偶序列。具体电路如图3所示。 图3 数字PWM实现电路一般情况下,调节脉冲宽度信号的脉宽有两种方法,一种方法是采用模拟电路中的调制方法,另一种是脉冲计数法。对于一般电机控制,由于滤波频率较低、滤波精度要求高和滤波电路的参数不易调整地原因,采用第一种方法在控制电压变化时滤波的实现存在较大的困难。因此,本例主要介绍单片机控制实现的脉冲计数法。1.2选择外部技术芯片计数器既可以采用专用的计数器芯片,也可以利用51单片机自带的内部计数器。如果测控系统的控制量少,而且对体积和重量的要求比较高,可以采用单片机内部的定时器。但是由于一般51单片

9、机的时钟最大只能取24MHz,单指令周期为0.5s,计数频率为106Hz,对于区别类似于频率为2999Hz(计数应为666.889)和3000Hz(计数应为666.87)的输出时无法做到的,随意有些情况就必须使用外部计数器。本例选用Intel公司的定时/计数芯片8254作为外部计数器。8254是8253的改进型,操作方式及引脚于8253完全相同,它的改进主要反映在两方面:8254的计数频率更高,最高可达8MHz,而8254-2更高可达10MHz;8254比8253多1个读回命令。由于使用了外部计数芯片,单片机只需向计数芯片的寄存器中发送控制脉宽的计算值,计数器就能自动地根据计数值调节电平的高低

10、变化,从而模拟PWM信号输出。与Intel公司及大部分公司的微处理器接口兼容;可以处理最高8MHz的输入时钟;具有6种可编程计数器模式;具有3个独立的16位计数器;具有状态读回命令;具有二进制或BCD两种计数方式;可用于实现实时时钟、事件计数、方波产生、复杂波形产生和复杂电压控制等;+5V供电。1.3硬件选择 本例的硬件电路主要由单片机和外部计数芯片构成,接口电路和外围电路的实现都较为简单。单片机是本例的核心器件之一,用于控制外部计数芯片实现PWM信号输出。本例选用Atmel公司的AT89C52作为单片机芯片,它完全能够满足要求,而且极为常用,价格便宜,易于获取。另一主要功能器件就是外部计数器

11、,本例选用Intel公司的专用定时/计数芯片8254。 图4 8254引脚图其引脚功能如下:D7D0(18引脚):双向三态数据线,应用时和系统数据总线相连;CLK0(9引脚):计数器0时钟输入引脚;OUT0(10引脚):计数器0输出引脚;GATE0(11引脚):计数器0门输入引脚;GND(12引脚):接地引脚;OUT1(13引脚):计数器1输出引脚;GATE1(14引脚):计数器1门输入引脚;CLK1(15引脚):计数器1时钟输入引脚;GATE2(16引脚):计数器2门输入引脚;OUT2(17引脚):计数器2输出引脚;CLK2(18引脚):计数器2时钟输入引脚;A0、A1(19、20引脚):地

12、址线,选择进行读写操作的三个计数器或者控制字寄存器,正常情况和系统地址线相连接;/CS(21引脚):片选引脚,低电平有效的输入引脚。/RD(22引脚):读控制引脚,低电平有效的输入引脚。/WR(23引脚):写控制引脚,低电平有效的输入引脚。VCC(24引脚):电源脚,+5V供电。2.硬件设计本设计选用可编程定时器/计数器8254-2,其最高计数频率可达10MHz;充分利用8254-2的3个定时器/计数器,采取频率的分频输出,并且不需要外部的信号源输入,硬件电路简化;通过软件的处理可以实现连续(1Hz3kHz)PWM波的输出。本设计中将要输出的PWM波分为3段,分别由8254-2中的3个定时/计

13、数器输出,门控由P2.2、P2.3、P2.4分别加以控制。在120Hz的输出时,采用定时器0,计数频率为10 4Hz,最大计数为10 4,最小计数为500符合要求,21200Hz的输出中,采用定时器1,计数频率为10 5Hz,最大计数为4762,最小计数为500;在201Hz3kHz 的输出中,采有定时器2,计数频率为10 7Hz,最大计数为49 751,满足二进制计数的范围,最小计数为3333。这些计数值可由单片机89C512送给8254-2的数据输入端,通过除法运算来得到这些计数值,由除法运算得到商。所得到的商去程序指令占用的时间即为所需要的计数值。采用8254-2的3个定时器的输出经过1

14、个或门作为CD4046锁相环的输入,同时经过1个非门进入89C51的INT1口,申请下降沿中断;CD4046锁相环输出所需的PWM。3.电路原理图及说明本例将实现3路PWM信号输出,定时/计数芯片8254具有3个独立的计数器,只需要选择一片就可以满足要求。硬件电路设计部分主要由单片机控制部分电路,定时/计数芯片8254电路以及单片机与定时/计数芯片8254的接口电路组成。单片机控制部分电路原理图如图5所示。图5 单片机控制部分电路原理图图中所示,单片机部分采用Atmel公司的AT89C52(U1),工作时钟为11.0592MHz,P0.0P0.7口与计数芯片8254的数据口D0D7相连,825

15、4的片选信号线连接在单片机的P2.0口,P2.1、P2.2与8354的地址线A1、A0相连,8254的读、写控制脚分别连接在单片机的P3.7(读)、P3.6(写)口。定时/计数芯片8254电路原理图如图6所示。 图6 定时/计数芯片8254电路原理图定时/计数芯片8354(U2)由3个计数器输出3路独立的PWM信号,分别为PWM_1、PWM_2和PWM_3,3个计数器的输入时钟均为1MHz,晶振Y2提供的1MHz时钟CLK,他们的门控制输入均接高电平,确保信号连续输出。4.软件设计4.1设计流程图单片机实现3路PWM信号输出的流程图如图6所示。结束图6 单片机实现3路PWM信号输出的流程图单片

16、机对计数芯片8254的控制主要通过对其内部的控制字和计数寄存器的操作来实现的。4.2 8254的内部控制字和计数寄存器8254内部有3个独立的计数器,每个计数器都对应于一个计数寄存器,另外还有一个控制字寄存器,通过它可以实现对3个寄存器的配置。A0、A1是8254的寄存器地址,单片机通过对A0、A1地选择。来确定是对计数寄存器还是控制字寄存器操作,具体如表1所示。表1 A0、A对寄存器的选择A0A1寄存器00计数器001计数器110计数器211控制器由于单片机的P2.0和8254的低电平有效的片选脚/CS相连,P2.1和P2.2分别和A0和A1A相连,因此8254内部各寄存器的地址分配如表2所

17、示。表2 8254内部各寄存器的地址分配寄存器地 址计数器00x0000H计数器10x0200H计数器20x0400H控制字0x0600H控制字寄存器的作用是用于选择每个寄存器的工作方式,其具体内容如表3所示。表3 8254控制字寄存器的内容D7D6D5D4D3D2D1D0SC1SC0RW1RW0M2M1M0BCD各控制位功能如下:SC1、SC0:选择计数器或读回命令,其设置如表4所示。表4 SC0、SC1设置SC1SC0寄存器00选择计数器001选择计数器110选择计数器211读回命令RW1、RW0:读/写方式控制位,其设置如表5所示。表5 RW0、RW1设置RW1RW0寄存器00计数锁存命

18、令01只读/写低位字节00只读/写高位字节01先读/写低位字节,后读/写高位字节M2、M1、M0:模式选择位,其设置如表6所示。表6模式设置M2M1M0模 式000模式0001模式1x10模式2x11模式3100模式4101模式5本例中各计数器均设置为模式0,在此模式下,输出在写完控制字寄存器后为低电平,并一直保持到计数器计数到0时变为高电平,然后一直保持高电平知道新的计数开始或者对控制字寄存器重设置模式0。BCD:此位为0设置计数器为16位二进制计数器;BCD位为1时设置计数器为BCD码计数器。4.3中断处理过程当89C51检测到有INT1中断时,进入中断处理程序中,首先检测30H和31H中

19、的内容是否大于20;若不大于20,则门控为P2.2,选中8254-2,选择计数器0、方式3、16位二进计数, 送上次计算出来的这次所需要的计数值给8254-2,将10 4送入32H、33H中作为除法运算中的被除数,而30H、31H的内容作为除法运算中的除数,调用除法运算子程序将所得的商送入32H、33H,余数放在35H、36H中。比较余数是否大于除数的一半,若大于除数的一半则所得的商加1,否则商不变放在32H、33H中。假设程序指令所占用的时间为X/200(其中X为中断程序中单指令周期的个数),将32H、33H中的内容减去X/200,即为下次所要送入8254-2的计数值,放在35H、36H中,

20、返回中断;若大于20,则门控为P2.3,选中8254-2,选择计数器1、方式3,送上次计算出来的这次所需的计数值给8254-2,将10 5送入32H、33H、34H中作为除法运算中的被除数,而30H、31H中的内容作为除法运算中的除数,调用除法运算子程序,将所得的商送入32H、33H中,余数放在35H、36H中。比较余数是否大于除数的一半,若大于除的一半则所得的商加1,否则商不变。假设程序指令所占用的时间为X/20,将32H、33H中的内容减去X/20即为下次所要送入8254-2的计数值,放在35H、36H中,返回中断,若大于200,则门控为P2.4,选中8254-2,选择计数器2、方式3、二

21、进制计数,送上次计算出来的这次所需的计数值给8254-2,将10 7送入32H、33H、34H中作为除法运算中的被除数,而30H、31H中的内容作为除法运算中的除数,调用除法运算子程序,将所得的商送入32H、33H中,余数放在35H、36H.比较余数是否大于除数的一半,若大于除数的一半则所得的商加1,否则商不变入在32H、33H中。假设程序指令令所占用的时间为X*5,将32H、33H中的内容减去5X,即为下次所要送入8254-2的计数值,放在35H、36H中,返回中断。 结论采用89C52控制PWM分段,8254-2步进式输出1Hz3kHz的PWM,可以通过软件编程的方法提高分辨率。在有些特殊

22、场合只靠单片机内部的定时器或模拟电路无法精确输出1Hz3kHz,单步为1Hz的PWM波形时,此设计就显出其明显的优越性,而且它占用的CPU时间短。此设计的结构简单、成本低、可靠性好、抗干扰能力强,可在控制和测量中得到应用。致谢衷心感谢我的指导教师余大庆,本毕业设计是在他的悉心关怀和精心指导下完成的。经过不断的搜索努力以及余大庆老师的耐心指导和热情帮助,本设计已经基本完成。在这段时间里,余老师严谨的治学态度和热忱的工作作风令我十分钦佩,他的指导使我受益非浅。同时本院508实验室的开放也为我的设计提供了实习场地。在此对余老师表示深深的感谢。感谢赵然、胡辉等同学,他们在我的本科学习期间,给了我很多的

23、帮助和支持,在毕业设计方面也提出了非常多的宝贵意见。通过这次毕业设计,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了大学四年的学习成果。虽然在这次设计中对于知识的运用和衔接还不熟练。但是我将在以后的工作和学习中继续努力、不断完善。参考文献:1孙韩方,许爱卿.单片机原理及应用M.北京:航空航天大学出版社,1996:4060.2B.A.Arwick.MicromputerIinterfacing.Prenticve-Hall,Inc.1980:77200.3李超青.单片机原理与接口技术M.北京:航空航天大学出版社,2000:5860.4 Chen Wenren.A c

24、ollection of subprogram of MCS-51 series Micro-controller.Beijing:Tsinghua University Publishing Company,1993:101125.5霍孟友,王爱群.单片机原理与应用M.北京:机械工业出版社,2000:6779.6李全利,迟荣强.单片机原理及接口技术M.北京:高等教育出版社,2004:128139.7何立民.单片机应用系统设计M.北京:航空航天大学出版社,1991:171178.8沈庆阳,郭庭吉.8051单片机实践及应用M.北京:清华大学出版社,2002:7882.9杨镇江.流行单片机使用子程

25、序及应用实例M.西安:科技大学出版社,2002:12130.10张迎新.微型计算机原理及应用接口技术M.北京:国防工业出版社,2002:8892.11Santa Clara,Microprocessor and peripheral handbook,Intel Corporation,1988:5865.12朱定华.单片机原理及接口技术试验M.北京:清华大学出版社,2000:4456.13陈光东.单片机微型计算机原理和接口技术M.武汉:华中理工大学出版社,1999:8896.14A.S.Sedrs and K.C.Smith,Microelectronic Circuits.4th ed.O

26、xford University press,Inc,1998:8795.15Zhang Yigang,Peng Xiyuan,Tan Xiaojun,Et al.Application a Single-chip nd design of MCS-51 single-chip computer,Haerbin:Haerbin Industry University Publishing Company,2001:234248.附录1.程序说明基于8254产生PWM信号的程序主要包括三方面内容:一是定义8253寄存器的地址,二是控制字的写入,三是数据的写入。 具体代码如下: #ifndef _

27、PWM_H / 防止PWM.h被重复引用#define _PWM_H#include / 引用标准库的头文件#include #include #define uchar unsigned char #define uint unsigned int #define COUNT0 XBYTE0x0000 / 8254计数器0寄存器地址#define COUNT1 XBYTE0x0200 / 8254计数器1寄存器地址#define COUNT2 XBYTE0x0400 / 8254计数器2寄存器地址#define COMWORD XBYTE0x0600 / 8254控制字寄存器地址#endif

28、 /以上为引用头文件。/以下为引用的源程序。#include PWM.hunsigned int m,n;unsigned int sum=0,p=0,q=0;unsigned char hang,lie,num=0,cishu=0;uint flag=0,a=0,b=0,xx,yy;unsigned char code table=0x11,0xd7,0x32,0x92,0xd4,0x98,0x18,0xd3,0x10,0x90;void delay(uint t) /延时涵数 uint i; while(t-) for(i=0;i125;i+); void button() P2=0x0f

29、; if(P2=0x0e) hang=0; if(P2=0x0d) hang=1; if(P2=0x0b) hang=2; if(P2=0x07) hang=3; delay(80); P2=0x0f0; if(P2=0x0e0) lie=0; if(P2=0x0d0) lie=1; if(P2=0x0b0) lie=2; if(P2=0x70) lie=3; delay(80); num=(hang)*4+lie; if(num=-5) num=0; if(hang!=0&lie!=0&num10)/大于10的键值的键要用在别处,所以不能加进去,特别注意 cishu+; if(cishu=5

30、) cishu=4; sum=sum%1000; sum=sum*10+num; if(xx!=sum) SBUF=tablesum/1000; SBUF=tablesum/100%10; SBUF=tablesum/10%10; SBUF=tablesum%10; xx=sum; hang=0; lie=0; if(num=10) /确定频率 b=sum; m=(65536-1000/sum*1000/3)/256; n=(65536-1000/sum*1000/3)%256; if(num=11) /确定占空比 p=(sum%100)*1000/b*1000/3/100-150)%256; q=(sum%100)*1000/b*1000/

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

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