嵌入式课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

福州大学

课程设计任务书

课程:嵌入式课程设计

题目:简易电子琴

姓名:李仁煌

学号: 011000610 系别:电机电器

专业:电气工程与自动化

年级: 2010

起讫日期: 2013.6.10-2013.7.4

指导教师:王武

目录

1、课程设计目的 (2)

2、课程设计题目和实现目标 (2)

3、设计方案 (2)

4、程序流程图 (3)

5、实物图 (4)

6、程序代码 (4)

7、设计心得体会 (4)

8、附录 (5)

1、课程设计目的

嵌入式系统设计课程设计是与嵌入式系统设计课程相配套的实践教学环节。嵌入式系统设计是一门实践性很强的专业基础课,通过课程设计,达到进一步理解单片机的硬件、软件和综合应用方面的知识,培养实践能力和综合应用能力,开拓学习积极性、主动性,学会灵活运用已经学过的知识,并能不断接受新的知识。培养大胆发明创造的设计理念,为今后就业打下良好的基础。此次单片机课设为了培养我们对单片机应用系统总体方案的设计,硬件的设计,软件程序的设计以及对单片机的调试能力的培养。

2、课程设计题目和实现目标

课程设计的题目为电子琴。实现目标是设计出来的电子琴具有14个能播放14个音调的按键。

3、设计方案

1 按键扫描模块

电子琴设有16个按键作为音符输入。14个按键分别代表14个音符,包括低

音和中音段的全部音符。通过软硬件设计,使系统不断扫描按键接入的对应的引

脚电平的高低,扫描结束时,以变量形式存放扫描结果,当变量显示为有按钮跳

转,转入不同情况的程序段中。

2 播放模块

当系统扫描到播放按钮时,如果判断为播放功能而不是停止播放功能,则启动定时器,通过计时器中断来设置输出PWM波的频率,即可改变蜂鸣器的音调,同时还在中断程序中改变定时器的计数值,从而使定时时间发生改变,在蜂鸣器上表现为发声时间长短。当扫描到的是停止播放功能时,则使定时器停止计数,PWM关闭蜂鸣器停止播放。播放模块是由蜂鸣器和PWM构成,PWM输出一定频率的方波,驱动蜂鸣器发声,蜂鸣器几乎不存在噪声,音响效果较好,而且由于所需驱动功率较小,且价格低廉,所以,被广泛应用。

4、程序流程图

5、实物图

6、调试总结

在调试过程中,首先要做好硬件调试,然后再进行软硬件共同调试。所以第一步需要检查各硬件的完好性,其次检测各芯片的电源线和地线是否接触良好,接好电源后用万用表检测各电源端、地端的状态是否正常。检查无误后通过烧写工作程序,根据显示现象调试程序直至成功。

在编写程序前,首先应该将各部分硬件原理全部理解,尤其重要的是要掌握各元件的使能方式,是低电平使能还是高电平使能。当这些基础问题都不再出错的时候,然后才能逐步编写程序

7、设计心得体会

我从本次嵌入式综合设计中学到了很多,对于嵌入式系统有了更深入的了解与应用。通过模块化的设计过程我对F28027芯片的知识有了了解,并且能在原始程序的基础上做小的改动,使其更适用于简易电子琴系统,对于课本知识也有了实战性操作,在此过程中我的应用知识能力、设计能力、调试能力以及报告撰写能力等方面有了显著提高。

8、附录

#include "DSP28x_Project.h"

#include "f2802x_common/include/clk.h"

#include "f2802x_common/include/flash.h"

#include "f2802x_common/include/gpio.h"

#include "f2802x_common/include/pie.h"

#include "f2802x_common/include/pll.h"

#include "f2802x_common/include/pwm.h"

#include "f2802x_common/include/cap.h"

#include "f2802x_common/include/timer.h"

#include "f2802x_common/include/wdog.h"

// Prototype statements for functions found within this file.

void InitEPwm1();

void InitECapture();

void InitTime0();

void scanning();

void yindiao();

interrupt void cpu_timer0_isr(void);

interrupt void ecap1_isr(void);

//Global variables used in this project:

int play=0;//play flag

int record=0;//record flag

int f[100];

int k=0;

int l=0;

int flag=0;

int flag1=0;

uint32_t rhy[202];

uint32_t scan=0;//the scanning data

uint32_t scan1,scan2,scan3,scan4;

enum

yin{A=3822,B=3405,C=3034,D=2863,E=2551,F=2273,G=2025,A1=1911,B1=1702,C1=1516,D1=1431,E 1=1275,F1=1136,G1=1012};

相关文档
最新文档