嵌入式系统课程设计报告new

嵌入式系统课程设计报告new

ID:20012253

大小:55.00 KB

页数:5页

时间:2018-10-08

嵌入式系统课程设计报告new_第1页
嵌入式系统课程设计报告new_第2页
嵌入式系统课程设计报告new_第3页
嵌入式系统课程设计报告new_第4页
嵌入式系统课程设计报告new_第5页
资源描述:

《嵌入式系统课程设计报告new》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、嵌入式系统课程设计报告直流电机控制实验指导老师:王念桥学生姓名:王占龙学号:09010192完成时间:2011/11/22直流电机控制实验一.系统设计背景介绍通过对《ARM9嵌入式系统设计》这门课程的学习,掌握了一些嵌入式系统设计的基本知识;结合以前学过的C语言的编程知识,并查阅相关资料,设计出此程序。二.系统总体设计方案系统总体上来说是以直流电机的控制为基础,实现四级调速。在此基础上添加一些新功能,例如LED显示速度和蜂鸣器报警提示。通过这样一个简单程序的设计,加深对嵌入式系统设计思路、方法、过程的理解。三.系统具体设计(1)系统需求分析1、利用按键控制

2、ARM输出一定占空比的PWM波形,同时用此波形信号驱动直流电机。2、PWM共分四个不同的占空比,且每按一次按键改变一次。3、为了指示当前PWM输出的占空比驱动直流电机的值,用四个LED等指示当前状态。当占空比为1/4时,第一个灯亮;占空比为2/4时点亮第二个灯...以此类推,主要用移位的思想实现。当实现一次周期调速时就用蜂鸣器响一声。(2)硬件设计本实验基于MagicARM2410嵌入式教学实验开发平台,采用ARM9作为主控制器,以µCOS-II操作系统作为系统平台,使用CodeWarrior开发环境作为开发工具。设计上,选择ARM2410嵌入式实验平台作

3、为主控制器构成硬件平台,主要利用其丰富的外部接口和系统本身的直流电机,按键和蜂鸣器等资源来达到实时给直流电机信号、及时处理信号、快速传输信号、达到控制电机的四级控制并能直观地通过观察开发板上的LED灯对电机的当前运行状态进行掌握的目的。(3)软件设计系统流程图:1总体程序设计思路  本程序采用查询方式,在主函数中调用WaitKey(void),RunBeep(void),PWM_Init(uint16cycle,uint16duty),LED_DispNum(uint32dat)这几个子函数实现分级控制实时监控直流电机的目的。2子程序设计1、端口定义:新定

4、义了四个显示LED灯的端口和驱动蜂鸣器的端口。2、对于LED灯显示,定义了voidLED_DispNum(uint32dat)函数,控制灯显示,其中LED1为最低3、对于蜂鸣器,定义了voidRunBeep(void)函数,用于驱动蜂鸣器响。4、在主函数(main)中,新定义了uint8i;用来指示当前点亮的灯的对应位。5、把初始时电机的级别改变为第一级,同时点亮第一个灯。6、新增加了端口定义://初始化I/OrGPECON=(rGPECON&(~(0x0F<<22)))

5、(0x05<<22);//rGPECON[25:22]=0101b,设置GPE11、

6、GPE12为GPIO输出模式rGPHCON=(rGPHCON&(~(0x33<<8)))

7、(0x11<<8);//rGPHCON[13:8]=01xx01b,设置GPH4、GPH6为GPIO输出模式rGPHCON=(rGPHCON&(~(0x03<<20)))

8、(0x01<<20);//rGPHCON[21:20]=01b,设置GPH10为GPIO输出模式具体子程序(1)voidRunBeep(void){rGPHDAT=rGPHDAT&BEEP_MASK;//BEEP=0DelayNS(5);rGPHDAT=rGPHDAT

9、BEEP;//BEEP=1De

10、layNS(5);}(2)voidWaitKey(void){uint32i;while(1){while((rGPFDAT&KEY_CON)==KEY_CON);//等待KEY键按下for(i=0;i<1000;i++);//延时去抖if((rGPFDAT&KEY_CON)!=KEY_CON)break;}while((rGPFDAT&KEY_CON)!=KEY_CON);//等待按键放开}(3)voidPWM_Init(uint16cycle,uint16duty){//参数过滤if(duty>cycle)duty=cycle;//设置定时器0,即PW

11、M周期和占空比//Fclk=200MHz,时钟分频配置为1:2:4,即Pclk=50MHz。rTCFG0=97;//预分频器0设置为98,取得510204HzrTCFG1=0;//TIMER0再取1/2分频,取得255102HzrTCMPB0=duty;//设置PWM占空比rTCNTB0=cycle;//定时值(PWM周期)if(rTCON&0x04)rTCON=(1<<1);//更新定时器数据(取反输出inverter位)elserTCON=(1<<2)

12、(1<<1);rTCON=(1<<0)

13、(1<<3);//启动定时器}(4)voidLED_Disp

14、Num(uint32dat){dat=dat&0x0000000F

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

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

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