嵌入式课程设计报告

嵌入式课程设计报告
嵌入式课程设计报告

目录

一、前言 (2)

1.1 课题研究背景 (2)

1.2 课程研究目的和意义 (2)

1.3 ARM2440实验箱介绍 (2)

1.3.1 2440核心板规格: (2)

1.3.2 2440实验箱底板规格: (3)

1.3.3软件资源 (4)

二、需求分析 (4)

三、开发环境及系统结构 (5)

3.1 开发环境 (5)

3.2 系统结构 (6)

四、详细设计 (7)

4.1 ARM Linux的建立 (7)

4.1.1 建立交叉编译环境 (7)

4.1.2 编译内核 (9)

4.1.3 生成并配置根文件系统 (13)

4.2 BootLoader的移植 (15)

4.2.1 移植的环境 (15)

4.2.2 移植的步骤 (15)

4.3 基于S3CC400的嵌入式Web服务器Boa移植 (20)

4.3.1 配置开发板网络 (20)

4.3.3 Web静态网页制作 (23)

4.3.4 CGI程序login.c程序。 (23)

五、结论 (26)

一、前言

1.1 课题研究背景

随着3C融合进程和我国传统产业结构升级的加速,人们对设备越来越高的应用需要已经无法满足当前和未来高性能的应用与发展需求。显然,嵌入式系统的软、硬件技术和开发手段,正日益受到重视,成为各领域技术创新的重要基础。

目前,嵌入式系统是近年来发展很快的计算机方面的学科方向,并迅速渗透到控制、自动化、仪器仪表等学科。嵌入式方向包括了软硬件协同设计、嵌入式体系结构、实时操作系统、嵌入式产品设计等方面的知识,大于当代大学生,更需要掌握嵌入式系统设计的典型开发工具和开发核心技术。

对于嵌入式市场的发展来说,中国市场的意义更加重大。中国市场对于嵌入式互联网这场革命来说非常关键。勃勃的生机,很好的产业互动,良好的协作精神,中国现在正在形成-个健康的嵌入式的发展模式和转型模式。中国可能是-个引发点,嵌入式市场先在中国蓬勃发展,然后辐射到全球其他地区。

1.2 课程研究目的和意义

Linux操作系统是-个开放源代码的免费操作系统,它不仅安全、稳定、成本低,而且很少发现有病毒传播,越来越的服务器、工作站和个人电脑开始使用Linux软件,基于Linux具有稳定、可靠和强大的网络功能这些优点。在Linux 环境下实现-个boa web服务器。

1.3 ARM2440实验箱介绍

2440实验箱由核心板和底板构成,核心板采用6层板工艺,稳定性高,底板采用双面板,接口丰富功能全,扩展方便。

1.3.1 2440核心板规格:

◆ CPU处理器

- Samsung S3C2440AL,主频400MHz,最高533MHz。

◆ SDRAM内存

-板载64MBSDRAM

- 32bit数据总线

- SDRAM时钟频率高达100MHz

◆ Flash存储器

-板载64MB Nand Flash,掉电非易失

-板载2MB Nor Flash

◆专业1.25V核心电压供电,完美解决CPU发热现象

◆ 3个用户LED灯

1.3.2 2440实验箱底板规格:

◆大电流5V供电,提供更加优质的供电,防止-切因为电源而引起的BUG;

◆ LCD显示

-板上LCD接口集成4线电阻式触摸屏接口,可以直接连接4线电阻式触摸屏,

-支持黑白、4级灰度、16级灰度、256色、4096色STN液晶屏,

尺寸从3.5寸到12.1寸,屏幕分辨率可以达到1024X768象素

-支持黑白、4级灰度、16级灰度、256色、64K色、真彩色TFT液晶屏,尺寸从3.5寸到12.1寸,屏幕分辨率可以达到1024×768象素

- 2440实验箱的标准配置为SHARP 8英寸分辨率为640x480的TFT真彩液晶屏,自带触摸屏

◆ 1个100M以太网RJ-45接口

◆3个串行接口,其中两个为RS3232电平,以DB9接口引出,另-个是TTL电

平,以扩展模块接口引出

◆ 4个USB Host A型接口(支持USB1.1协议)

◆1个USB Slave B型接口(支持USB1.1协议)

◆ 1个SD卡存储接口

◆1 路立体声音频输出接口,1路音频输入接口

◆1个2.54mm的20针Jtag接口,可以使用它进行软件仿真和单步调试以及下u-boot

◆ 4x4的User Buttons

◆板载AD转换测试

◆板载PWM功能测试(控制直流电机调速)

◆板载44Pin IDE接口

◆板载实时时钟电池

◆系统复位开关和指示灯

◆ CAN总线接口

◆多功能扩展接口

◆两路DA

◆开关量若干个

◆ 8个数码管

◆ 1个蜂鸣器

◆ 8个LED灯

◆ 1个VGA接口

◆ 1个直流电机

◆ 1个步进电机

◆ 1个扩展FPGA模块的专用接口

1.3.3软件资源

- u-boot-1.1.6

- Linux-2.6.13

- Windwos CE

-无OS的测试程序

二、需求分析

随着计算机迅猛发展,WWW 的技术也有了突破性的进展,它解决了远程信息服务中的文字显示、数据连接以及图像传递的问题,使得 WWW 成为 Internet 上最为流行的信息传播方式。现在,Web 服务器成为 Internet 上最大的计算机群,Web 文档之多、链接的网络之广,令人难以想象。可以说,Web 为 Internet 的

普及迈出了开创性的-步,是近年来 Internet 上取得的最激动人心的成就。

嵌入式系统已经渗透到各个领域,在32位嵌入式微处理器市场上,基于ARM内核的微处理器在市场上处于绝对的领导地位,因此追踪ARM技术的发展趋势显得尤为重要。在嵌入式操作系统上,Linux-直因其内核精简、代码开发、基于移植等特点受到广大嵌入式能力更加强大,因此有必要为嵌入式系统构建Web服务器。

在嵌入式Linux系统中,常用的Web Server有Boa、httpd、thttpd和mini-httpd 等。其中Boa是-个运行在类Unix系统中的小型Web Server,适合嵌入式环境。在Boa 中若两个用户同时访问,则其中的-个必须等待,它产生独立进程来处理CGI(通用网关接口)程序,因此占用较少的资源,其体系结构如图1所示。Boa的优点在于其快速可靠性。它与其它服务器的区别:没有为CGI程序设置REMOTE_HOST环境变量;没有Server-Side Include(SSI)项,要产生动态网页只能通过CGI:没有设置进入控制,而是根据Linux的文件系统的权限来决定服务的对象:没有chroot选项,即不能改变根目录。

基于以上的阐述,Boa应用到嵌入式平台上有着诸多的优势,本文的嵌入式Web服务器也因此选用Boa作为平台。下面笔者将着重介绍嵌入式Web服务器的硬件平台及软件体系的设计与实现。

三、开发环境及系统结构

3.1 开发环境

1 、虚拟机下安装的 Redhat9.0 ;

2 、交叉编译工具: arm-linux-gcc- 4.3.2;

3 、 miin2440 开发板;

4 、移植使用到的软件:

(1) boa 源文件 boa-0.94.13.tar.gz ,下载地址: https://www.360docs.net/doc/ce18596580.html,/ ;

(2) cgi库 cgic205.tar.gz ,

下载地址: https://www.360docs.net/doc/ce18596580.html,/cgic/cgic205.tar.gz 。

3.2 系统结构

嵌入式系统组成框图

实物连接图

应用程序 API

操作系统内核 设备驱动 专有硬件(嵌入式处理器、存储器、外设等 ) USB 交叉串口线

线

EMBEST

仿真器

网口

JTAG

S3C2440

3.3V

1.8V

5V Power

UART0

四、详细设计

4.1 ARM Linux的建立

ARM Linux的建立是基于U-Boot的实现,它的建立实际上是Linux内核在S3C2440上移植的过程,主要分为3个步骤:建立交叉编译环境;编译内核;生成并配置根文件系统。

4.1.1 建立交叉编译环境

交叉编译的主要特征是某-机器(目标机)中执行的程序代码不是本机编译生成,而是另-台机器(宿主机)编译生成。-般采用的方法是首先在宿主机上编写程序,通过交叉编译生成目标平台上可运行的二进制代码,再下载到目标平台的特定位置上运行。本次设计的通信使用的RS3232串口,在RedHat 9.0里面建立-个能编译arm-linux环境。

(1) 添加工作用户

[root@PC-LINUX ~] # useradd –G root –g root –d /home/arm1 arm

[root@PC-LINUX ~] # mkdir –p/home/arm1

[root@PC-LINUX ~] # chown –R arm /home/arm1

[root@PC-LINUX ~] #chmod –R 775 /home/arm1

(2) 建立工作目录

[arm@PC-LINUX arm1] $ mkdir dev_home

[arm@PC-LINUX arm1] $ cd dev_home

[arm@PC-LINUX dev_home] $ mkdir btools kernel

(3) 设置环境变量,准备源码及相关补丁。首先是设置环境变量:

[arm@ PC-LINUX arml]$ vi ~/.bashrc

export PREFIX=/usr/local/arm/3.3.2

export TARGET=arm-1inux

export SYSROOT=${PREFIX)/sysroot

export CROSS_COMPILE=${TARGET)-

export PATH=${PREFIX)/bin:$PATH

export SRC=/home/arml/dev_home/btools/tchain3.3.2

接下来准备各个源码包。从网上下载以下源码包:binutils-2.16.tar.gz、

gcc-3.3.2.tar.bz2、glibc-2.3.5.tar.gz、linux-2.6.13.tar.gz。

(4)编译GNU binutils。重新以arm用户身份登录,让新设置的环境变量

起作用。

[arm@ PC-LINUX arml]$SU arm

[arm@ PC-LINUX arml]$ cd ${SRC)

[arm@ PC-LINUX tchain3.3.2]$ tar zxvf binutils-2.16.tar.gz

[arm@ PC-LINUX tchain3.3.2J$ mkdir -p BUILD/binutils -2.16

[arm@ PC-LINUX tchain3.3.2]$cd BUILD/binutils-2.16

[arm@ PC-LINUX binuti ls-2.16]$ ../../binutils -2.16/configure \

--prefix=${PREFIX) --target=${TARGET) --with --sysroot=${SYSROOT)

[arm@ PC-LINUX binutils-2.16]$make

[arm@ PC-LINUX binutils-2.16]$SU root

[arm@ PC-LINUX binutils-2.16]#make instal 1

[arm@ PC-LINUX binutils-2.16]#exit

(5)使用当前平台的gcc编译内核头文件。

[arm@PC-LINUX tchain3.3.2]$cd${KERNEL)

[arm@PC-LINUX kernel]$tar zxvf 1inux-2.6.14.1.tar.gz

[arm@PC-LINUXkernel]$ cd 1inux-2.6.14.1

[arm@PC-LINUX since-2.6.14.1]$cp arch/arm/configs/smdk2410_defconf\ig.config [arm@PC-LINUX linux-2.6.14.11$ make ARCH:arm menuconfig

[arm@PC-LINUX linux-2.6.14.1]$ make include/1inux/version.H

(6)复制内核头文件。

[arm@PC-LINUX linux-2.6.14.1]$SU root

[root@PC-LINUX linux-2.6.14.1]#mkdir -p ${SYSROOT)/usr/include

[root@PC-LINUX linux-2.6.14.1]#cp -a include/linux${SYSROOT)/usr/include/1inux [root@PC-LINUX 1inux-2.6.14.1]#cp -a include/asm-arm${SYSROOT)/usr/include/asm [root@PC-LINUX 1 inux-2.6.14.1]#cp -a include/asm-generic \

${SYSROOT)/usr/include/asm-generic

[root@PC-LINUX 1inux-2.6.14.1]#exit

(7)编译glibc头文件。

[arm@PC-LINUX kernel]$cd${SRC)

[arm@PC-LINUX tchain3.3.2]$tar zxvf glibc-2.3.5.tar.gz

[arm@PC-LINUX tchain3.3.2]$patch -d glibc-2.3.5-pl

[arm@PC-LINUX tchain3.3.21$cd glibc-2.3.5

[arm@PC-LINUX glibc-2.3.5]$tar zxvf../glibc-1 inuxthreads-2.3.5.\tar.gz

[arm@PC-LINUX glibc-2.3.5]$cd..

[arm@PC-LINUX tchain3.3.2]$mkdir BUILD/glibc-2.3.5-headers

[arm@PC-LINUX tchain3.3.2]$cd BUILD/glibc-2.3.5-headers

[arm@PC-LINUX glibc-2.3.5-headers]$../../glibc-2.3.5/configure

--prefix=/usr --host=${TARGET)--enable-add-ons=linuxthreads

--with-headers=${SYSROOT)/usr/include

[root@PC-LINUX glibc-2.3.5-headers]#make cross-compi l ing=yes

instal1_root=${SYSROOT)install-headers

[root@PC-LINUX glibc-2.3.5-headers]#touch${SYSROOT)/usr/include/gnu/stubs.h [root@PC-LINUX glibc-2.3.5-headers]#touch${SYSROOT)/usr/include/bits/stdio_lim.h

[root@PC-LINUX glibc2.3.52.3.5-headers3#exit

(8) 编译gcc第-阶段。

[arm@PC-LINUX glibc-2.3.5-headers]$cd${SRC)

[arm@PC-LINUX tchain3.3.2]$tar jxvf gcc-3.3.2.tar.bz2

[arm@PC-LINUX tchain3.3.2]$patch -d gcc-3.3.2 -pl

[arm@PC-LINUX tchain3.3.2]$patch -d gcc-3.3.2 -pl

[arm@PC-LINUX tchain3.3.2]$mkdir -P BUILD/gcc-3.3.2-stagel

[arm@PC-LINUX tchain3.3.2]$cd BUILD/gcc-3.3.2-stagel

[arm@PC-LINUX gcc-3.3.2-stagel]$../../gcch-3.3.2/configure --prefix\

=${PREFIX) --target=${TARGET)--enable-languages=c --with-\Sysroot=${SYSROOT)

[arm@PC-LINUX gcc-3.3.2-stage 1]$make all -gcc

[arm@PC-LINUX gcc-3.3.2-stagel]$SU root

[root@PC-LINUX gcc-3.3.2-stage 1]#make install -gcc

[root@PC-LINUX gcc-3.3.2-stagel]#exit

(9) 编译完整的glibc.

[arm@PC-LINUX gcc-3.3.2-stage 1]$cd${SRC)

[arm@PC-LINUX tchain3.3.2-]$mkdir BUILD/glibc-2.3.5

[arm@PC-LINUX tchain3.3.2-]$cd BUILD/glibc-2.3.5

[arm@PC-LINUX glibcPC-LINUX2.3.5]$BUILD_CC=gcc CC=${CROSS_COMPILE)gcc \

AR=${CROSS CObIPILE)ar RANLIB=${CROSS_COMPILE)ranlib \

AS=${CROSSPC-LINUXCOMPILE)as LD=${CROSS-COMPILE)ld../../gl ibc-2.3.5\/configure --prefix=/usr --build=i686-pc-1 inux-gnu--host=arm-\

unknown-1 i nux-gnu--target=arm-unknown-l inux-gnu--without-\

thread--enable-add-ons=l inuxthreads?ith headers= I

${SYSROOT)/usr/include

[arm@PC-LINUX glibc-2.3.5]$make

[arm@PC-LINUX glibc-2.3.5]$SU root

[root@PC-LINUX glibc-2.3.5]#make install_root=${SYSROOT) install [root@PC-LINUX glibc-2.3.5]#exit

(10) 编译完整的gcc。

[arm@PC-LINUX glibc-2.3.5]$cd${SRC)

[arm@PC-LINUX tchain3.3.2]$mkdir BUILD/gcc-3.3.2

[arm@PC-LINUX tchain3.3.2]$cd BUILD/gcc-3.3.2

[arm@PC-LINUX gcc-3.3.2]$../../gcc-3.3.2/configure--prefix= ${PREFIX} --target=${TARGET)--enable—languages=c --with-sysroot=${SYSROOT)

[arm@PC-LINUX gcc-3.3.2]$make

[arm@PC-LINUX gcc-3.3.2]$SU root

[root@PC-LINUX gcc-3.3.2]#make install

[root@PC-LINUX gcc-3.3.2]#exit

4.1.2 编译内核

在交叉编译内核之前,首先对编译选项的配置,linux内核配置命令: make menuconfig,然后再编译内核。

(1) 修改makefile文件修改内核项层目录下的Makefile,指明目标平台及交叉编译器: #vi Makefile

找到ARCH和CROSS_COMPILE,修改:

ARCH ?=arm

CROSS-COMPI LE?=arm-linux-

(2) 设置flash 分区

主要是修改mtd分区,drivers/mtd/maps/cfi-flagadm.c文件是关于Nor Flash分区的代码,针对本文使用的目标板的Nor Flash分区情况,修改其中关于Nor Flash分区的那部分代码,修改后的那部分代码如下:

#define FLASH-PHYS_ADDR Ox00000000 /*第-块Nor Flash AM29LVl60DB的物理起始地址:*/

#define FLASH_SIZE Ox00200000 /*AM29LVl60DB的大小 */

#define FLASH_PARTITIONO_ADDR 0x00000000 /*U-Boot的mtd分区*/

#define FLASH_PARTITIONO_SIZE 0x00020000

#define FLASH_PARTITIONI_ADDR Ox00020000 /*木内核参数的mtd分区*/

#define FLASH_PARTITIONl_SIZE Ox00010000

#define FLASH_PARTITION2_ADDR Ox00030000 /*内核的mtd分区*/

#define FLASH_PARTITION2 SIZE Ox001D0000

struct map_info flagadm_map={

.name=”FlagaDM flash device;AM29LVl60DB-PC_LIMNUX”,

.size=FLASH_SIZE。

.bankwidth=2,

);

struct mtd_part i t i on fl agadm_parts[]=(

{

.name “Bootloader”,

.offset=FLASH_PARTITIONO_ADDR,

.size=FLASH_PARTITIONO_SIZE

};

{

.name=”zhj-param”,

.offset:FLASH_PARTITIONl_ADDR,

.size=FLASH_PARTITIONl_sIZE

);

{

.name=”zhj-kernel”,

.offset=FLASH-PARTITION2_ADDR,

.si ze=FLASH-PARTITION2-SIZE

}

};

同时修改该子目录下的Makefile文件里生成目标文件的条件:

把obj-$(CONFIG_MTD_CFI_FLAGADM)+=cfi_flagadm.O改为obj-y+=

Cfi_flagadm.o,即无条件生成目标文件,加进内核。

以上只是-块Nor Flash(AM29LVl60DB)的mtd分区修改过程,由于移植过程要用到开发板的两块Nor Flash,所以还需要探测另外-块Strata Flash(E28F128J3),首先模仿文件cfi_flagadm.c在drivers/mtd/maps/目录下建立cfi-flagint.C,然后修改Makefile,在obj-y+=cfi_flagadm.o下面加上obj-y+=cfi_flagint.o,即把它也无条件加进内核。其中cfi_flagint.C的Strata Flash(E28F128J3 ) mtd 分区部分代码如下:

#define FLASH_PHYS_ADDR Ox08000000/*第二块Nor Flash E28F128J3的物理起始地址*/#define FLASH_SIZE Oxl000000 /*E28F128J3的大小*/

#define FLASH_PARTITION3_ADDR Ox00000000/*保留区*/

#define FLASH_PARTITION3_SIZE Ox00040000

#define FLASH_PARTITION4_ADDR Ox00040000 /*文件系统的mtd分区*/

#define FLASH PARTITION4_SIZE OxOOFC0000

struct map_info flagint_map={

.name=”strata flash device E28F128J3”,

.size=FLASH_SIZE,

.bankwidth=2,

};

struct mtd_partition flagint_parts[]={

{

.name=”PC_LINUX-unused”,

.offset=FLASH_PARTITION3_ADDR,

.size=FLASH PARTITION3 SIZE

};

{

.name=”PC_LINUX-rootfs”,

.offset=FLASH_PARTITION4_ADDR,

.size=FLASH_PARTITION4_SIZE

}

};

(3) 配置内核

支持启动时挂载devfs。

为了使内核支持devfs以及在启动时并在/sbin/init运行之前能自动挂载/dev 为devfs文件系统,修改fs/Kconfig文件。在文件中找到menu”Pseudo

filesystems”,添加如下语句:

config DEVFS_FS

bool ”/dev file system support(OBSOLETE)’

default Y

config DEVFS_MOUNT

bool ”Automatically mount at boot”

default y

depends on DEVFS_FS

(4) 配置内核产生.config文件。

#cp arch/arm/configs/smdk2440_defconfig.config

#make menuconfig

在smdk2410_defconfig基础上,本文所增删的内核配置项如下。

Loadable module support-->

[*]Enable loadable module support

[*]Automatic kernel module loading

System Type-->[*]$3C2440 DMA support

Boot options-->Default kernel command string:

noinitrd root=/dev/mtdblock4 init=/1inuxrc

console=ttySACO,115200

Floating point emulation-->[*]NWFPE math emulation

Device Drivers-->Memory Technology Devices(MTD)-->

[*]MTD partitioning support

[*]Command line partition table parsing

RAM/ROM/F1ash chip drivers-->

<*>Detect flash chips by Common Flash Interface(CFI)\ probe

<*>Detect non-CFI AMD/JEDEC-compatible flash chips

<*>Support for Intel/Sharp flash chips

<*>Support for AMD/Fujitsu flash chips

<*>Support for ROM chips in bus mapping

Character devices-->

[*]Nonstandard serial port support

[*]S3C2440 RTC Driver

对文件系统的设置,本文目标板上的文件系统是cramfs,

做如下配置:

File systems-->

<*>Second extended fs support注:去除对ext2的支持

Pseudo file systems -->

[*]/proc file system support

[*]Virtual memory file system support(former shm fs)

[*]/dev file system support(OBSOLETE)

[*]Automatically mount at boot(NEW)

这时会看到本文先前修改fs/Kconfig的成果,devfs已经被支持上了。

Miscellaneous file systems-->

<*>Compressed ROM file system support(cramfs)

为了避免频繁烧写根文件系统,需要建立NFS文件系统,命令如下

Network Fi1e Systems -->

<*>NFS file system support

<*>root file system on nfs

保存退出,产生.config文件。

Networking options-->

<*>IP: kernel level autoconfiguralion

(5)编译内核

#make zImage

编译完成之后,在arch/arm/boot/目录下会看到-个zlmage文件,这就

是需要烧写到Flash中的内核映像文件。

通过JTAG将zImage下载到Nor Flash(AM29LVl60DB)中,烧写地址为OxO0030000 - Ox00200000。重启目标板,打开超级终端就可以看到内核启动信息。

4.1.3 生成并配置根文件系统

生成并配置文件系统主要有以下的几个步骤完成:安装busybox工具包;创建文件系

统的映象文件:配置文件系统。-个完整的根文件系统包含以下几个目录:

/bin,应用程序存放目录。几乎所有的应用程序都存放于此。比如1s等,

包括功能强大的命令工具集busybox。

/sbin,系统管理员服务程序,其中最重要的就是供内核初始化之后执行

的/sbin/init进程。

/1ib,存放程序运行所需要的动态库。

/proc,系统状态文件目录。这是用来显示系统状态且真正意义上的虚拟文件系统,目

录下的所有文件其实就是“控制面板”才能看到的系统状态信息,可以使用cat命令来

显示相应硬件配置及状态信息。所以这是Linux的“控制面板”。

/dev,驱动程序存放目录。在cramfs文件系统中这是-个空目录,在内核运行后由内

核devfs作为安装目录,才产生所有项目,所以实际为空目录。已经编译到内核中的设

备驱动程序都将存放于该目录下,包括动态加载的模块驱动也存放于此。

/etc,系统配置文件及用户数据存放目录。

/mnt,用于设备安装的目录,通常包含etc子目录和为块设备安装保留目录。其中,etc子目录中包含Linux内核启动时挂载到ramfs文件系统/etc下的所有内容。

/usr,用于存放用户程序和配置文件的目录,可以根据需要进行设置。

(1) cramfs文件系统的创建。

<1>建立-个目录:#mkdir rootfs,作为放置根文件系统的目录,并根据cramfs文

件系统结构分别建立目录结构,

#mkdir bin sbin dev etc proc lib usr mnt

<2>编译BusyBox。BusyBox是-个著名的开源项目,它是许多嵌入式Linux系统的基石,它用-个极小型的应用程序来提供上述位于/bin和/sbin中的整个命令集的功能,

它还支持动态和静态方式链接glibc,允许根据需要修改缺省配置,选中或移除所包含的命令。Busybox提供的配置界面与Linux菜单配置界面非常相似。

首先要到网站下载busybox源代码,busybox-1.0.0.tar.gz;并解压源文

件包:#tar zxvf busybox-I.0.0.tar.gz;建立-个符号链接并进入目录:

#In -s busybox-1.0.0 busybox

#cd busybox

交叉编译器路径设为:/opt/host/armv41/bin/armv4-unknown-1inux-,

移植平台为:ARCH=arm。保存退出。

交叉编译busybox:

#make a11

#make install

将生成的命令拷贝到上面建立的相应目录中。

#cp -a/bin/*/rootfs/bin

#cp -a/sbin/*/rootfs/sbin

<3>复制应用程序运行时所需要的库至/1ib下,库文件可以从PC机上的交叉编辑工具安装目录下复制。

<4>在Linux中根据需要建立相应文件的快捷方式,如在rootfs下建立tmp和var快捷方式到/mnt/etc/tmp和/mnt/etc/var文件夹,这样就可以使

用/tmp和/var 访问ramfs的空间。

<5>关于启动脚本。

-般系统启动时都会按要求执行相应的初始化操作。写在命令行里就是init=/1inuxrc,这个linuxrc是指向/etc/init.d/rcS文件的-个符号链接。在rcS文件中列出了linux 初始化时要执行的文件,rcS文件格式如下:

#! /bin/bash

/sbin/ifconfig lo 127.0.0.1 up

echo ””

echo”Embest Embedded Linux Development Paltform ”

echo “Default board ip:192.168.0.45”

ifconfig eth0 192.168.0.45

echo”To change the ip addr:ifconfig eth0 new_board_ip”

echo””

echo”Start the web server:http://(board_ip)/test.Html”

/sbin/httpd -h/mnt/etc/var/WWW/

/sbin/inetd

Echo “mount/etc as ramfs”

/bin/mount –n -t ramfs ramfs/etc

/bin/cp -a/mnt/etc/*/etc

/bin/mount –f -t ramfs ramfs/etc

/sbin/init

<6>生成映像文件。

完成以上所示的cramfs文件系统结构后,用下面的命令制作映像文件:

#mkcramfs rootfs rootfs.cramfs

rootfs.cramfs就是最后要烧写到flash中的映像文件。用JTAG将该文件下载到strata flash(E28F128J3)中,下载地址为:0x08040000-0x09000000。重启目标板,就可以在超级终端中看到整个系统的启动信息了。

4.2 BootLoader的移植

BootLoader就是在操作系统内核运行之前运行的-段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到-个合适的状态,以便为最终调用操作系统内核准备好正确的环境。从操作系统的角度BootLoader 的总目标就是正确地调用内核来执行。在本Web服务器开发中使用的BootLoader是

U-Boot(源代码可以在网上下载)。

4.2.1 移植的环境

<1>工作用户:root。

<2>U-Boot版本:1.1.6。

<3>交叉编译工具链:2.95.3。

4.2.2 移植的步骤

<1>在board子目录中建立S3C2440,并且将smdk2410下的相关文件复制到S3C2410目录

下。具体命令如下:

#mkdir board/S3C2440

#cp -rf board/smdk2440 board/S3C2440

#mv board/S3C24400/S3C2440.C board/S3C2440/S3C2440.C

#cp include/configs/smdk2410.h include/configs/S3C2440.h 修改board/S3C2440/Makefile文件,将其中的smdk2440.o改为S3C2440.o。

<2>修改项层Makefile文件。项层Makefile文件负责U-Boot整体配置编译。每-种开发板在Makefile都需要有板子配置的定义。例如smdk2440开发板的定义如下:

smdk2440_config:unconfig

@./mkconfigs$(@:_config=)arm arm920t smdk2440 NULL s3c24xO 各项的意思如下:

arm:CPU的架构(ARCH);

arm920t:CPU的类型(CPU),其对应于cpu/arm920t子目录;

smdk2440:开发板的型号(BoARD),对应于board/smdk2440目录;

NULL:开发商或经销商(vender);

s3c24xO:片上系统(SOC)。

模仿上述开发板的定义,对开发板s3c2440进行定义,在smdk2440_config的附近添加:

s3c2440-config:unconfig

@./mkconfigs$(@:_config=)arm arm920t s3c2440 NULL s3c24xO 这样,执行配置U-Boot的命令make s3c2440_config,通过./mkconfig\脚本生成include

/config.mk的配置文件。文件内容正是根据Makefile对开发板的配置生成的。

ARCH =arm

CPU =arm920t

BOARD=s3c2440

SOC =s3c24xO

<3>修改common/cmd-boot.C。如果内核不是uImage,则下载后,U-Boot没有传递参

数给内核,所以启动时会有错误,修改本文件中的相关代码使U-Boot可以传递参数给内核。其中修改部分如下:

#if !defined(CONFIG_NIOS)

if(argc==2)

re=((ulong(*)(int,char=*[]))addr)(0,gd -> bd->bi_arch_number):

else

rc=((ulong(*)(int,char*[]))addr)(--argc,&argv[1]);

<4>修改include/configs/s3c2440.h。

将默认下载地址改为0x30008000,具体修改如下:

#define CFG-LOAD_ADDR 0x30008000 /* default load address */

<5>修改cpu/arm920t/start.s文件,实现把内核从Flash拷贝到RAM,修改部分如下: ldr rO,=Ox00030000 /*Flash起始地址*/

ldr rl,=0x30008000 /* ARM起始地址*/

ldr r2,=OxOOld0000 /*序内核映像大小*/

add r2,rO,r2

<6>修改lowlevel-init.s文件。

修改board/s3c2440/lowlevel_init.s文件,更改后的代码如下:

#include

#include

#define BWSCON Ox48000000

/* BWSCON*/

#define DW8 (OxO)

#define DWl6 (Oxl)

#define DW32 (Ox2)

#define WAIT (Oxl<<2)

#define UBLB (Oxl<<3)

#define B1 BWSCON (DWl6)

#define B2 BWSCON (DWl6)

#define B3 BWSCON (DWl6+WAIT+UBLB)

#define B4 BWSCON (DWl6)

#define B5 BWSCON (DWl6)

#define B6 BWSCON (DW32)

#define B7 BWSCON (DW32)

/* BANKOCON */

#define BO_Tacs Ox3

#define BO_Tcos Ox3

#define BO_Tacc Ox7

#define BO_Tcoh Ox3

#define BO_Tah Ox3 #define BO_Tacp Ox3 #define BO_PMC Ox3

/* BANKICON*/

#define B1_Tacs Ox3 #define B1_Tcos Ox3 #define B1_Tacc Ox7 #define B1_Tcoh Ox3 #define B1_Tah Ox3 #define B1_Tacp Ox3 #define B1_PMC OxO

#define B2_Tacs OxO #define B2_Tcos OxO #define B2_Tacc Ox7 #define B2_Tcoh OxO #define B2_Tah OxO #define B2_Tacp OxO #define B2_PMC OxO

#define B3_Tacs OxO #define B3_Tcos Ox3 #define B3_Tacc Ox7 #define B3_Tcoh Ox1 #define B3_Tah OxO #define B3_Tacp Ox3 #define B3_PMC OxO

#define B4_Tacs OxO #define B4_Tcos Ox0 #define B4_Tacc Ox7 #define B4_Tcoh Ox0 #define B4_Tah OxO #define B4_Tacp Ox0 #define B4_PMC OxO

#define B5_Tacs 0x0 #define B5_Tcos Ox0 #define B5_Tacc Ox7 #define B5_Tcoh Ox0 #define B5_Tah 0x0 #define B5_Tacp Ox0 #define B5_PMC 0x0

#define B6_MT 0x3

#define B6_Trcd 0X1

#define B6_SCAN 0X1

#define B7_MT 0x3

#define B7_Trcd 0X1

#define B7_SCAN 0X

#define REFEN Oxl

#define TREFMD OxO

#define Trp OxO

#define Trc Ox3

#define Tchr Ox2

#define REFCNT 1113

SMKDATA:

.word

(O+(BI_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_B WSCON<<24)+(B7_BWSCON<<28))

.word

“BO_Tacs<<13)+(BO_Tcos<

1)+(BO_Tacc<<8)+(BO-Tcoh<<6)+(BO_Tah<<4)+(BO-Tacp<<2)+(BO_PMC))

.word

((Bl_Taes<<13)+(B1_Tcos<

.word

((B2_Tacs<<13)+(B2_Tcos<

.word

((B3_Tacs<<13)+(B3_Tcos<

.word

((B4_Tacs<<13)+(B4_Tcos<

.word

((B5_Tacs<<13)+(B5_Tcos<

.word((B6 _MT<<15)“B6_Trcd<<2)+(B6_SCAN))

.word((B7 _MT<<15)+(B7_Trcd<<2)+(B7_SCAN))

.word

((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)

.word 0x31

.word Ox30

.word Ox30

<7> 编译U-Boot。

#make

在顶层目录下可以看到编译完成的映像文件U-Boot.bin。利用Embest Online Flash Programmer for ARM软件,将映像文件U-Boot.bin通过JTAG烧写到Nor Flash中,烧写地址为:Ox00000000-Ox00020000。烧写完成后,重启开发板就可以在超级终端中看到U-Boot的启动信息了。U-Boot的移植工作就完成了。

4.3 基于S3CC400的嵌入式Web服务器Boa移植

首先在https://www.360docs.net/doc/ce18596580.html,下载boa源文件

4.3.1 配置开发板网络

在移植嵌入式 Web 服务器 boa 之前需要在根文件系统中配置网络,我的根文件系统目录是 /opt/rootfs ,这里设置我的 IP 地址为 192.168.1.112

<1> rootfs/etc 中添加 resolv.conf 文件

nameserver 192.168.1.1

该文件存放在DNS信息

<2>rootfs/etc 中添加 net.conf 文件

IPADDR=192.168.1.123

NETMASK=255.255.255.0

GATEWAY=192.168.1.1

MAC=10:23:45:67:89:ab

<3> 在 rootfs/etc/rc.d/init.d 目录下添加 httpd 文件

#!/bin/sh

base=boa

# See how we were called.

case "$1" in

start) /usr/sbin/$bas ;;

stop)

pid=`/bin/pidof $base`

if [ -n "$pid" ];

then kill -9 $pid

fi ;;

esac

北京科技大学 嵌入式课程设计报告

《嵌入式控制系统》课程设计报告 学院 专业班级 姓名 学号 指导教师 _

目录 摘要 (4)

Abstract (4) 引言 (5) 带中断LED数码管驱动程序设计 (6) 1.设计内容 (6) 1.1 基本功能 (6) 1.2 扩展功能 (6) 1.3创新功能 (6) 2.实验设备 (6) 3.设计功能块说明 (6) 4.设计原理 (7) 4.1 LED发光原理 (7) 4.2 八位LED显示器 (8) 5. 实验步骤 (8) 5.1 驱动程序加载 (8) 5.2 添加控件 (8) 5.3基本功能的实现 (9) 5.4 使用指南 (10) 6. 实验结果 (10) 6.1 基本功能实现结果 (10) 6.2 LED数码管清零功能实现结果 (11) 6.3 中断计数功能实现结果 (12) 6.4 频率设置功能实现结果 (13) 7. 心得体会 (14) 附录 (16)

摘要 通过嵌入式控制系统课程的学习并结合本次课程设计,了解嵌入式系统的开发方法和流程,熟悉Intel XScale硬件平台及其应用处理机的使用方法,熟悉Windows CE嵌入式系统的基本原理、概念。能针对Intel XScale硬件平台、应用需求自行定制、优化WinCE操作系统,并独立编写可在Intel XScale嵌入式设备上运行的应用程序。 本课程设计主要实现了LED数码管的驱动程序,中断计数功能、LED显示清零功能、LED 数字显示频率设置的功能。 关键字:WINCE 中断数码管驱动 Abstract Learning Embedded Control Systems and combining the curriculum design can help us understand the Embedded Control Sy stems’ development methods and processes, and be familiar with Intel XScale Hardware platform and its usage. Know well the basic principles and concepts about WINCE. Design and optimize Windows Embedded Compact and compose Application software program that can operate on the Intel XScale Hardware platform. The main achievement of the curriculum design are drivers for LED, Interrupt Count, clean the results of the LED and set up the display frequency of the LED. Key words: WINCE Interrupt Digital Driving

嵌入式系统课程设计题目

嵌入式系统课程设计题目 2016.5 共同要求:在LCD上显示设计题目、设计者名字(主设计者在前) 常用外设引脚: LED:LED0(上边)~LED3(下边)分别接PF5~PF9引脚,低电平点亮 按钮:K0(上边)~K3(下边)分别接PA0、PC13、PA8、PD3引脚,另一端均接地,按下为低电平。 蜂鸣器:蜂鸣器BEEP接PB10引脚,为有源蜂鸣器,PB10输出低电平发声 1、频率计设计 所谓频率计,就是每秒的计数值。使用2个通用定时器,一个计时,另一个对外部信号计数,在LCD 上显示出计数值和频率值。 2、用DAC设计低频信号发生器——硬键盘 使用DAC的模拟输出功能,模拟输出正弦波、方波、三角波信号。 用实验板上的4个按钮(K0~K3)控制输出:K3用于循环选择输出的信号类型,K0、K1、K2用于设置输出的频率,K2用于循环选择输出频率的某个位(个十百千万),K0按钮用于对选中的位加1,K1用于对选中的位减1。 在LCD上显示出频率值和输出信号的波形(曲线)。 3、用DAC设计低频信号发生器——软键盘 使用DAC的模拟输出功能,模拟输出正弦波、方波、三角波信号。 在LCD上设计4个触摸屏按钮(K0~K3)控制输出:K3用于循环选择输出的信号类型,K0、K1、K2用于设置输出的频率,K2用于循环选择输出频率的某个位(个十百千万),K0按钮用于对选中的位加1,K1用于对选中的位减1。 在LCD上显示出频率值和输出信号的波形(曲线)。 4、直流电机控制器设计——硬键盘 直流电机控制原理:理论上转速与电压成正比,用PWM控制则与占空比成正比;旋转方向与绕组电流的方向有关,改变绕组接电源的极性,便可改变电机的转向。 使用通用定时器的比较输出引脚,接直流电机的绕组,改变比较寄存器的值,即改变了占空比,便可调速(可以使用ARM实验箱上的直流电机(有驱动),只需把时钟信号和地线接到直流电机上即可)。 用4个按钮分别控制启动、停止、加速、减速;在LCD上显示出电机的转速等级。 5、直流电机控制器设计——软键盘

基于STM32和uC_OS-II的多任务设计-嵌入式系统课程设计报告

基于STM32和uC_OS-II的多任务设计-嵌入式系统课程设 计报告 NORTH CHINA UNIVERSITY OF SCIENCE AND TECHNOLOGY 嵌入式系统课程设计报告 学生姓名: 学号: 学院: 专业班级: 指导教师: 同组成员: 2016年 12 月 26 日 嵌入式系统课程设计报告 一、课程设计目的 本课程设计是在《嵌入式系统原理与应用》课程的基础上,通过软件编程及仿真调试的实践,进一步掌握嵌入式系统的原理和应用方法,是毕业设计前的一 次重要实践,为今后从事嵌入式系统相关工作岗位打下良好的基础。 二、设计题目及要求 2.1 设计题目: 基于STM32和uC/OS-II的多任务设计 2.2 功能实现:

使用uC/OS-II的任务管理函数和STM32库函数控制相应的寄存器,完成一个多任务设计。整个设计共有4个任务,驱动一个LED指示灯闪烁、由3个LED指示灯组成的流水灯、驱动蜂鸣器和利用swd方式进行printf输出。 2.3 设计要求: 理解和熟练使用KEIL软件、STM32寄存器、STM32库函数和uC/OS-II任务管理函数,用KEIL软件完成编程和调试,下载到开发板中实现4个设定的任务,并完成课程设计报告。 四个任务分别为: (1)驱动1个LED指示灯闪烁、 (2)由3个LED指示灯组成流水灯 (3)驱动蜂鸣器发出响声。 (4)利用swd方式进行printf输出。 三、设计原理说明 3.1 硬件说明 本次课程设计主要使用的是STM32 神舟 IV 号开发板为基础进行课程设计的,本节将详细介绍神舟IV号开发板的各部分硬件原理与实现。 (1)开发板资源图 - 1 - 嵌入式系统课程设计报告

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相连,并通过标准网络浏览器进行过程控制。

嵌入式课程设计报告

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

、 摘要 随着科技和人们的生活水平的提高,实现防盗的问题也变得尤为突出,传统机械锁构造简单,电子锁的保密性高,使用灵活性好。根据需要设计运用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。

嵌入式系统设计课设报告分析解析

福州大学 《嵌入式系统设计课设》 报告书 题目:基于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占空比。

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 管脚描述

嵌入式系统课程设计

《嵌入式系统设计与应用》课程设计 题目嵌入式系统的实践教学探讨 1.嵌入式系统设计与应用课程的内容概述 1.1 内容概述 本课程适用于计算机类专业,是一门重要的专业课程。它的任务是掌握嵌入式系统的基本概念;掌握嵌入式处理器 ARM 体系结构,包括ARM总体结构、存储器组织、系统控制模块和I/O外围控制模块;掌握ARM指令集和Thumb指令集;掌握ARM汇编语言和C语言编程方法;了解基于ARM 的开发调试方法。它的目的是了解和掌握嵌入式处理器的原理及其应用方法。 1)介绍嵌入式系统开发的基础知识,从嵌入式计算机的历史由来、嵌入式系统的定义、嵌入式系统的基本特点、嵌入式系统的分类及应 用、嵌入式系统软硬件各部分组成、嵌入式系统的开发流程、嵌入 式技术的发展趋势等方面进行了介绍,涉及到嵌入式系统开发的基 本内容,使学生系统地建立起的嵌入式系统整体概念。 2)对ARM技术进行全面论述,使学生对ARM技术有个全面的了解和掌握,建立起以ARM技术为基础的嵌入式系统应用和以ARM核为基础 的嵌入式芯片设计的技术基础。 3)ARM指令系统特点,ARM 指令系统,Thumb 指令系统,ARM 宏汇编,ARM 汇编语言程序设计,嵌入式 C 语言程序设计。 1.2实践教学探讨 在IEEE 计算机协会2004年6月发布的Computing Curricula Computer Engineering Report, Ironman Draf t 报告中把嵌入式系统课程列为计算机工程学科的领域之一,把软硬件协同设计列为高层次的选修课程。美国科罗拉多州立大学“嵌入式系统认证”课程目录包括实时嵌入式系统导论、嵌入式系统设计和嵌入式系统工程训练课程。美国华盛顿大学嵌入式系统课程名称是嵌入式系统

嵌入式系统课程设计

嵌入式系统课程设计 学号:1070410014030 班级:通信10 姓名:刘豆

嵌入式系统在智能交通中的应用摘要:介绍了嵌入式系统及其操作系统,并将其系统和通用计算机系统作了比较,总结了嵌入式系统产品在ITS(Intelligent Traffic system ),智能交通系统应用中的工作稳定性高,环境适应能力强和设备独立性三个特点,且结合嵌入式产品在ITS中应用的这几个特点,探讨了嵌入式系统在智能交通系统中应用研究。最后,展望嵌入式系统在ITS(智能交通系统)中的广泛应用。 关键词:嵌入式系统;嵌入式操作系;ITS;数字信号 中图分类号: Application of Embedded System in ITS Abstract: This article mainly introduce embedded system and its operation system , the embedded system are compared with general computer system. And this article summarizes three characteristics about embedded systems’ production applied to ITS: the high working stabilities, the strong ability for environment and the independency of equipments .Combining with the application research of embedded systems in ITS。At last, the author prospects that embedded systems are used widely in ITS in the whole nation. Keywords; embedded system; embedded operational systems ; ITS ; digital signal 嵌入式系统如今在实际生活中有巨大应用,观察身边不难发现电子产品、智能家居等大多用嵌入式系统来实现。这篇论文举一个应用实例,即智能交通系统。一个智能交通系统(ITS)主要由交通信息采集、交通状况监视、交通控制、信息发布和通信5大子系统组成。各种信息都是ITS的运行基础,而以嵌入式为主的交通管理系统就像人体内的神经系统一样在ITS 中起至关重要的作用。嵌入式系统应用在测速雷达、(返回数字式速度值)运输车队遥控指挥系统、车辆导航系统等方面,在这些应用系统中能对交通数据进行获取、存储、管理、传输、分析和显示,以提供交通管理者或决策者对交通状况现状进行决策和研究。 1.嵌入式系统与嵌入式操作系统 1.1嵌入式系统 通俗来讲,嵌入式系统是带有操作系统的单片机系统;主要由嵌入式处理器、相关支撑硬件和嵌入式软件系统组。他的框架可分为5个部分:处理器、内存、输入/输出、操作系统与应用软件(如图1所示)。嵌入式软件包括与硬件相关的底层软件、操作系统、图形界面、通讯协议、数据库系统、标准化浏览器和应用软件等。总体看来,嵌入式系统具有便利灵活、性能价格比高、嵌入性强等特点,可以嵌入到现有任何信息家电和工业控制系统中。软件角度来看,嵌入式系统具有不可修改性,系统所需配置要求较低&系统专业性和实时性较强等特点。 1.2 嵌入式操作系统 对于目前发展迅速的信息产品来说,其最关键的核心技术就是嵌入式操作系统。嵌入式操作系统EOS(Embedded Operating System)是一种支持嵌入式系统应用的操作系统软件。嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序;另外,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。

嵌入式系统课程设计报告

湖北民族学院 信息工程学院 课程设计报告书 题目 :基于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的多路数据采集系统设计 专业班级:自动化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.

广东海洋大学嵌入式系统课程设计

《嵌入式系统》设计报告学生姓名 Adao (学号) 所在学院数学与计算机学院 所在班级计科1141 指导教师 成绩

目录 1.课程设计目的 (2) 2.系统分析与设计 (2) 3.系统结构图 (2) 4.实现过程 (3) 5.实验效果 (5) 6.代码分析 (6) 7.系统测试出现的问题和解决的方案 (7) 8.系统优缺点 (7) 9.心得体会 (8) 参考文献 (8)

双按键控制流水灯系统开发 1.课程设计目的: 本次课程设计目的主要是对之前所学习的STM32的某个实验进行更深入的学习与了解,弄懂引脚,端口等相关的配置,对实验原理和具体实现有一定的理解,能做到自己通过原理图和使用库函数等把功能实现出来。我选择的是EXTI-外部中断实验并加以整合,具有一定实用功能的系统,可以对外提供服务。 2.系统分析与设计: 本课程设计所定义的系统主要功能为,通过两个按键KEY1(PA0)、KEY2(PC13)可以实现对流水灯进行同步控制,即一个开关控制产生的灯的状态可以被另一个开关去改变,按键控制需要对两个按键的端口,引脚等进行相关配置,并在两个引脚的中断服务程序中完成对流水灯状态同步控制的操作。本还想通过使用SysTick(系统滴答定时器)功能对流水灯进行精确定时,但由于时间比较匆促,最终没有实现。 3.系统结构图: 图3-1

4.实现过程: 1、GPIO的输入模式有上拉输入模式、下拉输入模式、浮空输入模式和模拟输入模式。GPIO 中的每个引脚可以通过配置端口配置寄存器来配置它的模式。每个引脚的模式由寄存器的4个位控制。 上拉/下拉输入模式:1000 浮空输入模式:0100 模拟输入模式:0000 2、STM32的所有GPIO都可以用作外部中断源的输入端。STM32的中断由中断控制器NVIC 处理。STM32的中断向量具有两个属性,一个为抢占属性,另一个为响应属性,其属性编号越小,表面它的优先级别越高。抢占属性会出现嵌套中断。 3、编写NVIC_Configuration()函数配置NVIC控制器的函数。 static void NVIC_Configuration(uint8_t IRQ) { NVIC_InitTypeDef NVIC_InitStructure; //将NVIC中断优先级分组设置为第1组 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); /* 配置中断源 */ NVIC_InitStructure.NVIC_IRQChannel = IRQ;//设置中断线 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//设置抢占优先级 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//设置响应优先级 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); //对NVIC中断控制器进行初始化 } 4、调用GPIO_EXTILineConfig()函数把GPIOA、Pin0和GDIOC、PIN13设置为EXTI输入线。 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource13); 5、填写EXTI的初始化结构体,然后调用EXTI_Init()把EXTI初始化结构体的参数写入寄存器。编写EXTI_PA0_Config()函数完成各种需要的初始化。 void EXTI_Pxy_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; /* config the extiline clock and AFIO clock */

嵌入式课设

河海大学计算机及信息工程学院(常州)课程设计报告 题目基于uCOSII的LCD驱动 专业、学号 授课班号 学生姓名 指导教师 完成时间2013,06,25

课程设计(报告)任务书 (理工科类) Ⅰ、课程设计(报告)题目: 基于uCOSII的LCD驱动 Ⅱ、课程设计(论文)工作内容 一、课程设计目标 1、培养综合运用知识和独立开展实践创新的能力; 2、掌握基于uCOSII的LCD驱动编写开发过程; 3、掌握在UCOSII操作系统下添加LCD驱动程序的基本方法; 4、使用做好的驱动程序做一些简单的应用实例。 二、研究方法及手段应用 1、将任务分成若干模块,查阅相关论文资料; 2、分模块调试和完成任务。 三、课程设计预期效果 1、完成实验环境搭建; 2、在移植好的uCOSII工程中添加LCD的驱动程序; 3、学习在uCOSII下,LCD应用任务的简单编程实例,实现实验箱的CPU板上的D7、D8灯闪烁的同时,在LCD屏上也进行D7、D8灯的模拟闪烁。 4、在完成要求任务的情况下,添加其他模块。 学生姓名:彭华亮专业年级:自动化10级

目录 前言 ............................................ 错误!未定义书签。第一章课题目标及总体方案.. (3) 第二章系统设计 (3) 2.1系统及工具简介 (3) 2.1.1 EL-ARM-830实验箱 (3) 2.1.2 ADS v1.2集成开发环境 (4) 2.2系统功能实现 (4) 2.2.1 uCOSII内核移植 (4) 2.2.2 LCD驱动程序的编写 (6) 2.2.3 uCOSII操作系统下添加LCD驱动程序 (7) 2.2.4 测试程序的编写 (8) 第三章实验(测试)结果及讨论 (9) 3.1测试步骤 (9) 3.2注意事项 (9) 3.3测试结果 (10) 心得体会 (10) 参考文献 (12) 附录 (13)

基于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个感光二极

09嵌入式网络协议及其应用开发课程设计报告1

课程设计说明书 学生信息 系别计算机工程学院专业计算机科学与技术 班级姓名学号 课程设计信息 课程名称嵌入式软件开发课程设计 课程设计题目基于QT的直流电机设计 课程设计时间学期第 1~16 周 小组情况指导教师 批改情况 成绩评阅教师批改时间2012年5月 6 日2011-2012学年第2 学期

目录 1.课程设计内容 (3) 2.课程设计目的 (3) 3.背景知识 (3) 4.工具/准备工作 (3) 5.设计步骤与方法 (3) 5.1.步骤 1:设计直流电机控制界面 (3) 5.1.1. 步骤1.1:添加控件事件代码 (4) 5.2. 步骤2:编译程序 (5) 5.2.1. 步骤2.1:redhat主机下编译程序 (5) 5.2.2. 步骤2.2:在ARM板下测试直流电机界面–嵌入式下运行 (6) 6.软件测试截图 (7) 7.设计结果及分析 (7) 8.设计结论 (7) 9.问题及心得体会 (7) 10.对本设计过程及方法、手段的改进建议 (8) 11.任务分配 (8) 12.参考文献【1】C++ GUI Qt4编程(第2版) 兰切特 (Jasmin Blanchette)、萨默菲尔德(Mark Summerfield)、闫锋欣、曾泉人子工业出版社2008 (8) 13.课程设计评价(教师) (8)

课程设计报告 1. 课程设计内容 本课程设计的内容是设计一个基于QT的直流电机设计,支持电机正反转以及设置参数以控制转速。 2. 课程设计目的 考察自己对课程的掌握程度,以及自己实际的动手能力,编程能力。 3. 背景知识 1.嵌入式linux下驱动程序的基本编译方法 2.掌握直流电机控制基本原理 3.QT软件的应用 4. 工具/准备工作 硬件: 安装有QT的PC机一台 软件: WindowsXP操作系统 VMware Workstation 7.0 Red Hat QT 4.6.3 5. 设计步骤与方法 5.1.步骤 1:设计直流电机控制界面 利用QT Creator,ui文件来编写一个良好的用户交互界面:

嵌入式系统课程设计选题要求及题目

嵌入式系统课程设计—选题要求及课题 1、嵌入式系统课程设计时长两星期,要求学生分组进行课程设计,每组学生人数为2~3人(可在不超过3人的范围内由指导教师具体规定),报告雷同超过60%者,成绩都记不及格! 2、学生需要在附后的设计题目总表中进行选题,原则上需要在6月17号前完成选题,并开始课程设计工作! 附:嵌入式系统课程设计题目 ARM-Linux 嵌入式系统在农业大棚中的应用(温度、湿度和二氧化碳浓度是影响棚栽农作物生长的3 大要素。为了实现农业大棚中这3 种要素数据的远程实时采集,引入了当前嵌入式应用中较为成熟的ARM9 微处理器和Linux 嵌入式操作系统技术, 采用温度传感器PH100TMPA、湿度传感器HM1500 和二氧化碳浓度传感器NAP221A ,设计一种基于TCP/ IP 协议的嵌入式远程实时数据采集系统方案。从硬件设计和软件实现2 方面对该系统进行具 体设计。) 1.ARM系统在LED显示屏中的应用(利用ARM系统控制彩色LED显示屏) 2.ARM 嵌入式处理器在智能仪器中的应用(设计一种基于ARM 嵌入式处理器系统的智 能仪器的硬件和软件设计方案, 并结合uc/o s2II或者Linux嵌入式实时操作系统, 给出一套完整的任务调度和管理的方法, 最后用实例说明) 3.ARM系统在汽车制动性能测试系统中的应用(采用ARM系统构建一个路试法的汽车制 动性能测试系统) 4.ARM 嵌入式控制器在印染设备监控中的应用(针对拉幅热定型机,设计一种基于485 总 线的分布式监控系统。用ARM 嵌入式控制器实现主、从电机的同步运行和烘房温度的控制;在PC 机上用VB6. 0 设计转速和温度的监控画面;实现ARM、变频器和PC 机之间的数据通信。) 5.基于ARM系统的公交车多功能终端的设计(完成电子收费、报站、GPS定位等功能) 6.基于ARM9的双CAN总线通信系统的设计(设计一种基于ARM9内核微处理器的双路 CAN总线通信系统。完成系统的总体结构、部分硬件的设计,系统嵌入式软件的设计,包括启动引导代码U - boot、嵌入式L inux - 214118操作系统内核、文件系统以及用户应用管理软件四个部分。) 7.基于ARM9 和Linux 的嵌入式打印终端系统(嵌入式平台上的打印终端的外围电路连 接设计、嵌入式Linux 的打印机驱动程序开发和应用程序的开发) 8.基于ARM 的车载GPS 终端软硬件的研究(重点研究基于ARM 的导航系统的软硬件设

嵌入式系统课程设计 跑马灯报告

嵌入式系统 课程设计报告 学部 专业 学号 姓名 指导教师 日期 一、实验内容

设计msp430单片机程序并焊接电路板,利用msp430单片机芯片实现对跑马灯、按键识别及数码显示这三大模块的控制 二、实验目的 1.熟悉电路原理图,了解单片机芯片与各大模块间的控制关系 2.增强看图和动手设计能力,为将来从事这个专业及相关知识奠定基础 3.在焊接的同时,理解源程序是如何实现相应功能的 三、实验设备及器材清单 实验设备:电烙铁、烙铁架、尖嘴钳、斜口钳、镊子、万用表等 器材清单: 模块元器件名称单位(个/块) 电源 78051 AMS11171 电容10V100u3 二极管IN40071 104电容2 晶振32768Hz1 33电容2 8MHz2跑马灯发光二极管8 100欧电阻8 74LS5731 104电容2 键盘按键8 10K电阻9 104电容3 103电容1 HD74HC212数码显示7段数码显示(共阴极)1 24脚插座1 74HC1641 14脚插座1复位电路二极管IN40071 电容10V100u1 按键1 10K电阻1 14脚下载口1电路板1 MSP430F149芯片及插座1 四、硬件电路框图

五、程序清单 跑马灯程序#include #define uchar unsigned char #define uint unsigned int int main( void ) { void delay( ); WDTCTL = WDTPW + WDTHOLD; unsigned char i=0,j=0; P2DIR=0XFF; P2SEL=0X00; while(1) { for(i=0;i<10;i++) { P2OUT=0XFF; delay(50); P2OUT=0X00; delay(50); } for(j=0;j<10;j++) { P2OUT=0X55;

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

成绩学生课程实践能力考查 题目:温度按键设定、显示、报警系统设计 课程名称:嵌入式系统开发专业班级: 学生学号: 学生姓名: 考查地点: 考查时长: 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就是自己的名字拼音) 目录: 第一章.系统要求 1、1设计要求

1、2设计方案 第二章.硬件设计 2、1开发板原理图 2、2 DS18B20模块 2、3按键模块 2、4 LCD显示模块 2、5 LED 模块 第三章.软件设计 3、1程序流程图 3、2程序部分代码 3、2、1主函数、main、c 3、2、2 LED 函数led、c 3、2、3温度代码 s18b20、c 3、2、4键盘代码key、c 第四章、实物效果图 第五章、课程总结 第一章.设计要求及方案 1、1设计要求 1、读取DS18B20温度,在液晶上实时显示,并显示上、下限,初始值上限32,下限26。 2、通过按键可以设置环境温度的上限与下限, WK_UP键按下调节上限,再按下调节下限,再按下调节上限…… KEY1按下加1; KEY0按下减1, 根据上限与下限判断当前温度有没有超出范围。

相关文档
最新文档