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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

微机原理EV实验报告.docx

1、微机原理EV实验报告专业: 电气工程及其自动化 姓名: 学号: 日期: 2014.12.11 地点: 实验报告课程名称: 微机原理及其应用 指导老师: 徐习东 成绩: 实验名称: EV实验 实验类型: 同组学生姓名: 1 实验内容与要求 (2)2 实验原理 (2)2.1脉冲宽度调制(PWM)(2) 2.2 PWM控制LED的渐变闪烁 (2)3 程序设计与分析 (2)3.1主程序设计流程图 (2)3.2 程序段设计与分析 (2)4 实验思考 (15)一、实验内容与要求1、利用事件管理器实现TMS320F2812实验目标板上的绿灯与红灯的渐变闪烁;2、通过实验,掌握TMS320F2812事件管理器

2、的使用方法。二、实验原理1、脉冲宽度调制(PWM) 固定幅值、周期,通过改变占空比使得波形能量与要求的波形基本相等。脉宽调制可以直接从DSP输出。2、PWM控制LED的渐变闪烁 事件管理器(EV)的比较单元又称为全比较/PWM单元,功能主要用来产生PWM波形,每一个比较单元可以产生一对(两路)互补的PWM波,每一路PWM波可以控制一个LED的亮灭状态。 通过动态改变PWM波的占空比来调节LED在一个周期内的点亮时间,由于PWM波频率很高,超出人眼分辨率,在人眼里就是连续的灯光,按照渐变占空比的变化,就可以表现为LED亮度的不断变化。三、程序设计与分析1、主程序设计流程图2、程序段设计与分析程序

3、段void Init_Sys(void); /*初始化系统*/ void Init_IOF(void); /*初始化IO*/ void Init_timer0(void); /*初始化CPUTIMER*/ void Init_CPUint(void); /*初始化CPU_int*/ void Init_PIEint(void); /*初始化PIE_int*/ void Init_EV(void); /*初始化EV*/ /interrupt void CPU_timer0_isr(void);interrupt void eva_T1PINT_isr(void);interrupt void e

4、va_CMP1INT_isr(void);interrupt void eva_CMP2INT_isr(void);interrupt void eva_CMP3INT_isr(void);int prdnum;int led1_cmp;int led2_cmp;int led3_cmp;该程序段对系统初始化函数、GPIO初始化函数、CPUint初始化函数、PIE初始化函数、EV初始化函数以及T1周期中断子程序和三个比较中断子程序进行了声明。该程序段还对相关全局变量进行了定义。程序段int led_tab100=587,585,583,580,576,571,565,558,549,540,5

5、30,518,506,493,479,465,449,434,417,400,383,365,347,329,311,293,274,256,238,220,202,185,168,151,136,120,106,92 ,79 ,67 ,55 ,45 ,36 ,27 ,20 ,14 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,14 ,20 ,27 ,36 ,45 ,55 ,67 ,79 ,92 ,106,120,136,151,168,185,202,220,238,256,274,292,311,329,347,365,383,400,417,434,449,465,479,49

6、3,506,518,530,540,549,558,565,571,576,580,583,585 ; 该程序段给出了一个比较值表,其中的数据是给比较单元的比较寄存器CMPRx进行动态赋值的数据。最大值应略小于T1周期值T1PR(586)。程序段void Init_Sys(void) /*初始化系统*/ PLLCR=0xA; PCLKCR=0xffff; HISPCP=0x1; /default LOSPCP=0x2; /default WDCR=0x68; /disable w d LPMCR0=0x0; /Low power -Idlevoid Init_Sys(void)函数用于初始化系

7、统。设置锁相环寄存器PLLCR=0xA,外部晶振为OSCCLK=30MHz,因此系统时钟。设置外设时钟控制寄存器PCLKCR=0xffff,使能片内各种相关外设时钟。设置高速外设时钟预定标寄存器HISPCP=0x1,则高速外设时钟为。设置低速外设时钟预定标寄存器LOSPCP=0x2,则低速外设时钟为。设置看门狗控制寄存器WDCR=0x68,关闭看门狗。设置低功耗模式控制寄存器LPMCR0=0x0,选择IDLE模式。程序段void Init_IOF(void) /*初始化IO*/ int i; GPFMUX=0x00ff; /f8f13 GPFDIR=0x3f00; GPFDAT=0x0700;

8、 GPEMUX=0xfff8; /f8f13 GPEDIR=0x0007; GPBMUX=0x00ff; /f8f13 GPBDIR=0xFF00; GPEDAT=0xFFFA; GPBDAT=0xe300; for(i=0;i100;i+)GPEDAT=0xFFFF;GPEDAT=0xFFFB; GPBDAT=0xe300;for(i=0;i100;i+) GPEDAT=0xFFFF; GPAMUX=0x1; /PWM1 active GPADIR=0x3F; /GPIOA_35 GPADAT=0x00;void Init_IOF(void)函数用于初始化GPIO口。软件设置和操作流程说明如

9、下:设置模式寄存器GPFMUX的高八位为0,使GPIOF813引脚配置为通用数字I/O模式;设置方向寄存器GPFDIR的813位为1,使GPIOF相关引脚配置为输出;设置数据寄存器GPFDAT的1013位为0,810位为1,即点亮绿灯前三位,灭掉后三位,绿灯亮灭状态为00 0111(0为亮,1为灭);设置模式寄存器GPEMUX的低三位为0,使GPIOE20引脚配置为通用数字I/O模式;设置方向寄存器GPEDIR的低三位为1,使GPIOE20相关引脚配置为输出;设置模式寄存器GPBMUX的815位为0,使GPIOB815引脚配置为通用数字I/O模式;设置方向寄存器GPBDIR的815位为1,使G

10、PIOB815引脚配置为输出;设置数据寄存器GPEDAT的GPIOE20位为010,即选通红灯高八位;设置数据寄存器GPBDAT=0xe300;即红灯亮灭状态为1110 0011 0000 0000;延时后锁存;设置数据寄存器GPEDAT=0xFFFB,即GPEDAT的GPIOE20位为011,选通红灯低八位;设置数据寄存器GPBDAT=0xe300;即红灯亮灭状态为1110 0011 1110 0011;延时后锁存;设置模式寄存器GPAMUX=0x1,即设置GPIOA为PWM1口;设置方向寄存器GPADIR=0x3F(0000 0000 0011 1111),即设置05位为PWM1PWM6输

11、出;程序段void Init_CPUint(void) /*初始化CPU_int*/ IFR=0x0; IER=0x3;void Init_CPUint(void)函数用于初始化CPUint;设置CPU中断标志寄存器IFR=0x0,清除中断标志;设置CPU中断使能寄存器IER=0x3,使能第3位对应的中断服务;程序段 void Init_PIEint(void) /*初始化PIE_int*/ PIEIFR1=0; PIEIER2=0xf; PIEIFR2=0; PIEACK =0; PIECTRL=1; CMP1INTVector=&eva_CMP1INT_isr; CMP2INTVector

12、=&eva_CMP2INT_isr; CMP3INTVector=&eva_CMP3INT_isr; T1PINTVector = &eva_T1PINT_isr;void Init_PIEint(void)函数用于初始化PIEint;设置PIE中断标志寄存器PIEIFR1=0,清除PIE控制器中第一组对应中断标志;设置PIE中断使能寄存器PIEIER2=0xf,使能INTx.1 INTx.5;设置PIE中断标志寄存器PIEIFR2=0,清除PIE控制器中第二组对应中断标志;设置PIE中断应答寄存器PIEACK =0, PIE向CPU申请中断;设置PIE控制寄存器PIECTRL=1,使能PIE

13、中断; CMP1INTVector=&eva_CMP1INT_isr; CMP2INTVector=&eva_CMP2INT_isr; CMP3INTVector=&eva_CMP3INT_isr; T1PINTVector = &eva_T1PINT_isr;以上语段用于关联相应中断服务子程序地址与对应的中断向量表,即将中断服务子程序的地址赋给中断向量表。程序段void Init_EV(void) /*初始化EV*/ EXTCONA=1; GPTCONA=0x0010; T1CON =0x17ca; T1PR =586; COMCONA=0x82e0; ACTRA =0x1; DBTCONA

14、= 00; CMPR1=led1_cmp; CMPR2=led2_cmp; CMPR3=led3_cmp; EVAIMRA=0x8e; EVAIFRA=0;void Init_EV(void)函数用于初始化事件管理器;设置控制寄存器EXTCONA=1,采用独立比较输出模式;设置通用定时器全局控制寄存器GPTCONA=0x0010,即T1CMPOE=1,定时器1比较输出使能(T1PWM_T1CMP);设置定时器1控制寄存器T1CON =0x17ca,则TMODE1TMODE0=10,计数模式为连续增模式;输入时钟预定标因子TPS1TPS0为111,输入时钟=高速外设时钟/64;TENABLE=1

15、,使能定时器操作;TCLKS1 TCLKS0=00,时钟源选择内部时钟;TCLD1 TCLD0=10,定时器比较寄存器重载条件为立即重载;设置定时器周期寄存器T1PR =586,定时器1周期值为586;设置比较控制寄存器COMCONA=0x82e0,比较器使能,比较寄存器重载条件为当计数器T1CNT=0时(即下溢中断时)重载,全比较器1、2、3输出使能;设置比较行为控制寄存器ACTRA =0x1,比较输出引脚1低有效;CMPR1=led1_cmp; CMPR2=led2_cmp; CMPR3=led3_cmp;上述语段用于比较寄存器CMPR13值的动态变化,实现占空比的改变;设置EVAIMRA

16、=0x8e,使能定时器1的周期中断和比较中断以及全比较器13的比较中断。设置EVA中断标志寄存器EVAIFRA=0,清除中断标志。程序段 interrupt void eva_T1PINT_isr()int i; GPFDAT= 0x0700; /0000 0111 0000 0000 GPADAT=0x00; /0000 0000 GPEDAT=0xFFFA; GPBDAT=0xe300; for(i=0;i100;i+)GPEDAT=0xFFFF;GPEDAT=0xFFFB;GPBDAT=0x8e00;for(i=0;i=20) prdnum=0; led1_cmp+; if(led1_c

17、mp=100) led1_cmp=0; led2_cmp+; if(led2_cmp=100) led2_cmp=0; led3_cmp+; if(led3_cmp=100) led3_cmp=0; CMPR1=led_tabled1_cmp; CMPR2=led_tabled2_cmp; CMPR3=led_tabled3_cmp; EVAIFRA=0x80;PIEACK= 2;interrupt void eva_T1PINT_isr()函数为定时器1周期中断服务子程序;当发生定时器1周期中断时进行以下操作: GPFDAT= 0x0700; /0000 0111 0000 0000 GPA

18、DAT=0x00; /0000 0000 GPEDAT=0xFFFA; GPBDAT=0xe300; for(i=0;i100;i+)GPEDAT=0xFFFF;GPEDAT=0xFFFB;GPBDAT=0x8e00;for(i=0;i100;i+)GPEDAT=0xFFFF; 设置模式寄存器GPFDAT= 0x0700,即绿灯亮灭状态为00 0111; 设置数据寄存器GPADAT=0x00,允许PWM输出; 设置数据寄存器GPEDAT=0xFFFA,选通红灯高八位LEDA; 设置数据寄存器GPBDAT=0xe300,即红灯亮灭状态为1110 0011 0000 0000; 延时后38译码器锁

19、存; 设置数据寄存器GPEDAT=0xFFFB,选通红灯高八位LEDB; 设置数据寄存器GPBDAT=0x8e00,即红灯亮灭状态为1110 0011 1000 1110;延时后38译码器锁存;当经过一个周期(20ms)时,改变全比较定时器的比较寄存器CMPR13的值,改变输出PWM的占空比;设置EV中断标志寄存器EVAIFRA=0x80,TI周期中断(T1PINT)标志位置位,相应中断提出响应请求;设置PIE中断应答寄存器PIEACK= 2,对第2组中断请求进行应答使能。程序段interrupt void eva_CMP1INT_isr()int i; if(led_tabled1_cmp!

20、=0) GPFTOGGLE=0x0900; /0000 1001 0000 0000 GPATOGGLE=0x04; /0000 0000 0000 0100 GPBTOGGLE=0x2400; GPEDAT=0xFFFA; for(i=0;i100;i+) GPEDAT=0xFFFF; GPBTOGGLE=0x2400; GPBTOGGLE=0x9200; GPEDAT=0xFFFB;/ GPBTOGGLE=0x2400; for(i=0;i100;i+) GPEDAT=0xFFFF; EVAIFRA= 2; PIEACK = 2;interrupt void eva_CMP1INT_isr

21、()函数为定时器A全比较器比较中断1服务子程序;若led_tabled1_cmp!=0(实际恒为1),进行以下操作: GPFTOGGLE=0x0900; /0000 1001 0000 0000 GPATOGGLE=0x04; /0000 0000 0000 0100 GPBTOGGLE=0x2400; GPEDAT=0xFFFA; for(i=0;i100;i+) GPEDAT=0xFFFF; GPBTOGGLE=0x2400; GPBTOGGLE=0x9200; GPEDAT=0xFFFB;/ GPBTOGGLE=0x2400; for(i=0;i100;i+) GPEDAT=0xFFFF

22、; 设置取反寄存器GPFTOGGLE=0x0900,即使绿灯亮灭状态由00 0111变为00 1110; 设置取反寄存器GPATOGGLE=0x04,即允许PWM3输出;设置数据寄存器GPEDAT=0xFFFA,选通红灯高八位LEDA; 设置取反寄存器GPBTOGGLE=0x2400,即使红灯亮灭状态由1110 0011 1000 1110变为1100 0111 1000 1110; 延时后锁存;设置数据寄存器GPEDAT=0xFFFB,选通红灯低八位LEDB; 设置取反寄存器GPBTOGGLE=0x2400,即使红灯亮灭状态由1100 0111 1000 1110变为1100 0111 10

23、10 1010; 设置取反寄存器GPBTOGGLE=0x9200,即使红灯亮灭状态由1100 0111 1010 1010变为1100 0111 0011 1000;延时后锁存;设置EV中断标志寄存器EVAIFRA=2,比较中断(CMP1INT)标志位置位,相应中断提出响应请求;设置PIE中断应答寄存器PIEACK= 2,对第2组中断请求进行应答使能。 程序段 interrupt void eva_CMP2INT_isr()int i; if(led_tabled2_cmp!=0) GPFTOGGLE=0x1200; /0001 0010 0000 0000 GPBTOGGLE=0x4900;

24、 GPEDAT=0xFFFA; for(i=0;i100;i+) GPEDAT=0xFFFF; GPBTOGGLE=0x4900; GPBTOGGLE=0x2400;GPEDAT=0xFFFB;/GPBTOGGLE=0x4900;for(i=0;i100;i+)GPEDAT=0xFFFF; EVAIFRA= 4; PIEACK = 2;interrupt void eva_CMP2INT_isr()函数为定时器A全比较器比较中断2服务子程序; 若led_tabled2_cmp!=0(实际恒为1),进行以下操作:GPFTOGGLE=0x1200; /0001 0010 0000 0000 GPB

25、TOGGLE=0x4900; GPEDAT=0xFFFA; for(i=0;i100;i+) GPEDAT=0xFFFF; GPBTOGGLE=0x4900; GPBTOGGLE=0x2400;GPEDAT=0xFFFB;/GPBTOGGLE=0x4900;for(i=0;i100;i+)GPEDAT=0xFFFF; 设置取反寄存器GPFTOGGLE=0x1200,即使绿灯亮灭状态由00 1110变为01 1100;设置数据寄存器GPEDAT=0xFFFA,选通红灯高八位LEDA; 设置取反寄存器GPBTOGGLE=0x4900,即使红灯亮灭状态由1100 0111 0011 1000变为10

26、00 1110 0011 1000; 延时后锁存;设置数据寄存器GPEDAT=0xFFFB,选通红灯低八位LEDB;设置取反寄存器GPBTOGGLE=0x4900,即使红灯亮灭状态由1000 1110 0011 1000变为1000 1110 0111 0001;设置取反寄存器GPBTOGGLE=0x2400,即使红灯亮灭状态由1000 1110 0111 0001变为1000 1110 0101 0101;延时后锁存;设置EV中断标志寄存器EVAIFRA=4,比较中断(CMP2INT)标志位置位,相应中断提出响应请求;设置PIE中断应答寄存器PIEACK= 2,对第2组中断请求进行应答使能。

27、程序段interrupt void eva_CMP3INT_isr()int i; if(led_tabled3_cmp!=0) GPFTOGGLE=0x2400; /0010 0100 0000 0000 GPATOGGLE=0x10; /0000 0000 0001 0000 GPBTOGGLE=0x9200; GPEDAT=0xFFFA; for(i=0;i100;i+) GPEDAT=0xFFFF; GPBTOGGLE=0x9200; GPBTOGGLE=0x4900; GPEDAT=0xFFFB;/ GPBTOGGLE=0x9200; for(i=0;i100;i+) GPEDAT=

28、0xFFFF; EVAIFRA= 8; PIEACK = 2;interrupt void eva_CMP3INT_isr()函数为定时器A全比较器比较中断3服务子程序; 若led_tabled3_cmp!=0(实际恒为1),进行以下操作:GPFTOGGLE=0x2400; /0010 0100 0000 0000 GPATOGGLE=0x10; /0000 0000 0001 0000 GPBTOGGLE=0x9200; GPEDAT=0xFFFA; for(i=0;i100;i+) GPEDAT=0xFFFF; GPBTOGGLE=0x9200; GPBTOGGLE=0x4900; GPEDAT=0xFFFB;/ GPBTOGGLE=0x9200; for(i=0;i100;i+) GPEDAT=0xFFFF; 设置取反寄存器GPFTOGGLE=0x2400,即使绿灯亮灭状态由01 1100变为11 1000; 设置取反寄存器GPATOGGLE=0x10,即允许PWM5输出; 设置数据寄存器GPEDAT=0xFFFA,选通红灯高八位LED

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

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