欢迎来到天天文库
浏览记录
ID:10894919
大小:65.50 KB
页数:5页
时间:2018-07-08
《嵌入式系统设计报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、嵌入式系统设计报告院系:动力工程学院专业:电气工程及其自动化教师:胡文斌学号:0708190232姓名:邵辰焕完成时间:2010.4.21设计背景:在学习了半个学期的嵌入式系统课程后,在进行了嵌入式的4个基础实验后,对于嵌入式系统的开发环境和MagicARM2410平台都有了初步的了解,试验中通过程序控制MagicARM2410平台上的电机、显示屏、蜂鸣器和LED灯等实验引起了我们极大地兴趣,为了实践创新,巩固知识,所有有了这次的实验设计。设计思路:本次嵌入式实验设计基于MagicARM2410平台,设想在基础实验2.8的基础上寻找创新。由原效果:蜂鸣器响一次之后LED管闪
2、烁5次,经过编程改变后实现蜂鸣器响一次,LED闪一次循环一次,共5次的效果。系统具体设计:MagicARM241采用ARM9作为主控制器,以µCOS-II操作系统作为系统平台,使用CodeWarrior开发环境作为开发工具,软件采用C语言和API编程技术,S3C2410A具有117个通用I/O口,分为A~H等8个端口,由于每个I/O都有第2功能,甚至第3功能,所以需要通过设置GPIOCON寄存器来选择GPIOI/O的功能,其中x可以为A、B、C、D、E、F、G、H,表示相应的I/O端口。具体到程序设计时,在主函数中所调用的函数有:DelayNS(uint32dly),voi
3、dRunBeep(void),voidLED_DispAllOn(void),voidLED_DispAllOff(void),voidLED_DispNum(uint32dat),这几个函数实现了蜂鸣器报警,LED管闪烁等效果。程序设计框图如下: 程序调试及结果分析 1、端口定义:为四个显示LED灯和驱动蜂鸣器定义端口。2、对于LED灯显示,定义voidLED_DispNum(uint32dat)函数,控制灯显示。 3、对于蜂鸣器,定义voidRunBeep(void)函数,用于驱动蜂鸣器响。 4、在执行程序时的确以以蜂鸣器响一次,LED闪一
4、次为一个循环,共循环5次。 5、程序主体部分:============================================================================= #include"config.h" //定义LED控制口(输出高电平时点亮LED) #defineLED1_CON(1<<11)/*GPE11口*/ #defineLED2_CON(1<<12)/*GPE12口*/ #defineLED3_CON(1<<4)/*GPH4口*/ #defineLED4_CON(1<<6)/*
5、GPH6口*/ //定义蜂鸣器控制口 #defineBEEP(1<<10)/*GPH10口*/ #defineBEEP_MASK(~BEEP) voidDelayNS(uint32dly) { uint32i; for(;dly>0;dly--) for(i=0;i<50000;i++); } voidRunBeep(void) { rGPHDAT=rGPHDAT&BEEP_MASK;//BEEP=0 DelayNS(5); rGPHDAT=rGPHDAT
6、BEE
7、P;//BEEP=1 DelayNS(5); } voidLED_DispAllOn(void) { rGPEDAT=rGPEDAT
8、(0x03<<11); rGPHDAT=rGPHDAT
9、(0x05<<4); } voidLED_DispAllOff(void){ rGPEDAT=rGPEDAT&(~(0x03<<11)); rGPHDAT=rGPHDAT&(~(0x05<<4)); } voidLED_DispNum(uint32dat) { dat=dat&0x0000000F;//参数过滤
10、 //控制LED4、LED3显示(d3、d2位) if(dat&0x08)rGPHDAT=rGPHDAT
11、(0x01<<6); elserGPHDAT=rGPHDAT&(~(0x01<<6)); if(dat&0x04)rGPHDAT=rGPHDAT
12、(0x01<<4); elserGPHDAT=rGPHDAT&(~(0x01<<4)); //控制LED2、LED1显示(d1、d0位) rGPEDAT=(rGPEDAT&(~(0x03<<11)))
13、((dat&0x03)<<
此文档下载收益归作者所有