ARM课程设计报告GPIO—流水灯
STM32实验-GPIO输出-流水灯实验报告

课程实验报告学院:专业: 2018年10月18日姓名学号班级指导老师课程名称嵌入式系统原理与应用实验成绩实验名称GPIO输出-流水灯1.实验目的通过一个经典的跑马灯程序,了解 STM32F1的IO口作为输出使用的方法。
通过代码控制开发板上的4个 LED灯交替闪烁,实现类似跑马灯的效果。
2.实验内容工程文件建立、程序的调试,编译、jlink驱动的安装与配置、程序下载、实验结果验证。
3.实验环境Windouws10 Keil uVision5 4.实验方法和步骤(含设计)(1)实验硬件连接图四个led灯如图连接到GPIO的6~9引脚上。
(2)软件分析使用到的GPIO端口需配置为输出模式,使用推挽(PP)模式输出,IO口速度为 50MHz。
(3)实验步骤①建立工程文件:导入程序运行需要的库,加入主程序,调试运行环境,使程序可以成功被编译和运行且没有错误和警告。
②安装JLINK驱动程序,点击下载按钮将程序烧写进开发板中。
③检查led灯是否逐一顺序点亮,能够通过调整程序使点亮顺序改变。
(4)原函数5.程序及测试结果6.实验分析与体会如果4个LED灯是与A口的PA1、PA2、PA3、PA4相连,将led.c文件中的“GPIOC”改为“GPIOA”,并将Pin_X改为对应的1~4脚。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9; GPIO_Init(GPIOC, &GPIO_InitStructure);GPIO_SetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9);改为RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4; GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_SetBits(GPIOA,GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4);实验日期: 2018 年 10 月 18 日成绩评定教师签名:年月日Welcome To Download欢迎您的下载,资料仅供参考!。
ARM课程设计报告GPIO—流水灯

};
int main (void)
{
uint8 i;
//PINSEL1 = 0x00000000;//设置管脚连接GPIO
PINSEL2 = PINSEL2 & (~0x08);// P1[25:16]连接GPIO
图2
流水灯程序:
/
#include "config.h"
/* LED8~LED1 8个LED分别由P1.25~P1.18控制*/
const uint32 LEDS8 = (0xFF << 18);// P1[25:18]控制LED8~LED1,低电平点亮
/*
*********************************************************************************************************
SSPCR1 = (0x00 << 3) | // SOD从机输出禁能,1=禁止,0=允许
(0x00 << 2) | // MS主从选择,0=主机,1=从机
(0x01 << 1) | // SSE SSP使能,1=允许SSP与其它设备通信
(0x00 << 0); // LBM回写模式
SSPCPSR = 0x52; // PCLK分频值
一、设计目的………………………………………………3
二、设计原理
1、GPIO—流水灯……………………………………3
2、SPI…………………………………………………7
ARM7流水灯课程设计

ARM7流水灯课程设计一、课程目标知识目标:1. 学生理解ARM7处理器的基本结构和工作原理,掌握流水灯程序设计所需的基础知识。
2. 学生掌握C语言编程的基本语法和流程控制,能运用所学知识编写ARM7流水灯程序。
3. 学生了解嵌入式系统开发流程,熟悉Keil MDK集成开发环境和调试方法。
技能目标:1. 学生能独立设计并实现基于ARM7处理器的流水灯程序,具备一定的编程实践能力。
2. 学生通过课程学习,培养解决问题的能力,提高逻辑思维和动手实践能力。
3. 学生能够运用所学知识,对实际嵌入式项目进行需求分析和方案设计。
情感态度价值观目标:1. 培养学生对嵌入式系统开发的兴趣,激发学习热情,树立正确的学习态度。
2. 通过团队合作,培养学生的沟通与协作能力,提高团队意识。
3. 引导学生关注我国嵌入式技术的发展,增强民族自豪感,培养爱国主义情怀。
课程性质:本课程为实践性较强的课程,旨在让学生通过动手实践,掌握嵌入式系统编程和开发方法。
学生特点:学生已具备一定的C语言基础和硬件知识,具有较强的学习能力和动手能力。
教学要求:结合课程性质和学生特点,注重理论与实践相结合,强调动手实践,提高学生的编程能力和实际操作技能。
将课程目标分解为具体的学习成果,以便进行教学设计和评估。
二、教学内容1. ARM7处理器基本原理:介绍ARM7处理器的内部结构、工作原理,重点讲解其指令集和编程模型。
相关教材章节:第1章 ARM处理器概述,第2章 ARM7处理器架构。
2. C语言编程基础:复习C语言基本语法,强调与ARM7编程相关的重要语法点和编程规范。
相关教材章节:第3章 C语言基础,第4章 C语言控制语句。
3. 嵌入式系统开发环境:介绍Keil MDK集成开发环境的使用方法,包括工程创建、代码编写、编译、下载和调试等。
相关教材章节:第5章 嵌入式系统开发工具。
4. 流水灯程序设计:讲解流水灯程序的原理和设计方法,引导学生通过实践掌握嵌入式系统编程。
单片机流水灯实验报告

单片机流水灯实验报告
实验目的:
通过编程实现单片机控制的流水灯电路的设计与实现,熟悉单片机的输入输出功能和简单的控制逻辑。
实验原理:
流水灯是一种常见的LED灯控制电路,通过依次点亮多个LED灯,从而形成“流水”的效果。
单片机作为控制中心,根据程序设计的指令,通过I/0口控制LED灯的状态。
实验材料:
1. STM32F103C8T6 ARM Cortex-M3开发板
2. 杜邦线
3. LED灯
4. 220 Ω电阻
实验步骤:
1. 将STM32F103C8T6开发板与电脑连接,打开开发板软件。
2. 将LED灯分别连接到开发板的引脚PA0-PA7。
3. 在开发板软件中新建一个工程,选择合适的模板,例如“BlinkLed”模板。
4. 在程序中编写控制流水灯的代码,控制LED灯的点亮和熄灭。
5. 通过编译、下载和运行,将程序烧录到STM32F103C8T6开发板中。
6. 接通电源,观察LED灯的闪烁情况,确认流水灯控制电路的正常工作。
实验结果与分析:
经过实验,我们成功设计和实现了单片机控制的流水灯电路。
LED灯按照预定的顺序依次点亮和熄灭,形成了流水灯的效果。
调整程序中的控制逻辑,可以改变流水的速度和方向,实现不同的灯光效果。
实验总结:
通过这次实验,我们深入了解了单片机的输入输出功能和简单的控制逻辑。
通过编写程序,实现了流水灯的控制,加深了对单片机的理解和应用。
在实验过程中,我们还学会了使用开发板软件进行工程的创建、编译、下载和调试操作,提高了工程能力和实践能力。
单片机实训报告_流水灯

一、实验目的1. 掌握单片机的基本原理和操作方法。
2. 熟悉单片机编程环境Keil的使用。
3. 熟悉LED流水灯的原理和编程方法。
4. 培养动手实践能力和团队协作精神。
二、实验原理1. 单片机(Microcontroller Unit,MCU)是一种具有中央处理器(CPU)、存储器(RAM、ROM)和输入输出接口(I/O)等功能的集成电子电路。
它广泛应用于各种电子设备中,如家用电器、工业控制、汽车电子等。
2. LED(Light Emitting Diode,发光二极管)是一种半导体器件,具有单向导电性。
当电流通过LED时,会发出光亮。
3. 流水灯是一种通过控制LED灯的亮灭,模拟流水效果的电子装置。
在单片机控制下,可以实现不同形式的流水灯效果。
三、实验设备1. 单片机实验板(如STC89C52单片机实验板)2. LED灯若干3. 跳线若干4. 电阻若干5. 电源(5V)6. Keil软件四、实验步骤1. 硬件连接(1)将单片机的P1.0-P1.7引脚与LED灯的正极相连,负极接地。
(2)将电阻串联在LED灯和单片机引脚之间,起到限流作用。
(3)将单片机的VCC和GND分别连接到5V电源的正负极。
2. 软件编写(1)在Keil软件中创建一个新的项目,选择相应的单片机型号。
(2)编写主函数main(),实现流水灯的编程。
(3)初始化单片机的P1口为输出模式。
(4)定义延时函数Delay(),实现流水灯的延时效果。
(5)在主循环中,通过改变P1口的高低电平,控制LED灯的亮灭,实现流水灯效果。
(6)保存并编译程序。
3. 程序调试(1)将编译后的程序下载到单片机实验板中。
(2)观察LED灯的流水效果,检查程序是否正确。
(3)如有错误,修改程序并重新编译、下载。
五、实验结果与分析1. 实验结果通过实验,成功实现了LED流水灯效果,实现了不同形式的流水灯效果。
2. 实验分析(1)在实验过程中,学习了单片机的基本原理和操作方法,掌握了Keil软件的使用。
单片机课程设计报告流水灯(WORD档)

XX工程学院单片机课程设计报告题目:流水灯学生姓名:学号:系部名称:职业技术学院班级:机电一体化Z11-1 指导教师:目录摘要 (3)一、课程设计题目 (4)二、设计任务及要求 (4)三、实验方案 (4)四、流程图 (4)五、硬件电路 (6)六、软件设计 (6)1 主体程序 (6)2 键扫描子程序 (6)3 闪烁控制程序 (6)4 延时子程序 (6)5 源程序设计 (7)七、功能调试 (12)八、设计总结 (12)九、参考文献 (13)【摘要】单片机课程设计主要是为了让我们增进对单片机芯片电路的感性认识,加深对理论方面的理解。
了解软硬件的有关知识,并掌握软件设计过程、方法及实现,为以后设计和实现应用系统打下良好基础。
另外,通过简单课题的设计练习,使我们了解必须提交的各项工程文件,达到巩固、充实和综合运用所学知识解决实际问题的目的。
一、课程设计题目:流水灯二、设计任务及要求:任务:完成对接在P1,P3口的发光二极管闪亮控制程序的设计1.用程序延时方法让P1的一个LED小灯每隔1S交替闪亮2.用程序延时方法让P1的8个LED小灯循环(每个亮50MS)闪亮3.用程序延时方法让P1的8个LED小灯追逐闪亮(50MS间隔变化)4.用程序延时方法让P1、P3的16个LED小灯循环(每个亮50MS)闪亮要求:1. 根据硬件电路原理,画出接线2. 设计出相应的软件程序三、实验方案:方案:单片机采用40脚的89C52标准双列直插系列,有4个标准输入/输出端口共32位控制端口。
本次设计采用并行口低电平(吸电流)直接驱动LED发光管发光形式,选择了P1和P3口的16个端口进行模拟LED小灯控制,如要多些小灯单元可再将P2口、P0口及其他空余端口用LED小灯驱动控制。
因系统功能要求能控制灯亮的方式,在P0.0—P0.3端口接了4个按键小开关,每个小开关可控制一种亮灯方式。
在端口较紧张的情况下,LED小灯驱动也可用串入/并出移位寄存器(如74HC595),单片机用并行移位方式进行驱动。
arm实验报告——流水灯

实验六 ARM环境下汇编语言与C语言实验一、实验目的1 掌握基本的ARM汇编语言和C语言编程方法2 掌握ADS下C语言和汇编语言互相调用的方法3 深入理解ARM开发环境的体系结构4 初步掌握S3C2410的I/O口德操作方法5 巩固使用AXD和Multi-ICE调试的方法二、实验内容1 单独使用ARM汇编语言编写一个程序,在AXD下调试,观察结果。
2 采用内嵌汇编和C完成一个工程在AXD下调试,观察结果。
3 用C语言实现跑马灯功能。
三、实验设备1 硬件:DM2410B+实验系统PC机JTAG仿真器串口线2 软件:PC机操作系统ARM Developer Suiter v1.2Multi-ICE v2.2.5(Build1319)DNW2410(或超级终端)四、实验说明汇编语言程序实验程序程序代码如下:#include <string.h>#include "2410addr.h"#include "2410lib.h"//================================ //名称:Led_Test//功能:LED循环显示//参数: void//返回值: void//================================ void Led_Test(){unsigned long LED;Uart_Printf("Led_Test.\n");//GPBCON GPB10 [21:20] = 01 : Output//GPBCON GPB10 [19:18] = 01 : Output//GPBCON GPB10 [17:16] = 01 : Output//GPBCON GPB10 [15:14] = 01 : OutputrGPBCON &= (~(0x3<<20));rGPBCON |= ((0x1<<20));rGPBCON &= (~(0x3<<18));rGPBCON |= ((0x1<<18));rGPBCON &= (~(0x3<<16));rGPBCON |= ((0x1<<16));rGPBCON &= (~(0x3<<14));rGPBCON |= ((0x1<<14));//GPBDAT GPB[10:0] [10:0] : Output DatarGPBDAT = 0xf7f;Delay(100);Uart_Printf("PRESS ANY KEY TO STOP.");while (!Uart_GetKey()){LED = rGPBDAT;LED = (LED<<1); //下一个灯亮rGPBDAT = LED;Delay(200);if(!(rGPBDAT & 0x400)) //保证第四个LED点亮后重新点亮第一个LED;rGPBDAT=0xf7f;Delay(200);}Uart_Printf("\nTEST FINISHED.");}//============================//名称:delay//功能:延迟指定时间//参数: x//返回值: void//============================void delay(unsigned int x){unsigned int i,j,k;for(i=0;i<=x;i++)for(j=0;j<0xff;j++)for(k=0;k<0xff;k++);}六实验步骤第一大部分(目标机的连接):把开发板电源接口、Muilti-ICE Embeded接口连接好,如下图,然后打开开发板电源。
STM32 ARM C语言编程之流水灯

#include "stm32f10x.h"//头文件包含将stm32的函数库stm32f10x.h包进来#define RCC_GPIO_LED RCC_APB2Periph_GPIOF//宏定义LED使用的GPIO时钟#define LEDn 4//宏定义LED数量#define GPIO_LED GPIOF//宏定义LED灯所使用的gpio组#define DS1_PIN GPIO_Pin_6//宏定义LED1所使用的gpio管脚#define DS2_PIN GPIO_Pin_7//宏定义LED2所使用的gpio管脚#define DS3_PIN GPIO_Pin_8//宏定义LED3所使用的gpio管脚#define DS4_PIN GPIO_Pin_9//宏定义LED4所使用的gpio管脚GPIO_InitTypeDef GPIO_InitStructure;//gpio口初始化结构体ErrorStatus HSEStartUpStatus;// (等待时钟的稳定?)(使强制执行c规则)u8 count=0;//定义8位无符号数据变量void RCC_Configuration(void);//初始化stm32系统时钟void NVIC_Configuration(void);//定义中断管理初始化函数void Delay(vu32 nCount);//声明延时函数void Turn_On_LED(u8 LED_NUM);//LED控制函数int main(void){//配置GPIO口管脚模式RCC_APB2PeriphClockCmd(RCC_GPIO_LED, ENABLE);//使能LED灯所使用的时钟GPIO_InitStructure.GPIO_Pin = DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN;//设定LED所使用的管脚,使之有效GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//设GPIO口的输出模式为推免模式GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//设置GPIO口的输出时钟为50MHzGPIO_Init(GPIO_LED, &GPIO_InitStructure); //初始化LED灯所使用的管脚GPIO_SetBits(GPIO_LED,DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN);//置所有控制LED 的GPIO口管脚为高电平,关闭所有LED灯while(1){GPIO_SetBits(GPIO_LED,DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN);//置所有控制LED的GPIO口管脚为高电平,关闭所有LED灯Turn_On_LED(count%4);//点亮一个LED灯count++;Delay(0x2FFFFF);}}void Turn_On_LED(u8 LED_NUM){switch(LED_NUM){case 0:GPIO_ResetBits(GPIO_LED,DS1_PIN); //点亮DS1灯break;case 1:GPIO_ResetBits(GPIO_LED,DS2_PIN); //点亮DS2灯break;case 2:GPIO_ResetBits(GPIO_LED,DS3_PIN); //点亮DS3灯break;case 3:GPIO_ResetBits(GPIO_LED,DS4_PIN); //点亮DS4灯break;default:GPIO_ResetBits(GPIO_LED,DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN); //点亮所有的灯break;}}void Delay(vu32 nCount){while(nCount--);}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、设计原理
1、GPIO—流水灯……………………………………3
2、SPI…………………………………………………7
3、定时器………………………………………………10
4、实时时钟……………………………………………12
三、所用仪器…………………………………………………18
七、参考文献……………………………………………………29
一、设计目的
1、根据要求,复习巩固ARM的基础知识。
2、掌握ARM系统的设计方法,特别是熟悉模块化的设计思想。
3、熟练掌握ARM软件和2131开发板的使用。
4、提高综合运用所学的理论知识独立分析和解决问题的能力;
二、设计原理
1、GPIO—流水灯
四、EasyARM2131开发套件功能介绍………………………18
五、设计内容:万年历-定时器-流水灯-SPI
1、功能描述………………………………………………21
2、流程图…………………………………………………22
3、程序设计………………………………………………22
六、心得体会…………………………序:
/
#include "config.h"
/* LED8~LED1 8个LED分别由P1.25~P1.18控制*/
const uint32 LEDS8 = (0xFF << 18);// P1[25:18]控制LED8~LED1,低电平点亮
/*
*********************************************************************************************************
*/
/*流水灯花样,低电平点亮,注意调用时候用了取反操作*/
const uint32 LED_TBL[] = {
0x00, 0xFF,//全部熄灭后,再全部点亮
0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,//依次逐个点亮
0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF,//依次逐个叠加
0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01,//依次逐个递减
0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81,//两个靠拢后分开
0xA0, 0x50, 0x7e, 0x28, 0x14, 0x0A, 0x05, 0x82,
所有I/O口在复位后默认为输入。
应用:
通用I/O口
驱动LED或其它指示器
控制片外器件
检测数字输入
(3)GPIO引脚描述
GPIO管脚描述见表4.1。
表4.1 GPIO管脚描述
管脚连接设置
将相应管脚的PINSELn位设置为00,即选择GPIO功能;大部分管脚复位后默认为GPIO。
3、GPIO寄存器
LPC2138有2个32位的通用I/O口。PORT0使用了30个管脚,PORT1有多达16个管脚可用GPIO功能。PORT0和PORT1由2组(4个)寄存器控制,如表4.2所示。
当管脚选择GPIO功能时,有IOSET、IOCLR和IOPIN 3个寄存器用于控制GPIO的使用。IOSET用于口线置位,而IOCLR则用于口线清零,IOPIN则反映当前IO口的状态,读回IOSET则反映当前IO口设定状态。
(2)GPIO的特性和应用
特性:
单个位的方向控制;
单独控制输出的置位和清零;
IO1DIR = LEDS8;//设置LED1控制口为输出
表4.2 GPIO寄存器映射
4. GPIO输出实验——流水灯实验
EasyARM2131开发板上的8路LED(LED8~LED1)分别可选择P1[25:18]进行控制,电路如图1所示。
图1
当跳线JP12全部选择LED8~LED1后,P1.25~P1.18分别控制这8路LED,就可以进行流水灯实验。流水灯显示花样可以通过数组人为定义,亦可通过一定的算法计算,流程图如图2所示。
**函数名称:DelayNS()
**函数功能:长软件延时
**入口参数:dly延时参数,值越大,延时越久
**出口参数:无
*********************************************************************************************************
0x81, 0xC3, 0xE7, 0xFF, 0xFF, 0xE7, 0xC3, 0x81//从两边叠加后递减
};
int main (void)
{
uint8 i;
//PINSEL1 = 0x00000000;//设置管脚连接GPIO
PINSEL2 = PINSEL2 & (~0x08);// P1[25:16]连接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进行输入/输出属性设置后才能操作。
*/
void DelayNS (uint32 dly)
{
uint32 i;
for ( ; dly>0; dly--)
for (i=0; i<100000; i++);
}
/*
*********************************************************************************************************
**函数名称:main()
**函数功能:流水灯显示实验。
**调试说明:连接跳线JP12至LED8~LED1。
*********************************************************************************************************