ARM课设报告

ARM课设报告
ARM课设报告

电控学院

课程设计(论文)

课程名称:ARM嵌入式系统

题目:ARM数字电压表

院(系):测控技术与仪器

专业班级:测控1001班

姓名:

学号:

指导教师:黄梦涛李红岩

2013年12月29日

目录

摘要 (2)

第一章绪论 (2)

1.1设计背景 (2)

1.2设计要求 (2)

第二章系统介绍 (2)

2.1系统简述 (2)

2.2上位机简述 (3)

2.3下位机简述 (3)

第三章硬件设计 (4)

3.1系统电路原理图 (4)

3.2A/D转换器 (5)

3.3报警电路 (5)

3.5 LPC2131最小系统 (6)

第四章软件设计 (7)

4.1系统功能流程图 (7)

4.2程序 (8)

第五章设计心得 (15)

致谢 (17)

参考文献 (18)

基于LPC2131的数字电压表设计

摘要

本设计介绍了一种基于LPC2131的数字电压表。根据数据数据采集的工作原理,设计实现数字电压表,然后完成微控制器与上位机EasyARM的通信,将所测量的电压值传送给EasyARM的显示界面,进行显示。该电压表的主控芯片LPC2131内部有一个10位8路A/D转换器,这个A/D转换器即可单路软件启动也可对某几路信号逐个循环采样。这种电压表不仅整个电路结构简单、明了,直观的显示测量结果,而且具有精度高,性价比高,使用方便等特点。

【关键词】电压测量,LPC2131,LED,蜂鸣器报警

第一章绪论

1.1设计背景

随着电子科学技术不断发展,电子测量也变得越来越普遍,并且对测量的精度和功能的要求也是越来越高,而电压的测量尤为突出,因为电压的测量最为普遍。而且随着电子技术的日益发展,更是经常需要测量高精度的电压,数字电压表就成为一种必不可少的测量仪器。

数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流或交流输入电压)转换成不连续的、离散的数字形式并加以显示的仪表。由于数字是仪表具有读书准确方便、精度高、误差小、灵敏度高和分辨率高、测量速度快等特点而倍受青睐。

1.2设计要求

以ARM为控制器,采用中断方式,对2路0-5v的模拟电压进行循环采集,每路连续采集16次,取平均值。采集的数据送LED显示,并存入内存。超过界限时指示灯闪烁10次后一直亮,指示灯闪烁时喇叭发声,以示警告。

第二章系统介绍

2.1系统简述

数字电压表主要由模数转换部分、串口数据发送部分、上线报警部分三部分组成。其中LPC2131自带的10位ADC作为转换电路,将输入的模拟信号进行采样、转换、然后将转换的数字信号送入MCU进行处理,得出测量结果送入上位机进行显示。

2.2上位机简述

为了给系统提供更友好的人机界面,我们可以通过上位机软件实现各种显示输出或操作输入,EasyARM软件是上位机人机界面软件,通过RS232串口通讯完成各种功能控制。全仿真的DOS字符窗口是具有25行80列的字符显示窗(显示字符的前景/背景颜色可设置),具有8个仿真LED数码管和8个仿真发光二极管,还有20个模拟按键(按键名可重新定义)。串口模式可设置,具有单独的数据发送/接收调试窗,方便地监视串口接收到的数据或调试串口。

2.3下位机简述

LPC2131/2132/2138是基于一个支持实时仿真和跟踪的16/32位ARM7TDMI-STMCPU,并带有32kB、64kB和512kB嵌入的高速Flash存储器。128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。对代码规模有严格控制的应用可使用16位Thumb模式将代码规模降低超过30%,而性能的损失却很小。

较小的封装和很低的功耗使LPC2131/2132/2138特别适用于访问控制和POS机等小型应用中;由于内置了宽范围的串行通信接口和8/16/32kB的片内SRAM,它们也非常适合于通信网关、协议转换器、软件modem、语音识别、低端成像,为这些应用提供大规模的缓冲区和强大的处理功能。多个32位定时器、1个或2个10位8路的ADC、10位DAC、PWM通道、47个GPIO以及多达9个边沿或电平触发的外部中断使它们特别适用于工业控制应用以及医疗系统。

主要特性:

1)16/32位ARM7TDMI-S核,超小LQFP64封装。

2)8/16/32kB的片内静态RAM和32/64/512kB的片内Flash程序存储器。128位宽度接口/加速器可实现高达60MHz工作频率。

3)通过片内boot装载程序实现在系统编程/在应用编程(ISP/IAP)。单扇区或整片擦除时间为400ms。256字节行编程时间为1ms。

4)EmbeddedICE?RT和嵌入式跟踪接口通过片内RealMonitorTM软件对代码进行实时调试和高速跟踪。

5)1个(LPC2131/2132)或2个(LPC2138)8路10位的A/D转换器,共提供16 路模拟输入,每个通道的转换时间低至2.44us。

6)1个10位的D/A转换器,可产生不同的模拟输出。(仅适用LPC2132/2138)7)2个32位定时器/计数器(带4路捕获和4路比较通道)、PWM单元(6路输出)

和看门狗。

8)实时时钟具有独立的电源和时钟,可在节电模式中极大地降低功耗。

9)多个串行接口,包括2个16C550工业标准UART、2个高速I2C接口(400kbit/s)、SPITM和具有缓冲作用和数据长度可变功能的SSP。

10)向量中断控制器。可配置优先级和向量地址。

11)小型的LQFP64封装上包含多达47个通用I/O口(可承受5V电压)。

12)多达9个边沿或电平触发的外部中断管脚。

13)通过片内PLL(100us的设置时间)可实现最大为60MHz的CPU操作频率。

14)片内晶振频率范围:1~30MHz。

15)低功耗模式:空闲和掉电。

16)可通过个别使能/禁止外部功能和外围时钟分频来优化功耗。

17)通过外部中断将处理器从掉电模式中唤醒。

18)单电源,具有上电复位(POR)和掉电检测(BOD)电路。

19)CPU操作电压范围:3.0V~3.6V(3.3V±10﹪),I/O口可承受5V的电压。

第三章硬件设计

3.1系统电路原理图

图3-1系统原理图

系统功能:

该系统主要实现对电压的测量,经测试端输入的电压,分压采样后送到 LPC2131 程

序处理,最后将测量结果在EasyARM显示界面显示,由于ADC本身的输入范围的限制,我们这里输入信号最大值为+3.3V,采样率达到 100Hz,精度高于 0.9%,在实际应用中,可以增加前级信号调理电路使输入信号的范围扩大。

3.2A/D转换器

特性:

1)10位逐次逼近式A/D转换器

2)测量范围0~3.3V

3)10位转换时间≥2.44μs

4)一路或多路输入的Burst转换模式

5)转换触发信号可选择:输入引脚的跳变或定时器的匹配

6)具有掉电模式

A/D转换器的基本时钟由VPB时钟提供,可编程分频器可将时钟调整至44.5MHz(逐步逼近转换的最大时钟),10位精度要求的转换需要11个A/D转换器。

图3-2 A/D转换电路

3.3报警电路

使用GPIO的P0.7控制蜂鸣器鸣叫报警

图3-3蜂鸣器报警电路

LED发光二极管闪烁十次后一直亮(LED1表示通道1,LED2表示通道2)

图3-4LED报警电路

3.5 LPC2131最小系统

最小系统包含时钟电路和复位电路

图3-5最小系统

第四章软件设计

4.1系统功能流程图

根据设计要求,结合硬件原理图与LPC2131的使用手册,为采样频率达到 100Hz,把电压测量结果直观显示出来,软件程序流程图如图4-1

图4-1系统功能流程图

4.2程序

/************************************************************************** * 文件名:main.c

* 功能:使用ADC模块的通道0、1进行电压的测量,然后将转换结果从串口输出,* 上位机使用EasyARM软件全仿真的DOS字符窗口观察。

* 说明:跳线JP8、JP30短接。由W1、W2调节测量电压值。

* 通讯格式:8位数据位,1位停止位,无奇偶校验,波特率为115200。

**************************************************************************/ #include "config.h"

#define LED1 1<<16 // P2.16

#define LED2 1<<17 // P2.17

#define BEEPCON 1<<20

// P0.7引脚控制B1,低电平蜂鸣

#define LEDCON 0x00000000

/************************************************************************** * 名称:DelayNS()

* 功能:长软件延时

* 入口参数:dly 延时参数,值越大,延时越久

* 出口参数:无

***********************************************************************/ void DelayNS(uint32 dly)

{ uint32 i;

for(; dly>0; dly--)

{

for(i=0; i<5000; i++);

}

}

/************************************************************************** * 名称:UART0Init()

* 功能:初始化串口0。设置为8位数据位,1位停止位,无奇偶校验

* 入口参数:bps 通讯波特率

* 出口参数:无

**************************************************************************/ void UART0Init(uint32 bps)

{ uint16 Fdiv;

PINSEL0 = (PINSEL0 & (~0x0F)) | 0x05; // 不影响其它管脚连接,设置I/O连接到UART0

U0LCR = 0x83; // DLAB = 1,可设置波特率

Fdiv = (Fpclk / 16) / bps; // 设置波特率

U0DLM = Fdiv / 256;

U0DLL = Fdiv % 256;

U0LCR = 0x03;

}

/************************************************************************** * 名称:UART0SendByte()

* 功能:向串口发送字节数据,并等待发送完毕。

* 入口参数:data 要发送的数据

* 出口参数:无

**************************************************************************/ void UART0SendByte(uint8 data)

{

U0THR = data; // 发送数据

while( (U0LSR&0x40)==0 ); // 等待数据发送完毕

}

/************************************************************************** * 名称:UART0SendStr()

* 功能:向串口发送一字符串

* 入口参数:srt 要发送的字符串的指针

* 出口参数:无

*************************************************************/

void UART0SendStr(char *str)

{

while(1)

{

if( *str == '\0' ) break;

UART0SendByte(*str++); // 发送数据

}

}

/************************************************************************** * 名称:PCDispChar()

* 功能:向PC机发送显示字符。

* 入口参数:x 显示位置的纵坐标,0-79

* y 显示位置的横坐标,0-24

* chr 显示的字符,不能为0xff

* color 显示的状态包括前景色、背景色、闪耀位。它与dos的字符显示状态一样。

* 即0~3位:前景色,4~6位:背景色,7位:闪耀位。

* 出口参数:无

**************************************************************************/ void PCDispChar(uint8 x, uint8 y, uint8 chr, uint8 color)

{

UART0SendByte(0xff); // 发送起始字节

UART0SendByte(x); // 发送字符显示坐标(x,y)

UART0SendByte(y);

UART0SendByte(chr); // 发送显示字符

UART0SendByte(color);

}

/************************************************************************** * 名称:ISendStr()

* 功能:向PC机发送字串,以便显示。

* 入口参数:x 显示位置的纵坐标,0-79

* y 显示位置的横坐标,0-24

* color 显示的状态包括前景色、背景色、闪耀位。它与dos的字符显示状态一样。

* 即0~3位:前景色,4~6位:背景色,7位:闪耀位。

* str 要发送的字符串,字串以'\0'结束

* 出口参数:无

*************************************************************************** */

void ISendStr(uint8 x, uint8 y, uint8 color, char *str)

{

while(1)

{

if(*str=='\0') break; // 若为'\0',则退出

PCDispChar(x++, y, *str++, color); // 发送显示数据

if(x>=80)

{

x = 0;

y++;

}

}

}

/************************************************************************** * 名称:main()

* 功能:进行通道0、1电压ADC转换,并把结果转换成电压值,然后发送到串口。* 说明:在CONFIG.H文件中包含stdio.h。

**************************************************************************/ int main(void)

{

uint32 ADC_Data;

char str[20];

UART0Init(115200); // 初始化UART0

PINSEL1 = 0x01400000; // 设置P0.27、P0.28连接到AIN0、AIN1

IO1DIR = BEEPCON; // 设置I/O为输出

IO2DIR = 0x00000000;

IO1SET = BEEPCON;

/* 进行ADC模块设置,其中x<

ADCR = (1 << 0) | // SEL = 1 ,选择通道0

((Fpclk / 1000000 - 1) << 8) | // CLKDIV = Fpclk / 1000000 - 1 ,即转换时钟为1MHz

(0 << 16) | // BURST = 0 ,软件控制转换操作

(0 << 17) | // CLKS = 0 ,使用11clock转换

(1 << 21) | // PDN = 1 ,正常工作模式(非掉电转换模式)

(0 << 22) | // TEST1:0 = 00 ,正常工作模式(非测试模式)

(1 << 24) | // START = 1 ,直接启动ADC转换 (0 << 27); // EDGE = 0 (CAP/MAT引脚下降沿触发ADC转换)

DelayNS(10);

ADC_Data = ADDR; // 读取ADC结果,并清除DONE标志位 while(1)

{ ADCR = (ADCR&0x00FFFF00)|0x01|(1 << 24); // 设置通道1,并进行第一次转换while( (ADDR&0x80000000)==0 ); // 等待转换结束

ADCR = ADCR | (1 << 24); // 再次启运转换

while( (ADDR&0x80000000)==0 ); // 等待转换结束

ADC_Data = ADDR; // 读取ADC结果

ADC_Data = (ADC_Data>>6) & 0x3FF; // 提取AD转换值

ADC_Data = ADC_Data * 3300; // 数值转换

ADC_Data = ADC_Data / 1024;

sprintf(str, "%4dmV at VIN1", ADC_Data);

ISendStr(30, 23, 0x30, str);

if( ADC_Data>=3000)

{ uint32 i;

for(i=0;i<10;i++)

{ IO1SET = BEEPCON;

IO2DIR = 0x00010000; // BEEPCON = 1

DelayNS(15);

IO1CLR = BEEPCON; // BEEPCON = 0

IO2DIR = 0x00000000;

DelayNS(15);

}

IO2DIR = 0x00010000;

DelayNS(150);

}

else

{ IO1SET = BEEPCON; // BEEPCON = 0

IO2DIR = 0x00000000;}

ADCR = (ADCR&0x00FFFF00)|0x02|(1 << 24); // 设置通道2,并进行第一次转换

while( (ADDR&0x80000000)==0 ); // 等待转换结束

ADCR = ADCR | (1 << 24); // 再次启运转换

while( (ADDR&0x80000000)==0 ); // 等待转换结束

ADC_Data = ADDR; // 读取ADC结果

ADC_Data = (ADC_Data>>6) & 0x3FF; // 提取AD转换值

ADC_Data = ADC_Data * 3300; // 数值转换

ADC_Data = ADC_Data / 1024;

sprintf(str, "%4dmV at VIN2", ADC_Data);

ISendStr(30, 21, 0x30, str);

if( ADC_Data>=2500)

{ uint32 i;

for(i=0;i<10;i++)

{ IO1SET = BEEPCON;

IO2DIR = 0x00020000; // BEEPCON = 1 DelayNS(15);

IO1CLR = BEEPCON; // BEEPCON = 0

IO2DIR = 0x00000000;

DelayNS(15);

}

IO2DIR = 0x00020000;

DelayNS(150);

}

else

{ IO1SET = BEEPCON; // BEEPCON = 0

IO2DIR = 0x00000000;}

}

return(0);

}

第五章设计心得

【硬件】

这次的课程设计是基于LPC2131的数字电压表设计,实现的主要功能:以ARM为控制器,采用中断方式,对2路0-5V的模拟电压进行循环采集,采集的数据送LED显示,并存入内存,超过界限时指示灯闪烁。

在做数字电压表的设计时,开始时遇到不少的问题,比如我们想电压是如何采集的,数字电压表到底是什么设计原理呢,毕竟还没有接触过实际设计和开发,所以在考虑问题的时候往往是不全面的,也就是说这次设计还有不少的方面没有考虑周全,也一定存在着这样那样的问题。

经过这一个星期的实习,从开始时充满激情,到最后差点有想放弃的冲动,这之间的复杂心情,点点滴滴无不令我回味无长。特别是在设计程序的过程中,我明白到做一个好程序的不易,做一个好的编程者就更加艰难,突然就很佩服那些编程者。我们组一个两个人,整体上是我们两个人都在做,但个人的侧重点不同,我主要负责查询资料和硬件设计方面,屈豆主要负责软件编程及调试,通过这次课程设计,加强了我们动手、思考和解决问题的能力。在整个设计过程中主要是软件调试,这个我们花了好长时间,在调试过程中稍微有点错误就出现问题,这个真是对我们耐心的大挑战,不过最后还是没达到预期的效果,感觉有点遗憾。

我觉得做课程设计是对课本知识的巩固和加强,平时看课本,有时问题老是弄不懂,做完课程设计后,那些问题就迎刃而解了。

认识来源于实践,实践是认识的动力和最终目的。这次课程设计对我们有很大的帮助,在课程设计过程中,我们真正体会到了理论与实践之间的差距,更重要的是让我们感受到了团队合作的重要性,让我们懂得,我们必须得各尽所长才能解决各种困难。【软件】

这次的课程设计是基于LPC2131的数字电压表设计,实现的主要功能:以ARM为控制器,采用中断方式,对2路0-5V的模拟电压进行循环采集,采集的数据送LED显示,并存入内存,超过界限时指示灯闪烁。

当老师在之前给我们选题目时,我就开始在网上、图书馆查找资料,当接触到数字电压表设计这个题目时,我很迷茫,不知从何下手,虽说这学期已经开ARM课了,但是自认为学的一点都不好。随后我们去网上查找各种相关资料,去图书馆查找文献,但是

都没有找到类似的课题,最后经过我与组员的讨论,勉强有些许思绪,虽说最后我们没能很完善的做出课题,但这个过程是值得高兴地,在模拟硬件电路部分,我们查了很多相关的资料,其中遇到了很多繁琐的问题,但经过同学帮忙都得以解决;在软件方面,我按照书上的资料,逐步学习,逐步推敲,最终写出了部分程序,虽然功能没有完全实现,但是我们都很认真的去动手做了。

事实上,我们遇到的问题远不止这些,但是,无论怎样,我们都没有放弃,有困难就查资料,请教同学,一起解决困难,从中我们学到了很多知识,从原来不太熟悉的LPC2131到最后的每一部分都有所了解,我觉得这就是我们坚持到最后的最大成果,其实在很多事情来临时,我们不仅仅关心的是最后的结果,更重要的是拥有其中的过程。

在整个动手过程中,既加深了我们对ARM的理论认识,又通过LPC2131这个很有意思的载体,实现了对ARM的应用。同时,这次课程设计使我对ARM制作产生了浓厚的兴趣,个人希望在以后的工作学习中,加强这方面的训练,多制作出自己感兴趣的ARM作品。

致谢

通过本次课程设计,使我们对ARM开发有了一定的掌握和理解,巩固了我们在《ARM 嵌入式系统基础教程》课程中所学的基本理论知识和实践技能,也使我们对这门课程有了更深入的了解,熟悉了GPIO的使用,了解ARM芯片的内部功能模块,及内核架构,进一步激发了我对所学专业的兴趣,提高了我们的思考和实践能力。

在本次的设计过程和设计说明书的撰写过程中,李宏岩老师和黄梦涛老师给予了我们热心的帮助和大力的支持,给我们提供了诸多的宝贵意见,拓宽了我的思路,在此,我们向两位老师致以崇高的敬意和衷心的感谢!

在我们学习的过程中,班里的许多同学也给我们做了耐心和详细的指导,让我们再一次深深地感受到同学之间的互相学习是多么的重要,在此我对帮助我们的老师和同学表示诚挚答感谢!

参考文献:

[1]ARM嵌入式系统基础教程[M].2版.周立功主编.北京;北京航空航天大学出版社,2008.9

[2]ARM嵌入式系统实验+实训指导书[M].李红岩,杨学存编写.西安安科技大学

arm实验报告最终版

ARM与嵌入式技术 实验报告 专业班级:10通信工程1班 姓名:万洁 学号:100103011125 实验日期:2013年5月28日 指导老师:郑汉麟

1、 通过实验掌握ARM 指令的特点和寻址方式; 2、 掌握简单的ARM 汇编语言的程序设计; 3、 了解集成开发环境 Embest IDE 及其开发软件的应用; 、实验环境 Embest IDE 应用于嵌入式软件开发的新一代图形化的集成开发环境,它包括一套完备 的面向嵌入 式系统的开发和调试工具。其开发软件 Embest IDE for ARM 是集编辑器、编译 器、调试器、工程管理器( projectma nager )于一体的高度集成的窗口环境,用户可以在 Embest IDE 集成开发环境中创建工程、编辑文件、编译、链接、运行,以及调试嵌入式应 用程序。 三、实验步骤 1)新建工程: 运行Embest IDE 集成开发环境,选择菜单项 File 宀New Workspace ,如图一,系统弹 出一个对话框,键入文件名“ wj ”,如图二,点击 0K 按钮。将创建一个新工程,并同时创 建一个与工程名相同的工作区。此时在工作区窗口将打开该工作区和工程 .。 (老师提醒:不要放入Bin 文件夹中) ■ Emb?t QE Pre 亠 Educat 「販]£dii_Vww Buid frtbug D if** Qri+W 诊 Open-" Qrl*O 2)建立源文件: 点击菜单项 File T New ,如图三,系统弹出一个新的文本编辑窗,输入源文件代码。 编辑完后,保存文件“ wj.s ”后缀,如图三,四。 Hr* Open Workspace.? 图一 ■■ rflJO IUU rl jil rd f rfl,rl Clop : h Ho. .end 图 tut vUrl:

嵌入式课程设计报告

嵌入式课程设计报告设计题目:电子密码锁

、 摘要 随着科技和人们的生活水平的提高,实现防盗的问题也变得尤为突出,传统机械锁构造简单,电子锁的保密性高,使用灵活性好。根据需要设计运用W90P170开发板,制作一款电子密码锁,密码锁通过键盘输入密码,通过在LCD的文字和图片显示当前密码锁的状态。实现设置密码,密码验证,错误密码自锁、图片显示的功能。 目录

一、选题意义及系统功能 (3) 二、硬件设计及描述 (4) 三、软件设计及描述 (5) 四、程序代码 (6) 五、课程设计体会 (11) 六、运行结果 (12) 七、心得体会 (12) 八、参考文献 (13) 九、附录 (13) 一、选题意义及功能描述 1、选题意义 电子密码锁是通过密码输入来控制电路或是芯片工作,从而控制机械的开关闭合、开锁的电子产品。随着科技提高和人们生活水平的提高,对电子密码锁的需求增加。电子密码做较传统的机械锁安全性能更高。 特点如下: (1)保密性好,编程量大,随机开锁的成功率几乎为零。

(2)密码可变,用户可以随时改变密码,防止密码被盗,同时也可以避免人员的更替而使锁的密级下降。 (3)误码输入保护,输入密码多次错误是,系统进行自锁。 (4)无活动零件,不会磨损,寿命长。 (5)使用灵活性好,无需佩戴钥匙,操作简单。 2、功能描述 基本功能: (1)从键盘输入任意6位数字作为密码,将这六位数字经过USI总线存储到Flash芯片中,设置密码完成。 (2)从键盘输入密码,比较键盘输入的密码与Flash中存储的密码是否相同。 (3)如果密码正确,则LED灯点亮;如果密码不正确,则LED灯闪烁,而且如果连续三次输入密码错误则系统锁定,不允许再次输入密码。 扩展功能: (1)首先显示“请输入密码:”,显示密码锁背景图片1。 (2)如果密码正确则显示“密码正确”,显示成功进入系统的背景图片2。 (3)如果密码不正确则显示“密码不正确,请重新输入:” (4)如果连续三次输入密码错误则显示“对不起,您已经连续三次输入密码错误,系统锁定”,显示图片1。

ARM课程设计报告GPIO—流水灯

目录 一、设计目的 (3) 二、设计原理 1、GPIO—流水灯 (3) 2、SPI (7) 3、定时器 (10) 4、实时时钟 (12) 三、所用仪器 (18) 四、EasyARM2131开发套件功能介绍 (18) 五、设计内容:万年历-定时器-流水灯-SPI 1、功能描述 (21) 2、流程图 (22) 3、程序设计 (22) 六、心得体会 (28) 七、参考文献 (29)

一、设计目的 1、根据要求,复习巩固ARM的基础知识。 2、掌握ARM系统的设计方法,特别是熟悉模块化的设计思想。 3、熟练掌握ARM软件和2131开发板的使用。 4、提高综合运用所学的理论知识独立分析和解决问题的能力; 二、设计原理 1、GPIO—流水灯 (1)LPC2131具有多达47个通用I/O 口(GPIO,General Purpose I/O ports),分别为P0[31:0]、 P1[31:16],其中,P0.24未用,P0.31仅为输出口。由于口线与其它功能复用,因而需要进行相关的管脚连接模块(PINSEL0、PINSEL1、PINSEL2)选择连接GPIO,然后通过IODIR进行输入/输出属性设置后才能操作。 当管脚选择GPIO 功能时,有IOSET、IOCLR和IOPIN 3 个寄存器用于控制GPIO 的使用。IOSET 用于口线置位,而IOCLR 则用于口线清零,IOPIN 则反映当前IO口的状态,读回IOSET 则反映当前IO口设定状态。 (2)GPIO的特性和应用 特性: 单个位的方向控制; 单独控制输出的置位和清零; 所有I/O口在复位后默认为输入。 应用: 通用I/O口 驱动LED或其它指示器 控制片外器件 检测数字输入 (3)GPIO引脚描述 GPIO管脚描述见表4.1。 表4.1 GPIO 管脚描述

arm嵌入式实验报告完整版

arm嵌入式实验报告完整版 篇一:ARM嵌入式系统实验报告1 郑州航空工业管理学院 嵌入式系统实验报告 第 赵成,张克新 院姓专学 系:名:业:号:电子通信工程系周振宇物联网工程 121309140 电子通信工程系 XX年3月制 实验一 ARM体系结构与编程方法 一、实验目的 了解ARM9 S3C2410A嵌入式微处理器芯片的体系结构,熟悉ARM微处理器的工作模式、指令状态、寄存器组及异常中断的概念,掌握ARM指令系统,能在ADS1.2 IDE中进行ARM汇编语言程序设计。 二、实验内容

1.ADS1.2 IDE的安装、环境配置及工程项目的建立;2.ARM汇编语言程序设计(参考附录A): (1)两个寄存器值相加;(2)LDR、STR指令操作; (3)使用多寄存器传送指令进行数据复制;(4)使用查表法实现程序跳转;(5)使用BX指令切换处理器状态;(6)微处理器工作模式切换; 三、预备知识 了解ARM嵌入式微处理器芯片的体系结构及指令体系;熟悉汇编语言及可编程微处理器的程序设计方法。 四、实验设备 1. 硬件环境配置 计算机:Intel(R) Pentium(R) 及以上;内存:1GB及以上; 实验设备:UP-NETARM2410-S嵌入式开发平台,J-Link V8仿真器; 2. 软件环境配置 操作系统:Microsoft Windows XP Professional Service Pack 2;集成开发环境:ARM Developer Suite (ADS) 1.2。 五、实验分析 1.安装的ADS1.2 IDE中包括两个软件组件。在ADS1.2

中建立 ARM Executable Image(ARM可执行映像)类型的工程,工程目标配置为 Debug;接着,还需要对工程进行目标设置、语言设置及链接器设置;最后,配置仿真环境为ARMUL仿真方式。 2.写出ARM汇编语言的最简程序结构,然后在代码段中实现两个寄存器值的加法运算,给出运算部分相应指令的注释。 ; 文件名: AREA XTF,CODE,READONLY 声明32位ARM指令 R0arm嵌入式实验报告完整版) ADD R0,R1,R2 3.列写出使用LDR、STR指令的汇编程序,并在关键语句后面给出相应的注释。 AREA XTF,CODE,READONLY ;声明代码段XTFENTRY ;标示程序入口CODE32 ;声明32位ARM 指令START LDR R0,=1 ;加载数据LDR R1,=2LDR R3,=ADDR_1;载符号地址 ADD R2,R0,R1;R2[R3] ;数据空间定义 AREA Data_1,DATA,ALIGN=2 ADDR_1 DCD 0 END ;结束 4.“使用多寄存器传送指令进行数据复制”汇编程序分析。 LDR R0,=SrcData ;

嵌入式系统实验报告

实验报告 课程名称:嵌入式系统 学院:信息工程 专业:电子信息工程 班级: 学生姓名: 学号: 指导教师: 开课时间:学年第一学期

实验名称:IO接口(跑马灯) 实验时间:11.16 实验成绩: 一、实验目的 1.掌握 STM32F4 基本IO口的使用。 2.使用STM32F4 IO口的推挽输出功能,利用GPIO_Set函数来设置完成对 IO 口的配置。 3.控制STM32F4的IO口输出,实现控制ALIENTEK 探索者STM32F4开发板上的两个LED实现一个类似跑马灯的效果。 二、实验原理 本次实验的关键在于如何控制STM32F4的IO口输出。IO主要由:MODER、OTYPER、OSPEEDR、PUPDR、ODR、IDR、AFRH和AFRL等8个寄存器的控制,并且本次实验主要用到IO口的推挽输出功能,利用GPIO_Set函数来设置,即可完成对IO口的配置。所以可以通过了开发板上的两个LED灯来实现一个类似跑马灯的效果。 三、实验资源 实验器材: 探索者STM32F4开发板 硬件资源: 1.DS0(连接在PF9) 2.DS1(连接在PF10) 四、实验内容及步骤 1.硬件设计 2.软件设计 (1)新建TEST工程,在该工程文件夹下面新建一个 HARDWARE文件夹,用来存储以后与硬件相关的代码。然后在 HARDWARE 文件夹下新建一个LED文件夹,用来存放与LED相关的代码。 (2)打开USER文件夹下的test.uvproj工程,新建一个文件,然后保存在 LED 文件夹下面,保存为 led.c,在led.c中输入相应的代码。

(3)采用 GPIO_Set 函数实现IO配置。LED_Init 调用 GPIO_Set 函数完成对 PF9 和 PF10 ALIENTEK 探索者 STM32F407 开发板教程 119 STM32F4 开发指南(寄存器版) 的模式配置,控制 LED0 和 LED1 输出 1(LED 灭),使两个 LED 的初始化。 (4)新建一个led.h文件,保存在 LED 文件夹下,在led.h中输入相应的代码。 3.下载验证 使用 flymcu 下载(也可以通过JLINK等仿真器下载),如图 1.2所示: 图1.2 运行结果如图1.3所示:

《嵌入式系统与开发》ARM汇编及接口设计-实验报告 - 答案

《ARM汇编与接口设计》 实验报告 学生姓名: 学号: 专业班级: 指导教师: 完成时间:

实验1 ARM汇编与S3C6410接口设计 一.实验目的 熟悉裸板开发环境构建,掌握利用ADS开发工具或arm-linux-gcc开发工具编写裸板系统下程序的基本步骤和方法,掌握裸板程序的基本架构,熟悉汇编设计的基本指令和伪指令的使用方法,掌握S3C6410接口开发基本方法和步骤,并编程设计LED流水灯和看门狗程序设计。深刻体会软件控制硬件工作的基本思路和方法。 二.实验内容 实验1.1 熟悉ADS开发工具或交叉编译器arm-linux-gcc的安装和基本使用 实验1.2 LED流水灯实验 实验1.3 看门狗实验 三.预备知识 C 语言、微机接口等 四.实验设备及工具(包括软件调试工具) 硬件:ARM 嵌入式开发平台、PC 机Pentium100 以上、串口线。 软件:WinXP或UBUNTU开发环境。 五.实验步骤 5.1 ADS开发工具安装和使用 步骤: 第一步,ADS工具安装在 平台 B.linux平台)下,按照类似于VC++ 第二步,利用ADS打开demo项目模板,查看ADS中配置中几个重要选项, 第三步,参照demo项目代码结构,编写裸板程序完成两整数加和两整数减函数,分别用C代码实现,写出完成汇编启动代码和C代码。 第四步 用ADS自带的ARM的汇编代码,b被编译器优化到寄存器中,函数返回汇编语句 。 5.2 arm-linux-gcc编译工具安装和使用

第一步:arm-linux-gcc(A. WINDOWS平台 B.linux平台)下,按照类似于gcc 第二步:参看相关实验样例,一般基于arm-linux-gcc编译的裸板程序通常包含汇编启动代码文件,C功能代码文件和make工具文件Makefile。 5.3 LED流水灯设计实验 本实验要求使用arm-linux-gcc编译。备注,控制LED1的GPIO口为GPM0 步骤1:编写代码 参看相关实验样例,编写LED1报警灯代码,实现LED1以1秒左右的时间进行闪烁,要求LED 驱动代码编写在leddrv.c中,功能代码编写在main.c文件中,启动代码文件和Makefile文件参照实验样例代码来设计。 则启动代码文件内容: 功能层main.c文件内容: 步骤2:编译 编译步骤为: 步骤3:加载到内存中运行

2012嵌入式系统课程设计报告书5

郑州航空工业管理学院嵌入式系统课程设计报告 题目:嵌入式Linux系统中无线网络的设计 20 – 20第学期 院系: 姓名: 专业: 学号: 指导老师: 电子通信工程系 2012年11月制

目录(在这里添加相应的目录)

一、引言 (同学们自己在这里添加相应的内容) 二、设计目的 三、设计要求 1. 任务要求 要求能独立地分析题目意义、设计实现步骤、画出硬件原理图及软件流程图、调试驱动模块。 该设计的具体要求如下: 2. 设计所需的软硬件设备 (1)硬件环境配置 计算机:Intel(R) Pentium(R) 及以上 内存:1GB及以上 实验设备:UP-NETARM2410-S嵌入式开发平台 (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. 课程设计报告内容 按该设计报告要求的模式格式提交课程设计报告书。 四、推荐的进展安排 五、考核评价

六、总体设计 (同学们自己在这里添加相应的内容)七、总结 (同学们自己在这里添加相应的内容)八、参考文献 (同学们自己在这里添加相应的内容)

arm课程设计报告

课程设计报告 (嵌入式接口技术) 学院:电气工程与自动化学院 题目:基于ARM的多路数据采集系统设计 专业班级:自动化113班 学号:35号 学生姓名:翁志荣 指导老师:温如春 2013 年12月19日

摘要 数据采集系统用于将模拟信号转换为计算机可以识别的数字信号.该系统目的是便于对某些物理量进行监视.数据采集系统的好坏取决于他的精度和速度.设计时,应在保证精度的情况下尽可能的提高速度以满足实时采样、实时处理、实时控制的要求.在科学研究中应用该系统可以获得大量动态;是研究瞬间物理过程的重要手段;亦是获取科学奥秘的重要手段之一. 本次设计是基于ARM的多路数据采集系统,主控器能够对模拟信号产生的各路数据,通过数据采集系统进行采集并在主控器的程控下显示。 关键字:数据采集;模数转换;ARM;实时采样。 Abstract Data acquisition system for digital signal to analog signal conversion can be identified by computer. The system is aimed at facilitating monitoring of some physical quantity. Data acquisition system is good or bad depends on the precision and speed. When the design, should be in the case of ensuring accuracy as much as possible to meet the high speed real-time sampling, real-time processing, the requirement of real time control. The application of this system in scientific research can obtain a large number of dynamic; is an important means to study the instantaneous physical process; and it is also one of the important means of access to the mysteries of Science. Keyword s: data acquisition; ARM; real-time sampling analog-to-digital conversion.

ARM实验报告

湖南科技学院ARM嵌入式设计实验报告题目:基于ARM嵌入式系统跑马灯的设计 专业:电子信息工程 班级:电信1102班 姓名:段相辉 学号:201106002232 指导教师:陈光辉 2014年11 月

目录 摘要............................................. 错误!未定义书签。ABSTRACT .......................................... Ⅰ错误!未定义书签。 1 题目要求 (1) 2 设计软件的安装 (2) 3 开发平台的搭建 (22) 4 项目设计 (23) 4.1 设计思路概述 (2) 4.1.1 设计层次介绍 (2) 4.1.2 设计模块介绍 (3) 5总结 (6) 致谢 (25) 参考文献 (26) 附录 (27)

引言 随着生活水平的提高和IT技术的进步,8位处理器的处理能力已经不能满足嵌入式系统的需要了;而16位处理器在性能和成本上都没有很大的突破。并且在8位机的开发中,大多使用汇编语言来编写用户程序。这使得程序的可维护性、易移植性等都受到了极大的挑战。正是基于此,ARM公司适时的推出了一系列的32位嵌入式微控制器。目前广泛使用的是ARM7和ARM9系列,ARM7TDMI内核的ARM7处理器广泛应用于工业控制、仪器仪表、汽车电子、通讯、消费电子等嵌入式设备。

1、题目要求 构建嵌入式Linux开发环境,熟悉linux的命令操作,并在嵌入式Linux 开发环境中设计跑马灯。 2、设计软件的安装 2.1 VMware Player简介 (a) VMware Workstation是一个“虚拟机”软件.它使用户可以在一台机 器上同时运行多个操作系统. (b) VMware Player是VMware Workstation的精简版,最初只是虚拟机的“播放机”, 但最新版本的已经具有创建虚拟机的功能.具有体积小,使用灵活,免费等特点. (c) 多个操作系统在主系统的平台上,可像Windows应用程序那样切换.而且每个操作系统都可以进行虚拟的分区、配置而不影响真实硬盘的数据. (d) 利VMware Player创建虚拟机

基于ARM9的人脸识别系统嵌入式报告课程设计

嵌入式课程设计报告 学院信息电子技术 专业通信工程 班级 学号 指导教师 2017年07月01日

基于ARM9的人脸识别系统 一、引言 人脸识别背景和意义 人脸识别系统的研究始于20世纪60年代,80年代后随着计算机技术和光学成像技术的发展得到提高,而真正进入初级的应用阶段则在90年后期,并且以美国、德国和日本的技术实现为主;人脸识别系统成功的关键在于是否拥有尖端的核心算法,并使识别结果具有实用化的识别率和识别速度;“人脸识别系统”集成了人工智能、机器识别、机器学习、模型理论、专家系统、视频图像处理等多种专业技术,同时需结合中间值处理的理论与实现,是生物特征识别的最新应用,其核心技术的实现,展现了弱人工智能向强人工智能的转化语音识别、体形识别等,而指纹识别、虹膜识别等都不具有自然性,因为人类或者其他生物并不通过此类生物特征区别个体。 人脸识别具有这方面的特点,它完全利用可见光获取人脸图像信息,而不同于指纹识别或者虹膜识别,需要利用电子压力传感器采集指纹,或者利用红外线采集虹膜图像,这些特殊的采集方式很容易被人察觉,从而更有可能被伪装欺骗。 二、系统设计 1、硬件电路设计 (1 ) ARM9处理器 本系统所采用的硬件平台是天嵌公司的TQ2440开发板,该开发板的微处理器采用基于ARM920T内核的S3C2440芯片。 ARM9对比ARM7的优势:虽然ARM7和ARM9内核架构相同,但ARM7 处理器采用3级流水线的冯?诺伊曼结构,而ARM9采用5级流水线的哈佛结构。增加的流水线设计提高了时钟频率和并行处理能力。5级流水线能够将每一个指令处理分配到5个时钟周期内,在每一个时钟周期内同时有5个指令在执行。在常用的芯片生产工艺下,ARM7 一般运行在100MHz左右,而ARM9则至少在200MHz 以上。指令周期的改进对于处理器性能的提高有很大的帮助。性能提高的幅度依赖于代码执行时指令的重叠,这实际上是程序本身的问题。对于采用最高级的语言,一般来说,性能的提高在30%左右。ARM7 -般没有MMU(内存管理单元),(ARM720T 有MMU)。 (2)液晶显示屏 为显示摄像头当前采集图像的预览,系统采用三星的320x240像素的液晶屏,大小为206.68cmo该液晶显示屏的每个像素深度为2bit,采用RGB565色彩空间。 (3)摄像头 摄像头采用市场上常见的网眼2000摄像头,内部是含CMOS传感器的OV511 + 芯片。CMOS传感器采用感光元件作为影像捕获的基本手段,核心是1个感光二极管,该二极管在接受光线照射之后能够产生输出电流,而电流的强度则与光照的强度对应。相对

ARM实验报告--Thumb

XI`AN TECHNOLOGICAL UNIVERSITY 实验报告

西安工业大学实验报告 一丶实验目的 通过实验掌握ARM处理器16位Thumb汇编指令使用方法 二、实验内容 使用Thumb汇编语言,完成基本reg/men访问,以及简单的算术/逻辑运算。 使用Thumb汇编语言,完成较为复杂的程序分支,领会立即数大小的限制,并体会ARM与Thunb的区别。 三、实验原理 ARM 处理器共有两种工作状态: ARM:32 位,这种状态下执行字对准的ARM 指令; Thumb:16 位,这种状态下执行半字对准的Thumb 指令 在Thumb 状态下,程序计数器PC 使用位1 选择另一个半字。 注意: ARM 和Thumb 之间状态的切换不影响处理器的模式或寄存器的内容。ARM 处理器在两种工作状态之间可以切换。 1)进入Thumb 状态。当操作数寄存器的状态位0 为1 时,执行BX 指令进入Thumb 状态。如果处理器在Thumb 状态进入异常,则当异常处理(IRQ,FIQ,Undef,Abort 和SWI)返回时,自动切换到Thumb 状态。 2) 进入ARM 状态。当操作数寄存器的状态位0 为0 时,执行BX 指令进入ARM 状

态。处理器进行异常处理(IRQ,FIQ,Undef,Abort 和SWI)。在此情况下,把PC 方入异常模式链接寄存器中。从异常向量地址开始执行也可以进入ARM 状态。 四、实验过程 1)打开Embest IDE Pro软件,选择菜单项File-->New Workspace,系统弹出对话框,创建名为TEXT的新工程,并同时创建一个与工程名相同的工作区。此时在工作窗口将打开该工作区和工程。 2)建立源文件: 点击菜单项File-->New,系统弹出一个新的、没有标题的文本编辑窗,输入光标位玉窗口中第一行,将程序所需的源文件代码输入,编辑完后,进行保存,保存文件格式为_a.s文件。 3)添加源文件: 选择Project-->Add To Project-->File命令,弹出文件选择对话框,在工程目录下选择刚才建立的_a.s格式的源文件 4)基本配置: 选择菜单项Project-->Settings,弹出工程设置对话框,在工程设置对话框中,选择Processor设置对话框,选择ARM7对目标板所用处理器进行配置。

嵌入式课程设计报告样本

嵌入式课程设计报告 一、课程设计目 1.1 掌握linux开发环境搭建; 1.2巩固嵌入式交叉编译开发思想; 1.3掌握嵌入式GUI软件设计技。,. 二、课程设计规定 输入信号为 1 路AV 视频信号,规定系统能对 1 路输入信号进行实时采集,数字化解决,压缩,存储,要保证一定录像质量. 依照设计题目规定,选取拟定ARM 芯片型号,视频采集芯片型号,完毕系统硬件设计和程序设计. 三、课程设计内容 设计原理ARM10 系列微解决器为低功耗32 位RISC 解决器,最合用于对价位和功耗要求较高消费类应用. ARM10 系列微解决器重要应用领域为:工业控制,Internet 设备,调制解调器设备,移动电话等各种多媒体和嵌入式应用. 视频监控系统总体设计一方面需要对系统进行总体规划,将系统划提成几种功能模块,拟定各个模块实现办法.整个视频监控系统采用C/S 构造,从主体上分为两某些:服务器端和客户端.服务器端重要涉及S3C4510 平台上运营采集,压缩,传播程序,客户端是PC 机上运营接受,解压,回放程序.视频监控终端从摄像头捕获实时视频信息,压缩之后通过以太网传播到视频监控服务器上.

视频图像采集和打包发送在服务器端完毕,图像接受解包和回放将在客户端完毕. 采集图像数据压缩打包发送接受 系统硬件设计系统采用模块化设计方案,重要涉及如下几种模块:主控制器模块,储存电路模块,外围接口电路模块,电源和复位电路, S3C4510 主控器模块 主控器模块是整个系统核心,采用S3C4510B 解决器.Samsung 公司S3C45 10B 是基于以太网应用系统高性价比16/32 位RISC 微控制器,内含一种由ARM 公司设计16/32 位ARM7TDMI RISC 解决器核,ARM7TDMI 为低功耗,高性能16/32 核, 系统存储电路模块 主控器还需某些外围存储单元如Nand Flash,和SDRAM.Nand Flash 中包括Lin ux Bootloader,系统内核,文献系统,应用程序以及环境变量和系统配备文献等;S DRAM 读写速度快,系统运营时把它作为内存单元使用. 外围电路模块 外围电路重要是如下几种电路,复位电路图,电源电路图以及JTAG 电路, 三、课程设计设备及工具 硬件:UP-NETARM2410-S嵌入式实验仪、PC机、ov511摄像头; 软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMR-LINUX开发环境。 四、设计方案 本次课程设计采用arm10开发平台。该平台采用Samsung公司解决器S3C2410。该解决器内部集成了ARM公司 ARM920T解决器核32位微控制器,资源丰富,带独立16KB指令Cache和16KB数据Cache、LCD控制器、RAM控制器、

嵌入式系统课程设计报告

湖北民族学院 信息工程学院 课程设计报告书 题目 :基于A RM的数字式万年历 课程:嵌入式系统课程设计 专业:电子信息科学与技术 班级: 03114411 学号: 031441119 学生姓名:田紫龙 指导教师:易金桥 2017年6 月20 日

信息工程学院课程设计任务书 学号031441119学生姓名田紫龙专业(班级)0314411 设计题目基于 ARM 的数字式万年历 1.能测量温度并且实时显示; 2.具有时间显示功能,能够显示年月日,时分秒,并且可以手动调节时间。 设 3. 具有 12 小时制和 24 小时制切换功能。 计 技 术 参 数 对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。温度采集 选用 DS18B20芯片,万年历采用直观的数字显示,数据显示采用1602 液晶显 示模块,可以在LCD1602 上同时显示年、月、日、周日、时、分、秒,还具有 设 时间校准整点灯光提醒等功能。制作仿真和实物。 计 要 求 [1]苏平 . 单片机的原理与接口技术 [M]. 北京 : 电子工业出版社, 2006,1-113. [2]王忠民 . 微型计算机原理 [M]. 西安 : 西安科技大学出版社, 2003,15-55. [3]左金生 . 电子与模拟电子技术 [M]. 北京 : 电子工业出版社, 2004,105-131. [4]新编单片机原理与应用(第二版). 西安电子科技大学出版社, 2007.2 [5]张萌 . 单片机应用系统开发综合实例 [M]. 北京:清华大学出版社, 2007.7 [6] 朱思荣. 51 单片机实现公历与农历、星期的转换[Z].当当电子网 [7]李广弟 . 单片机原理及应用 [M] 北京航空航天大学出版社 ,2004 年 参[8] 王越明 . 电子万年历的设计 [J]. 黑龙江科技信息, 2004 年 考 资 料 2017年 6 月 20 日

ARM实验报告

ARM嵌入式 实验报告 姓名:冯贤成 学号:120101021106 专业:电子信息工程 指导老师:郑汉麟

ARM嵌入式系统 一、实验目的 1、通过实验掌握ARM指令的特点和寻址方式; 2、掌握简单的ARM汇编语言的程序设计; 3、了解集成开发环境Embest IDE及其开发软件的应用; 二、实验平台 Windows 7系统下的Embest IDE嵌入式软件开发平台 三、实验内容 1.编写程序将R2的高8位传送到R3的低8位(不考虑R3的其它位) 程序如下: .global _start .text _start: MOV R2,#0x80000003 /*把第一个立即数送进R2*/ MOV R3,#0x40000013 /*把第二个立即数送进R3*/ AND R0,R2,#0xff000000 /*取R2高8位到R0*/ AND R3,R3,#0xffffff00 /*R3低8位清零*/ ORR R3,R3,R0,lsr #24 /*R0逻辑右移24位后与R3相或,结果送进R3*/ stop: b stop .end 调试结果: ①Download下载: ②把第一个立即数送进R2:

③把第二个立即数送进R3: ④取R2高8位到R0: ⑤R3低8位清零: ⑥R0逻辑右移24位后与R3相或,结果送进R3:

单步跟踪后的结果,存储器及寄存器的结果显示: 2.编程实现64位的加法运算,要求【R1:R0】+【R3:R2】结果放回【R1:R0】。

程序如下: .global _start .text _start: MOV R0,#12 /R0=12 MOV R1,#6 /R1=6 MOV R2,#8 /R2=8 MOV R3,#9 /R3=9 ADDS R0,R0,R2 /R0等于低32位相加,并影响标志位 ADC R1,R1,R3 /R1等于高32位相加,并加上低位进位stop: b stop .end 调试结果: ①Download下载: ②将12赋给R0 ③将6赋给R1

嵌入式系统课程设计报告

嵌入式系统课程设计报告 课程名称:嵌入式系统课程设计 项目名称:基于ARM实现MP3音乐盒 专业:电子科学与技术

一、设计内容 基本功能:预存四首歌曲,实现循环播放; 每个按键对应一首歌曲。 拓展功能:通过按键简单演奏音乐,类似钢琴; 实现两个模式的切换,切歌模式和音量加减模式。 二、设计思路 基础功能: 将音频数据存储在SD卡中,使用FATFS文件系统进行数据的读写,通过SPI2总线将数据传到内核。内核再将数据通过SPI1总线传送到音频解码模块VS1053,输入的数据(即比特流数据)被解码后送到DAC发出声音。 将音乐存储在SD卡内,通过文件的地址来判别将要播放哪一首音乐,通过地址的递增和循环来实现音乐的自动循环播放。按键对曲目的控制,可通过键盘扫描函数,判断哪一个键被按下,使键盘扫描函数返回不同的返回值,实现对文件地址的控制。将此返回值设置为全局变量,可实现在音乐播放中曲目的切换。 另外,我们还利用解码模块实现对音量的控制,使用按键控制音量的提高或降低。使用SPI1总线将TFT显示屏连接到内核,显示按键功能、当前曲目、当前模式等信息。 由于开发板只有5个按键,按键数量有限,需要对按键实现曲目切换和音量功能的复用。我们小组设置了两种模式,切歌模式和音量模式,并定义左键为模式切换键,实现不同模式的选择和按键的复用。 拓展功能: 基本思路是通过定时器中断来产生一定频率的50% 空占比的脉宽调制波,用此脉宽调制波激励扬声器,从而使扬声器发出一定频率的声音。 所以只要将不同按键的中断子程序设置为对定时器进行不同数据的配置,即可实现不同按键与不同扬声器发生频率的对应。 然后使一个按键的按下与松开均进入中断,且分别实现开启(扬声器发声)与关闭(扬声器不发声)定时器的功能,从而使课题的附加功能表现地更自然。 三、硬件配置 基础功能: (1)SD卡:存储音频数据

STM32-ARM-综合实验报告(南京航空航天大学)

南京航空航天大学研究生实验报告 项目名称:ARM嵌入式系统设计与应用技术 设计专题:综合实验二类:数据采集和显示系统 班级: 小组成员 (1)姓名:学号:学科:电话:Email:导师: (2)姓名:学号:学科:电话:Email:导师: (3)姓名:学号:学科:电话:Email:导师: 20XX年XX月XX日

一、本实验主要内容及要求 本次综合实验的主要内容是,利用ARM内部的A/D转换器进行数据采集和显示系统设计。实验要求如下: 1、采用STM32开发板上的12位A/D转换器(参考电压3.3V)采集电位器测 试点的电压值。电位器与A/D的输入通道14相连接。 2、当按下Key键之后任意旋转电位器,利用A/D转化器采样20组电压值(每 1ms采样一次,使用定时器TIM2计时),并在液晶屏幕上显示当前电压值,当再次按下Key键之后将20组电压值存入到FLASH中。 3、复位后按下Temper键将保存的20组电压值在液晶屏幕中央绘制出波形(要 求各点连接,每个点为5个像素,要有坐标系)。 1)横坐标为“1~20”,每个横坐标之间的间隔为8个像素点; 2)纵坐标为电压值“0V,1V,2V,3V,4V”,相邻坐标之间的为10个像素 点。 4、在液晶屏合适的位置显示组名、姓名、学号、开发日期等信息。可利用STM32 开发板的资源扩展其他自定义功能(如增加温度采集通道、当前采样频率显示和设置、采样率调节等)。 二、硬件框图 本次实验的硬件部分主要是计算机和STM32两个部分,对于计算机部分不做过多的介绍,下面着重介绍STM32中的与本实验相关模块。 1.1 ADC模块 12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。 模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。 STM32教学平台的电位器是信号是连接到STM32的PC4口的,PC4正好是A/D转换的通道14,STM32实验教学平台上也标注了ADC12_14(14通道),电位器硬件框图如图1所示,ADC硬件框图如图1所示。

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

学生课程实践能力考查 题目:温度按键设定、显示、报警系统设计 课程名称:嵌入式系统开发专业班级: 学生学号:学生姓名: 考查地点:考查时长: 4小时 所属院部:指导教师: 2017 — 2018学年第 2 学期 金陵科技学院教务 成绩

2017-2018学年第2学期《嵌入式系统开发》实践能力考核 任课教师签名: 日期: 温度按键设定、显示、报警系统设计 要求: 1、读取DS18B20温度,在液晶上实时显示,并显示上、下限,初始值上限32,下限26。 2、通过按键可以设置环境温度的上限和下限, WK_UP键按下调节上限,再按下调节下限,再按下调节上限…… KEY1按下加1; KEY0按下减1, 根据上限和下限判断当前温度有没有超出范围。 3、当温度超过上限,LED1隔1秒亮一次。超过下限,LED2隔1秒亮一次。(也可自定义报警方式) 4、串口波特率一律用9600bps。 液晶显示的信息: STM32 test name: xxxxxxxxx Maximum is 32C,Minimum is 26 C The temperature is 29 C,now! (xxxxx是自己的名字拼音)

目录: 第一章.系统要求 设计要求 设计方案 第二章.硬件设计 开发板原理图 DS18B20模块 按键模块 LCD显示模块 LED 模块 第三章.软件设计 程序流程图 程序部分代码 主函数、 LED 函数 温度代码 键盘代码 第四章.实物效果图 第五章.课程总结

第一章.设计要求及方案 设计要求 1、读取DS18B20温度,在液晶上实时显示,并显示上、下限,初始值上限32,下限26。 2、通过按键可以设置环境温度的上限和下限, WK_UP键按下调节上限,再按下调节下限,再按下调节上限…… KEY1按下加1; KEY0按下减1, 根据上限和下限判断当前温度有没有超出范围。 3、当温度超过上限,LED1隔1秒亮一次。超过下限,LED2隔1秒亮一次。(也可自定义报 警方式) 4、串口波特率一律用9600bps。 液晶显示的信息: STM32 test name: xxxxxxxxx Maximum is 32C,Minimum is 26 C The temperature is 29 C,now! (xxxxx是自己的名字拼音) 设计方案 本次课程设计的要求是使用STM32F103设计一个温度测控系统,ALIENTEK MiniSTM32 V3 版开发板选择的是 STM32F103RCT6 作为 MCU,它拥有的资源包括:48KB SRAM、256KB FLASH、2 个基本定时器、4 个通用定时器、2 个高级定时器、2 个 DMA 控制器(共 12 个通道)、3 个 SPI、2 个 IIC、5 个串口、1 个 USB、1 个 CAN、3 个 12 位 ADC、1 个 12 位 DAC、1 个SDIO 接口及 51 个通用 IO 口。在本课程中使用了以下部分来完成课程设计的要求: 1.应用DS18B20进行温度的检测。 2.应用按键模块进行外部的上下限数值设定。 3.应用LED的闪烁进行报警。 4.应用LCD显示实时温度、上下限等信息。

基于ARM嵌入式系统接口技术课程设计报告

基于ARM嵌入式系统接口技术课程设计报告 课程设计题目:实时时钟设计 学院:计算机科学与技术学院 班级:计算机09-1班 学号: 姓名: 指导老师:

微型计算机系统与接口技术 课程设计 设计时间:2011年12月19日至 2011年12月23日 设计环境 1.硬件环境:计算机,EV44B0II实验台 2.软件环境:Jediview 集成开发环境 一、基本功能: 利用S3C44BOX的RTC和实验箱上的LCD液晶、4*4小键盘设计一个实时时钟。 1.在LCD上显示当前日期及时间。可按如下格式显示: 日期:XXXX年XX月XX日 时间:XX:XX:XX 班级,姓名 2.利用4*4小键盘校时 校时时LCD的相应位置要有光标提示。 二、定时报警功能 通过小键盘设定报警时刻,报警时刻到,则在LCD上显示(各自不同的)报警图像。 三、步骤: 1.掌握预备知识: a.液晶显示 b.键盘译码 c.掌握S3C44BO芯片 RTC的使用方法 2.设计: a.实现RTC实时时钟功能 b.显示实时时钟界面 c.实现校时功能 d.上机调试,运行,验收 e.实现定时报警功能 四、硬件接口逻辑图

电路连接图

五、程序代码 (1)44binits /* ******************************************************* * NAME : 44BINIT.S * * Version : 10.JAn.2003 * * Description: * * C start up codes * * Configure memory, Initialize ISR ,stacks * * Initialize C-variables * * Fill zeros into zero-initialized C-variables * *******************************************************/

北航ARM9实验报告:实验3uCOS-II实验

实验三UC-OS移植实验 一、实验目的 在内核移植了uCOS-II 的处理器上创建任务。 二、实验内容 1.运行实验十,在超级终端上观察四个任务的切换。 2. 任务1~3,每个控制“红”、“绿”、“蓝”一种颜色的显示,适当增加OSTimeDly()的时间,且优先级高的任务延时时间加长,以便看清三种颜色。 3.引入一个全局变量BOOLEAN ac_key,解决完整刷屏问题。 #define RdURXH0() 当键盘有输入时在超级终端上显示相应的字符。 三、实验设备 硬件:ARM嵌入式开发平台、用于ARM920T的JTAG仿真器、PC机Pentium100以上。 软件:PC机操作系统Win2000或WinXP、ARM ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。 四、实验原理 所谓移植,指的是一个操作系统可以在某个微处理器或者微控制器上运行。虽然uCOS-II的大部分源代码是用C语言写成的,仍需要用C语言和汇编语言完成一些与处理器相关的代码。比如:uCOS-II在读写处理器、寄存器时只能通过汇编语言来实现。因为uCOS-II在设计的时候就己经充分考虑了可移植性,所以,uCOS-II的移植还是比较容易的。 要使uCOS一工工可以正常工作,处理器必须满足以下要求: 1)处理器的C编译器能产生可重入代码。 2)在程序中可以打开或者关闭中断。 3)处理器支持中断,并A能产生定时中断(通常在10Hz}1000Hz之间)。 4)处理器支持能够容纳一定量数据的硬件堆栈。 5)处理器有将堆栈指针和其它CPU寄存器存储和读出到堆栈(或者内存)的指令。

uCOS-II进行任务调度的时候,会把当前任务的CPU寄存器存放到此任务的堆栈中,然后,再从另一个任务的堆栈中恢复原来的工作寄存器,继续运行另一个任务。所以,寄存器的入栈和出栈是uCOS一工工多任务调度的基础。 五、实验步骤 1 以实验十为模板,将实验六inc目录下的LCD320.H 和src目录下的LCD640.C 拷到模板下的相应目录,将LCD640.C加入工程中。 2包含以下头文件#include “inc/lcd320.h”。 3改LCD640.C 文件中包含头文件的路径。 #include "../inc/drv/reg2410.h" 4 声明引用的变量extern U32 LCDBufferII2[LCDHEIGHT][LCDWIDTH]; 六、源程序 #include"../ucos-ii/includes.h" /* uC/OS interface */ #include "../ucos-ii/add/osaddition.h" #include "../inc/drivers.h" #include "../inc/sys/lib.h" #include "../src/gui/gui.h" #include "../inc/lcd320.h" #include #include //#include "..inc/lcd320.h" //#pragma import(__use_no_semihosting_swi) // ensure no functions that use semihosting OS_EVENT *MboxSem; ///******************任务定义***************/// /*OS_STK SYS_Task_Stack[STACKSIZE]= {0, }; //system task刷新任务堆栈 #define SYS_Task_Prio 1 void SYS_Task(void *Id);*/ OS_STK task1_Stack[STACKSIZE]={0, }; //Main_Test_Task堆栈 void Task1(void *Id); //Main_Test_Task #define Task1_Prio 12 OS_STK task2_Stack[STACKSIZE]={0, }; //test_Test_Task堆栈 void Task2(void *Id); //test_Test_Task #define Task2_Prio 15 OS_STK task3_Stack[STACKSIZE]={0, }; //test_Test_Task堆栈 void Task3(void *Id); //test_Test_Task #define Task3_Prio 17 OS_STK task4_Stack[STACKSIZE]={0, }; //test_Test_Task堆栈 void Task4(void *Id); //test_Test_Task #define Task4_Prio 10

相关文档
最新文档