2012嵌入式系统课程设计报告书6
嵌入式系统设计与应用课程设计报告
bzero(&(my_addr.sin_zero),8);
//绑定套接字描述符sockfd
if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))==-1)
while(1)
{
sin_size = sizeof(struct sockaddr_in);
//如果建立连接,将产生一个全新的套接字
if((new_fd = accept(sockfd,(struct sockaddr *)&their_addr,&sin_size))==-1)
{
perror("accept");
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <netinet/in.h>
#include “sum.h”
main()
{
int sockfd,new_fd,numbytes;
struct sockaddr_in my_addr;
exit(1);
}
//生成一个子进程来完成和客户端的会话,父进程继续监听
if(!fork())
{
//读取客户端发来的信息
if((numbytes = recv(new_fd,buff,strlen(buff),0))==-1)
{
perror("recv");
嵌入式系统设计课设报告材料
实用标准文档福州大学《嵌入式系统设计课设》报告书题目:基于28027的虚拟系统姓名:学号:学院:电气工程与自动化学院专业:电气工程与自动化年级:起讫日期:指导教师:目录1、课程设计目的 (1)2、课程设计题目和实现目标 (1)3、设计方案 (1)4、程序流程图 (1)5、程序代码 (1)6、调试总结 (1)7、设计心得体会 (1)8、参考文献 (1)1、课程设计目的《嵌入式系统设计课设》是与《嵌入式系统设计》课程相配套的实践教学环节。
《嵌入式系统设计》是一门实践性很强的专业基础课,通过课程设计,达到进一步理解嵌入式芯片的硬件、软件和综合应用方面的知识,培养实践能力和综合应用能力,开拓学习积极性、主动性,学会灵活运用已经学过的知识,并能不断接受新的知识。
培养大胆发明创造的设计理念,为今后就业打下良好的基础。
通过课程设计,掌握以下知识和技能:1.嵌入式应用系统的总体方案的设计;2.嵌入式应用系统的硬件设计;3.嵌入式应用系统的软件程序设计;4.嵌入式开发系统的应用和调试能力2、课程设计题目和实现目标课程设计题目:基于28027的虚拟系统任务要求:A、利用28027的片上温度传感器,检测当前温度;B、通过PWM过零中断作为温度检测A/D的触发,在PWM中断时完成温度采样和下一周期PWM占空比的修正;PWM频率为1K;C、利用按键作为温度给定;温度给定变化从10度到40度。
D、当检测温度超过给定时,PWM占空比增减小(减小幅度自己设定);当检测温度小于给定时,PWM占空比增大(增大幅度自己设定);E、把PWM输出接到捕获口,利用捕获口测量当前PWM的占空比;F、把E测量的PWM占空比通过串口通信发送给上位机;3、设计方案-----介绍系统实现方案和系统原理图①系统实现方案:任务A:利用ADC模块通道A5获取当前环境温度。
任务B:PWM过零触发ADC模块,在PWM中断服务函数中,将当前环境温度和按键设定温度进行比较,并按照任务D的要求修订PWM占空比。
嵌入式系统课程设计报告
嵌入式系统课程设计报告一、教学目标本课程的教学目标是使学生掌握嵌入式系统的基本概念、原理和设计方法,能够运用嵌入式系统进行实际项目的开发和实现。
具体来说,知识目标包括了解嵌入式系统的定义、特点、分类和应用领域;掌握嵌入式系统的硬件和软件组成及工作原理;熟悉嵌入式操作系统的基本概念和常用操作系统。
技能目标包括能够使用嵌入式系统开发工具和平台进行程序设计和调试;具备嵌入式系统硬件电路的设计和调试能力;能够运用嵌入式系统进行实际项目的开发和实现。
情感态度价值观目标包括培养学生的创新意识和团队合作精神,提高学生解决实际问题的能力和责任感。
二、教学内容根据课程目标,本课程的教学内容主要包括嵌入式系统的基本概念、原理和设计方法。
具体包括以下几个方面:1. 嵌入式系统的定义、特点、分类和应用领域;2. 嵌入式系统的硬件组成,如处理器、存储器、输入输出接口等;3. 嵌入式系统的软件组成,如固件、操作系统、应用程序等;4. 嵌入式操作系统的基本概念和常用操作系统;5. 嵌入式系统的设计方法和开发流程;6. 嵌入式系统硬件电路的设计和调试方法;7. 嵌入式系统在实际项目中的应用和案例分析。
三、教学方法为了实现课程目标,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
通过多样化的教学方法,激发学生的学习兴趣和主动性。
具体教学方法如下:1. 讲授法:通过讲解嵌入式系统的基本概念、原理和设计方法,使学生掌握相关知识;2. 讨论法:通过分组讨论和课堂讨论,培养学生的思考能力和团队合作精神;3. 案例分析法:通过分析实际项目案例,使学生了解嵌入式系统在实际中的应用和设计方法;4. 实验法:通过实验操作和调试,锻炼学生的动手能力和实际问题解决能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将选择和准备以下教学资源:1.教材:选用权威、实用的嵌入式系统教材,为学生提供系统的学习资料;2. 参考书:推荐学生阅读相关参考书籍,丰富学生的知识体系;3. 多媒体资料:制作课件、教案等多媒体教学资料,提高课堂教学效果;4. 实验设备:准备嵌入式系统开发板、仿真器等实验设备,为学生提供实践操作的机会。
嵌入式课程设计实训报告
一、实训目的通过本次嵌入式课程设计实训,使学生掌握嵌入式系统设计的基本原理和方法,提高学生的实际操作能力和创新意识,培养学生的团队协作精神。
同时,通过实训,使学生熟悉嵌入式系统的硬件平台、软件开发环境,掌握嵌入式编程语言,了解嵌入式系统的调试和测试方法。
二、实训内容本次实训以设计一个简单的温室环境监测系统为例,主要包括以下几个方面:1. 系统需求分析温室环境监测系统主要实现对温室内部光照、温度、湿度的实时监测,并根据监测结果自动调节环境参数,确保温室内的作物生长环境稳定。
系统需具备以下功能:(1)实时监测光照、温度、湿度等环境参数;(2)根据预设阈值,自动调节环境参数;(3)通过LCD显示屏实时显示监测数据;(4)通过串口通信将数据传输至上位机;(5)具有按键控制功能,如开关报警、手动调节等。
2. 硬件平台设计本次实训采用STM32系列微控制器作为核心控制单元,结合DS18B20数字温度传感器、DHT11数字湿温度传感器、光敏电阻、LCD显示屏、蜂鸣器、按键等外围设备,构建温室环境监测系统硬件平台。
3. 软件设计(1)系统初始化:初始化微控制器,配置相关外设参数,设置中断优先级等。
(2)数据采集:通过ADC读取光敏电阻的模拟值,计算光照强度;通过DS18B20和DHT11传感器读取温度和湿度数据。
(3)数据处理:对采集到的数据进行处理,如温度、湿度阈值判断,光照强度阈值判断等。
(4)环境参数调节:根据预设阈值,自动调节加热装置、风扇等设备,以实现环境参数的自动调节。
(5)数据显示:通过LCD显示屏实时显示光照、温度、湿度等数据。
(6)串口通信:通过串口将数据传输至上位机。
(7)按键控制:实现报警功能、手动调节等功能。
4. 系统调试与测试在系统开发过程中,对硬件平台和软件进行调试和测试,确保系统稳定运行。
主要测试内容包括:(1)硬件测试:检查各外设是否正常工作,如传感器、显示屏、按键等。
(2)软件测试:测试系统功能是否满足需求,如数据采集、处理、显示、通信等。
嵌入式课程设计报告
课程名称:嵌入式系统课程设计先修课程:操作系统、C语言程序设计一、目标和任务《嵌入式系统课程设计》是计算机学生专业实践课程,是学习《嵌入式系统及设计》课程后必需实践教学步骤。
课程设计是检验学生是否掌握相关专业课程知识关键手段,以学生为主体,充足调动学生主动性和发明性,重视学生实际动手能力培养。
经过本课程设计使学生加深了解、巩固课堂教学和平时试验内容,使学生初步含有linux应用开发系统分析、系统设计、系统实现和测试实际能力,强化学生知识实践意识、提升动手能力,发挥学生想象力和创新能力,从而培养工程应用型人才。
二、教学基础要求1、学习态度:要有勤于思索、刻苦钻研学习精神和严厉认真、一丝不苟、有错必改、精益求精工作态度,主动查阅整理分析相关参考文件,精心设计、认真编码、确保质量。
对弄虚作假者,课程设计成绩一律按不及格记,并依据学校相关要求给处理。
2、学习纪律:要严格遵守学习纪律,遵守作息时间,不得迟到、早退和旷课。
特殊情况不能上课者,必需请假,凡未请假或未获准假私自不上课者,均按旷课论处。
3、课程目标:掌握linux应用开发基础理论知识和基础方法技能,概念清楚正确,系统分析、系统设计、系统实现、系统测试符合软件工程相关规范,结构合理,程序运行良好,课程设计汇报撰写规范,答辩中回复问题正确。
4、课程设计汇报:根据《东华理工大学长江学院课程设计汇报规范》和《嵌入式系统课程设计》任务书要求,认真设计、撰写好课程设计汇报,总结课程设计收获和心得体会,立即提交电子和纸质材料。
三、课程设计内容(一)关键设计内容1、系统分析、总体设计、概要设计、具体设计、系统实现和测试。
2、系统运行和维护。
3、撰写课程设计汇报。
4、课程设计答辩:课题叙述和回复问题。
(二)参考选题1.系统移植类:(1)嵌入式WinCE移植(2)嵌入式Linux2.6内核移植(3)嵌入式Web服务器BOA在开发板上移植(4)使用BusyBox构建根文件系统移植(5)嵌入式QT移植(6)嵌入式引导程序UBoot移植2. QT编程类:(1)基于QT手机通讯录管理(2)基于QT手机日历程序(3)基于QT手机计算器程序(4)基于QT手机秒表程序(5)基于QT电子词典程序(6)基于QT电子相框程序3. 驱动编程类:(1)Led跑马灯程序(2)按键驱动程序(3)嵌入式类Minicom串口程序4. 其它类:可选择其它自己感爱好和嵌入式相关题目四、时间安排《嵌入式系统课程设计》安排在第六学期进行,时间1周。
嵌入式系统设计课设报告范本
嵌入式系统设计课设报告福州大学《嵌入式系统设计课设》报告书题目:基于28027的虚拟系统姓名:学号:学院:电气工程与自动化学院专业:电气工程与自动化年级:起讫日期:指导教师:目录1、课程设计目的 (1)2、课程设计题目和实现目标 (1)3、设计方案 (1)4、程序流程图 (1)5、程序代码 (1)6、调试总结 (1)7、设计心得体会 (1)8、参考文献 (1)1、课程设计目的《嵌入式系统设计课设》是与《嵌入式系统设计》课程相配套的实践教学环节。
《嵌入式系统设计》是一门实践性很强的专业基础课,经过课程设计,达到进一步理解嵌入式芯片的硬件、软件和综合应用方面的知识,培养实践能力和综合应用能力,开拓学习积极性、主动性,学会灵活运用已经学过的知识,并能不断接受新的知识。
培养大胆创造创造的设计理念,为今后就业打下良好的基础。
经过课程设计,掌握以下知识和技能:1.嵌入式应用系统的总体方案的设计;2.嵌入式应用系统的硬件设计;3.嵌入式应用系统的软件程序设计;4.嵌入式开发系统的应用和调试能力2、课程设计题目和实现目标课程设计题目:基于28027的虚拟系统任务要求:A、利用28027的片上温度传感器,检测当前温度;B、经过PWM过零中断作为温度检测A/D的触发,在PWM中断时完成温度采样和下一周期PWM占空比的修正;PWM频率为1K;C、利用按键作为温度给定;温度给定变化从10度到40度。
D、当检测温度超过给定时,PWM占空比增减小(减小幅度自己设定);当检测温度小于给定时,PWM占空比增大(增大幅度自己设定);E、把PWM输出接到捕获口,利用捕获口测量当前PWM的占空比;F、把E测量的PWM占空比经过串口通信发送给上位机;3、设计方案-----介绍系统实现方案和系统原理图①系统实现方案:任务A:利用ADC模块通道A5获取当前环境温度。
任务B:PWM过零触发ADC模块,在PWM中断服务函数中,将当前环境温度和按键设定温度进行比较,并按照任务D的要求修订PWM占空比。
嵌入式系统原理与应用课程设计报告书
嵌入式系统原理及应用课程设计报告题g: 电子时钟的设计与实现班级:文专电0931姓名:阳学号:3试验台号:10 ____________________指导老师:邱秀芹______________程序成绩:____________________报告成绩:____________________ 总成绩:优良中及格不及格2012年2月25日一.课程设计目的通过该课程设计将嵌入式系统原理及应用课程中所学的处理器和接口等技术应用于实际设计中。
通过中断、PWM定时器、串口、SIO、GPIO等技术在实验平台上进行综合设计,在理论和实验的基础上进一步提高综合设计能力。
二.课程设计容及功能要求1.通过一个PWM定时计数器,釆用定时中断的功能,设计能够在LED±进行时分秒显示的时钟;2.通过键盘实现对钟的功能;3.实现闹钟的功能,闹钟的时间由键盘输入进行设定;4.将时钟在超级终端上显示;时间的设定可以通过超级终端实现;三.功能实现1・总体功能框图2•详细设计:(将所设计的各部分的功能程序框图及相关程序代码进行详细的描述)①.#include M uhal.h H#mclude H myuart.h n#mclude H KeyBoaid.h H#mclude H Tuner.h n#mclude H Isr.h n#include H44b.h H#mclude ”Zlg7289.1T#mclude n def.h n#mclude H lcd320.h Hmt T iiner3 INT C ou nt=O;iiit hour = 0 ;iiit minute = 0 ;#pragnia uupoil(_use_no_senuliostmg_swi) // ensuie no functions that use senuliostmg mt maiii(void)iiit clock Ji = 23 ;iiit clock_m = 59 ;iiit clock_s = 0 ;iiit kev ;J 7iiit val=0;ARMTaigetlnitQ; 〃开发版初始化Zlg7289_Reset();Iiut_Tmier3(l 00,16.40000,20000);INTS_OFFQ;//Disable intemipt ill PSRSetISR_In 忙mipt(INT_TIMER3_OFFSEI;Timei3_ISR,0);Open_INT_GLOBAL();Open_INT(EIT_TIMER3);INTS_ONQ;//Enable intemipt ill PSRStail_Timer3();key=Zlg7289_ReadKey();Stop_Timei30 ;Delay(100); 〃按键值赋给key o〃防止中断影if( key = 18)〃秒设置,键盘3按卜•时扫描值为18 〃延时让数码管频率显示可见。
嵌入式系统课程设计报告
课程设计报告俄罗斯方块游戏班级:学号:姓名:2012年10月1. 题目俄罗斯方块游戏2. 系统简介俄罗斯方块是一款容易上手,却又十分耐玩的游戏。
曾经风靡一时,虽然现在玩这款游戏的人已经越来越少,不过这款游戏的绝对称得上是经典。
本作品基于嵌入式开发平台和ucos-II操作系统进行开发,利用多进程和多任务的调用,实现了俄罗斯方块游戏的基本功能以及一些辅助功能。
首先开机以后是开机画面,2秒后开机画面结束,进入游戏界面。
游戏界面由两大部分组成,左边整个区域都是用来显示游戏的主界面,右边区域不仅包括了开始游戏,暂停游戏,以及旋转、下降、左移、右移的控制按钮,还包括总分数统计、游戏时间以及将出现的下一个方块形状提示等。
与此同时你也可以用平台自带的键盘进行游戏控制,比如“Num”键对应着重新开始游戏功能,“/”键对应着暂停游戏功能,“5”、“7”、“8”、“9”分别对应着旋转、下降、左移、右移四个方向键。
在游戏开始后,背景音乐也同时响起。
在玩游戏的过程中,会有按照你同时消除方块数的不同所得分数也不相同,即如果一次只消除一行的话,只能得到1分,一次同时消除两行则会得到4分,如果一次同时消除三行则会得到9分,如果一次消除四行则会得到16分。
这也就是说这游戏提倡一次消除的行数越多越好。
随着游戏时间的推移,游戏速度也会随之加快;但为了让一些新手玩家更快地熟悉游戏,本作品还十分人性化设计了用“+”、“-”号来手动调节游戏速度,如果你觉得游戏速度过快,你可以用“+”使游戏速度变慢;反之,你也可以用“-”号让游戏速度加快。
在游戏结束以后,有“Game Over”提示,并且系统对你当前得分进行判定如果高于最高分,则会将你这局游戏的分数用最高分的形式表现出来,游戏最开始的初始最高分为10分。
分数会显示在LED晶体管上,左边四位为当前游戏的分数,右边四位为最高分数。
3. 系统设计(1)系统总体结构设计俄罗斯方块总体结构可以分为四个大模块:游戏界面绘制、消息循环、方块处理和辅助功能。
嵌入式系统课程设计报告实验报告
- - -. 嵌入式系统课程设计必做部分学院:电控学院专业:通信工程设计名称:IIC同步串行通讯1、设计的目的:1.掌握S3C44B0IIC控制器的编程方法2.编程实现串行EEPROM存储器24C16的数据存储和访问。
2、设计的内容:1.学习S3C44B0 IIC控制器的原理与编程方法;2.学习IIC存储器24C16的编程方法;3.理解IIC存储器24C16的与S3C44B0的电路连接原理;4.掌握C语言中断程序设计方法;5.编程实现对24C16的数据存储和访问。
3、设计思路、遇到的问题及解决方法:此次试验,我们结合《嵌入式系统原理及应用》教材以及老师提供的各种pdf和word资料,了解到了各种寄存器的配置方法,如IICDS等。
对于例程中的各种函数,如Wr24C16(), Rd24C16(),__irq IicInt()等,通过对程序的仔细研读,最终了解了它们的各自用途,并在此基础上,编写了主函数。
实现了从0-255共256个字节的写入及读取操作。
这次实验我们遇到了不少的难题,像开始使用ARM-Project Manager平台一开始,由于对此平台的不了解,我们走了许都弯路。
像对于头文件的配置问题,总是配置不对,后来发现头文件为程序自主生成,无需配置。
还有关于程序中的一些.s文件,开始并不知道是有何作用,后来在老师的指点下,发现有必要将其加入到sourse文件栏中调用,同时调用的同时,由于不理解调用的路径问题,多次编译失败,后来发现了问题,是路径配置不当,最终更改了路径,解决了问题。
再有,在对老师提供的例程进行阅读时候,发现了不少的啰嗦以及错误语句,例如Uart_Printf("%d\n",k);语句就不应该为Uart_Printf("%d\n",&k);这些问题我们都通过调试最终给予了改正。
4、设计的结果及验证正确输出结果如下截图,从超级终端中回显显示了正确数据,实验成立。
嵌入式系统课程设计报告
课程设计报告基于ARM的嵌入式电子点菜系统班级:学号:姓名:2012年10月1. 题目基于ARM的嵌入式电子点菜系统2. 系统简介在基于ARM的嵌入式环境下,本电子点菜系统可实现的功能有:支持触摸屏图形选菜以及记录菜单等功能。
界面美观,功能合理,基本达到了实验要求的内容。
3. 系统设计3.1设计背景随着我国的餐饮企业的蓬勃发展,餐饮行业成为国内最早的一个完全市场化的行业,个体民营占绝对优势和主导的行业,市场竞争非常充分,在广大的餐饮企业的经营者的不懈努力下,餐饮行业取得了非常突出的发展和进步。
3.2设计意义传统的点菜方式由人工来传递菜单,不仅浪费时间、效率低下;一旦生意火热,单据多,信息量大时,分单、传菜等环节很容易出现错误,从而直接影响服务质量。
导致企业造成不必要的损失。
而本文介绍的电子点菜系统,大大降低人力资源成本,加快各环节之间的数据流通,对企业软环境的档次有较大提高。
在以特色服务吸引客户的同时,有效提高餐饮机构的服务质量和工作效率,为餐饮业创造更多利润。
3.3总体设计图1 实验程序流程图3.4代码编译及注释本实验要求实现部分:(1)、MainTask中按键消息获取,处理(2)、按键处理函数OnKey()函数(3)、创建串口处理任务Serial_Receive_Task(void *Id)(4)、实现串口消息换取,处理(在LCD或数码管上显示)函数OnReceive(char nRdata) 初始化操作:void initOSGUI()//初始化操作系统的图形界面{initOSMessage();initOSList();initOSDC();initOSCtrl();initOSFile();}/////////////////////////////////////////////////////// Main function. //////////////////////////////////////////////////////int main(void){ARMTargetInit(); //开发板初始化OSInit(); //操作系统初始化uHALr_ResetMMU();//复位MMULCD_Init(); //初始化LCD模块LCD_printf("LCD initialization is OK\n");//向液晶屏输出数据LCD_printf("320 x 240 Text Mode\n");initOSGUI();//初始化图形界面LoadFont();//调Unicode字库LoadConfigSys();//使用config.sys文件配置系统设置LCD_printf("Create task on uCOS-II...\n");OSTaskCreate(Main_Task,(void*)0,(OS_STK*)&Main_Stack[STACKSIZE*8-1],Main_Task_Prio);// 创建系统任务3.4.1 触摸功能设计实现设计思想是让LCD 显示屏每页显示六道菜,触摸实现点菜确认,所以在触摸屏上安排了九个区间的触摸功能用以下代码完成触摸区域。
嵌入式实验课程设计报告
嵌入式实验课程设计报告一、课程目标知识目标:1. 学生能理解嵌入式系统的基础知识,掌握其基本组成和工作原理。
2. 学生能够掌握嵌入式编程的基本语法和常用指令,具备编写简单嵌入式程序的能力。
3. 学生能够了解嵌入式系统在实际应用中的优势和局限性。
技能目标:1. 学生能够运用所学知识,进行简单的嵌入式系统设计和程序开发。
2. 学生能够使用嵌入式实验设备,进行实际操作,并解决常见问题。
3. 学生能够通过团队协作,完成一个具有实际应用价值的嵌入式项目。
情感态度价值观目标:1. 学生对嵌入式系统产生兴趣,激发其学习主动性和积极性。
2. 学生能够认识到嵌入式技术在国家战略和社会发展中的重要性,培养其社会责任感和使命感。
3. 学生在课程学习过程中,培养良好的团队合作精神和沟通能力,形成正确的价值观。
课程性质分析:本课程为嵌入式实验课程,侧重于实践操作和项目实践。
课程内容紧密结合教材,旨在帮助学生将理论知识与实际应用相结合。
学生特点分析:本年级学生已具备一定的计算机基础和编程能力,对新鲜事物充满好奇,具备较强的动手能力和创新能力。
教学要求:1. 注重理论与实践相结合,提高学生的实际操作能力。
2. 采用项目驱动教学法,培养学生的团队协作和解决问题的能力。
3. 激发学生的学习兴趣,引导其探索嵌入式技术在实际应用中的奥秘。
二、教学内容1. 嵌入式系统概述:介绍嵌入式系统的基本概念、发展历程、应用领域及未来发展趋势。
教材章节:第一章 嵌入式系统概述2. 嵌入式系统组成:讲解嵌入式系统的硬件组成、软件架构及系统设计方法。
教材章节:第二章 嵌入式系统硬件组成;第三章 嵌入式系统软件架构3. 嵌入式编程基础:学习嵌入式编程的基本语法、常用指令和编程技巧。
教材章节:第四章 嵌入式编程语言与编程环境;第五章 嵌入式程序设计基础4. 嵌入式系统设计与实践:通过项目实践,让学生掌握嵌入式系统的设计方法和实际操作。
教材章节:第六章 嵌入式系统设计与实践5. 嵌入式系统应用案例分析:分析典型嵌入式应用案例,了解嵌入式技术的实际应用。
嵌入式系统课程设计报告_6
嵌入式系统课程设计报告嵌入式系统课程设计报告课程名称:嵌入式系统课程设计项目名称:基于ARM实现MP3音乐盒专业:电子科学与技术一、设计内容基本功能:预存四首歌曲,实现循环播放;每个按键对应一首歌曲。
拓展功能:通过按键简单演奏音乐,类似钢琴;实现两个模式的切换,切歌模式和音量加减模式。
二、设计思路基础功能:将音频数据存储在SD卡中,使用FATFS文件系统进行数据的读写,通过SPI2总线将数据传到内核。
内核再将数据通过SPI1总线传送到音频解码模块VS1053,输入的数据(即比特流数据)被解码后送到DAC发出声音。
将音乐存储在SD卡内,通过文件的地址来判别将要播放哪一首音乐,通过地址的递增和循环来实现音乐的自动循环播放。
按键对曲目的控制,可通过键盘扫描函数,判断哪一个键被按下,使键盘扫描函数返回不同的返回值,实现对文件地址的控制。
将此返回值设置为全局变量,可实现在音乐播放中曲目的切换。
另外,我们还利用解码模块实现对音量的控制,使用按键控制音量的提高或降低。
使用SPI1总线将TFT显示屏连接到内核,显示按键功能、当前曲目、当前模式等信息。
由于开发板只有5个按键,按键数量有限,需要对按键实现曲目切换和音量功能的复用。
我们小组设置了两种模式,切歌模式和音量模式,并定义左键为模式切换键,实现不同模式的选择和按键的复用。
拓展功能:基本思路是通过定时器中断来产生一定频率的50% 空占比的脉宽调制波,用此脉宽调制波激励扬声器,从而使扬声器发出一定频率的声音。
所以只要将不同按键的中断子程序设置为对定时器进行不同数据的配置,即可实现不同按键与不同扬声器发生频率的对应。
然后使一个按键的按下与松开均进入中断,且分别实现开启(扬声器发声)与关闭(扬声器不发声)定时器的功能,从而使课题的附加功能表现地更自然。
三、硬件配置基础功能:(1)SD卡:存储音频数据配置方法:根据开发板原理图,配置方法如下图所示(2)VS1053解码芯片:将输入的比特流解码后送入DAC配置方法:音频解码模块与开发板接线方式://5V---5V//GND--GND//XRST--PG8//MISO--PA6//MOSI--PA7//SCLK--PA5//DREQ--PG7//XCS--PE6//XDCS--PG6(3)TFT显示屏(4)外放音响拓展功能:PC机一台;P4 2.06CPU/40GHD/512M RAM以上配置,STM32F103 开发板一套;外接扬声器一个四、设计步骤或流程图基础功能:1.初始化包括单片机本身的初始化和VS1053的初始化(1)初始化STM32 的IO 口和SPI;(2)VS1053 进行存储器测试;(3)初始化设置音频输出,设置音频输入要设置成VS1053;(4)VS1053 进行正弦波测试;(5)VS1053 进行一些基本设置,包括音效模式等。
嵌入式系统设计课设报告
时间:二O二一年七月二十九日福州年夜学之阿布丰王创作《嵌入式系统设计课设》陈说书题目:基于28027的虚拟系统姓名:学号:学院:电气工程与自动化学院专业:电气工程与自动化年级:起讫日期:指导教师:目录1、课程设计目的12、课程设计题目和实现目标13、设计方案14、法式流程图15、法式代码16、调试总结17、设计心得体会18、参考文献11、课程设计目的《嵌入式系统设计课设》是与《嵌入式系统设计》课程相配套的实践教学环节.《嵌入式系统设计》是一门实践性很强的专业基础课,通过课程设计,到达进一步理解嵌入式芯片的硬件、软件和综合应用方面的知识,培养实践能力和综合应用能力,开拓学习积极性、主动性,学会灵活运用已经学过的知识,并能不竭接受新的知识.培养年夜胆发明缔造的设计理念,为今后就业打下良好的基础.通过课程设计,掌握以下知识和技能:1.嵌入式应用系统的总体方案的设计;2.嵌入式应用系统的硬件设计;3.嵌入式应用系统的软件法式设计;4.嵌入式开发系统的应用和调试能力2、课程设计题目和实现目标课程设计题目:基于28027的虚拟系统任务要求:A、利用28027的片上温度传感器,检测以后温度;B、通过PWM过零中断作为温度检测A/D的触发,在PWM中断时完成温度采样和下一周期PWM占空比的修正;PWM频率为1K;C、利用按键作为温度给定;温度给定变动从10度到40度.D、当检测温度超越给按时,PWM占空比增减小(减小幅度自己设定);当检测温度小于给按时,PWM占空比增年夜(增年夜幅度自己设定);E、把PWM输出接到捕捉口,利用捕捉口丈量以后PWM的占空比;F、把E丈量的PWM占空比通过串口通信发送给上位机;3、设计方案-----介绍系统实现方案和系统原理图①系统实现方案:任务A:利用ADC模块通道A5获取以后环境温度.任务B:PWM过零触发ADC模块,在PWM中断服务函数中,将以后环境温度和按键设定温度进行比力,并依照任务D的要求修订PWM占空比. PWM频率为1K HZ:根据关系式:TBCLK=SYSCLKOUT/(HSPCLKDIV*CLKDIV)取SYSCLKOUT=60M HZ,HSPCLKDIV=6,CLKDIV=1,求得TBCLK=10M HZ.将period设为10K,便获得1K HZ 的PWM波.任务C:用KEY模块的中断实现温度给定.任务D:在PWM的周期结束发生的中断中,通过改变比力点CMPA的位置来改变PWM占空比的年夜小.任务E:利用CAP模块设置3个捕捉点捕捉PWM的上升沿和下降沿,计算获得PWM波的占空比.任务F:利用SCI模块实现串口通信将温度和占空比上传到上位机.另外,各模块的配置都与GPIO模块有关.②系统原理图:28027 C2000 Piccolo Launchpad原理图4、法式流程--------各个模块的流程图5、法式代码①/*app.c*/// the includes#include"Application/app.h"//**************************************************************************// the defines//**************************************************************************// the globals//**************************************************************************// the functionsvoid delay(uint32_t time){while(time--);}//延时函数// end of file②/*isr.c*/// the includes#include"Application/isr.h"//********************************************************* *****************// the defines//********************************************************* *****************// the globals//********************************************************* *****************// the functionsinterruptvoid LED_PWM_isr(void)//PWM的中断服务函数{if(MY_ADC<SET_TEMP)//环境检测温度小于设定温度时{mycmp-=100*(SET_TEMP-MY_ADC);//PWM占空比增年夜}else{mycmp+=100*(MY_ADC-SET_TEMP);//环境检测温度年夜于设定温度 // PWM占空比减小}PWM_setCmpA(myPwm1,mycmp);//设定CmpA值PWM_clearIntFlag(myPwm1);//清零PWM中断标识表记标帜位 PIE_clearInt(myPie,PIE_GroupNumber_3);//清零PIE中断标识表记标帜位mycmp=5000;//将比力点初值设为5000}interruptvoid MY_ADC_isr(void)//ADC中断服务函数{ MY_ADC=ADC_readResult(myAdc,ADC_ResultNumber_0);//获取ADC转换的数字量MY_ADC= ADC_getTemperatureC(myAdc, MY_ADC);//将数字量转换为温度值ADC_clearIntFlag(myAdc, ADC_IntNumber_1);//清除中断标识表记标帜位PIE_clearInt(myPie,PIE_GroupNumber_10);}interruptvoid KEY_xint1_isr(void)//按键中断服务函数{SET_TEMP++;if(SET_TEMP>40){SET_TEMP=10;}PIE_clearInt(myPie,PIE_GroupNumber_1);}interruptvoid MY_CAP_isr(void)//CAP中断服务函数{uint32_tCapEvent1Count=0,CapEvent2Count=0,CapEvent3Count=0;float fPwmDuty=0.0;CapEvent1Count = CAP_getCap1(myCap);CapEvent2Count = CAP_getCap2(myCap);CapEvent3Count = CAP_getCap3(myCap);fPwmDuty = (float)(CapEvent2Count - CapEvent1Count) / (CapEvent3Count - CapEvent1Count);//计算PWM占空比fPwmDuty=fPwmDuty*100;NOW_PWM=(int)fPwmDuty;CAP_clearInt(myCap, CAP_Int_Type_CEVT3);CAP_clearInt(myCap, CAP_Int_Type_Global);// Acknowledge this interrupt to receive more interrupts from group 4PIE_clearInt(myPie, PIE_GroupNumber_4);}// end of file①/*F2802x_Device.h*/#include"F2802x_Component/include/adc.h"#include"F2802x_Component/include/clk.h"#include"F2802x_Component/include/flash.h"#include"F2802x_Component/include/gpio.h"#include"F2802x_Component/include/pie.h"#include"F2802x_Component/include/pll.h"#include"F2802x_Component/include/timer.h"#include"F2802x_Component/include/wdog.h"#include"F2802x_Component/include/sci.h"#include"F2802x_Component/include/cap.h"①/*Key.c*/// the includes#include"User_Component/Key/Key.h"//********************************************************* *****************// the defines//********************************************************* *****************// the globals//********************************************************* *****************// the functions// the function prototypes//! \brief KEY initail//! \param[in] None//! \param[out] Nonevoid KEY_initial(void){}////! \brief KEY configure//! \param[in] None//! \param[out] Nonevoid KEY_config(void){ //按键为GPIO12设置为输入口//1. modeGPIO_setMode(KEY_obj, KEY1, GPIO_12_Mode_GeneralPurpose); //2. directionGPIO_setDirection(KEY_obj, KEY1, GPIO_Direction_Input);//3. pullupGPIO_setPullUp(KEY_obj, KEY1, GPIO_PullUp_Disable);//4. qualificationGPIO_setQualification(KEY_obj, KEY1, GPIO_Qual_Sync);}//! \brief ScanKey API//! \param[in] key//! \param[out] the state of KEYuint16_t ScanKey(const GPIO_Number_e key){return GPIO_getData(KEY_obj, key);}//! \param[in] None//! \param[out] Nonevoid KEY_INT_config(void){ //(3). register PIR vectorPIE_registerPieIntHandler(myPie, PIE_GroupNumber_1, PIE_SubGroupNumber_4, (intVec_t) &KEY_xint1_isr);//(4). module interrupt configurePIE_setExtIntPolarity(myPie,CPU_ExtIntNumber_1,PIE_ExtIntPolarity_FallingEdge);GPIO_setExtInt(myGpio, GPIO_Number_12, CPU_ExtIntNumber_1);//(5). enable module IEPIE_enableExtInt(myPie, CPU_ExtIntNumber_1);PIE_enableInt(myPie, PIE_GroupNumber_1, PIE_InterruptSource_XINT_1);//(7) enable CPU IERxCPU_enableInt(myCpu, CPU_IntNumber_1);}////! \brief Interrupt Service Routine//! \param[in] None//! \param[out] NoneTARGET_EXT interruptvoid KEY_xint1_isr(void);// end of file/*Key.h*/#ifndef _KEY_H_#define _KEY_H_// the includes#include<stdint.h>// driver#include"F2802x_Component/F2802x_Device.h"#include"User_Component/User_Mcu/User_System.h"#ifdef __cplusplusextern"C" {#endif#ifndef TARGET_GLOBAL#define TARGET_EXT extern#else#define TARGET_EXT#endif/*------- hardware description of the example module -------------*/// For example// The module derived from GPIO#define KEY_obj myGpio#define KEY1 GPIO_Number_12 //pinTARGET_EXT void KEY_initial(void);TARGET_EXT void KEY_config(void);TARGET_EXT void KEY_INT_config(void);TARGET_EXT interruptvoid KEY_xint1_isr(void);/*-------end of hardware description -------------*/ TARGET_EXT uint16_t ScanKey(const GPIO_Number_e key);/*-------end of API description -------------*/#define KEYPressed 1/*------- end of defines -------------*/#ifdef __cplusplus}#endif// extern "C"#endif// end of _EXAMPLE_H_ definition②/*LED_PWM.c*/// the includes#include"User_Component/LED_PWM/LED_PWM.h"// the functionsvoid LED_PWM_initial(void){mycmp=0;}void LED_PWM_config(void){//GPIO的配置GPIO_setMode(myGpio,GPIO_Number_0,GPIO_0_Mode_EPWM1A);GPIO_setPullUp(myGpio,GPIO_Number_0,GPIO_PullUp_Disable); //PWM的配置CLK_disableTbClockSync(myClk);//PWM模块使能CLK_enablePwmClock(myClk,PWM_Number_1);//设置PWM的时钟//PWM_setClkDiv(myPwm1,PWM_ClkDiv_by_1);PWM_setHighSpeedClkDiv(myPwm1, PWM_HspClkDiv_by_6);//计数器的设置PWM_setCounterMode(myPwm1,PWM_CounterMode_Up);//PWM周期设置PWM_setPeriod(myPwm1,10000);//设置周期加载模式PWM_setPeriodLoad(myPwm1,PWM_PeriodLoad_Shadow);//比力点的设置PWM_setCmpA(myPwm1,5000);//PWM装载模式PWM_setLoadMode_CmpA(myPwm1,PWM_LoadMode_Period);//举措PWM_setActionQual_CntUp_CmpA_PwmA(myPwm1,PWM_ActionQual_S et);PWM_setActionQual_Period_PwmA(myPwm1,PWM_ActionQual_Clear );//时钟同步CLK_enableTbClockSync(myClk);}void LED_PWM_INT_config(void){PIE_registerPieIntHandler(myPie,PIE_GroupNumber_3,PIE_Sub GroupNumber_1,(intVec_t)&(LED_PWM_isr));//模块中断配置PWM_setIntMode(myPwm1,PWM_IntMode_CounterEqualPeriod);PWM_setIntPeriod(myPwm1,PWM_IntPeriod_FirstEvent);//PWM中断使能PWM_enableInt(myPwm1);//PIE开关的允许PIE_enableInt(myPie, PIE_GroupNumber_3, PIE_InterruptSource_EPWM1);//CPU全局中断CPU_enableInt(myCpu,CPU_IntNumber_3);}// end of file/LED_PWM.h*/#ifndef _LED_PWM_H_#define _LED_PWM_H_// the includes#include<stdint.h>// driver#include"F2802x_Component/F2802x_Device.h"#include"User_Component/User_Mcu/User_System.h"#ifdef __cplusplusextern"C" {#endif#ifndef TARGET_GLOBAL#define TARGET_EXT extern#else#define TARGET_EXT#endif/*------- hardware description of the example module -------------*/TARGET_EXT void LED_PWM_initial(void);TARGET_EXT void LED_PWM_config(void);TARGET_EXT void LED_PWM_INT_config(void);TARGET_EXT interruptvoid LED_PWM_isr(void);/*-------end of hardware description -------------*/ TARGET_EXT uint16_t mycmp;#ifdef __cplusplus}#endif// extern "C"#endif// end of _EXAMPLE_H_ definition③/*MY_ADC.c*/// the includes#include"User_Component/MY_ADC/MY_ADC.h"// the functionsvoid MY_ADC_initial(void){SET_TEMP=30; //初始设定温度为30摄氏度}void MY_ADC_config(void){ //ADC时钟使能CLK_enableAdcClock(myClk);//初始化ADC模块ADC_setVoltRefSrc(myAdc, ADC_VoltageRefSrc_Int);ADC_powerUp(myAdc);ADC_enableBandGap(myAdc);ADC_enableRefBuffers(myAdc);ADC_enable(myAdc);//温度转换使能ADC_enableTempSensor(myAdc);//soc配置ADC_setSocChanNumber(myAdc, ADC_SocNumber_0, ADC_SocChanNumber_A5);ADC_setSocSampleWindow(myAdc, ADC_SocNumber_0, ADC_SocSampleWindow_7_cycles);ADC_setSocTrigSrc(myAdc, ADC_SocNumber_0, ADC_SocTrigSrc_EPWM1_ADCSOCA);//PWM配置PWM_setSocAPulseSrc(myPwm1,PWM_SocPulseSrc_CounterEqualZe ro);PWM_setSocAPeriod(myPwm1,PWM_SocPeriod_FirstEvent);PWM_enableSocAPulse(myPwm1);}void MY_ADC_INT_config(void){PIE_registerPieIntHandler(myPie,PIE_GroupNumber_10,PIE_Su bGroupNumber_1,(intVec_t)&(MY_ADC_isr));//模块中断配置ADC_setIntPulseGenMode(myAdc,ADC_IntPulseGenMode_Prior);ADC_setIntSrc(myAdc,ADC_IntNumber_1,ADC_IntSrc_EOC0);ADC_setIntMode(myAdc, ADC_IntNumber_1, ADC_IntMode_ClearFlag);//ADC中断使能ADC_enableInt(myAdc,ADC_IntNumber_1);//PIE开关的允许PIE_enableInt(myPie, PIE_GroupNumber_10, PIE_InterruptSource_ADCINT_10_1);//CPU全局中断CPU_enableInt(myCpu,CPU_IntNumber_10);}// end of file/*MY_ADC.h*/#ifndef _MY_ADC_H_#define _MY_ADC_H_// the includes#include<stdint.h>// driver#include"F2802x_Component/F2802x_Device.h"#include"User_Component/User_Mcu/User_System.h"#ifdef __cplusplusextern"C" {#endif#ifndef TARGET_GLOBAL#define TARGET_EXT extern#else#define TARGET_EXT#endif/*------- hardware description of the example module -------------*/TARGET_EXT void MY_ADC_initial(void);TARGET_EXT void MY_ADC_config(void);TARGET_EXT void MY_ADC_INT_config(void);TARGET_EXT interruptvoid MY_ADC_isr(void);/*-------end of hardware description -------------*/ TARGET_EXT uint16_t MY_ADC;TARGET_EXT uint16_t SET_TEMP;/*------- end of globals -------------*/#ifdef __cplusplus}#endif// extern "C"#endif// end of _EXAMPLE_H_ definition④/*MY_CAP.c*/// the includes#include"User_Component/MY_CAP/MY_CAP.h"#include"User_Component/User_Mcu/User_System.h"void MY_CAP_initial(void){}void MY_CAP_config(void){GPIO_setPullUp(myGpio, GPIO_Number_5, GPIO_PullUp_Enable); GPIO_setQualification(myGpio, GPIO_Number_5, GPIO_Qual_Sync);GPIO_setMode(myGpio, GPIO_Number_5, GPIO_5_Mode_ECAP1);CLK_enableEcap1Clock(myClk);CAP_disableInt(myCap, CAP_Int_Type_All); // 禁止CAP中断 CAP_clearInt(myCap, CAP_Int_Type_All); // 清除CAP中断标识表记标帜位CAP_disableCaptureLoad(myCap); // Disable CAP1-CAP4 register loadsCAP_disableTimestampCounter(myCap); // Make sure the counter is stopped// Configure peripheral registersCAP_setCapContinuous(myCap); // continuousCAP_setStopWrap(myCap, CAP_Stop_Wrap_CEVT4);// Stop at 3 eventsCAP_setCapEvtPolarity(myCap, CAP_Event_1, CAP_Polarity_Rising); // 捕捉上升沿CAP_setCapEvtPolarity(myCap, CAP_Event_2, CAP_Polarity_Falling); // 捕捉下降沿CAP_setCapEvtPolarity(myCap, CAP_Event_3, CAP_Polarity_Rising); // 捕捉上升沿CAP_setCapEvtReset(myCap, CAP_Event_3, CAP_Reset_Enable); // 重置计数器确保计数器不会溢出CAP_enableTimestampCounter(myCap); // 翻开计数器 CAP_enableCaptureLoad(myCap); // Enable CAP1-CAP4 register loads/* CAP_enableInt(myCap, CAP_Int_Type_CEVT3); // 3个捕捉点之后发生中断// Register interrupt handlers in the PIE vector tablePIE_registerPieIntHandler(myPie, PIE_GroupNumber_4,PIE_SubGroupNumber_1, (intVec_t)&ecap1_isr);// Enable CPU INT4 which is connected to ECAP1-4 INT: CPU_enableInt(myCpu, CPU_IntNumber_4);// Enable eCAP INTn in the PIE: Group 3 interrupt 1-6 PIE_enableCaptureInt(myPie);CPU_enableGlobalInts(myCpu);*/}void MY_CAP_INT_config(void){CAP_enableInt(myCap, CAP_Int_Type_CEVT3); // 3 events = interrupt// Register interrupt handlers in the PIE vector tablePIE_registerPieIntHandler(myPie, PIE_GroupNumber_4, PIE_SubGroupNumber_1, (intVec_t)&MY_CAP_isr);// Enable CPU INT4 which is connected to ECAP1-4 INT:CPU_enableInt(myCpu, CPU_IntNumber_4);// Enable eCAP INTn in the PIE: Group 3 interrupt 1-6PIE_enableCaptureInt(myPie);CPU_enableGlobalInts(myCpu);}// end of file/*MY_CAP.h*/#ifndef _MY_CAP_H_#define _MY_CAP_H_// the includes#include<stdint.h>// driver#include"F2802x_Component/F2802x_Device.h"#ifdef __cplusplusextern"C" {#endif#ifndef TARGET_GLOBAL#define TARGET_EXT extern#else#define TARGET_EXT#endif/*------- hardware description of the example module -------------*/TARGET_EXT void MY_CAP_initial(void);TARGET_EXT void MY_CAP_config(void);TARGET_EXT void MY_CAP_INT_config(void);TARGET_EXT interruptvoid MY_CAP_isr(void);/*-------end of hardware description -------------*/ TARGET_EXT int NOW_PWM;#ifdef __cplusplus}#endif// extern "C"#endif// end of _EXAMPLE_H_ definition⑤/*mySci.c*/// the includes#include"User_Component/mySci/mySci.h"// the functions// the function prototypes//! \brief SCI initail//! \param[in] None//! \param[out] Nonevoid SCI_initial(void){}////! \brief SCI configure//! \param[in] None//! \param[out] Nonevoid SCI_config(void){ //1. GPIO configure//1.1 pullupGPIO_setPullUp(myGpio, GPIO_Number_28, GPIO_PullUp_Enable);GPIO_setPullUp(myGpio, GPIO_Number_29, GPIO_PullUp_Disable);//1.2 input qualificationGPIO_setQualification(myGpio, GPIO_Number_28,GPIO_Qual_ASync);//1.3 modeGPIO_setMode(myGpio, GPIO_Number_28, GPIO_28_Mode_SCIRXDA);//SCI数据发送引脚GPIO_setMode(myGpio, GPIO_Number_29, GPIO_29_Mode_SCITXDA);//SCI数据接收引脚//2. enable SCIA clkCLK_enableSciaClock(myClk);//3. configure the low speed peripheral clock(LSPCLK) LSPCLK = SYSCLKOUT/4 =15MHzCLK_setLowSpdPreScaler(myClk,CLK_LowSpdPreScaler_SysClkOut_by_4);//设置时钟分频//4. SCI BRR = LSPCLK/(SCI BAUDx8) - 1SCI_setBaudRate(mySci, SCI_BaudRate_9_6_kBaud);//设置波特率为9600//5. configure package(1 stop bit, No loopback, No parity,8 char bits, async mode, idle-line protocol)SCI_disableParity(mySci);SCI_setNumStopBits(mySci, SCI_NumStopBits_One);SCI_setCharLength(mySci, SCI_CharLength_8_Bits);//6. enable SCI TX&RXSCI_enableTx(mySci);。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
郑州航空工业管理学院嵌入式系统课程设计报告
题目:基于ARM平台的远程视频监控系统的设计
20 – 20第学期
院系:
姓名:
专业:
学号:
指导老师:
电子通信工程系
2012年11月制
目录(在这里添加相应的目录)
一、引言
(同学们自己在这里添加相应的内容)
二、设计目的
三、设计要求
1. 任务要求
要求能独立地分析题目意义、设计实现步骤、画出硬件原理图及软件流程图、调试驱动模块。
该设计的具体要求如下:
2. 设计所需的软硬件设备
(1)硬件环境配置
计算机:Intel(R) Pentium(R) 及以上
内存:1GB及以上
实验设备:UP-NETARM2410-S嵌入式开发平台
摄像头:基于中星微301方案的摄像头
(2)软件环境配置
操作系统:Microsoft Windows XP Professional Service Pack 2
虚拟机:VMware WorkStation 7
Linux系统:Red Hat Enterprise Linux AS 4 (2.6.9-5.EL)
嵌入式交叉编译器:arm-linux-gcc 3.4.4版本
Linux内核版本:Linux-2.6.14
SKYEYE版本:skyeye-1.2.4
U-Boot版本:U-Boot-1.3.2
BusyBox版本:BusyBox-1.2.0
3. 课程设计报告内容
按该设计报告要求的模式格式提交课程设计报告书。
四、推荐的进展安排
五、考核评价
六、总体设计
(同学们自己在这里添加相应的内容)七、总结
(同学们自己在这里添加相应的内容)八、参考文献
(同学们自己在这里添加相应的内容)。