gpio控制led实验报告6篇

时间:2022-08-21 10:20:05 来源:网友投稿

gpio控制led实验报告6篇gpio控制led实验报告 GPIO实验【实验内容】 1、LED闪烁 2、LED流水灯 3、继电器控制【需要了解的知识】 1、GPIO设定 2、输入与输出及其处理下面是小编为大家整理的gpio控制led实验报告6篇,供大家参考。

gpio控制led实验报告6篇

篇一:gpio控制led实验报告

IO 实验 【实验内容】

 1、 LED 闪烁

  2、 LED 流水灯

  3、 继电器控制 【需要了解的知识】

 1、 GPIO 设定

  2、 输入与输出及其处理 【实验预习】

 仔细预读实验指导电子文档的实验一到三及其前面的实验流程 【实验设备】

  Keil C51 软件、 ICE52 仿真驱动、 MEFlash 编程软件、 USB 驱动程序

 【实验过程】

 实验一

 LED 闪烁 实验任务:

  1)

 P0、 P2 端口的 LED 亮 300ms, 灭 300ms, 如此循环

 2)

 发光二极管在不停地一亮一灭, 时间间隔为 300ms, 形成闪烁效果 实验步骤:

  1)

 首先安装好相应的软件和驱动程序

 2)

 连接好 ME850:

 将随机 USB 线的扁头端连接至计算机的 USB 接口, 方头端连接到 ME850 的 USB 插座上

 3)

 将电源开关 SW1 拨到 USB 端, 电源指示灯“PWR” 亮, 表明已经正常接通电源可以做实验了

  4)

 将 JP1(MCU 类型选择跳线, 位于锁紧插座的手柄旁边)

 的跳线帽短接在“51” 的位置, JP9 的跳线帽全部插上;

  5)

 将 AT89S52 单片机芯片放入 ME850 的锁紧插座

 6)

 驱动 MEFlash 软件, 正常打开后软件右下角会显示实验仪的型号和连接状态

 7)

 在软件中点击“器件” 按钮, 选择型号“AT89S52”

  8)

 在软件中点击“加载” 按钮, 定位到产品光盘Emamples_A51\EX1_LED\LED. hex, 点击“打开” , 弹出“加载文件” 对话框, 按默认点击确定即可

 9)

 在软件中点击“擦除” 按钮, 再点击“编程” 按钮, 编辑完毕, 即可看到 16 个发光二极管都在闪烁了 汇编源程序:

  ORG

  0000H

  ; 初始地址为 0000H

  AJMP

 MAIN

  ; 跳转到 MAIN

 ORG

  0050H

  ; 初始地址为 0050H MAIN:

 MOV

 P0, #OFFH

  ; 初始化 P0

 MOV

 P2, #OFFH

  ; 初始化 P2 LOOP:

 MOV

  P0, #O0H

  ; 为 P0 赋值 0

 MOV

  P2, #OOH

  ; 为 P2 赋值 0

 ACALL

  DELAY

  ; 调用子程序 DELAY

 MOV

 P0, #OFFH

  ; 为 P0 赋值

 MOV

 P2, #OFFH

  ; 为 P2 赋值

 ACALL

 DELAY

 ; 调用子程序 DELAY

 AJMP

  LOOP

  ; 跳转到 LOOP DELAY:

  MOV

  R5, #3

  ; 将 3 赋给寄存器 R5 DEL1:

  MOV

  R6, #200

  ; 将 200 赋给寄存器 R6

 DEL2:

  MOV

 R7, #230

 ; 将 230 赋给寄存器 R7 DEL3:

  DJNZ

  R7 , DEL3

 ; 第一层循环

 DJNZ

  R6, DEL2

 ; 第二层循环

 DJNZ

  R5, DEL1

 ; 第三层循环

  RET

 ; 返回

 END

 ; 结束 试验流程图:

  实验结果:

  1)

 P0、 P2 端口的 LED 亮 300ms, 灭 300ms, 如此循环

 2)

 发光二极管在不停地一亮一灭, 时间间隔为 300ms, 形成闪烁效果 P0、 P2 端口初始化P0、 P2 端口送低电平所有 LED 点亮 延时 300ms P0、 P2 端口送高电平所有 LED 熄灭 延时 300ms

 问题解决及讨论:

  1)

 JP24 没有切换到“OFF” 端, 结果 P0 口的 8 个 LED 不闪烁。

 原因是被1602LED 干扰

 2)

 没有正确加载烧写文件。

 必须是先选芯片在加载文件

 3)

 芯片型号没有选择正确。

 可重新选择型号

 4)

 没有放置芯片。

 先放芯片, 再压下锁紧座手柄锁紧

 5)

 芯片损坏。

 换新的芯片重试 实验二

 流水灯 实验任务:

 P0、 P2 端口的 LED 先从从右至左方向依次点亮, 再从左至右方向依次点亮, 如此循环形成流水灯效果 实验步骤:

 1、 首先在硬盘上建立一个文件夹;

 2、 启动 Keil C51 软件;

 3、 执行 Keil C51 软件的菜单“Project| New Project……” , 弹出一个名为“Create New Project” 的对话框。

 输入工程文件名, 选择保存路径 uv2 后缀,点击“保存” 按钮;

 4、 紧接着弹出“Options for Target‘Target 1’”, 为刚才的项目选择 ATMEL的 AT89S52 的 CPU。

 选择之后, 点击“确定” 按钮;

 5、 接下来弹出一个对话框提示你是否要把标准 8051 的启动代码添加项目中去, 此时, 点击“否” 按钮;

 6、 执行 菜单“File| New……”, 出现一个名为“Text1” 的文档。

 接着执行菜单“File| Save” 弹出一个名为“Save As” 的对话框, 将文件名改为“. asm”后缀, 然后保存;

 7、 添加源程序文件到工程中, 一个空的源程序文件建成。

 单击 Keil C51 软件左边项目工作窗口“Target1” 上的“+”, 将其展开。

 然后右击 “Source Group1”文件夹弹出下拉菜单, 单击其中的“Add Files to Group‘Source Group1’” 项;

 8 、在 弹 出 的 对 话 框 中 先 选 择 文 件 类 型 为 “ Asm Source file(*. s*; *. src; *. a*)” , 这时对话框内创建的空的源程序文件已经出现在项目工作窗口的“Source Group1” 文件夹中;

 输入源程序代码;

 9、 点击工具栏“Options for target” 按钮, 弹出一个对话框, 定义“Xtal”为 11. 0592. 下面依序是存储模式、 程序空间大小等设置, 均用默认值即可。

 点击 Output 选项, 选中“Create Hex File”,

 10、 单击编译按钮, 编译当前源程序;

 11、 运行, 查看效果。

 汇编源程序:

 ORG

  0000H

  ; 初始化地址

 AJMP

  MAIN

  ; 跳转到 MAIN

 ORG

 0050H

 ; 初始化地址 MAIN:

  MOV

 P0, #0FFH

  ; 端口初始化

  MOV

  P2, #0FFH

  ; 端口初始化 LOOP:

  MOV

 A, #0FEH

  ; 复制初始

  MOV

 R0, #08H

  ; 移动次数 LOOPL:

 ; 左移显示

  MOV

 P0, A

 ; 送数显式

  MOV

  P2, A

 ; 送数显式

  RL

 A

  ; 左移一位

  ACALL

 DELAY

  ; 延时 300ms

  DJNZ

 R0, LOOPL

 ; 是否左移 8 次

 MOV

  P0, #0FFH

 ; 关闭显示

  MOV

  P2, #0FFH

 ; 关闭显示

  ACALL

 DELAY

  ; 延时 300ms

 MOV

 A, #7FH

 ; 赋初始值

  MOV

  R0, #08H

 ; 移动次数 LOOPR:

 ; 右移显示

 MOV

 P0, A

  ; 送数显式

  MOV

  P2, A

  ; 送数显式

  RR

  A

 ; 右移一位

 ACALL

 DELAY

  ; 延时 300ms

  DJNZ

 R0, LOOPR ; 是否右移 8 次

 MOV

 P0, #0FFH

 ; 关闭显示

  MOV

  P2, #0FFH ; 关闭显示

  ACALL

  DELAY

 ; 延时 300ms

  AJMP

  LOOP

 ; 跳转到 LOOP DELAY:

 MOV

 R5, #3

  ; 将 3 赋给寄存器 R5 DEL1:

 MOV

 R6, #200

  ; 将 3 赋给寄存器 R5 DEL2:

 MOV

 R7, #230

  ; 将 3 赋给寄存器 R5 DEL3:

 DJNZ

 R7, DEL3

 ; 第一层循环

 DJNZ

 R6, DEL2

  ; 第二层循环

 DJNZ

 R5, DEL1

  ; 第三层循环

 RET

 ; 结束 试验流程图:

  实验结果:

 P0、 P2 端口的 LED 先从从右至左方向依次点亮, 再从左至右方向依次点亮, 如此循环形成流水灯效果 问题解决及讨论:

  1)

 没有正确加载烧写文件。

 必须是先选芯片在加载文件

 2)

 芯片型号没有选择正确。

 可重新选择型号

 3)

 没有放置芯片。

 先放芯片, 再压下锁紧座手柄锁紧

 4)

 芯片损坏。

 换新的芯片重试

 5)

 JP24 没有切换到“OFF” 端, 结果 P0 口的 8 个 LED 不闪烁。

 原因是被1602LED 干扰

 实验三

 继电器控制 实验任务:

  用按键控制继电器的工作状态:

  K1-吸和键, K2-释放键

 按 K1 键, 继电器吸合, DL11 灯亮。

  按 K2 键, 继电器释放, DL11 灯灭。

 实验步骤:

 1、 首先在硬盘上建立一个文件夹;

 2、 启动 Keil C51 软件;

 3、 执行 Keil C51 软件的菜单“Project| New Project……” , 弹出一个名为“Create New Project” 的对话框。

 输入工程文件名, 选择保存路径 uv2 后缀,点击“保存” 按钮;

 4、 紧接着弹出“Options for Target‘Target 1’”, 为刚才的项目选择 ATMEL的 AT89S52 的 CPU。

 选择之后, 点击“确定” 按钮;

  5、 接下来弹出一个对话框提示你是否要把标准 8051 的启动代码添加项目中去, 此时, 点击“否” 按钮;

 6、 执行 菜单“File| New……”, 出现一个名为“Text1” 的文档。

 接着执行菜单“File| Save” 弹出一个名为“Save As” 的对话框, 将文件名改为“. asm”后缀, 然后保存;

 7、 添加源程序文件到工程中, 一个空的源程序文件建成。

 单击 Keil C51 软件左边项目工作窗口“Target1” 上的“+”, 将其展开。

 然后右击 “Source Group1”文件夹弹出下拉菜单, 单击其中的“Add Files to Group‘Source Group1’” 项;

 8 、在 弹 出 的 对 话 框 中 先 选 择 文 件 类 型 为 “ Asm Source file(*. s*; *. src; *. a*)” , 这时对话框内创建的空的源程序文件已经出现在项目工作窗口的“Source Group1” 文件夹中;

 输入源程序代码;

 9、 点击工具栏“Options for target” 按钮, 弹出一个对话框, 定义“Xtal”为 11. 0592. 下面依序是存储模式、 程序空间大小等设置, 均用默认值即可。

 点击 Output 选项, 选中“Create Hex File”,

 10、 单击编译按钮, 编译当前源程序;

 11、 运行, 查看效果。

 汇编源程序:

 KEY_NEW

  EQU

 40H

 ; 为标号 KEY_NEW 赋值为 40H

 KEY_OLD

  EQU

 41H

 ; 为标号 KEY_OLD 赋值为 41H

  K1

  BIT

 P1. 4

  K2

  BIT

 P1. 5

  RELAY

 BIT

 P3. 6

 ; 继电器控制线

 ORG

  0000H

 ; 初始化地址

 AJMP

  MAIN

 ; 跳转到 MAIN

 ORG

 0050H

  ; 地址初始化 MAIN:

 MOV

  SP, #60H

  ; 设置栈指针

 MOV

  P0, #0FFH

 ; 将 P0 端口初始化为高电平

 MOV

  P2, #0FFH

  ; 将 P2 端口初始化为高电平

 MOV

  KEY_OLD, #03H

 ; 初始键比较值 KEY_CHK:

  ; 循环检测按键是否按下

 ACALL

 SCAN_KEY

 ; 输入按键状态

 XRL

 A, KEY_OLD

 ; 查按键是否改变

 JZ

  KEY_CHK

  ; 若无键被按则跳转到 KEY_CHK

 ACALL

 DELAY

  ; 延时去抖

  ACALL

 SCAN_KEY

 ; 再次检查按键值

  XRL

 A, KEY_OLD

 ; 寄存器 KEY_OLD 异或到累加器 A

  JZ

  KEY_CHK

 ; 累加器为零则跳转到 KEY_CHK

 MOV

 KEY_OLD, KEY_NEW ; 保存按键状态

  ACALL

 PROC_KEY

 ; 绝对调用子程序 PROC_KEY

  AJMP

 KEY_CHK

 ; 绝对跳转到 KEY_CHK SCAN_KEY:

 CLR

  A

  ; 累加器 A 清零

 MOV

  C, K1

  ; 将 K1 的值赋给 C

 MOV

  ACC. 0, C

 ; 将 C 的值赋给累加器 A

  MOV

  C, K2

  ; 将 K2 的值赋给 C

 MOV

  ACC. 1, C

 ; 将 C 的值赋给 A

 MOV

  KEY_NEW, A ; 无键按下 KEY_NEW

 RET

 ; 返回 PROC_KEY:

 MOV

 A, KEY_NEW ; 将 KEY_NEW 的值赋给累加器 A

  JNB

 ACC. 0, PROC_K1 ; K1 键按下

  JNB

 ACC. 1, PROC_K2 ; K2 键按下

  RET

  ; 返回 PROC_K1:

  ; 按键 K1 处理程序

  CLR

 RELAY

 ; 继电器吸合

 RET

  ; 返回 PROC_K2:

  ; 按键 K2 处理程序

  SETB

 RELAY

  ; 继电器释放

 RET

  ; 返回 DELAY:

 ; 延时子程序 R6、 R7 控制循环

  MOV

 R6, #10

  ; R6 赋值为 10 DEL1:

 MOV

 R7, #185

  ; R7 赋值为 185 DEL2:

  NOP

 ; 空操作, 延迟一个机器周期

  NOP

  NOP

  DJNZ

 R7, DEL2

  ; 第一层循环

  DJNZ

 R6, DEL1

  ; 第二层循环

  RET

  ; 返回

  END

  ; 结束

 试验流程图:

  实验结果:

 用按键控制继电器的工作状态:

  K1-吸和键, K2-释放键

 按 K1 键, 继电器吸合, DL11 灯亮。

  按 K2 键, 继电器释放, DL11 灯灭。

 问题解决及讨论:

  1)

 没有正确加载烧写文件。

 必须是先选芯片在加载文件

 2)

 芯片型号没有选择正确。

 可重新选择型号

 3)

 没有放置芯片。

 先放芯片, 再压下锁紧座手柄锁紧

 4)

 芯片损坏。

 换新的芯片重试

 5)

 JP24 没有切换到“OFF” 端, 结果 P0 口的 8 个 LED 不闪烁。

 原因是被1602LED 干扰

篇二:gpio控制led实验报告

 通用 O GPIO 的使用

 (4 4 学时)

 一、实验目的

 1、掌握 C51 芯片 I/O 接口的性能特点。

 2、掌握 STM32 芯片 I/O 接口的性能特点。

 3、对于 C51 芯片,使用 P0、P1 口做 I/O 接口,实现输入和

 输出控制。

 4、对于 STM32 芯片掌握 GPIO 的功能设定方法,使用

  GPIO 完成输入与输出的电路驱动 二、实验内容 1.

 P1 口做为输出口控制“单只数码管循环显示 0~9”。

 2. 编写一段程序,并修改硬件电路,用 P1.0-P1.6 口控制LED,P1.7 控制 LED 的亮与灭(P1.7 接按键,按下时 LED亮,不按时 LED 灭)。

 3、用 STM32 芯片 I/O 接口实现流水灯的控制。

 三、思考题 1、为什么 P0 作为 I/O 接口时,要接上拉电阻? 答:因为 P0 口作为 I/O 接口时内部是漏极开路型。

 2、在实验内容 2 中,如果 P0 某个管脚接按键,该如何修改硬件和软件? 3、设计一单片机控制电路,用八只开关分别控制八只 LED的亮灭。

 四、实验结果分析

 对于问题 2

 四、结论

 这次对单片机 GPIO 口的实验,我们分别做了 51 单片机和 STM32f103r6 对GPIO 端口的应用,再通过 protues 的仿真验证,证明我们的思路是正确的。由于在这次实验中没有吧 protues8.6 版本安装好,导致实验过程中出现了了一些延误,没能按照老师课堂的进度,但在实验课过后过后,及时复习和查资料,解决了这个问题。实验过程中不足的有,对于实验仍处于生搬硬套的阶段,无法将老师理论课所讲与实验结合在一起,对于写代码的能力有待提高。

篇三:gpio控制led实验报告

IO 实验 ------1 090307031 3_某某 一、 实验目的:

 ⑴:熟悉 ARM 开发板基本组成电路, 并通过配套教材熟悉 ARM 芯片特性。

 了解 ADS1. 2 软件使用, 并会用该软件编译调试开发板。

 ⑵:了解 H—JTAG 软件原理, 利用教材中提供的 LED 测试程序, 完成实验。

 ⑶:进一步掌握 ADS 1.2 集成开发环境的使用方法。

 ⑷:掌握 LPC2000 专用工程模板的添加和使用。

 ⑸:能够在 EasyARM2100 教学实验开发平台上运行第一个程序(无操作系统)。

 ⑹:熟悉 LPC2000 系列 ARM7 微控制器的 GPIO 控制。

 ⑺:了解应用程序的固化方法。

 二、 实验内容及原理:

 ⑴:单 LED 闪烁 使用 P0.25 的输出功能, 控制一个 LED 闪动。

 采用灌电流方式驱动 LED, 即输出地电平时 LED 点亮。

 程序首先设置 PINSEL0, PINSEL1 进行管教连线, 然后由 IO0DIR 设置 P0.25口为输出模式, 即可通过对 IO0SET 和 IO0CLR 寄存器进行口线设置 1 或置 0 输出控制。

 ⑵:单键输入

 GPIO 是一个双向的 I/O 口, 内部无上拉电阻, 所以作于键盘输入时, 要上拉电阻。

 进行 GPIO 输入时, 先要设置 IODIR 使口线为输入方式, 然后读取 IOPIN 的值即可。

 使用 P0016 口作按键的输入, 每一次有效按键即对 LED4 进行取反控制。

 ⑶:多键多 LED (选作) KEY1 按下 LED1 取反, ......, KEY4 按下 LED4 取反, KEY5 按下 LED 全灭, KEY6 按下LED 全亮。

 ⑷:模拟 SPI 数码显示

 EasyARM2100 开发实验板提供了一位静态数码管, 由 74HC595 直接驱动。

 74HC595 是一 个串入并出的一位寄存器, 三态输出口, 可以通过 SQH 进行级连, 支持 100MHz 时钟频

 率。

 通过 3 个 GPIO 口模拟对 74HC595 进行控制, 驱动数字数码管显示数字 0~F。

 ⑸:LED 及数码编码显示

 程序驱动数码管循环显示 16 进制数 0~F,并使用 LED1~LED4 指示当前数值, LED4 表示高位(d3)

 ,LED1 指示低位(d0), 点亮为 1, 熄灭为 0。

 ⑹多键及显示组合(选作) KEY1 按下数码显示“1”, ......, KEY6 按下数码显示“6”, 同时 LED 显示数据 BCD 编码 。

 三、 实验器材 PC 机一台, 周立功开发板一块(EasyARM2100)

 四、 实验预习与要求:

  (1)

 认真复习 LPC2000 系列 ARM7 微控制器的 GPIO 控制机制以及 LPC2100 管脚连接

  模块等内容。

  (2)

 了解 EasyARM2100 教学实验开发平台的硬件结构, 注意蜂鸣器的相关控制电路。

  (3)

 了解 EasyARM2100 教学实验开发平台上的跳线。

  (4)

 仔细阅读附带文档《ADS 集成开发环境及仿真器应用》 或其它相关资料, 了解 GPIO

 的设置、 74HC595 时序、 逻辑控制方法、 LPC2000 专用工程模板。

 五、 程序流程图 ⑴:

 单 LED 闪烁

  ⑵:

 单键输入

 ⑶:

 模拟 SPI 数码显示

 ⑷:

 LED 及数码编码显示

  六、 实验源程序为(C 语言):

 ⑴:

 单 LED 闪烁 #include "config.h" #define

 LEDCON

 0x00400000

 void DelayNS(uint32

 dly) {

 uint32 i;

 for(;dly>0;dly--)

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

 ; } int main(void) {

 PINSEL0=0x00000000;

 PINSEL1=0x00000000;

  IO0DIR=LEDCON;

 while(1)

 {

 IO0SET=LEDCON;

  DelayNS(30);

  IO0CLR=LEDCON;

  DelayNS(30);

 }

 return(0); } ⑵:

 单键输入 #include "config.h" #define

 LEDCON

 0x00400000 #define

 KEY

 0x00010000

 void WaitKey(void) {

 uint32 i;

  while(1)

 {

 while((IO0PIN&KEY)!=0)

 ;

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

 ;

  if((IO0PIN&KEY)==0)

 break;

 }

 while((IO0PIN&KEY)==0)

 ; }

 int main(void) {

 PINSEL0=0x00000000;

 PINSEL1=0x00000000;

  IO0DIR=LEDCON;

 while(1)

 {

  IO0SET=LEDCON;

  WaitKey();

  IO0CLR=LEDCON;

  WaitKey();

 }

 return(0); } ⑶:

 模拟 SPI 数码显示 #include "config.h" #define SPI_CS

  0X20000100

 #define SPI_DATA 0x00000040 #define SPI_CLK

 0x00000010 #define SPI_IOCON (SPI_CS|SPI_DATA|SPI_CLK)

 void DelayNS(uint32 dly) {

  uint32

 i;

  for(;dly>0;dly--)

  for(i=0;i<50000;i++); } void HC595_SendDat(uint8 dat) {

 uint8 i;

 IO0CLR=SPI_CS;

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

 {

  IO0CLR=SPI_CLK;

  if((dat&0x80)!=0)

 IO0SET=SPI_DATA;

  else

 IO0CLR=SPI_DATA;

  dat<<=1;

  IO0SET=SPI_CLK;

 }

 IO0SET=SPI_CS; }

 int main(void) {

  Const uint8 DISP_TAB[16]={0xC0,0xF9,0xA4,0xB0,0X99,0x82 ,0xF8,0x80,0x90,0x88,0x83,0x83,0xC6,0xA1,0x86,0x8E};

  uint8 i;

  PINSEL0=0x00000000;

  PINSEL1=0x00000000;

  IO0DIR=SPI_IOCON;

  while(1)

  {

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

  {

  HC595_SendDat(DISP_TAB[i]);

  DelayNS(50);

  }

  }

  return(0); } ⑷:

 LED 及数码编码显示 #include "config.h"

 #define SPI_CS (1<<29) #define SPI_DATA (1<<6) #define SPI_CLK (1<<4) #define BEEP (1<<7) #define SPI_IOCON (SPI_CS|SPI_DATA|SPI_CLK) #define LED_IOCON (0x0F<<22)

 void DelayNS(uint32 dly) {

 uint32 i;

 for(;dly>0;dly--)

 for(i=0;i<50000;i++); }

 void HC595_SendDat(uint8 dat) {

 uint8 i;

 IO0CLR = SPI_CS;

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

 {

  IO0CLR = SPI_CLK;

  if((dat&0x80)!=0)

 IO0SET = SPI_DATA;

  else IO0CLR = SPI_DATA;

  dat <<=1;

  IO0SET = SPI_CLK;

 }

 IO0SET = SPI_CS; }

 const uint8 DISP_TAB[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82 ,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};

 int main(void) {

  uint8 i;

 PINSEL0 = 0x00000000;

 PINSEL0 = 0x00000000;

 IO0DIR = SPI_IOCON|LED_IOCON|BEEP;

 while(1)

 {

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

  {

 HC595_SendDat(DISP_TAB[i]);

 IO0SET = 0x0F << 22;

 IO0CLR = i<< 22;

  IO0CLR = BEEP;

 DelayNS(50);

 IO0SET = BEEP;

 DelayNS(50);

  }

 }

 return(0); } 七、 实验步骤:

 ㈠、 找到开发板的芯片及 flash 1.计算机并口与开发板 JTAG 口相连接打开 JTAG 软件 H-JTAG Server 在 Flasher 里面选择 auto download。

 2.然后点击左上角的放大镜 看是否可以找到开发板 CPU 。

 3.如果找到 CPU , 软件界面会出现 ARM7 字样以及芯片 ID 号。

  4.如果找到 CPU, 在 flash selection 里选择 LPC2114

 5.configuration 里设置晶振的频率为 11.0592

  打开 H-Flasher 点击 check , 会出现 ARM7 相关字样, 证明可以找到 flash ㈡、 编写程序代码仿真并验证结果

 打开 Code Warrior for ARM Developer suite 编写相应的代码, 测试没有语法错误后仿真并查看运行结果, 对比是否与预期的是否相同。

 如果与结果存在出入, 检查源程序是否存在逻辑上的错误, 修改并知道实验结果正确。

 八、 实验结果:

 单 LED 闪烁实验结果:

 实验电路板上的 LED 按一定周期快速闪烁。

 单键输入实验结果:当按下 EasyARM2100 实验板的第一个按钮时对应的 LED 灯熄灭, 再次按下时又点亮, 实现按键取反的效果。

 模拟 SPI 数码显示实验结果:

 程序驱动数字数码管显示数字 0~F。

 LED 及数码编码显示实验结果:

 除了数字数码管显示数字 0~F, 四个 LED 灯显示对应的以点亮/熄灭分别代表 1/0 二进制数, 并伴随蜂鸣。

 经过实验, 实验结果与预期结果基本吻合, 表示实验成功。

 九、 实验结论:

  通过本次试验在一定程度上, 了解 H—JTAG 软件原理, 熟悉了 ARM 开发板基本组成电路, 并通过配套教材熟悉 ARM 芯片特性以及 ADS1.2 软件使用, 并会用该软件编译调试开发板掌握了 LPC2000 专用工程模板的添加和使用。

 在老师的讲解下以及帮助下, 能够在EasyARM2100 教学实验开发平台上运行第一个程序。

 并熟悉了 LPC2000 系列 ARM7 微控制器的 GPIO 控制。

 了 解了简单的应用程序的固化方法, 并能根据教材提示完成实验。

 掌握了LPC2000 系列 ARM7 微控制器的 GPIO 控制机制以及 LPC2100 管脚连接和模块等内容, 了解了 EasyARM2100 教学实验开发平台的硬件结构, 以及教学实验开发平台上的跳线。

 老师的教学态度很认真, 对于实验的的改进方面的建议是, 教学时可以照顾下水平低的同学, 适当的降慢课程的讲解速度。

 实验课程, 必要时使用一下软件视频教学。

篇四:gpio控制led实验报告

9)中华人民共和国国家知识产权局(12)实用新型专利(10)授权公告号 (45)授权公告日 (21)申请号 202220099444.5(22)申请日 2022.01.15(73)专利权人 博为科技有限公司地址 314400 浙江省嘉兴市海宁市海宁经济开发区谷水路306号2幢201室(72)发明人 何茂平 童春林 (74)专利代理机构 嘉兴熠向知识产权代理事务所(普通合伙) 33489代理人 赵振祥(51)Int.Cl.H05B

 45/00 (2022.01)H05B

 45/10 (2020.01) (54)实用新型名称单GPIO控制双LED电路(57)摘要本实用新型公开了一种单GPIO控制双LED电路,其包括:第一电阻R1,其一端连接于GPIO端;第一控制单元,其连接于第一电阻R1的另一端,且用于连接和控制一个负载元件的电源回路的通断;第二控制单元,其与第一控制单元呈并联,且用于连接和控制另一个负载元件的电源回路的通断;所述第一控制单元和第二控制单元分别响应于GPIO端输出的高低电平。本申请具有减小GPIO使用数量的效果。权利要求书1页

 说明书2页

 附图1页CN 215871909 U2022.02.18CN 215871909 U

 1.一种单GPIO控制双LED电路,其特征在于,包括:第一电阻R1,其一端连接于GPIO端;第一控制单元,其连接于第一电阻R1的另一端,且用于连接和控制一个负载元件的电源回路的通断;第二控制单元,其与第一控制单元呈并联,且用于连接和控制另一个负载元件的电源回路的通断;所述第一控制单元和第二控制单元分别响应于GPIO端输出的高低电平。2.根据权利要求1所述的单GPIO控制双LED电路,其特征在于:所述第一控制单元包括NPN型三极管Q2,NPN型三极管Q2的基极连接于第一电阻R1,集电极用于串联负载元件和连接电源Vcc,发射极接地。3.根据权利要求2所述的单GPIO控制双LED电路,其特征在于:所述第二控制单元包括PNP型三极管Q1,PNP型三极管Q1的基极连接于第一电阻R1,集电极用于串联另一负载元件和接地,发射极用于连接电源Vcc。4.根据权利要求3所述的单GPIO控制双LED电路,其特征在于:所述NPN型三极管Q2和PNP型三极管Q1的集电极分别连接有RC电路。5.根据权利要求4所述的单GPIO控制双LED电路,其特征在于:连接于所述NPN型三极管Q2的RC电路包括第三电阻R3和第二电容C2,所述第三电阻R3串联于NPN型三极管Q2的集电极,所述第二电容C2的一端连接于第三电阻R3和负载元件的连接点,另一端接地。6.根据权利要求4所述的单GPIO控制双LED电路,其特征在于:连接于所述PNP型三极管Q1的RC电路包括第二电阻R2和第一电容C1,所述第二电阻R2和第一电容C1并联,且与负载元件呈串联。7.根据权利要求3所述的单GPIO控制双LED电路,其特征在于:所述负载元件为LED灯,且与PNP型三极管Q1连接的为LED1,与NPN型三极管Q2连接的为LED2。权 利 要 求 书1/1 页2CN 215871909 U2

 单GPIO控制双LED电路技术领域[0001]本申请涉及基于GPIO的控制技术领域,尤其是涉及一种单GPIO控制双LED电路。背景技术[0002]在通信、电器设备中,存在不能的功能模块,每个模块都需要LED显示其不同的状态,通常会使用CPU的GPIO控制LED的亮灭;传统的,是1个GPIO控制1个LED。[0003]然而,随着设备功能的增加,LED的数量及GPIO的数量也随着增加,有时候会存在CPU的GPIO不足,需要外置移位寄存器解决此问题;甚至有时候会因为GPIO使用数量太多,PCB layout不好走线,因此本申请提出一种新的技术方案。实用新型内容[0004]为了减小GPIO的使用数量,本申请提供一种单GPIO控制双LED电路。[0005]本申请提供一种单GPIO控制双LED电路,采用如下的技术方案:[0006]一种单GPIO控制双LED电路,包括:第一电阻R1,其一端连接于GPIO端;[0007]第一控制单元,其连接于第一电阻R1的另一端,且用于连接和控制一个负载元件的电源回路的通断;[0008]第二控制单元,其与第一控制单元呈并联,且用于连接和控制另一个负载元件的电源回路的通断;[0009]所述第一控制单元和第二控制单元分别响应于GPIO端输出的高低电平。[0010]可选的,所述第一控制单元包括NPN型三极管Q2,NPN型三极管Q2的基极连接于第一电阻R1,集电极用于串联负载元件和连接电源Vcc,发射极接地。[0011]可选的,所述第二控制单元包括PNP型三极管Q1,PNP型三极管Q1的基极连接于第一电阻R1,集电极用于串联另一负载元件和接地,发射极用于连接电源Vcc。[0012]可选的,所述NPN型三极管Q2和PNP型三极管Q1的集电极分别连接有RC电路。[0013]可选的,连接于所述NPN型三极管Q2的RC电路包括第三电阻R3和第二电容C2,所述第三电阻R3串联于NPN型三极管Q2的集电极,所述第二电容C2的一端连接于第三电阻R3和负载元件的连接点,另一端接地。[0014]可选的,连接于所述PNP型三极管Q1的RC电路包括第二电阻R2和第一电容C1,所述第二电阻R2和第一电容C1并联,且与负载元件呈串联。[0015]可选的,所述负载元件为LED灯,且与PNP型三极管Q1连接的为LED1,与NPN型三极管Q2连接的为LED2。[0016]综上所述,本申请包括以下至少一种有益技术效果:相较于以往一个GPIO控制某个LED一种状态,此发明使用一个GPIO控制某个功能两种状态的LED,减少GPIO使用数量,节省CPU有限资源,在CPU GPIO不足的情况下,不使用移位寄存器来扩展控制信号,节约成本。说 明 书1/2 页3CN 215871909 U3

 附图说明[0017]图1是本申请的电路结构意图。具体实施方式[0018]以下结合附图1对本申请作进一步详细说明。[0019]本申请实施例公开一种单GPIO控制双LED电路。[0020]参照图1,单GPIO控制双LED电路包括:[0021]第一电阻R1,其一端连接于GPIO端,即CUP的某一个GPIO口;[0022]第一控制单元,其连接于第一电阻R1的另一端,且用于连接和控制一个负载元件的电源回路的通断;[0023]第二控制单元,其与第一控制单元呈并联,且用于连接和控制另一个负载元件的电源回路的通断;[0024]第一控制单元和第二控制单元分别响应于GPIO端输出的高低电平。[0025]在本申请的一个实施例中,上述第一控制单元包括NPN型三极管Q2,NPN型三极管Q2的基极连接于第一电阻R1,集电极用于串联负载元件和连接电源Vcc,发射极接地。[0026]在本申请中,负载元件为LED灯,且与NPN型三极管Q2连接的负载元件为LED2,如绿灯。[0027]上述第二控制单元包括PNP型三极管Q1,PNP型三极管Q1的基极连接于第一电阻R1,集电极用于串联另一负载元件(此处为LED1,如红灯)和接地,发射极用于连接电源Vcc。[0028]根据上述设置,当GPIO为高电平时,三级管Q2导通,电流的流向从Vcc通过LED2到GND形成回路,LED2点亮;当GPIO为低电平时,三级管Q1导通,电流的流向从Vcc通过LED1到GND形成回路,LED1点亮。[0029]相较于以往一个GPIO控制某个LED一种状态,此发明使用一个GPIO控制某个功能两种状态的LED,减少GPIO使用数量,节省CPU有限资源,在CPU GPIO不足的情况下,不使用移位寄存器来扩展控制信号,节约成本。[0030]在本申请的一个实施例中,NPN型三极管Q2和PNP型三极管Q1的集电极分别连接有RC电路。[0031]其中,NPN型三极管Q2的RC电路包括第三电阻R3和第二电容C2,所述第三电阻R3串联于NPN型三极管Q2的集电极,第二电容C2的一端连接于第三电阻R3和负载元件的连接点,另一端接地。[0032]上述RC电路可做低通滤波。[0033]连接于PNP型三极管Q1的RC电路包括第二电阻R2和第一电容C1,所述第二电阻R2和第一电容C1并联,且与负载元件呈串联。[0034]上述RC电路,可做低频信号衰减,也做滤波使用。[0035]以上均为本申请的较佳实施例,并非依此限制本申请的保护范围,故:凡依本申请的结构、形状、原理所做的等效变化,均应涵盖于本申请的保护范围之内。说 明 书2/2 页4CN 215871909 U4

 图1说 明 书 附 图1/1 页5CN 215871909 U5

篇五:gpio控制led实验报告

南理工大学 《嵌入式系统》课程实验报告- STM32 单片机 GPIO 程序开发

 实验概述

 【实验目的及要求】

 实验目的:

 1. 掌握 STM32 单片机输入输出接口程序开发 2. 掌握用寄存器开发 STM32 单片机程序 3. 掌握用库函数开发 STM32 单片机程序 实验要求:

 1. 完成实验要求中提到要完成的所有内容,完成代码并提交主要代码。

 2. 分析寄存器和库函数编程的优势和劣势,你喜欢用哪种方式。

 3. 对每行主要代码要进行注释,说明其功能。

 实验内容:

  1.熟悉TEB-CM5000嵌入式单片机实验系统上的LED灯电路和单独按钮电路。

 2.学习并掌握寄存器版本、库函数版本相关的实例程序,主要学习实例stm32referencesrcforch5 目录下的,LED、LEDLib、KEY_LED 和 KEY_LEDlib 四个程序。

  3.利用寄存器位操作模式、库函数分别开发出 USER2(PD3)按钮控制LD5(PF7)亮灭。具体功能:USER2(PD3)按钮按下时,LD5 灯闪烁;当 USER2(PD3)按钮弹开时,LD5 灯停止闪烁。

 4.实现利用寄存器位操作模式、库函数分别开发出: 当每次 USER2(PD3)按钮按下时,LD5 灯只闪烁一次。

 【实验环境】

 1. TEB-CM5000 嵌入式单片机实验系统 2. MDK4.12 嵌入式软件开发环境

 实验内容

 【实验过程】

 二、实验步骤:

 1. USER2(PD3)按钮按下时,LD5 灯闪烁;

 USER2(PD3)按钮弹开时,LD5 灯停止闪烁。

 (1)

 寄存器位操作模式:

 设置输入输出

  循环判断 PD3 的状态,并执行对应操作(点亮或熄灭灯)

  (2)

 库函数

  设置 LD5 和 USER2

 循环判断 PD3 的状态,并执行对应操作(点亮或熄灭灯)

  2.当每次 USER2(PD3)按钮按下时,LD5 灯只闪烁一次。

 (1)寄存器位操作模式 循环判断 PD3 的状态,并执行对应操作(点亮或熄灭灯)

  (3)

 库函数 循环判断 PD3 的状态,并执行对应操作(点亮或熄灭灯)

 小结

 1. 只闪烁一次跟一直闪烁的区别主要在于 Flag 值。

 在只闪烁一次的程序中,设置 flag 值作为标志,灯亮以后改变 flag 值的状态,flag 的状态改变灯的状态就不再继续。

 2. 学会了如何使用或者调用相关函数或库,以及寄存器操作和库函数操作的区别。

 3. 学会了利用值的改变来改变灯的状态。

 指导教师评语及成绩

 评语:

 成绩:

  指导教师签名:

 批阅日期:

篇六:gpio控制led实验报告

实验效果分析(包括仪器设备等使用效果)

  一、 实验效果分析

 1、在进行实验时要严格按照实验步骤进行实验,否则试验程序出错则实验效果会发生偏差。

 2、由于本实验属于硬件实验的范畴,所以实验起初时要先设定实验属于硬件实验,而不是直接进行。

 3、经过一系列的调制修改,实验达到了要求的效果,实验成功。

 教

 师

 评

 语

 指导老师

 年

 月

  日

  江西师范大学物理与通信电子学院 教学实验报告 通信工程 专业

  2013 年 11 月

 26 日 实验名称 GPIO 控制实验 指导老师

 姓

 名

 年级 11 级 学号

 成绩

 一、预习部分 1、实验目的 2、实验基本原理 3、主要仪器设备(含必要的元器件、工具)

 一、 实验目的:

 1、了解 GPIO 片上外设

 2、掌握延时程序应用

  3、用 GPIO 口实现 LED 指示灯控制。

 二、 实验基本原理:

 通用目的输入输出片内外设提供了专用的通用目的引脚,可以配置位输入或输出。当配置为一个输出时,用户可以写一个内部寄存器以控制输出引脚上驱动的状态。当配置为输入引脚时,用户可以通过内部寄存器的状态检测到输入的状态。另外,GPIO 片内外设可以用不同的中断/事件产生 CPU 中断和 EDMA事件。一旦在 GPIO 使能寄存器被使能,GPIO 引脚可以用作通用目的输入/输出。用户可以使用 GPIO 方向寄存器独立配置每条 GPIO 引脚为输入或输出。当配置为输出(GPXDIR 位=1),GPIO 值寄存器(GPVAL)的 GPXVAL 位的值就被送到相应的 GPn 引脚。当配置为输入(GPXDIR 位=0)时,输入状态可以从相应的 GPXVAL 读取 TMS320VC5502 有 1-位通用输出引脚 XF 和 8-位通用 I/O 引脚GPIO[7:0],其中 GPIO3、GPIO5 与 McBSP2 复用引脚。SEED-DEC5502 模板上这些引脚的使用情况如下:

 XF 用于点亮 LED 指示灯 D1。XF = 1,点亮;XF = 0,熄灭。

 GPIO[2:0]:经电平转换后连至外设扩展总线的备用引脚。

 GPIO3:与 McBSP2 的 CLKX2 复用引脚,当配置为 GPIO3 时,用作 COM1 的 。

 GPIO4:经电平转换后连至外设扩展总线的备用引脚。

 GPIO5:与 McBSP2 的 FSX2 复用引脚,当配置为 GPIO5 时,用作 COM1 的 。

 GPIO6:经电平转换后连至外设扩展总线的备用引脚。

 GPIO7:用于点亮 LED 指示灯 D5。XF = 1,点亮;XF = 0,熄灭。

 通过本实验,要求掌握 GPIO 口的应用;熟悉延时程序的应用。

  1、5502_GPIO.c:这是实验的主程序包含系统初始化,GPIO 引脚点亮程序等;

  2、vectors.s55: 包含 5502 的中断向量表;

  3、SEED_DEC5502.cmd: 声明了系统的存储器配置与程序各段的连接关系。

 三、 主要仪器设备

 计算机、ccs 软件

 二、实验操作部分

 1、实验数据、表格及数据处理

 2、实验操作过程(可用图表示)

 3、结论

 一、实验操作过程 1. 打开 CCS,进入 CCS 的操作环境。

 2. 装入 DEC5502_GPIO.pjt 工程文件, 添加 SEED_DEC5502.gel 文件。

 3. 装载程序 DEC5502_GPIO.out,进行调试。

 4. 在 5502_LED.c 程序的第 69 行“delay();”处,第 72 行“delay();”处,第 75 行“delay();” 处,第 78 行“delay();”处设置断点。

 5. 运行程序,程序会停在第一个断点处,关闭指示灯 D1; 6. 继续运行程序,程序每次都会停在第二个断点处,点亮指示灯 D1;

 7. 继续运行程序,程序每次都会停在第三个断点处,点亮指示灯 D5; 8. 继续运行程序,程序每次都会停在第四个断点处,关闭指示灯 D5; 9. 也可直接执行程序,观察指示灯 D1,D5 的闪烁情况。

 二、实验截图

推荐访问:gpio控制led实验报告 实验 控制 报告