苏州大学实验报告-输出比较和脉宽调制(pwm)实验

苏州大学实验报告-输出比较和脉宽调制(pwm)实验

ID:32896995

大小:56.50 KB

页数:4页

时间:2019-02-17

苏州大学实验报告-输出比较和脉宽调制(pwm)实验_第1页
苏州大学实验报告-输出比较和脉宽调制(pwm)实验_第2页
苏州大学实验报告-输出比较和脉宽调制(pwm)实验_第3页
苏州大学实验报告-输出比较和脉宽调制(pwm)实验_第4页
资源描述:

《苏州大学实验报告-输出比较和脉宽调制(pwm)实验》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、苏州大学实验报告院、系        年级专业     姓名    学号     课程名称                      成绩     指导教师         同组实验者      实验日期     实验名称: 输出比较和脉宽调制(PWM)实验         一.实验目的  通过该实验实习,进一步熟悉MT-IDE嵌入式开发系统环境、汇编和C语言以及调试方式;理解定时器模块的输出比较功能;理解脉宽调制的相关概念和基本原理;初步了解如何用定时器通道实现脉宽调制;理解课本中的程序代码。二.实验内容  编制一个产生脉宽调制波的程序。要求该脉宽调制波的周期为10ms,脉宽值初始化为0,然

2、后以一秒为间隔递增脉宽值0x20,当脉宽值到达0x0180后开始以相同的时间间隔相同的值递减脉宽,当脉宽值递减到0x0000后再递增,如此循环往复。同时要求该PWM波从定时器1通道0输出到一指示灯上以显示结果,并使得小灯亮度与脉宽值大小相一致。                                   三.实验过程(一)原理图图1 PWM模块框图16位预置寄存器16位比较器16位计数寄存器16位比较器16位通道寄存器驱动门PWM输出计数时钟定时器溢出翻转电平输出比较符合输出(二)基本原理  定时器的每一个通道都可以设置为在溢出时自动翻转电平,利用这一特性,定时器通道可以实现PWM。预

3、置计数寄存器的值将决定脉宽调制波的周期。当计数寄存器的计数达到预置寄存器的值时,该通道的输出将自动翻转。所以两次溢出之间的时间就是PWM的周期。占空比由通道寄存器的值决定。因为在发生输出比较时,输出电平将根据每一个通道的控制状态寄存器的ELSxA位、ELSxB位的设置而发生。这样在一次时钟溢出的周期内输出电平将发生两次翻转,发生输出比较到发生时钟溢出之间的时间就是脉宽调制波的占空比。 第4页四.编程(一)流程图开始MCU、PWM初始化头文件和声明1?flag=1复位结束开放总中断、变量初始化sectmp!=sec根据flag设置脉宽,更新sectmpflag==0duty>0x0160duty

4、<0x0020延时一秒,sec++flag=1图2PWM流程图     (二)所用寄存器名称及其所用的位T1状态和控制寄存器(T1StatusandControlRegister,T1SC)数据位D7D6D5D4D3D2D1D0定义TOFTOIETSTOPTRSTxPS2PS1PS0复位00100000T1通道0状态和控制寄存器(T1Channel0StatusandControlRegister,T1SC)数据位D7D6D5D4D3D2D1D0定义CH0FCH0IEMS0BMS0AELS0BELS0ATOV0CH0MAX复位11111111T1通道寄存器(T1ChannelRegister)

5、T2状态和控制寄存器(T2StatusandControlRegister,T2SC)数据位D7D6D5D4D3D2D1D0定义TOFTOIETSTOPTRSTxPS2PS1PS0复位00100000T2计数寄存器(T2CounterRegister,T2CNTH、T2CNTL)T2预置寄存器(T2CounterModuloRegister,T2MODH、T2MODL)(三)主要代码段1.汇编方式:PWM主程序部分代码……MainInit:://复位后从此处执行(见Vectors08.s文件末尾处)SEI//关总中断第4页//1.堆栈初始化为RAM最高端LDHX#RAMEndAddr//HX=

6、#RAMEndAddrTXS//HX->SP//2.系统初始化JSRMCUInit//初学时跳过此处//3.PWM初始化LDHX#$0181//考虑边界问题,正好相等电压不对,所以$180+1JSRPWMInitBCLR#TSTOPBit,T1SC//4.小灯初始化LDA#%11111111STADDRASTAPTACLI//开放总中断//变量初始化CLRSecCLRDutyCLRDuty+1//STHXDuty//程序总循环入口MainLoop://递增LDHXDutyJSRPWMDutyCPHX#$0160BHIMainLoop_1CPHX#$0020BLOMainLoop_2BRAMai

7、nLoop_3MainLoop_1:LDA#1STASecBRAMainLoop_3MainLoop_2:LDA#0STASecMainLoop_3:LDHX#5000JSRDelay_ms//延时1秒钟BRAMainLoop……2.C语言方式:PWM主程序部分代码……voidmain(){INT16Uduty,i;//脉宽INT8Uflag,sectmp,sec;//标记增减、计时DisMCUI

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。