基于ARM的课程设计

基于ARM的课程设计
基于ARM的课程设计

前言

近年来,随着计算机技术及集成电路技术的发展,嵌入式技术日渐普及,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用。嵌入式系统无疑成为当前最热门最有发展前途的IT应用领域之一。

液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。通过显示器同步显示元器件的状态可以更深刻地理解控制的原理。

通过Proteus模拟ARM7芯片设计,可以增强我们的自学能力和思考能力,掌握科学研究的方法,提高信息检索的能力以及获取与时俱进知识的能力。同时,使我们深刻学习了ARM的相关知识,增强对实际电路的感性认识,提高了分析问题,处理问题的能力。

运用Keil编译C语言,连接生成Hex文件和Axf文件。使用PROTEUS 7.8SP2仿真,选用ARM7 LPC2106 芯片和LCD1602,导入Hex或文件,然后进行软件仿真调试。

目录

前言.................................................................................................................................................... I 目录.................................................................................................................................................. II

第一章软硬件简介 (1)

1.1 Proteus 7.8简介 (1)

1.2 RVDS简介 (1)

1.3芯片LPC2106简介 (2)

第二章LCD显示原理和初始化流程图 (3)

2.1LCD显示简介 (3)

2.2 LCD相关参数 (4)

第三章Proteus仿真电路 (7)

3.1 Proteus仿真元件清单 (7)

3.2 Proteus仿真电路图截图 (7)

第四章程序代码分模块介绍 (8)

第五章实验(测试)结果 (19)

总结 (20)

参考文献 (21)

第一章软硬件简介

设计中软件主要用到了模型仿真软件Proteus和编译套件RVDS(RealView Development Suite),硬件主要采用了NXP公司的LPC2106微控制器。

1.1 Proteus 7.8简介

Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有

其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机

及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学

的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿

真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件

和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。

在Proteus绘制好原理图后,调入已编译好的目标代码文件:*.hex(或者*.axf),

可以在Proteus的原理图中看到模拟的实物运行状态和过程。Proteus不仅可将许多单片

机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实

物演示实验的效果,后者则是实物演示实验难以达到的效果。它的元器件、连接线路等却

和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。

1.2 RVDS简介

RealView Development Suite(RVDS)是ARM公司继SDT与ADS1.2之后主推的新一代开发工具。RVDS集成的RVCT是业内公认的能够支持所有ARM处理器,并提供最好的执行性能的编译器。RealView Developer Suite 支持所有 ARM 系列核心,并与众多第三方实时操作系统及工具商合作简化开发流程。

RVDS包含有四个模块:

(1)IDE:RVDS中集成了Eclipse IDE,用于代码的编辑和管理。支持语句高亮和多颜色

显示,以工程的方式管理代码,支持第三方Eclipse功能插件。

(2)RVCT:RVCT是业界最优秀的编译器,支持全系列的ARM和XSCALE架构,支持汇编、C

和C++。

(3)RVD:是RVDS中的调试软件,功能强大,支持Flash烧写和多核调试,支持多种调试

手段,快速错误定位。

(4)RVISS:是指令集仿真器,支持外设虚拟,可以使软件开发和硬件开发同步进行,同

时可以分析代码性能,加快软件开发速度。

RVDS具有代码小执行效率高、支持Linux操作系统、调试功能强大、可虚拟外设等优点,同时还具有内容丰富的在线文档。

1.3芯片LPC2106简介

LPC2106/2105/2104 包含一个支持仿真的ARM7TDMI-S CPU、与片内存储器控制器接口的ARM7 局部总线、与中断控制器接口的AMBA高性能总线(AHB)和连接片内外设功能的VLSI 外设总线(VPB ,ARMAMBA 总线的兼容超集)。LPC2106/2105/2104 将ARM7TDMI-S配置为小端(little-endian )字节顺序。

AHB外设分配了2M 字节的地址范围,它位于 4G字节ARM存储器空间的最顶端。每个 AHB 外设都分配了16k 字节的地址空间。LPC2106/2105/2104 的外设功能(中断控制器除外)都连接到VPB 总线。AHB到VPB 的桥接将VPB 总线与AHB总线相连。VPB 外设也分配了2M 字节的地址范围,从3.5GB 地址点开始。每个VPB 外设在VPB 地址空间内都分配了16k 字节地址空间。

它拥有以下特性:

◆ARM7TDMI-S处理器

◆128k字节片内Flash程序存储器,具有ISP 和IAP 功能。

◆Flash编程时间:1ms 可编程512 字节,扇区擦除或整片擦除只需400ms 。

◆64/32/16K 字节静态RAM(LPC2106/2105/2104)

◆向量中断控制器

◆仿真跟踪模块,支持实时跟踪

◆RealMonitor模块支持实时调试

◆标准ARM测试/ 调试接口,兼容现有工具

◆极小封装:TQFP48 (7×7mm2)

◆双UART,其中一个带有完全的调制解调器接口

◆I2C 串行接口

◆SPI 串行接口

◆两个定时器,分别具有4 路捕获/ 比较通道

◆多达6 路输出的PWM 单元

◆实时时钟

◆看门狗定时器

◆通用I/O 口

◆CPU 操作频率可达60MHz

◆双电源

-CPU 操作电压范围:1.65V~1.95V(1.8V ±8.3%)

-I/O 电压范围:3.0V~3.6V(3.3V ±10%)

◆两个低功耗模式:空闲和掉电

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

◆外设功能可单独使能/ 禁止,实现功耗最优化

◆片内晶振的操作频率范围:10MHz~25MHz

◆片内PLL 允许CPU 以最大速度运行,可以在超过整个晶振操作频率范围的情况

下使用。

由于拥有以上特性,LPC2106适用于nternet 网关、串行通信协议转换器、访问控制、工业控制、医疗设备及其它各种类型的应用。

第二章 LCD显示原理和初始化流程图

2.1LCD显示简介

①液晶显示原理

液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。

②液晶显示器的分类

液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。除了黑白显示外,液晶显示器还有多灰度有彩色显示等。如果根据驱动方式来分,可以分为静态驱动(Static)、单纯矩阵驱动(Simple Matrix)和主动矩阵驱动(Active Matrix)三种。

③液晶显示器各种图形的显示原理:

◆线段的显示

点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的000H——00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是LCD显示的基本原理。

◆字符的显示

用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。

◆汉字的显示

汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字占32B,分左右两半,各占16B,左边为1、3、5……

右边为2、4、6……根据在LCD上开始显示的行列号及每行的列数可找出显示RAM 对应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加1,送第二个字节,换行按列对齐,送第三个字节……直到32B显示完就可以LCD上得到一个完整汉字。

2.2 LCD相关参数

◆1602LCD主要技术参数:

显示容量: 16×2个字符

芯片工作电压: 4.5—5.5V

工作电流: 2.0mA(5.0V)

模块最佳工作电压: 5.0V

字符尺寸: 2.95×4.35(W×H)mm

◆引脚功能说明

1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如下表所示:

编号符号引脚说明编号符号引脚说明

1 VSS 电源地9 D

2 数据

2 VDD 电源正极10 D

3 数据

3 VL 液晶显示偏压11 D

4 数据

4 RS 数据/命令选择12 D

5 数据

5 R/W 读/写选择13 D

6 数据

6 E 使能信号14 D

7 数据

7 D0 数据15 BLA 背光源正极

8 D1 数据16 BLK 背光源负极

第1脚:VSS为地电源。

第2脚:VDD接5V正电源。

第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS 和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可

以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:D0~D7为8位双向数据线。

第15脚:背光源正极。

第16脚:背光源负极。

◆1602LCD的指令说明及时序

1602液晶模块内部的控制器共有11条控制指令,如下表所示:

序号指令RS R/W D7 D6 D5 D4 D3 D2 D1 D0

1 清显示0 0 0 0 0 0 0 0 0 1

2 光标返回0 0 0 0 0 0 0 0 1 *

3 置输入模式0 0 0 0 0 0 0 1 I/D S

4 显示开/关控制0 0 0 0 0 0 1 D C B

5 光标或字符移位0 0 0 0 0 1 S/C R/L * *

6 置功能0 0 0 0 1 DL N F * *

7 置字符发生存贮器地址0 0 0 1 字符发生存贮器地址

8 置数据存贮器地址0 0 1 显示数据存贮器地址

9 读忙标志或地址0 1 BF 计数器地址

10 写数到CGRAM或DDRAM) 1 0 要写的数据内容

11 从CGRAM或DDRAM读数 1 1 读出的数据内容

1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)

指令1:清显示,指令码01H,光标复位到地址00H位置。

指令2:光标复位,光标返回到地址00H。

指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左

移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。

指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,

低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示

无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。

指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光

标。

指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:

低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,

高电平时显示5x10的点阵字符。

指令7:字符发生器RAM地址设置。

指令8:DDRAM地址设置。

指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不

能接收命令或者数据,如果为低电平表示不忙。

指令10:写数据。

指令11:读数据。

与HD44780相兼容的芯片时序表如下所示:

读状态输入RS=L,R/W=H,E=H 输出D0—D7=状态字

输出无写指令输入RS=L,R/W=L,D0—D7=指令码,E=高

脉冲

读数据输入RS=H,R/W=H,E=H 输出D0—D7=数据

输出无写数据输入RS=H,R/W=L,D0—D7=数据,E=高脉

读写操作时序如下图所示:

读操作时序图

写操作时序图

1602LCD的RAM地址映射及标准字库表

液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,下图所示为1602的内部显示地址。

例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)

+10000000B(80H)=11000000B(C0H)。

在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。

1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图10-58所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”

第三章 Proteus仿真电路使用Proteus进行仿真电路设计,下面依次介绍仿真细节。

3.1 Proteus仿真元件清单

3.2 Proteus仿真电路图截图

第四章程序代码分模块介绍

实验的C语言程序代码如下所示(附注释):

//main.c

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

* File: main.c

* 功能:向LCD输出HelloWorld

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

#include "config.h"

#define rs (1<<8)

#define rw (1<<9)

#define en (1<<10)

#define busy (1<<7)

uint8 txt[]={"HelloWorld"};

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

* 名称:ChkBusy()

* 功能:检查总线是否忙

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

void ChkBusy()

{

IODIR=0x700;

while(1)

{

IOCLR=rs;

IOSET=rw;

IOSET=en;

if(!(IOPIN & busy))break;

IOCLR=en;

}

IODIR=0x7ff;

}

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

* 名称:WrOp()

* 功能:写函数

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

void WrOp(uint8 dat)

{

ChkBusy();

IOCLR=rs; //全部清零

IOCLR=rw;

IOCLR=0xff; //先清零

IOSET=dat; //再送数

IOSET=en;

IOCLR=en;

}

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

***

* 名称:WrDat()

* 功能:写数据函数

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

void WrDat(uint8 dat)

{

ChkBusy();

IOSET=rs;

IOCLR=rw;

IOCLR=0xff; //先清零

IOSET=dat; //再送数

IOSET=en;

IOCLR=en;

}

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

* 名称:lcd_init()

* 功能:lcd初始化函数

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

void lcd_init(void)

{

WrOp(0x38);

WrOp(0x06); //光标加1

WrOp(0x0c); //开显示

}

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

* 名称:DisText()

* 功能:显示文本函数

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

void DisText(uint8 addr,uint8 *p)

{

WrOp(addr);

while(*p !='\0')WrDat(*(p++));

}

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

* 名称:main()

* 功能:显示文本

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

int main(void)

{

lcd_init();

IODIR=0x7ff; //设置为输出

IOCLR=0x7ff;

DisText(0x86,txt);

while(1);

}

//LPC2106.h

/* External Interrupts */

/* 外部中断控制寄存器*/

#define EXTINT (*((volatile unsigned char *) 0xE01FC140)) //外部中断标志寄存器

#define EXTW AKE (*((volatile unsigned char *) 0xE01FC144)) //外部中断唤醒,是否从处理器掉电中唤醒

/* SMemory mapping control. */

/* 内存remap控制寄存器*/

#define MEMMAP (*((volatile unsigned long *) 0xE01FC040)) //选择读取向量的不同地址

/* Phase Locked Loop (PLL) */

/* PLL控制寄存器*/

#define PLLCON (*((volatile unsigned char *) 0xE01FC080)) //PLL控制位保持寄存器

#define PLLCFG (*((volatile unsigned char *) 0xE01FC084)) //PLL配置值保持寄存器

#define PLLSTAT (*((volatile unsigned short*) 0xE01FC088)) //控制和配置信息读回寄存器

#define PLLFEED (*((volatile unsigned char *) 0xE01FC08C)) //使能控制和配置

/* Power Control */

/* 功率控制寄存器*/

#define PCON (*((volatile unsigned char *) 0xE01FC0C0)) //功率控制(空闲模式或掉电模式)

#define PCONP (*((volatile unsigned long *) 0xE01FC0C4)) //外设功率控制

/* VPB Divider */

/* VLSI外设总线(VPB)分频寄存器*/

#define VPBDIV (*((volatile unsigned char *) 0xE01FC100)) //VPB时钟设置

/* Memory Accelerator Module (MAM) */

/* 存储器加速模块*/

#define MAMCR (*((volatile unsigned char *) 0xE01FC000)) //控制#define MAMTIM (*((volatile unsigned char *) 0xE01FC004)) //定时控制

/* Vectored Interrupt Controller (VIC) */

/* 向量中断控制器(VIC)的特殊寄存器*/

#define VICIRQStatus (*((volatile unsigned long *) 0xFFFFF000)) //IRQ状态#define VICFIQStatus (*((volatile unsigned long *) 0xFFFFF004)) //FIQ状态#define VICRawIntr (*((volatile unsigned long *) 0xFFFFF008)) //所有中断的状态

#define VICIntSelect (*((volatile unsigned long *) 0xFFFFF00C)) //中断选择#define VICIntEnable (*((volatile unsigned long *) 0xFFFFF010)) //中断使能#define VICIntEnClr (*((volatile unsigned long *) 0xFFFFF014)) //中断使能

清零

#define VICSoftInt (*((volatile unsigned long *) 0xFFFFF018)) //软件中断#define VICSoftIntClear (*((volatile unsigned long *) 0xFFFFF01C)) //软件中断清零

#define VICProtection (*((volatile unsigned long *) 0xFFFFF020)) //保护使能#define VICVectAddr (*((volatile unsigned long *) 0xFFFFF030)) //向量地址#define VICDefVectAddr (*((volatile unsigned long *) 0xFFFFF034)) //默认地址

#define VICVectAddr0 (*((volatile unsigned long *) 0xFFFFF100)) //向量地址#define VICVectAddr1 (*((volatile unsigned long *) 0xFFFFF104))

#define VICVectAddr2 (*((volatile unsigned long *) 0xFFFFF108))

#define VICVectAddr3 (*((volatile unsigned long *) 0xFFFFF10C))

#define VICVectAddr4 (*((volatile unsigned long *) 0xFFFFF110))

#define VICVectAddr5 (*((volatile unsigned long *) 0xFFFFF114))

#define VICVectAddr6 (*((volatile unsigned long *) 0xFFFFF118))

#define VICVectAddr7 (*((volatile unsigned long *) 0xFFFFF11C))

#define VICVectAddr8 (*((volatile unsigned long *) 0xFFFFF120))

#define VICVectAddr9 (*((volatile unsigned long *) 0xFFFFF124))

#define VICVectAddr10 (*((volatile unsigned long *) 0xFFFFF128))

#define VICVectAddr11 (*((volatile unsigned long *) 0xFFFFF12C))

#define VICVectAddr12 (*((volatile unsigned long *) 0xFFFFF130))

#define VICVectAddr13 (*((volatile unsigned long *) 0xFFFFF134))

#define VICVectAddr14 (*((volatile unsigned long *) 0xFFFFF138))

#define VICVectAddr15 (*((volatile unsigned long *) 0xFFFFF13C))

#define VICVectCntl0 (*((volatile unsigned long *) 0xFFFFF200)) //向量控制#define VICVectCntl1 (*((volatile unsigned long *) 0xFFFFF204))

#define VICVectCntl2 (*((volatile unsigned long *) 0xFFFFF208))

#define VICVectCntl3 (*((volatile unsigned long *) 0xFFFFF20C))

#define VICVectCntl4 (*((volatile unsigned long *) 0xFFFFF210))

#define VICVectCntl5 (*((volatile unsigned long *) 0xFFFFF214))

#define VICVectCntl6 (*((volatile unsigned long *) 0xFFFFF218))

#define VICVectCntl7 (*((volatile unsigned long *) 0xFFFFF21C))

#define VICVectCntl8 (*((volatile unsigned long *) 0xFFFFF220))

#define VICVectCntl9 (*((volatile unsigned long *) 0xFFFFF224))

#define VICVectCntl10 (*((volatile unsigned long *) 0xFFFFF228))

#define VICVectCntl11 (*((volatile unsigned long *) 0xFFFFF22C))

#define VICVectCntl12 (*((volatile unsigned long *) 0xFFFFF230))

#define VICVectCntl13 (*((volatile unsigned long *) 0xFFFFF234))

#define VICVectCntl14 (*((volatile unsigned long *) 0xFFFFF238))

#define VICVectCntl15 (*((volatile unsigned long *) 0xFFFFF23C))

/* General Purpose Input/Output (GPIO) */

/* 通用并行IO口的特殊寄存器*/

#define IOPIN (*((volatile unsigned long *) 0xE0028000))

#define IOSET (*((volatile unsigned long *) 0xE0028004))

#define IODIR (*((volatile unsigned long *) 0xE0028008))

#define IOCLR (*((volatile unsigned long *) 0xE002800C))

/* Pin Connect Block */

/* 管脚连接模块控制寄存器*/

#define PINSEL0 (*((volatile unsigned long *) 0xE002C000))

#define PINSEL1 (*((volatile unsigned long *) 0xE002C004))

/* Universal Asynchronous Receiver Transmitter 0 (UART0) */

/* 通用异步串行口0(UART0)的特殊寄存器*/

#define U0RBR (*((volatile unsigned char *) 0xE000C000)) #define U0THR (*((volatile unsigned char *) 0xE000C000)) #define U0IER (*((volatile unsigned char *) 0xE000C004)) #define U0IIR (*((volatile unsigned char *) 0xE000C008)) #define U0FCR (*((volatile unsigned char *) 0xE000C008)) #define U0LCR (*((volatile unsigned char *) 0xE000C00C)) #define U0LSR (*((volatile unsigned char *) 0xE000C014)) #define U0SCR (*((volatile unsigned char *) 0xE000C01C)) #define U0DLL (*((volatile unsigned char *) 0xE000C000)) #define U0DLM (*((volatile unsigned char *) 0xE000C004)) /* Universal Asynchronous Receiver Transmitter 1 (UART1) */

/* 通用异步串行口1(UART1)的特殊寄存器*/

#define U1RBR (*((volatile unsigned char *) 0xE0010000)) #define U1THR (*((volatile unsigned char *) 0xE0010000)) #define U1IER (*((volatile unsigned char *) 0xE0010004)) #define U1IIR (*((volatile unsigned char *) 0xE0010008)) #define U1FCR (*((volatile unsigned char *) 0xE0010008)) #define U1LCR (*((volatile unsigned char *) 0xE001000C)) #define U1MCR (*((volatile unsigned char *) 0xE0010010)) #define U1LSR (*((volatile unsigned char *) 0xE0010014)) #define U1MSR (*((volatile unsigned char *) 0xE0010018)) #define U1SCR (*((volatile unsigned char *) 0xE001001C)) #define U1DLL (*((volatile unsigned char *) 0xE0010000)) #define U1DLM (*((volatile unsigned char *) 0xE0010004)) /* I2C (8/16 bit data bus) */

/* 芯片间总线(I2C)的特殊寄存器*/

#define I2CONSET (*((volatile unsigned long *) 0xE001C000)) #define I2STAT (*((volatile unsigned long *) 0xE001C004)) #define I2DAT (*((volatile unsigned long *) 0xE001C008)) #define I2ADR (*((volatile unsigned long *) 0xE001C00C)) #define I2SCLH (*((volatile unsigned long *) 0xE001C010)) #define I2SCLL (*((volatile unsigned long *) 0xE001C014)) #define I2CONCLR (*((volatile unsigned long *) 0xE001C018)) /* SPI (Serial Peripheral Interface) */

/* SPI总线接口的特殊寄存器*/

#define SPI_SPCR (*((volatile unsigned char *) 0xE0020000)) #define SPI_SPSR (*((volatile unsigned char *) 0xE0020004)) #define SPI_SPDR (*((volatile unsigned char *) 0xE0020008)) #define SPI_SPCCR (*((volatile unsigned char *) 0xE002000C)) #define SPI_SPINT (*((volatile unsigned char *) 0xE002001C)) /* Timer 0 */

/* 定时器0的特殊寄存器*/

#define T0IR (*((volatile unsigned long *) 0xE0004000)) #define T0TCR (*((volatile unsigned long *) 0xE0004004)) #define T0TC (*((volatile unsigned long *) 0xE0004008)) #define T0PR (*((volatile unsigned long *) 0xE000400C)) #define T0PC (*((volatile unsigned long *) 0xE0004010)) #define T0MCR (*((volatile unsigned long *) 0xE0004014)) #define T0MR0 (*((volatile unsigned long *) 0xE0004018)) #define T0MR1 (*((volatile unsigned long *) 0xE000401C)) #define T0MR2 (*((volatile unsigned long *) 0xE0004020)) #define T0MR3 (*((volatile unsigned long *) 0xE0004024))

#define T0CR0 (*((volatile unsigned long *) 0xE000402C)) #define T0CR1 (*((volatile unsigned long *) 0xE0004030)) #define T0CR2 (*((volatile unsigned long *) 0xE0004034)) #define T0CR3 (*((volatile unsigned long *) 0xE0004038)) #define T0EMR (*((volatile unsigned long *) 0xE000403C)) /* Timer 1 */

/* 定时器1的特殊寄存器*/

#define T1IR (*((volatile unsigned long *) 0xE0008000))

#define T1TCR (*((volatile unsigned long *) 0xE0008004)) #define T1TC (*((volatile unsigned long *) 0xE0008008))

#define T1PR (*((volatile unsigned long *) 0xE000800C)) #define T1PC (*((volatile unsigned long *) 0xE0008010))

#define T1MCR (*((volatile unsigned long *) 0xE0008014)) #define T1MR0 (*((volatile unsigned long *) 0xE0008018)) #define T1MR1 (*((volatile unsigned long *) 0xE000801C)) #define T1MR2 (*((volatile unsigned long *) 0xE0008020)) #define T1MR3 (*((volatile unsigned long *) 0xE0008024)) #define T1CCR (*((volatile unsigned long *) 0xE0008028)) #define T1CR0 (*((volatile unsigned long *) 0xE000802C)) #define T1CR1 (*((volatile unsigned long *) 0xE0008030)) #define T1CR2 (*((volatile unsigned long *) 0xE0008034)) #define T1CR3 (*((volatile unsigned long *) 0xE0008038)) #define T1EMR (*((volatile unsigned long *) 0xE000803C)) /* Pulse Width Modulator (PWM) */

/* 脉宽调制器的特殊寄存器*/

#define PWMIR (*((volatile unsigned long *) 0xE0014000)) #define PWMTCR (*((volatile unsigned long *) 0xE0014004)) #define PWMTC (*((volatile unsigned long *) 0xE0014008)) #define PWMPR (*((volatile unsigned long *) 0xE001400C)) #define PWMPC (*((volatile unsigned long *) 0xE0014010)) #define PWMMCR (*((volatile unsigned long *) 0xE0014014)) #define PWMMR0 (*((volatile unsigned long *) 0xE0014018)) #define PWMMR1 (*((volatile unsigned long *) 0xE001401C)) #define PWMMR2 (*((volatile unsigned long *) 0xE0014020)) #define PWMMR3 (*((volatile unsigned long *) 0xE0014024)) #define PWMMR4 (*((volatile unsigned long *) 0xE0014040)) #define PWMMR5 (*((volatile unsigned long *) 0xE0014044)) #define PWMMR6 (*((volatile unsigned long *) 0xE0014048)) #define PWMPCR (*((volatile unsigned long *) 0xE001404C)) #define PWMLER (*((volatile unsigned long *) 0xE0014050)) /* Real Time Clock */

/* 实时时钟的特殊寄存器*/

#define ILR (*((volatile unsigned char *) 0xE0024000))

#define CTC (*((volatile unsigned short*) 0xE0024004)) #define CCR (*((volatile unsigned char *) 0xE0024008)) #define CIIR (*((volatile unsigned char *) 0xE002400C))

#define AMR (*((volatile unsigned char *) 0xE0024010)) #define CTIME0 (*((volatile unsigned long *) 0xE0024014)) #define CTIME1 (*((volatile unsigned long *) 0xE0024018)) #define CTIME2 (*((volatile unsigned long *) 0xE002401C)) #define SEC (*((volatile unsigned char *) 0xE0024020))

#define MIN (*((volatile unsigned char *) 0xE0024024))

#define DOM (*((volatile unsigned char *) 0xE002402C))

#define DOW (*((volatile unsigned char *) 0xE0024030))

#define DOY (*((volatile unsigned short*) 0xE0024034))

#define MONTH (*((volatile unsigned char *) 0xE0024038))

#define YEAR (*((volatile unsigned short*) 0xE002403C))

#define ALSEC (*((volatile unsigned char *) 0xE0024060))

#define ALMIN (*((volatile unsigned char *) 0xE0024064))

#define ALHOUR (*((volatile unsigned char *) 0xE0024068))

#define ALDOM (*((volatile unsigned char *) 0xE002406C))

#define ALDOW (*((volatile unsigned char *) 0xE0024070))

#define ALDOY (*((volatile unsigned short*) 0xE0024074))

#define ALMON (*((volatile unsigned char *) 0xE0024078))

#define AL YEAR (*((volatile unsigned short*) 0xE002407C))

#define PREINT (*((volatile unsigned short*) 0xE0024080))

#define PREFRAC (*((volatile unsigned short*) 0xE0024084))

/* Watchdog */

/* 看门狗的特殊寄存器*/

#define WDMOD (*((volatile unsigned char *) 0xE0000000))

#define WDTC (*((volatile unsigned long *) 0xE0000004))

#define WDFEED (*((volatile unsigned char *) 0xE0000008))

#define WDTV (*((volatile unsigned long *) 0xE000000C))

/* Define firmware Functions */

/* 定义固件函数*/

#define rm_init_entry() ((void (*)())(0x7fffff91))()

#define rm_undef_handler() ((void (*)())(0x7fffffa0))()

#define rm_prefetchabort_handler() ((void (*)())(0x7fffffb0))()

#define rm_dataabort_handler() ((void (*)())(0x7fffffc0))()

#define rm_irqhandler() ((void (*)())(0x7fffffd0))()

#define rm_irqhandler2() ((void (*)())(0x7fffffe0))()

#define iap_entry(a, b) ((void (*)())(0x7ffffff1))(a, b)

//config.h

#ifndef TRUE

#define TRUE 1

#endif

#ifndef FALSE

#define FALSE 0

#endif

typedef unsigned char uint8; /* 无符号8位整型变量*/

typedef signed char int8; /* 有符号8位整型变量*/

typedef unsigned short uint16; /* 无符号16位整型变量*/

typedef signed short int16; /* 有符号16位整型变量*/

typedef unsigned int uint32; /* 无符号32位整型变量*/

typedef signed int int32; /* 有符号32位整型变量*/

typedef float fp32; /* 单精度浮点数(32位长度)

*/

typedef double fp64; /* 双精度浮点数(64位长度)*/

#include "LPC2106.h"

#define Fosc 11059200 //晶振频率,10MHz~25MHz,应当与实际一至

#define Fcclk (Fosc * 4) //系统频率,必须为Fosc的整数倍(1~32),且<=60MHZ

#define Fcco (Fcclk * 4) //CCO频率,必须为Fcclk的2、4、8、16倍,范围为156MHz~320MHz

#define Fpclk (Fcclk / 4) * 1 //VPB时钟频率,只能为(Fcclk / 4)的1 ~ 4倍

#include "target.h"

// LPC21000 misc uart0 definitions

#define UART0_PCB_PINSEL_CFG (INT32U)0x00000005

#define UART0_INT_BIT (INT32U)0x0040

#define LCR_DISABLE_LATCH_ACCESS (INT32U)0x00000000

#define LCR_ENABLE_LATCH_ACCESS (INT32U)0x00000080

#define LCR_DISABLE_BREAK_TRANS (INT32U)0x00000000

#define LCR_ODD_PARITY (INT32U)0x00000000

#define LCR_ENABLE_PARITY (INT32U)0x00000008

#define LCR_1_STOP_BIT (INT32U)0x00000000

#define LCR_CHAR_LENGTH_8 (INT32U)0x00000003

#define LSR_THR_EMPTY (INT32U)0x00000020

//target.c

#define IN_TARGET

#include "config.h"

void __irq IRQ_Exception(void)

{

while(1);

}

void FIQ_Exception(void)

{

while(1);

}

void TargetInit(void)

{

/* 添加自己的代码*/

}

void TargetResetInit(void)

{

/* 设置存储器加速模块*/

MAMCR = 2; //MAMCR 8u2 00-MAM 功能被禁止、01-MAM功能部分使能、10-MAM功能完全使能

/* MAMTIM 8u3

000=0-保留

001=1-一段时间内只有1 个处理器时钟(cclk)用于MAM 取指。

010=2-一段时间内只有2个处理器时钟(cclk)用于MAM取指。

011=3-一段时间内只有3 个处理器时钟(cclk)用于MAM 取指。

100=4-一段时间内只有4个处理器时钟(cclk)用于MAM 取指。

101=5-一段时间内只有5 个处理器时钟(cclk)用于MAM 取指。

110=6-一段时间内只有6 个处理器时钟(cclk)用于MAM 取指。

111=7-一段时间内只有7个处理器时钟(cclk)用于MAM 取指。

*/

#if Fcclk < 20000000

MAMTIM = 1;

#else

#if Fcclk < 40000000

MAMTIM = 2;

#else

MAMTIM = 3;

#endif

#endif

/* 初始化VIC */

VICIntEnClr = 0xffffffff;//清所有中断使能,即关中断

VICVectAddr = 0;//默认向量地址寄存器

VICIntSelect = 0;//1:对应的中断请求分配为FIQ。0:对应的中断请求分配为IRQ。}

#include "rt_sys.h"

#include "stdio.h"

#pragma import(__use_no_semihosting_swi)

#pragma import(__use_two_region_memory)

int __rt_div0(int a)

{

a = a;

return 0;

}

int fputc(int ch,FILE *f)

{

ch = ch;

f = f;

return 0;

}

int fgetc(FILE *f)

{

f = f;

return 0;

}

int _sys_close(FILEHANDLE fh)

{

fh = fh;

return 0;

}

int _sys_write(FILEHANDLE fh, const unsigned char * buf, unsigned len, int mode)

{

fh = fh;

buf = buf;

len =len;

mode = mode;

return 0;

}

int _sys_read(FILEHANDLE fh, unsigned char * buf, unsigned len, int mode) {

fh = fh;

buf = buf;

len =len;

mode = mode;

return 0;

}

void _ttywrch(int ch)

{

ch = ch;

}

int _sys_istty(FILEHANDLE fh)

{

fh = fh;

return 0;

}

int _sys_seek(FILEHANDLE fh, long pos)

{

fh = fh;

return 0;

}

int _sys_ensure(FILEHANDLE fh)

{

fh = fh;

return 0;

}

long _sys_flen(FILEHANDLE fh)

{

fh = fh;

return 0;

}

int _sys_tmpnam(char * name, int sig, unsigned maxlen)

{

name = name;

sig = sig;

maxlen = maxlen;

return 0;

}

void _sys_exit(int returncode)

{

returncode = returncode;

char *_sys_command_string(char * cmd, int len) {

cmd = cmd;

len = len;

return 0;

}

//target.h

#ifndef IN_TARGET

extern void Reset(void);

extern void TargetInit(void);

#endif

ARM课程设计报告

摘要 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D 转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。 定时器是对外设时钟(PCLK)进行计数,根据4个匹配寄存器的设定,可以设置为匹配时产生中断或执行其他动作。它还包括4个捕获输入,用于在输入信号发生跳变时捕获定时器的当前值,并可选择产生中断。 关键字:单片机 LPC2106 GPIO 定时器timer 实时时钟外部中断Int 目录 第一章原理与总体方案 (4) 1.1单片机简介 (4) 1.2 LPC2106简介 (5) 1.3单片机的选择 (7) 1.4 LPC2106芯片的选择及设计原理 (8) 第二章硬件设计 (9) 2.1 LED显示电路 (9) 2.2电路图整体设计 (9) 第三章调试 (12) 3.1调试及处理 (12) 第四章测试与分析 (14)

4.1Proteus软件介绍 (14) 4.2仿真结果 (15) 第五章结束语 (16) 5.1结束语 (16) 第1章原理与总体方案 本章阐述了本课题研究的背景,表述了单片机的发展、功能以及LPC2114的简单介绍。阐述了单片机的选择原理以及LPC2106的设计原理。 1.1数字单片机简介 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D 转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。 近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。影响可靠性的因素是多方面的,如构成系统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等。其中系统的抗干扰性能是系统可靠性的重要指标。 单片机的另外一个名称就是嵌入式微控制器,原因在于它可以嵌入到任何微型或小型仪器或设备中。目前,把单片机嵌入式系统和Internet连接已是一种趋势。但是,Internet一向是一种采用肥服务器,瘦用户机的技术。这种技术在互联上存储及访问大量数据是合适的,但对于控制嵌入式器件就成了"杀鸡用牛刀"了。要实现嵌入式设备和Int ernet连接,就需要把传统的Internet理论和嵌入式设备的实践都颠倒过来。为了使复杂的或简单的嵌入式设备,例如单片机控制的机床、单片机控制的门锁,能切实可行地和Internet连接,就要求专门为嵌入式微控制器设备设计网络服务器,使嵌入式设备可以和Internet相连,并通过标准网络浏览器进行过程控制。

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的多路数据采集系统设计 专业班级:自动化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.

基于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.68cm。该液晶显示屏的每个像素深度为2bit,采用RGB565色彩空间。 (3)摄像头 摄像头采用市场上常见的网眼2000摄像头,内部是含CMOS传感器的OV511+芯片。CMOS传感器采用感光元件作为影像捕获的基本手段,核心是1个感光二极

ARM嵌入式课程设计

通信与信息工程学院2015/2016 学年第一学期 课程设计实验报告 模块名称ARM嵌入式开发专业电子信息工程学生班级B120110 学生学号B12011031 学生姓名钱晨 指导教师余雪勇

实验内容 一、基本要求 在基本要求中,需要从11个测试程序中选做8个,以下是对8个程序的实验过程的叙述,包括实验前的硬件连接准备、软件环境配置(串口工具、dnw、ADS、交叉编译环境等)、每个实验的关键代码以及简单分析。 1、硬件连接 用USB线、串口线把开发板连到电脑相应的端口,再将电源线插好。 2、软件环境配置 设置串口工具SecureCRT 解压在“windows 平台开发工具包\”目录下的“SecureCRT.rar”后,即可使用SeureCRT,双击图标,打开SecureCRT,如下图所示: 点击图中红色方框图标,出现下图的设置窗口: 在 Ptotocol 里面选择Serial,出现如下图所示的对话框,详细设置参考下图,超级终端设置部分,不再重复。 注意:Port 选项部分根据您实际使用的端口进行配置,其他选项请一定配置如下图所示。

配置完毕后,点击上图的“Connect”选项即可连通串口。 DNW 设置 DNW 在这里是我们的.bin 文件下载软件,可实现我们向flash 或者内存当中烧写程序的功能。 直接双击“Windows 平台工具\DNW”目录下的DNW 软件,出现下图: 配置 (2)配置如下图: 3、实验前准备 串口工具和开发板连接成功后,将选择开关打到norflash,并按一下重启键, 开发板则自动按照选择从norflash 启动。此时,如果 SecureCRT 界面显示如下, 则表示串口工具已经工作正常:

嵌入式系统课程设计报告

湖北民族学院 信息工程学院 课程设计报告书 题目 :基于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的温度采集系统 1.1设计目的 1、注重培养综合运用所学知识、独立分析和解决实际问题的能力,培养创新意识和创新能力,并获得科学研究的基础训练。 2、了解所选择的ARM芯片各个引脚功能,工作方式,计数/定时,I/O口,中断等的相关原理,并巩固学习嵌入式的相关内容知识。 3、通过软硬件设计实现利用ARM芯片对周围环境温度信号的采集及显示。 1.2设计意义 嵌入式系统是以应用为中心,以计算机技术为基础,且软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由以下几部分组成:嵌入式微处理器、外围硬件设备、嵌入式操作系统。嵌入式系统是面向用户、面向产品、面向应用的,它必须与具体应用相结合才会具有生命力、才更具有优势。因此嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的裁减利用。嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。嵌入式系统必须根据应用需求对软硬件进行裁剪,满足应用系统的功能、可靠性、成本、体积等要求。所以,如果能建立相对通用的软硬件基础,然后在其上开发出适应各种需要的系统,是一个比较好的发展模式。目前的嵌入式系统的核心往往是一个只有几K到几十K微内核,需要根据实际的使用进行功能扩展或者裁减,但是由于微内核的存在,使得这种扩展能够非常顺利的进行。 数据采集(DAQ),是指从传感器和其它待测设备等模拟和数字被测单元中自动采集非电量或者电量信号,送到上位机中进行分析,处理。数据采集系统是结合基于计算机或者其他专用测试平台的测量软硬件产品来实现灵活的、用户自定义的测量系统。被采集数据是已被转换为电讯号的各种物理量,如温度、水位、风速、压力等,可以是模拟量,也可以是数字量。采集一般是采样方式,即隔一定时间(称采样周期)对同一点数据重复采集。采集的数据大多是瞬时值,也可是某段时间内的一个特征值。准确的数据量测

ARM课程设计格式基于S3C2410的实时时钟设计

JISHOU UNIVERSITY 本科生毕业设计 题目:基于B/S架构的仓库管理系统设计与实现作者: 学号: 所属学院:信息科学与工程学院 专业年级:计算机科学与技术,2011级 指导教师:职称: 完成时间:2015年5月日

吉首大学教务处制

目 录 摘 要 ............................................................................................................................................ I Abstract ........................................................................................................................................II 第1章 绪 论 (3) 1.1 课题研究的背景和目的 (3) 1.2 国内外研究现状 (3) 1.3 本文的研究内容和设计结构 (3) 第2章 系统开发请求及相关技术概述 (5) 2.1 ASP 技术背景 (5) 2.2 ADO 数据访问技术 (5) 2.3 JavaScript 简介 (6) 2.4 B/S 架构编程体系 ........................................................................ 错误!未定义书签。 第3章 系统可行性分析 ............................................................................. 错误!未定义书签。 3.1 系统的可行性研究 ........................................................................ 错误!未定义书签。 3.2 系统功能流程图 ........................................................................... 错误!未定义书签。 3.3 系统数据流程分析 ....................................................................... 错误!未定义书签。 第4章 系统需求分析................................................................................. 错误!未定义书签。 4.1 系统功能性需求分析 ................................................................... 错误!未定义书签。 4.2 系统非功能性需求分析 ............................................................... 错误!未定义书签。 第5章 系统总体设计................................................................................. 错误!未定义书签。 5.1 总体设计 ...................................................................................... 错误!未定义书签。 5.2 数据库设计与实现 ....................................................................... 错误!未定义书签。 第6章 系统详细设计与实现 ..................................................................... 错误!未定义书签。 6.1 系统的技术实现 ........................................................................... 错误!未定义书签。 6.2 系统功能模块的实现 ................................................................... 错误!未定义书签。 第7章 系统测试 ........................................................................................ 错误!未定义书签。 7.1 单元测试 ...................................................................................... 错误!未定义书签。 7.3 性能测试 ...................................................................................... 错误!未定义书签。 结 语 ........................................................................................................... 错误!未定义书签。 参考文献 ....................................................................................................................................... 8 附 录 ........................................................................................................... 错误!未定义书签。 1、只要在文章中修改相关标题,然后在本页点右键更新整个目录即可。 2、“目录”两字为黑体小二,居中。 3、目录主体部分自动生成。只显示到二级标题即可,不得显示第三级标题,字体为黑体,小四。

基于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 * *******************************************************/

ARM课程设计输入输出

目录 一.摘要 (1) 二.设计目的 (1) 三.设计思路 (1) 四.关键技术 (1) 1.ARM9处理器: (1) 2.ARM C语言程序的基本规则 (2) 3.ADS1.2开发环境: (3) 4.模拟输入输出接口单元 (8) 五.程序流程 (9) 六.主要源代码 (9) 七.运行结果及结论 (19) 八.课程设计总结 (19)

基于ARM9的模拟输入输出接口驱动程序的设计 一.摘要 设计ARM9核CPUSC3C2410的模拟输入输出接口驱动程序。该程序在硬件上需要74LS244,74LS273等接口芯片的支持。程序主要功能:通过CPU并行数据总线读取外部数据;将读取的数据输出,控制LED显示灯的亮灭。用C语言实现。使用ADS1.2开发环境。利用嵌入式实验系统实现硬件仿真。上位机通讯程序可选用WINDOWS操作系统自带的“超级终端”软件或实验系统自带的“串口助手” 软件. 关键词:输入输出,并行,通讯 二.设计目的 1. 学习4X4键盘的与CPU的接口原理; 2. 掌握键盘芯片HD7279的使用,及8位数码管的显示方法; 三.设计思路 本实验为模拟输入输出接口的实验,其基本原理就是使用一片缓冲芯片74LS244来把CPU外面的输入数据写入CPU的并行总线上,之后,并行总线上的数据被一片数据锁存芯片74LS273保留,CPU 通过选中锁存芯片,并读取预先设给锁存器地址内的内容,就可以把数据读出,来确定外面的数据的高低。本实验的输入是用8个带锁的按键的按下和未按下两种工作状态来表示输入接口的高低状态,然后,再通过8个LED灯亮和灭两种工作状态,以及LCD上用数据值来清楚的反映各状态的输出显示,从而完成模拟的输入输出接口的实现。 四.关键技术 1.ARM9处理器: EL-ARM-830型教学实验系统属于一种综合的教学实验系统,该系统采用了目前在国内普遍认同的ARM920T核,32位微处理器,实现了多模块的应用实验。它是集学习、应用编程、开发研究于一体ARM实验教学系统。用户可根据自己的需求选用不同类型的CPU适配板,兼容ARM7与ARM9,而不需要改变任何配置,同时,实验系统上的Tech_V总线能够拓展较为丰富的实验接口板。用户在了解Tech_V标准后,更能研发出不同用途的实验接口板。除此之外,在实验板上有丰富的外围扩展资源(数字、模拟信号发生器,数字量IO输入输出,语音编解码、人机接口等单元),可以完成ARM的基础实验、算法实验和数据通信实验、以太网实验。

嵌入式系统课程设计报告

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

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

ARM课程设计

题目:基于STM32的SD卡设计 课程名称: ARM嵌入式系统 学生姓名: X X 学生学号: 系别:电子工程学院 专业:电子信息科学与技术 年级: 2013级 任课教师: 电子工程学院制 2015年10月

基于STM32的SD卡设计 学生: 指导教师: 电子工程学院:电子信息科学与技术 1概述 1.1设计背景 21世纪是一信息传递及应用高速的时代,信息在人类社会活动中已经必不可缺,使用嵌入式系统的电子产品已经在人们的日常生活中广泛普及应用。其中人们日常生活中最经常接触使用到的数码相机、手机、MP3、MP4、多媒体播放器等,其信息数据的存储大部分都是使用的SD卡。所以SD卡在嵌入式上应用有着十分大市场空间。 SD卡拥有轻小、高存储容量、高速的传输速率以及很高的安全性,更换和编程也相当方便。根据SD卡胡特性,它已然成为非常多数码产品的外部应用储存的第一选择目标。ALIENTKE MiniSTM32开发板就带有SD卡接口,利用STM32自带的SPI接口,最大通信速度可达18Mbps,每秒可传输数据2M 字节以上,对于一般应用足够了。 2硬件设计 2.1硬件读写模块 SD卡存储模式是Flash。SD卡的卡内智能控制模块包含电源和时钟的管理、协议、算法安全、存取数据、ECC算法、处理缺陷和分析数据。FLASH每个扇区的写寿命在10万次左右,读的次数是无限制的。 SD卡一般支持2种操作模式: 1、SD卡模式; 2、PI模式; SD卡的引脚排序如下图所示:

图1 SD卡的引脚排序 SD卡的九个引脚功能: 表1:SD卡引脚功能表 SD卡只能使用3.3V的IO电平,所以,MCU一定要能够支持3.3V的IO端口输出。注意:在SPI模式下,CS/MOSI/MISO/CLK都需要加10~100K左右的上拉电阻。 在STM32中,开板使用的是SPI的接口模式来进得读写,所以,主要应用的便是SPI 的模式。由于SD卡内部的供电电压上升是需要一段时间,大约是64个时钟,而且需要10个时钟与SD卡同步,所以在发送CMD0之前,要发送>74个时钟。SD卡与STM32 进行数据交换,要将SD卡外部驱动,将外部储存卡与STM32联系起来。开发板对成为外部储存空间的SD卡进行读写,把读写命令解析并传送到SD卡中,从而实现开发板对外部储存卡的操作与控制。 2.2硬件设计模块 所需要的硬件资源如下: 1、SD卡。 2、STM32F103ZET6。 3、DS0(外部 LED0)。 4、串口 1。 SD卡和STM32的连接:SPI1与安全数码卡通信,如下其引脚的连接定义为: PE3:SPI1-SPI2全双工通讯,低电平作用; PA7:通讯结束后跟随一个CRC校验; PA5:SPI1、SPI2的NSS引脚是断开的; PA6:SPI驱动,NSS引脚由软件设置配置;

arm机械臂课程设计报告代码

成绩评定表

课程设计任务书

目录 一、题目分析2 二、总体设计 (2) 三、详细设计6 四、实现代码8 五、相关图片20 六、结束语21 七、参考文献 (22) 1、实验题目分析 1.1 问题描述

结合实时时钟,IIC(控制小键盘和数码管等)来做具备定期功能的实时时钟。 1.2功能分析 至少完成以下功能: (1)能显示每秒的时刻 (2)按下功能键能切换显示日期 (3)能设置定时闹钟,定时到产生某种输出 (4)可以扩展考虑加入外部中断,如停止闹钟功能等。 1.3 开发平台及工具介绍 实验器材有: CITK2410开发板,JTAG连接线,RS-232直通连接线 RVDS集成开发环境,超级终端工具, 2、总体设计 2.1 实验基本原理 IIC总线:IIC总线的器件分为主器件和从器件。主器件的功能是启动在总线上传送数据,并产生时钟脉冲,以允许与被寻址的器件进行数据传送。 SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。 I2C总线进行数据传送时,时钟信号

为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据 线上的高电平或低电平状态才允许变化。 超始和停止信号图 数据传送时序图 IIC总线(IICSDA、IICSCL)经过VDD33的上拉后,进入ZLG7290 数码管:实验使用的数码管是广州周立公司单片机发展有限公司自行设计的一款数码管显示驱动及键盘扫描管理芯片。下面是介绍该数码管的特点还有电路图: 1 I2C 串行接口提供键盘中断信号方便与处理器接口 2 可驱动8 位共阴数码管或64 只独立LED 和64 个按键 3 可控扫描位数可控任一数码管闪烁 4 提供数据译码和循环移位段寻址等控制 5 8 个功能键可检测任一键的连击次数 6 无需外接元件即直接驱LED 可扩展驱动电流和驱动电压 7 提供工业级器件多种封装形式PDIP24 SO24 采用24 引脚封装引脚图如图所示其引脚功能分述如下:

ARM嵌入式系统课程设计_图文.

目录 1 系统设计任务与要求 - 2 - 1.1 设计要求 - 2 - 1.2 设计作用和目的 - 2 - 1.3 课程设计应完成的任务 - 2 - 2 设计方案 - 3 - 2.1 信号产生部分 - 3 - 2.2 对幅度进行调整 - 4 - 2.3 对频率进行调整 - 4 - 2.4 滤波电路 - 5 - 3 硬件设计 - 6 - 3.1系统框图 - 6 - 3.2 各功能模块 - 6 - 3.2.1 波形产生电路 - 6 - 3.2.2 键盘模块 - 6 - 3.2.3 滤波器设计 - 6 - 3.2.4 显示模块 - 6 - 3.3 各个功能块的实现原理及分析 - 7 - 3.3.1 正弦波的产生 - 7 - 3.3.2 三角波的产生 - 7 - 3.3.3 方波的产生 - 7 - 3.3.4 幅度的控制 - 8 - 3.3.5 频率的控制 - 8 -

3.3.6 滤波器设计 - 8 - 3.3.7 键盘模块 - 8 - 4 软件设计 - 9 - 4.1 方框图 - 9 - 4.2程序清单 - 9 - 4.3 测试结果图 - 14 - 5心得体会 - 16 - 参考文献 - 17 - 1 系统设计任务与要求 1.1 设计要求 利用ARM芯片设计信号发生器,包括Sin、方波、三角波形实现1.2 设计作用和目的 1、注重培养综合运用所学知识、独立分析和解决实际问题的能力,培养创新意识和创新能力,并获得科学研究的基础训练。 2、了解所选择的ARM芯片各个引脚功能,工作方式,计数/定时,I/O口,中断等的相关原理,并巩固学习嵌入式的相关内容知识。 3、通过软硬件设计实现利用ARM芯片完成信号发生器功能。 1.3 课程设计应完成的任务

ARM课程设计的报告

电控学院 课程设计(论文) 课程名称:ARM嵌入式系统 题目:ARM数字电压表 院(系):测控技术与仪器 专业班级:测控1001班 姓名:屈豆王朵 学号:1006070115 1006070105 指导教师:黄梦涛李红岩 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进行处理,得出测量结果送入上位机进行显示。

嵌入式系统课程设计报告

嵌入式系统课程设计报 告 WTD standardization office【WTD 5AB- WTDK 08- WTD 2C】

课程设计 题 目: 基于ARM 的楼宇对讲系统设计 班 级: 姓 名: 学 号: 指导教师: 成 绩: 嵌入式系统 课程设计报告 电子与信息工程学院 信息与通信工程系

目录 摘要? ....................................................................................................................................................... II 1 引言 . (1) 课程设计的目的和意义 (1) 课程设计内容及要求 (1) 2 系统的工作原理 (1) 3 系统硬件设计 (1) ARM主控模块 (2) 以太网接口模块 (2) 图像处理模块 (2) 指纹数据处理模块 (3) 音频处理模块 (3) 4 系统软件设计 (3) 门禁控制程序 (4) IP对讲机系统软件实现 (4) 网络管理 (5) 5 心得体会 (6) 6 参考文献 (6)

基于ARM的楼宇对讲系统设计 摘要? 采用模块化设计方法设计出一款基于ARM微控制芯片和Linux操作系统的楼宇对讲系统,该对讲系统通过以太网与楼宇间的各室内机相连,实现了安装在楼道门口的终端机与各室内机的IP对讲,同时将访客的视频信息传输到室内机,并采用指纹身份识别技术实现了门控系统管理。 关键词:嵌入式系统设计;楼宇对讲;指纹识别

嵌入式课程设计报告

嵌入式课程设计报告 一、课程设计目的 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 控制器、NAND 闪存控制器、3路UART、4路DMA、4路带PWM的Timer、并行I/O 口、8路10位ADC、Touch Screen接口、I2C接口、I2S接口、2个USB接口控制器、2路SPI,主频最高可达203MHz。在处理器丰富资源的基础上,还进行了相关的配置和扩展,平台配置了16MB 16位的Flash和64MB 32位的SDRAM。通过以太网控制器芯片DM9000E扩展了一个网口,另外引出了一个HOST USB接口。

相关文档
最新文档