ARM9嵌入式课程设计报告

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

基于UCOSSII系统的移动检票器

1. 设计内容 (1)

1.1设计目的 (1)

1.2设计意义 (1)

2. 设计方案 (2)

2.1设计要求 (2)

2.2设计方案的可行性分析 (2)

3. 需求分析 (3)

3.1功能需求 (3)

3.2性能需求 (3)

3.3环境需求 (3)

4. 概要设计 (3)

4.1GUI图形界面设计 (3)

4.3串口的输出 (4)

4.4VIVI模式 (4)

5详细设计 (4)

5.1GUI图形的界面的实现 (5)

5.2主要函数的调用关系 (6)

5.3主要负责车票信息核对模块 (7)

5.4车票信息的添加 (7)

本部分内容由组员曾德亮具体负责,这里不一一叙述。 (8)

6设计心得与体会 (8)

7附录 (8)

1.设计内容

1.1设计目的

1、注重培养综合运用所学知识、独立分析和解决实际问题的能力,培养创新意识和创新能力,并获得科学研究的基础训练。

2、了解所选择的ARM芯片各个引脚,工作方式,计数/定时,I/O口,中断等的相关原理,并巩固学习嵌入式的相关内容知识。

3、通过软硬件设计实现利用ARM芯片对信号的采集及显示。

1.2设计意义

嵌入式系统是以应用为中心,以计算机技术为基础,且软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由以下几部分组成:嵌入式微处理器、外围硬件设备、嵌入式操作系统。嵌入式系统是面向用户、面向产品、面向应用的,它必须与具体应用相结合才会具有生命力、才更具有优势。因此嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的裁减利用。嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。嵌入式系统必须根据应用需求对软硬件进行裁剪,满足应用系统的功能、可靠性、成本、体积等要求。所以,如果能建立相对通用的软硬件基础,然后在其上开发出适应各种需要的系统,是一个比较好的发展模式。目前的嵌入式系统的核心往往是一个只有几K到几十K微内核,需要根据实际的使用进行功能扩展或者裁减,但是由于微内核的存在,使得这种扩展能够非常顺利的进行。

2.设计方案

2.1设计要求

(1)键消息输入票务信息

(2)和票务数据库核对

(3)显示检票结果

(4)输入票务数据库(可以用文本文件表示)

2.2设计方案的可行性分析

自动检票器是根据检票计划,实现自动检票判读票务信息功能,能够实现合法旅客通过,阻挡非法旅客进。在车站、旅游景点、企事业单位中有巨大的作用,对减少作业量,提高工作效率,实现现代化管理等方面都具有非常重要的意义。

移动检票器,是根据自动检票器的基础演变而来的便携式检票设备。该设备通过嵌入式系统,运用自动识别、参数对比、数据写入等技术,实现了灵活的检票。是一种重要的检票设备。

3.需求分析

3.1功能需求

1.有接口按钮来实现信息的输入工作

2.有以文本文件形式的简单数据库

3.数据库可以写入、输出数据,实现增、删、改、查功能

4.能够在LCD显示屏上显示检票结果

5.可以将票务信息输入数据库

6.良好的界面

3.2性能需求

软件能够运行,具有良好的稳定性,没有语法、逻辑错误。调试成功后,具有友好的界面,能够满足移动检票器的主要功能。

3.3环境需求

1.Windows XP操作系统

2.ADS1.2集成开发环境,仿真调试驱动程序

3.EL-ARM-860嵌入式教学试验箱

4.仿真调试电缆,串口直连电缆

4.概要设计

4.1GUI图形界面设计

这里就是根据实验五,模仿的。

4.2按键的实现

部分按键的串口输出函数,在开头宏定义里面实现。在Tasks_Strart任务中实现。部分代码实现如下:

for(;;)

{

Key_P = OSMboxPend(Key_Mbox, 0, &err); //等待任务间的通信邮箱内的键值指针

Key_Val = *Key_P;

switch(Key_Val)

{

case 0x01 :

GUI_StoreKey(GUI_KEY_1);

break;

case 0x02 :

GUI_StoreKey(GUI_KEY_2);

break;

case 0x0C :

GUI_StoreKey(GUI_KEY_ESCAPE);

break;

case 0x03 :

GUI_StoreKey(GUI_KEY_START);

break;

default:

break;

}

}

4.3串口的输出

打开ADS1.2开发环境,从里面打开\试验程序\UCOSII\ADS\实验五\Task_USOSII目录下的Tasks_USOSII.mcp项目文件并进行编译。

编译通过后,进入ADS1.2调试界面,加载\实验程序\USOSSII\ADS\实验五\Tasks_UCOSSIIm目录下\Tasks_data\debug中的映像文件程序映像Tasks.axf。按两下“3”键,观察LCD屏幕上和CPU版面上的显示。之后,选择“上”,“中”,“下”,“左”,“右”键

4.4VIVI模式

打开超级终端,配置串口属性为COM2,配置波特率为115200,校验位无,数据位为8,停止位为1,数据控制流无;检查连接时否可靠,可靠后,接入电源,系统上电,同时按住“空格”建,进入VIVI状态,按下LCD电源开关。

5详细设计

本次试验由两人共同完成,经过我们二人两个礼拜的合作与交流,现在分工如下:

本人主要负责需求分,在功能实现方面,主要负责图形界面的初步设计及车票信息核对模块。曾德亮同学负责的是图形界面的代码实现以及车票信息插入功能模块。

5.1GUI图形的界面的实现

图形界面设计主要是一些基本的图形的坐标定位,矩形、文字在LCD显示屏的坐标。

当用户通过首界面进入后,部分代码以及注释如下:

Set_Color(GUI_YELLOW);

//显示界面

Set_BkColor(GUI_RED);

Set_Font (&CHINESE_FONT16);

Disp_String (CN_start"移动检票器"CN_end,320,80);

Disp_String (CN_start"功能选择"CN_end,360,120);

Disp_String (CN_start"一、票务信息核对"CN_end,320,160);

Disp_String (CN_start"二、票务信息录入"CN_end,320,200);

Disp_String (CN_start"退出"CN_end,320,280);

Loop = FALSE;

number = 0;

break;

//通过选项2进入数据的插入,

case GUI_KEY_2: //功能二,按键“2”

Set_Color(GUI_RED);

Fill_Rect(40,40,600,440);

Set_Color(GUI_YELLOW); //信息录入模块

Set_BkColor(GUI_RED);

Set_Font (&CHINESE_FONT16);

Disp_String (CN_start"票务信息录入"CN_end,320,120);

Set_Font(&CHINESE_FONT16);

Disp_String (CN_start"请输入车票号码:"CN_end,100,240);

Uart_GetString(no);

Uart_Printf("%s\n",no);

Set_Font(&GUI_Font8x16);

Disp_String(no,230,240);

Set_Font(&CHINESE_FONT16);

Disp_String (CN_start"请输入发车时间:"CN_end,100,280);

Uart_GetString(time);

Uart_Printf("%s\n",time);

Set_Font(&GUI_Font8x16);

Disp_String(time,230,280);

Set_Font(&CHINESE_FONT16);

Disp_String (CN_start"请输入车票价格:"CN_end,100,320);

Uart_GetString(price);

Uart_Printf("%s\n",price);

Set_Font(&GUI_Font8x16);

Disp_String(price,230,320);

insert(no,time,price); //插入函数

Set_Font(&GUI_Font8x16);

Disp_String (TicketList[i].num,100,380);

Disp_String (TicketList[i].time,200,380);

Disp_String (TicketList[i].price,300,380);

Loop = TRUE;

number = 0;

break;

//用户进入插入界面后,通过键盘的操作对数据库进行信息的插入,将信息录入保存,

case GUI_KEY_ESCAPE:

Loop = FALSE;

break;

当程序运行完成之后,设置escape键退出循环,在start运行程序

5.2主要函数的调用关系

主函数

void Main()

任务一任务二任务四

5.3主要负责车票信息核对模块

信息核对何工,其实就实现函数的查询功能,所以这里,我也是用的search函数来实现的。核心代码如下:

for(i=0;i

if(strcmp(TicketList[i].num,no)==0)

{

Set_Font(&CHINESE_FONT16);

Disp_String(CN_start"车票号码"CN_end,100,200);

Set_Font(&GUI_Font8x16);

Disp_String(TicketList[i].num,100,240);

Set_Font(&CHINESE_FONT16);

Disp_String(CN_start"时间"CN_end,200,200);

Set_Font(&GUI_Font8x16);

Disp_String(TicketList[i].time,200,240);

Set_Font(&CHINESE_FONT16);

Disp_String(CN_start"价格"CN_end,300,200);

Set_Font(&GUI_Font8x16);

Disp_String(TicketList[i].price,300,240);

i=MaxSize+1;

}

else{

Set_Font(&CHINESE_FONT16);

Disp_String(CN_start"没有此车票信息!"CN_end,300,300);

}

}

5.4车票信息的添加

本部分内容由组员曾德亮具体负责,这里不一一叙述。

6设计心得与体会

在这次ARM嵌入式系统课程设计中,我们小组的设计课题是《移动检票器》。通过这次课程设计,我对ARM嵌入式系统尤其是GUI图形界面集系统有了更进一步的了解,同时知识面也进一步得到了扩展和加深。

7附录

//程序源代码

/*

;******************************************************************** ****************************************

;* 北京精仪达盛科技有限公司

;* 研发部

;*

;* https://www.360docs.net/doc/f815056378.html,

;*

;*--------------------------------------------- 文件信息----------------------------------------------------

;*

;* 文件名称: MAIN.c

;* 文件功能: 应用程序

;* 补充说明:

;*-------------------------------------------- 最新版本信息-------------------------------------------------

;* 修改作者: ARM开发小组

;* 修改日期: 2004/00/00

;* 版本声明: V1.0.1

;*-------------------------------------------- 历史版本信息-------------------------------------------------

;* 文件作者: ARM开发小组

;* 创建日期: 2004/06/25

;* 版本声明: v1.0.0

;*-----------------------------------------------------------------------------------------------------------

;*-----------------------------------------------------------------------------------------------------------

;******************************************************************** ****************************************

;*/

#include "..\inc\config.h"

#define STACKSIZE 256

#define MaxSize 10

//声明结构体(车票信息)

struct Ticket_info{

char *check;

char num[10]; //车票号码

char time[10]; //开车时间

char price[10]; //价格

}TicketList[MaxSize];

OS_STK_DATA stk;

extern GUI_FONT CHINESE_FONT12;

extern GUI_FONT CHINESE_FONT16;

extern GUI_FONT GUI_Font8x16;

OS_EVENT *Key_Mbox;

/*

********************************************************************* ****************************************

** 分配各任务的堆栈容量

**

********************************************************************* ****************************************

*/

OS_STK Stack_Task_1[STACKSIZE];

OS_STK Stack_Task_2[STACKSIZE];

OS_STK Stack_Task_3[STACKSIZE];

OS_STK Stack_Task_4[STACKSIZE*3];

/*

*********************************************************************

****************************************

** 信息插入操作函数

**

********************************************************************* ****************************************

*/

V oid insert(char *num,char *time,char *price){

int i=0;

for(;i

if(TicketList[i].check == NULL){

strcpy(TicketList[i].num,num);

strcpy(TicketList[i].time,time);

strcpy(TicketList[i].price,price);

Set_BkColor(GUI_RED);

Set_Font(&GUI_Font8x16);

Disp_String (TicketList[i].num,200,380);

i= MaxSize+1;

}

}

}

/*

********************************************************************* ****************************************

- 函数名称: Task_4(void *pdata)

- 函数说明: GUI任务,优先级为56

- 输入参数: pdata

- 输出参数: 无

********************************************************************* ****************************************

*/

void Task_4(void *pdata)

{

I32 number;

char time[10];

char num[10];

char price[10];

I32 flag=1;

char no[10];

INT8U Loop;

I32 i;

for(;;)

{

number = GUI_WaitKey();

Loop = TRUE;

do

{

switch (number)

{

case GUI_KEY_START: // 得到开始命令Set_Color(GUI_BLUE);

Fill_Rect(0,0,639,479);

Set_Color(GUI_WHITE);

Set_BkColor (GUI_BLUE);

Fill_Rect(0,0,639,2);

Fill_Rect(0,0,2,479);

Fill_Rect(0,477,639,479);

Fill_Rect(6377,0,639,479);

Set_Color(GUI_RED); //画矩形

Fill_Rect(40,40,600,440);

Set_Color(GUI_YELLOW);

//显示界面

Set_BkColor(GUI_RED);

Set_Font (&CHINESE_FONT16);

Disp_String (CN_start"移动检票器"CN_end,320,80);

Disp_String (CN_start"功能选择"CN_end,360,120);

Disp_String (CN_start"一、票务信息核对"CN_end,320,160);

Disp_String (CN_start"二、票务信息录入"CN_end,320,200);

Disp_String (CN_start"退出"CN_end,320,280);

Loop = FALSE;

number = 0;

break;

default: // 等待主任务发送的键值命令

number = GUI_WaitKey();

Loop = TRUE;

break;

}

}while(Loop==TRUE);

do

{

number = GUI_WaitKey();

switch (number)

{

case GUI_KEY_1: //功能一,按键“1”

Set_Color(GUI_RED);

Fill_Rect(40,40,600,440);

Set_Color(GUI_YELLOW); //信息核对模块

Set_BkColor(GUI_RED);

Set_Font(&CHINESE_FONT16);

Disp_String (CN_start"信息核对"CN_end,320,120);

Disp_String (CN_start"请输入车票号码:"CN_end,100,150);

Uart_GetString(no);

Uart_Printf("%s\n",no);

Set_Font(&GUI_Font8x16);

Disp_String(no,300,200);

for(i=0;i

if(strcmp(TicketList[i].num,no)==0)

{

Set_Font(&CHINESE_FONT16);

Disp_String(CN_start"车票号码"CN_end,100,200);

Set_Font(&GUI_Font8x16);

Disp_String(TicketList[i].num,100,240);

Set_Font(&CHINESE_FONT16);

Disp_String(CN_start"时间"CN_end,200,200);

Set_Font(&GUI_Font8x16);

Disp_String(TicketList[i].time,200,240);

Set_Font(&CHINESE_FONT16);

Disp_String(CN_start"价格"CN_end,300,200);

Set_Font(&GUI_Font8x16);

Disp_String(TicketList[i].price,300,240);

i=MaxSize+1;

}

else{

Set_Font(&CHINESE_FONT16);

Disp_String(CN_start"没有此车票信息!"CN_end,300,300);

}

}

Loop = TRUE;

number = 0;

break;

case GUI_KEY_2: //功能二,按键“2”

Set_Color(GUI_RED);

Fill_Rect(40,40,600,440);

Set_Color(GUI_YELLOW); //信息录入模块

Set_BkColor(GUI_RED);

Set_Font (&CHINESE_FONT16);

Disp_String (CN_start"票务信息录入"CN_end,320,120);

Set_Font(&CHINESE_FONT16);

Disp_String (CN_start"请输入车票号码:"CN_end,100,240);

Uart_GetString(no);

Uart_Printf("%s\n",no);

Set_Font(&GUI_Font8x16);

Disp_String(no,230,240);

Set_Font(&CHINESE_FONT16);

Disp_String (CN_start"请输入发车时间:"CN_end,100,280);

Uart_GetString(time);

Uart_Printf("%s\n",time);

Set_Font(&GUI_Font8x16);

Disp_String(time,230,280);

Set_Font(&CHINESE_FONT16);

Disp_String (CN_start"请输入车票价格:"CN_end,100,320);

Uart_GetString(price);

Uart_Printf("%s\n",price);

Set_Font(&GUI_Font8x16);

Disp_String(price,230,320);

insert(no,time,price); //插入函数

Set_Font(&GUI_Font8x16);

Disp_String (TicketList[i].num,100,380);

Disp_String (TicketList[i].time,200,380);

Disp_String (TicketList[i].price,300,380);

Loop = TRUE;

number = 0;

break;

case GUI_KEY_ESCAPE:

Loop = FALSE;

break;

default: // 等待主任务发送的键值命令

number = GUI_WaitKey();

Loop = TRUE;

break;

}

}while(Loop == TRUE);

}

}

/*

********************************************************************* ****************************************

- 函数名称: Task_3

- 函数说明: 任务3,向串口发送数据

- 输入参数: pdata

- 输出参数: 无

********************************************************************* ****************************************

*/

void Task_3(void *pdata)

{

for(;;)

{

if(key_number!=0xff)

{

Uart_Printf("key_number=%x\n",key_number); //任务的干得活儿就是向超级终端发送内容

key_number=0xff;

OSTimeDly(30);

//延时100个节拍

}

}

}

/*

********************************************************************* ****************************************

- 函数名称: Task_2

- 函数说明: 系统启动后运行的第2个任务,,点亮LED1熄灭LED2,优先级为5 - 输入参数: pdata

- 输出参数: 无

********************************************************************* ****************************************

*/

void Task_2(void *pdata)

{

INT32U i,flag=0;

for(;;)

{

OSTimeDly(30);

if(flag==0)

{

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

rGPGDAT = rGPGDAT&~(0x3<<8)|(0x1<<8);

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

flag = 1;

}

else

{

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

rGPGDAT = rGPGDAT&~(0x3<<8)|(0x2<<8);

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

flag = 0;

}

OSTimeDly(30);

//延时30个节拍

}

}

/*

********************************************************************* ****************************************

- 函数名称: Task_START

- 函数说明: 系统启动后运行的第一个任务

- 输入参数: pdata

- 输出参数: 无

********************************************************************* ****************************************

*/

void Task_1(void *pdata)

{

INT8U err;

INT8U *Key_P;

INT8U Key_Val;

Timer1_Init();

//打开时钟节拍,让操作系统跑起来

//STaskCreate(Task_2, (void *)0, (OS_STK *)&Stack_Task_2[(STACKSIZE) - 1], 9); //在任务里创建另一个任务

//STaskCreate(Task_3, (void *)0, (OS_STK *)&Stack_Task_3[(STACKSIZE) - 1], 10); //在任务里创建另一个任务

OSTaskCreate(Task_4, (void *)0, (OS_STK *)&Stack_Task_4[(STACKSIZE*3)

- 1], 56); //在任务里创建另一个任务

for(;;)

{

Key_P = OSMboxPend(Key_Mbox, 0, &err); //等待任务间的通信邮箱内的键值指针

Key_Val = *Key_P;

switch(Key_Val)

{

case 0x01 :

GUI_StoreKey(GUI_KEY_1);

break;

case 0x02 :

GUI_StoreKey(GUI_KEY_2);

break;

case 0x0C :

GUI_StoreKey(GUI_KEY_ESCAPE);

break;

case 0x03 :

GUI_StoreKey(GUI_KEY_START);

break;

default:

break;

}

}

}

/*

********************************************************************* ****************************************

- 函数名称: Main(void)

- 函数说明: 系统的主程序入口

- 输入参数: 无

- 输出参数: 无

********************************************************************* ****************************************

*/

void Main(void)

{

Target_Init();

GUI_Init();

//ARMII实验系统的初始化,包括CPU板

OSInit();

// 操作系统的初始化

Key_Mbox = OSMboxCreate((void *)0);

OSTaskCreate(Task_1, (void *)0, (OS_STK *)&Stack_Task_1[STACKSIZE - 1], 5); //创建任务一

OSStart();

}

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

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

目录 摘要 (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

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。

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

嵌入式实验心得体会

嵌入式实验心得体会 嵌入式实验心得体会是计算机专业应该具备的常用知识,以下这篇范文整理个人对嵌入式系统的认识,和进行操作之后的个人体会,对操作的疑难的反思。下面是这篇嵌入式实验心得体会 嵌入式实验心得体会 学期开始,我们开始学习《嵌入式系统及应用》,由于初次接触嵌入式系统,感觉蛮难的,所以收获不是很大,很多的概念都比较模糊,等到学期结束开始做嵌入式课程设计时,真是茫然无从下手,自,从拿到设计主题后,我就从像热锅像上的蚂蚁,一个字“急”。最后实在没有办“法,逼着自己去学法 习,查资料,总算对嵌入式有了资浅层理解。浅 嵌入式系统本本身是一个相对模糊的定义义,一个手持的mp3和一个一pc104的微型工业业控制计算机都可以认为是嵌入是式系统。总体来说,嵌入式系统是“用于控,制,监视或者辅制 助操作机器器和设备的装备”。一个典典型的桌面linux系统统包括3个主要的软件层---linux-内核、cc库和应用程序代码。内核核是唯一可以完全控制硬件的层,内核驱动程序代件表应用程表序与硬件之间进行行会话。内核之上是c 库,,负责把posixapii转换为内核可以识别的形形式,然后调用内核,从应应用程序向内核传递参数。应用程序依靠驱动内核。来完成特定的任务。来在了解了基础知识之后,我了开始进行上机操作,当然开,,其中遇到很多的难题,很多东西都是第一次接触很,又没有别,人在旁边指导操作,完全凭借自己去摸操索索练习。其中的困难可想而知。然而坚持就是胜利而,,牙一咬眼一闭坚持做下去去,而通过本次实验,我感觉收获还是蛮多的。可感能我对于嵌入能式的知识学习的还是不太多,但是这习之外的东西收获颇丰。之

arm嵌入式linux安装课程设计心得

arm嵌入式linux安装课程设计心得 篇一:116709047陈俊松嵌入式Linux课程设计 福建农林大学金山学院电子信息类课程设计 课程名称:设计题目:姓名: 系: 专业:年级:学号:指导教师:职称: 嵌入式linux应用开发课程设计嵌入式linux Web服务器的设计 陈俊松信息与机电工程系电子信息工程2011级116709047 朱仕浪讲师 2014年11 月24 日 福建农林大学金山学院电子信息类 课程设计结果评定 目录 设计的目的

-------------------------------------------------------- 1 设计要求---------------------------------------------------------- 1 主要仪器设备(软硬件环境)---------------------------------------- 1 设计内容---------------------------------------------------------- 1 设计原理---------------------------------------------------- 1 总体方案设计------------------------------------------------- 3 程序设计---------------------------------------------------- 3 程序的调试和运行结果---------------------------------------- 7 总结-------------------------------------------------------------- 8 参考文献---------------------------------------------------------- 9 嵌入式linux Web服务器的设计 1. 设计的目的

嵌入式系统课程设计报告

湖北民族学院 信息工程学院 课程设计报告书 题目 :基于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.

嵌入式系统课程设计

《嵌入式系统设计与应用》课程设计 题目嵌入式系统的实践教学探讨 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 报告中把嵌入式系统课程列为计算机工程学科的领域之一,把软硬件协同设计列为高层次的选修课程。美国科罗拉多州立大学“嵌入式系统认证”课程目录包括实时嵌入式系统导论、嵌入式系统设计和嵌入式系统工程训练课程。美国华盛顿大学嵌入式系统课程名称是嵌入式系统

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

《嵌入式系统》设计报告学生姓名 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 */

基于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文件来编写一个良好的用户交互界面:

嵌入式操作系统课程设计报告

嵌入式系统设计报告 系(院):计算机科学学院 专业班级:计科11201 姓名:微尘 学号: 201203300 指导教师:王剑 设计时间:2015.6.22 - 2015.7.3 设计地点:4教硬件实验室

目录 一、课程设计的目的 (2) 1.1设计目的 (2) 1.2任务介绍 (2) 二、实验及开发环境 (3) 2.1 实验室环境 (3) 2.2 个人计算机课后开发环境 (3) 三、总体设计 (3) 四、详细设计 (4) 4.1 Windows CE系统编译与安装 (4) 4.2 编程驱动LED和数码管显示正确的信息 (7) 4.3 编程驱动电机运转 (8) 4.4 个人设计小程序 (10) 五、课程设计小结 (17) 5.1 设计小结 (17)

一、课程设计的目的 1.1设计目的 本次课程设计的目的是了解嵌入式系统、嵌入式操作系统,掌握基于嵌入式系统的应用开发基本知识。了解嵌入式操作系统Windows CE的特点,Windows CE的主要模块及各自的功能。掌握嵌入式操作系统Windows CE 的配置、编译、移植方法。了解Visual Studio .NET开发环境,掌握基于Windows CE平台的应用程序设计方法。 1.2任务介绍 以下任务需基于实验室的XSBase270开发平台完成 1.嵌入式操作系统Windows CE平台的搭建 使用Platform Builder编译出自己的Windows CE 5.0操作系统,然后根据实验提供的EBOOT引导程序将编译出的Windows CE 5.0系统安装(刷入)到实验平台。 2.IO接口控制-七段数码管的LED显示控制程序 了解Windows CE下I/O访问机制的原理。了解LED和七段数码管的显示和控制原理。掌握Windows CE下访问硬件I/O寄存器的方法。 3.IO接口控制-点击控制设计 了解Window CE下I/O访问机制和原理。掌握Windows CE下访问硬件I/O寄存器的方法,以及使用Visual Studio .NET对硬件设备编程的一般方法。 4.编写实用小程序并在指定的Windows CE平台上运行调试(选做) 这一部分我选择的是在Windows CE平台上使用Visual Studio 2005基于.NET利用C#语言编写一个简易计算器小程序。从而体验对嵌入式设备编程与普通PC编程的区别。

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

成绩学生课程实践能力考查 题目:温度按键设定、显示、报警系统设计 课程名称:嵌入式系统开发专业班级: 学生学号: 学生姓名: 考查地点: 考查时长: 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, 根据上限与下限判断当前温度有没有超出范围。

嵌入式系统课程设计报告材料

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

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

基于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机械臂课程设计报告代码

成绩评定表

课程设计任务书

目录 一、题目分析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 引脚封装引脚图如图所示其引脚功能分述如下:

嵌入式课程设计报告

嵌入式课程设计报告 最近几年,几乎所有的IT 企业对应届毕业生都有抱怨:动手能力太差,编程水平低下。下面和小编一起来看看报告吧! 嵌入式课程设计报告Cortex-M3 是ARM 公司基于ARM V7 架构的新型芯片内核。STM32V100-II 型是英蓓特公司新推出的一款基于ST 意法半导体STM32 系列处理器(Cortex-M3 内核)的全功能评估板。STM103V100-II 评估板有USB,Motor Control,CAN,SD 卡,Smart 卡,UART,Speaker,LCD,LED,BNC,耳塞插孔等丰富的外设,有助于用户轻松开发STM32 的强大功能。STM32 系列使用了ARM 最新的、先进架构Cortex-M3 内核,本文论述了在Keil Realview 开发环境上开发基于汇编语言的LED 控制程序,基于对STM32 的GPIO 寄存器写值配置思想,控制EduKit-M3 实验平台的发光二极管LED1、LED2、LED3、LED4,使它们有规律地点亮。 、设计需求 Keil Realview 开发环境上,全部采用汇编语言编程,实现对EduKit-M3 实验平台的发光二极管LED1、LED2、LED3、LED4 的亮灭控制,使它们有规律地点亮。这里采用例程提供的顺序点亮方式,按照LED1 亮LED2 亮LED3 亮LED4 亮,如此反复,要求每个LED 亮灭之间延

时一段时间,以增强可观性。需要说明的是,这仅仅作为程序控制LED 的一种控制方式,基于点亮LED 的控制原理,可以编程实现各种显示LED 的亮灭模式,并提供一种通用的控制方法,要求程序可读性强,易于修改。 、设计原理 STM32 通用GPIO 端口概述STM32F10x 处理器上共有7 个I/O 端口:A、B、C、D、E、F、G,每个16 个管脚每组端口每组端口有以下寄存器:,32 位配置寄存器:GPIOx_CRL、GPIOx_CRH 32 为数据寄存器:GPIOx_IDR、GPIOx_ODR 32 位置位/复位寄存器:GPIOx_BSRR 16 位复位寄存器:GPIOx_BRR 32 为锁定寄存器:GPIOx_LCKR I/O 口通用输入、输出端口配置为输入时,每个APB2 时钟周期将端口数据送输入寄存器(GPIOx_IDR),在输入模式下,输出是断开的。输出模式时:写到输出寄存器(GPIOx_ODR) 的值被传给对应的I/O 引脚。在输出模式下,输入是允许的程序设计原理EduKit-M3 实验平台上,通过写值配置端口数据输出寄存器GPIOC_ODR值,可以实现对四个LED 的亮灭控制,因为C 口位和四个LED 灯连通。而这里主要是通过对时钟控制寄存器以及端口C 的各配置寄存器和输出寄存器写值,以达到配置端口,控制LED 的目的。汇编语言与C 语言相比,要求更加贴近硬件,了解M3 内核的内部结构和

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

学生课程实践能力考查 题目:温度按键设定、显示、报警系统设计 课程名称:嵌入式系统开发专业班级: 学生学号:学生姓名: 考查地点:考查时长: 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显示实时温度、上下限等信息。

相关文档
最新文档