欢迎来到天天文库
浏览记录
ID:32896995
大小:56.50 KB
页数:4页
时间:2019-02-17
《苏州大学实验报告-输出比较和脉宽调制(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
此文档下载收益归作者所有