欢迎来到天天文库
浏览记录
ID:20012253
大小:55.00 KB
页数:5页
时间:2018-10-08
《嵌入式系统课程设计报告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
此文档下载收益归作者所有