在现在社会,报告使用的频率越来越高,要注意报告在写作时具有一定的格式。你知道怎样写报告才能写的好吗?下面是小编帮大家整理的嵌入式系统实习报告3篇,仅供参考,希望能够帮助到大家。
ARM嵌入式系统综合设计
一、实习时间和地点安排
1、实习时间:20xx年12月03 日 —— 20xx年12月14日,共两周的时间。
2、每天的实习时间安排:
上午:8:30——11:30
下午:13:30——15:30
3、实习地点:校内。
二、实习目的
1、掌握电子元器件的焊接原理和方法。
2、掌握ARM7 LPC2132控制程序的编写方法。
3、掌握调试软件和硬件的方法。
三、实习内容与要求
1、根据设计要求焊接好电路板并测试焊接无误。
2、绘制流程图并编写程序。
3、编译通过后,将程序下载到LPC2132进行调试。
4、调试成功后编写实习报告。
四、LPC2132芯片介绍
LPC2132最小系统图及其介绍
概述
LPC2132是基于一个支持实时仿真和嵌入式跟踪的32/16 位 ARM7TDMI-STM CPU 的微控制器,并带有 32kB、64kB、512 kB 的嵌入的高速
Flash 存储器。128 位宽度的存储器接口和独特的加速结构使 32 位代码能够
在最大时钟速率下运行。对代码规模有严格控制的应用可使用 16 位 Thumb?
模式将代码规模降低超过 30%,而性能的损失却很小。
较小的封装和极低的功耗使 LPC2131/2132/2138 可理想地用于小型系统中,如访问控制和 POS 机。宽范围的串行通信接口和片内 8/16/32kB 的 SRAM 使 LPC2131/2132/2138 非常适用于通信网关、协议转换器、软 modem 、声音
辨别和低端成像,为它们提供巨大的缓冲区空间和强大的处理功能。多个 32 位定时器、1 个或 2 个 10 位 8 路 ADC 、10 位 DAC 、PWM 通道和 47 个 GPIO 以及多达9 个边沿或电平触发的外部中断使它们特别适用于工业控制和医疗系统。
特性
1、小型 LQFP64 封装的 16/32 位 ARM7TDMI-S 微控制器。
2、8/16/32kB 片内静态 RAM 。
3、片内 Boot 装载软件实现在系统/在应用中编程(ISP/IAP )。扇区擦除
或整片擦除的时间为400ms ,1ms 可编程 256 字节。
4、EmbeddedICE?RT 和嵌入式跟踪接口可实时调试(利用片内 RealMonitor
软件)和高速跟踪执行代码。
5、1 个(LPC2132/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 接口(400 kbit/s )、SPITM 和 SSP(具有缓冲功能,数据长度可变)。
10、向量中断控制器。可配置优先级和向量地址。
11、多达 47 个 5V 的通用I/O 口(LQFP64 封装)。
12、 9 个边沿或电平触发的外部中断引脚。
13、 通过片内 PLL 可实现最大为 60MHz 的 CPU 操作频率,PLL 的稳定时间为 100us。
14、片内晶振频率范围:1~30 MHz。
15、2 个低功耗模式:空闲和掉电。
16、可通过个别使能/禁止外部功能和降低外部时钟来优化功耗。
17、通过外部中断将处理器从掉电模式中唤醒。
18、单个电源供电,含有上电复位(POR )和掉电检测(BOD )电路:-CPU
操作电压范围:3.0~3.6 V (3.3 V+/ - 10%) ,I/O 口可承受5V 的最大电压。
结构概述
LPC2132包含一个支持仿真的 ARM7TDMI-S CPU 、与片内存储器控制器接口
的 ARM7 局部总线、与中断控制器接口的 AMBA 高性能总线 (AHB )和连接片内外设功能的 VLSI 外设总线 (VPB ,ARM AMBA 总线的兼容超集)。
LPC2131/2132/2138 将 ARM7TDMI-S 配置为小端(little-endian )字节顺序。 AHB 外设分配了 2M 字节的地址范围,它位于 4G 字节 ARM 存储器空间的最顶端。每个 AHB 外设都 分配了 16k 字节的地址空间。LPC2131/2132/2138 的外设功能 (中断控制器除外)都连接到 VPB 总线。AHB 到 VPB 的桥将 VPB 总线与 AHB 总线相连。VPB 外设也分配了 2M 字节的地址范围,从 3.5GB 地址点开始。每个 VPB 外设在 VPB 地址空间内都分配了 16k 字节地址空间。
片内外设与器件管脚的连接由管脚连接模块控制。该模块必须由软件进行控制以符合外设功能与管脚在特定应用中的需求。
ARM7TDMI-S 处理器
ARM7TDMI-S 是通用的 32 位微处理器,它具有高性能和低功耗的特性。ARM 结构是基于精简指令集 计算机(RISC)原理而设计的。指令集和相关的译码机制比复杂指令集计算机要简单得多。这样使用一个小的、廉价的处理器核就可实现很高的指令吞吐量和实时的中断响应。
由于使用了流水线技术,处理和存储系统的所有部分都可连续工作。通常在执行一条指令的同时对下 ,一条指令进行译码,并将第三条指令从存储器中取出。
ARM7TDMI-S 处理器使用了一个被称为 THUMB 的独特结构化策略,它非常适用于那些对存储器有限制或者需要较高代码密度的大批量产品的应用。
在 THUMB 后面一个关键的概念是“超精简指令集”。基本上,ARM7TDMI-S 处理器具有两个指令集:标准 32 位 ARM 指令集 、16 位 THUMB 指令集
THUMB 指令集的 16 位指令长度使其可以达到标准 ARM 代码两倍的密度,却仍然保持 ARM 的大多 数性能上的优势,这些优势是使用 16 位寄存器的 16 位处理器所不具备的。因为 THUMB 代码和 ARM 代码一样,在相同的 32 位寄存器上进行操作。THUMB 代码仅为 ARM 代码规模的 65%,但其性能却相当于连接到 16 位存储器系统的相同 ARM 处理器性能的 160%。
片内 FLASH 程序存储器
LPC2131/2132/2138 分别含有 32kB、64kB 和 512kB 的FLASH 存储器系统。该存储器可用作代码和数据的存储。对 FLASH 存储器的编程可通过几种方法来实现:通过内置的串行 JTAG 接口,通过在系统编程(ISP )和 UART0 ,或通过在应用编程(IAP )。使用在应用编程的应用程序也可以在应用程序运行时对FLAH 进行擦除和/ 或编程,这样就为数据存储和现场固件的升级都带来了极大的灵活性。如果LPC2131/2132/2138 使用了片内引导装载程序(bootloader ),32/64/512kB 的 Flash 存储器就可用来存放用户代码。 LPC2131/2132/2138 的Flash 存储器至少可擦除/编程 10,000 次,保存数据的时间长达 10 年。 片内静态 RAM
片内静态 RAM (SRAM )可用作代码和/ 或数据的存储,支持 8位、16 位和32 位的访问。LPC2131/2132/2138 含有 8/16/32kB 的静态RAM 。 LPC2131/2132/2138 SRAM 是一个字节寻址的存储器。对存储器进行字和半字访问时将忽略地址对准,访问被寻址的自然对准值(因此,对存储器进行字访问时将忽略地址位 0 和 1,半字访问时将忽略地址位 0 )。因此,有效的读写操作要求半字数据访问的地址线0 为 0(地址以0、2 、4 、6、8、A 、C 和 E 结尾),字 数据访问的地址线 0 和 1 都为 0 (地址以0、4 、8 和 C 结尾)。该原则同样用于片外和片内存储器。SRAM 控制器包含一个回写缓冲区,它用于防止 CPU 在连续的写操作时停止运行。回写缓冲区总是保存着软件发送到 SRAM
的最后一个字节。该数据只有在软件请求下一次写操作时才写入 SRAM (数据只有 在软件执行另外一次写操作时被写入 SRAM)。如果发生芯片复位,实际的SRAM 内容将不会反映最近一 次的写请求(即:在一次“热”芯片复位后,SRAM 不会反映最后一次写入的内容)。任何在复位后检查 SRAM 内容的程序都必须注意这一点。通过对一个单元执行两次相同的写操作可保证复位后数据的写入。或者,也可通过在进入空闲或掉电模式前执行虚写(dummy write )操作来保证最后的数据在复位后被真正写入到 SRAM。
LPC2132管脚分布
五、硬件原理图
其中K1-K6为六个按键,分别对应清零键、减号键、第二个数字键、等号键、加号键和第一个数字键,接到I/O口的P0.08-P0.13脚。P0.00-P0.07号脚接段码,分别是G、F、E、D、C、B、A、DP。三个数码管的位选通端接到P0.28-P0.30三个管脚上,用于选通数码管。
ULN2803应用电路介绍
ULN20xx、ULN2800是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。ULN20xxA电路是美国Texas Instruments公司和Sprague公司开发的高压大电流达林顿晶体管阵列电路,文中介绍了它的电路构成、特征参数及典型应用。
功率电子电路大多要求具有大电流输出能力,以便于驱动各种类型的负载。功率驱动电路是功率电子设备输出电路的一个重要组成部分。在大型仪器仪表系统中,经常要用到伺服电机、步进电机、各种电磁阀、泵等驱动电压高且功率较大的器件。ULN20xx、ULN2800高压大电流达林顿晶体管阵列系列产品就属于这类可控大功率器件,由于这类器件功能强、应用范围语广。因此,许多公司都生产高压大电流达林顿晶体管阵列产品,从而形成了各种系列产品,ULN20xx、ULN2800系列就是美国Texas Instruments公司、美国Sprague公司开发的高压大电流达林顿晶体管阵列产品。它们的系列型号分类如表1所列,生产20xx、2800高压大电流达林顿晶体管阵列系列产品的公司与型号对照表如表2所列。在上述系列产品中,ULN20xx系列能够同时驱动7组高压大电流负载,ULN2800系列则能够同时驱动8组高压大电流负载。美国Texas Instruments公司、美国Sprague公司生产的ULN20xxA由7组达林顿晶体管阵列和相应的电阻网络以及钳位二极管网络构成,具有同时驱动7组负载的能力,为单片双极型大功率高速集成电路。以下介绍该电路的构成、性能特征、电参数以及典型应用。20xx、2800高压大电流达林顿晶体管阵列系列中的其它产品的性能特性与应用可参考ULN20xxA。本设计的驱动电路如图所示:
在本实习中的应用
蓝牙技术概述
蓝牙(Bluetooth)是目前比较流行的一种短距离无线通讯技术,其主要目的就是要在全世界范围内建立一个短距离的无线通信标准。设计者的初衷是用隐形的连接线代替线缆。它取代目前多种电缆连接方案,通过统一的.短程无线链路,在各信息设备之间可以穿过墙壁或公文包,实现方便快捷、灵活安全、低成本小功耗的话音和数据通信。 “蓝牙”技术的目的是使特定的移动电话、便携式电脑以及各种便携式通信设备的主机之间在近距离内实现无缝的资源共享。
一、 实践目的
了解处理器的发展
掌握WinCE嵌入式系统开发方法和开发流程。
掌握WinCE嵌入式C#编程方法。
掌握WinCE嵌入式网络通信技术。
掌握Bluetooth编码技术
二、实践要求
1. 了解WinCE操作系统的裁剪及定制;
2. 设计蓝牙广播系统(包括服务器端和客户端);
3.设计蓝牙文件传输系统(包括服务器端和客户端);
4. 应用程序安装和部署。
三、实践内容
(1)了解Wince平台
了解处理器的发展,什么是嵌入系统,嵌入式系统的应用,以及窗体与控件的概念,掌握WinCE嵌入式C#编程方法,对实验平台有一定的认识,更进一步的认识蓝牙。了解编写应用程序的流程,理解了Windows 窗体,学会了使用基本控件如标签、文本、按钮、列表框和组合框,掌握窗体的常用属性和方法。
(2)蓝牙搜索、浏览与发送,蓝牙设备列表,配对设备清空,删除。
四、原理介绍
1.嵌入式系统:
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
一般由硬件设备、嵌入式操作系统、嵌入式应用软件组成。具有专用性、高效简洁性、高可靠和低能耗性、自身特殊性的特点。
通过嵌入式控制系统的实习,使我们了解并掌握根据嵌入式控制系统项目要求,如何设计符合控制逻辑的原理图,复合原理图及电子电气EMC的PCB图,学习电子元器件的焊接,PCB板的调试等,最终掌握嵌入式控制系统的设计及工艺等。
一、设计实习任务
1. 焊接ARM7(LPC2132)最小系统PCB。要求仔细认真焊接,并调试使其能正常工作(提供最简易测试程序)。
2. 设计数码管动态扫描显示电路,三个按键的键盘电路,模拟电压取样电路等。要求原理图设计合理,要求有与最小系统板的接口,正确焊接,调试后能正常工作。
3. 控制软件设计
在嵌入式控制系统的设计中,系统控制软件的设计是一项非常重要且艰巨的工作,系统能否正常可靠的工作,成败在此一举。因此要求同学们认真仔细的设计、调试控制软件。要求软件语句精炼,整体健壮,有一定的抗干扰能力。
二、数码管动态扫描显示电路控制软件设计
要求显示电路能正常显示数据,数码管无闪烁,明亮,可随时刷新显示的数据,参考流程图见图1。
图 1
三.键盘识别软件设计
嵌入式控制系统一般的是配备简易键盘,即根据需要设3~4按键基本能满足使用要求,因此键盘控制软件也是必须的,参考下图
四、ADC控制软件设计
五、 电路与程序
六、程序源代码
#include "LPC2294.h" 图 3
typedef unsigned int U32; //无符号32位整型变量
typedef unsigned char U8; //无符号8位整型变量
//typedef signed char int8; //有符号8位整型变量
typedef unsigned short U16; //有符号8位整型变量
#define Fpclk 11059200
#define DIS_1 0x06 //个位选通
#define DIS_2 0x05 //十位选通
#define DIS_3 0x03 //百位选通
#define KEY1 0x04 //+
#define KEY2 0x02 //-
#define KEY3 0x01 //ok
U16 cunt;
U16 data_dis,data_set;
U8 dis3=10,dis2=10,dis1=10;
U8 flag_dis,dis_n;
U8 timeout;
const U8 led_seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xff,0x00}; //段吗: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 all_l 关显 void __irq Timer0_ISR(void);
void cpu_init(void)
{
PINSEL0 = 0x00;
IO0DIR = 0x3FF; //显示分配在P000~P010 ,段码P000~P007,位码P008~P010 //健P016~P018
//定时器0
T0TC = 0;
T0PR = 0;
T0MCR = 0x03;
T0MR0 = Fpclk/1000; //定时1mS
T0TCR = 0x01;
VICIntSelect = VICIntSelect&(~(1<<4));
VICVectCntl0 = 0x20|4;
VICVectAddr0 = (U32)Timer0_ISR;
VICIntEnable = (1<<4);
}
void updata(void)
{
U16 temp;
// u8 temp1,temp2,temp3;
//WDT_CONTR=0x3c;
if(data_dis<=999)
{
dis3=temp/100; //百位
temp=temp%100;
dis2=temp/10; //十位
dis1=temp%10; //个位 }
}
//====================================== // Timer0_ISR
//====================================== void __irq Timer0_ISR(void)
{
cunt++; if(cunt%10==0) flag_dis=1; if(timeout > 0) timeout--;
}
//====================================== //display共阳极动态扫描显示
//====================================== display()
{
//WDT_CONTR=0x3c;
dis_n++;
switch(dis_n)
{
case 1:
IO0PIN=led_seg[dis1] | DIS_1<<8; //显示个位 break;
case 2:
IO0PIN=led_seg[dis2] | DIS_2<<8; //显示十位 break;
case 3:
IO0PIN=led_seg[dis2] | DIS_3<<8; //显示百位 break;
}
if(dis_n>=3)
dis_n=0;
}
//=========================
// key_do
//按键接于P0.16~18
//=========================
void key_do(void)
{
U8 key,key_d;