当前位置:文档之家› 嵌入式系统GPIO 输入输出实验报告

嵌入式系统GPIO 输入输出实验报告

实验四GPIO 输入实验
一、实验目的
1、能够使用GPIO的输入模式读取开关信号。

2、掌握GPIO相关寄存器的用法和设置。

3、掌握用C语言编写程序控制GPIO。

二、实验环境
PC机一台
ADS 集成开发环境一套
EasyARM2131教学实验平台一套
三、实验内容
1.实验通过跳线JP8 连接KEY1与,程序检测按键KEY1 的状态,控制蜂鸣器BEEP
的鸣叫。

按下KEY1,蜂鸣器鸣叫,松开后停止蜂鸣。

(调通实验后,改为KEY3键进行输入)。

2.当检测到KEY1有按键输入时点亮发光二极管LED4并控制蜂鸣器响,软件延时
后关掉发光管并停止蜂鸣,然后循环这一过程直到检测按键没有输入。

(键输入改为键KEY4,发光管改为LED6)。

3.结合实验三,当按下按键Key1时,启动跑马灯程序并控制蜂鸣器响,软件延时
后关掉发光管并停止蜂鸣,然后循环这一过程直到检测按键再次按下。

四、实验原理
当P0 口用于GPIO输入时(如按键输入),内部无上拉电阻,需要加上拉电阻,电路图参见图。

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

图按键电路原理图
实验通过跳线JP8 连接,程序检测按键KEY1 的状态,控制蜂鸣器BEEP 的鸣叫。

按下KEY1,蜂鸣器鸣叫,松开后停止蜂鸣。

在这个实验中,需要将按键KEY1 输入口设为输入口而蜂鸣器控制口设置为输出口。

蜂鸣器电路如图所示,当跳线JP6 连接蜂鸣器时,控制蜂鸣器,低电平时蜂鸣器鸣叫。

LED灯电路如图所示,低电平时灯亮。

图蜂鸣器控制电路
图LED 控制电路
程序首先设置管脚连接寄存器PINSEL0 和PINSEL1,设置为输入,设置,为输出。

然后检测端口的电平,对, 进行相应的控制,流程图如图所示,实现程序见程序清单。

图按键输入实验流程图
五、实验步骤、源代码及调试结果
内容1
实验步骤
① 启动集成开发环境,选择ARM Executable Image for lpc2131工程模板建立一
个工程BEEP_key。

② 在user组里编写主程序代码。

③ 选用DebugInFLASH生成目标,然后编译链接工程。

④ 将EasyARM教学实验开发平台上的相应管脚跳线短接。

⑤ 选择Project->Debug,启动AXD进行JLINK仿真调试。

⑥ 全速运行程序,程序将会在的主函数中停止。

如下图所示:
⑦ 单击Context Variable图标按钮(或者选择Processor Views->Variables)打开
变量观察窗口,通过此窗口可以观察局部变量和全局变量。

选择System Views->Debugger Internals 即可打开LPC2000系列ARM7微控制器的片内外寄存器窗口。

通过变量窗口可以观察变量BEEP、KEY1等的值和ARM7微控制器的片内外寄存器窗口。

如下图所示:
⑧ 可以单步运行程序,先按下Key1,观察IO0PIN寄存器的值,然后断开Key1,
观察IO0PIN寄存器的值。

可以设置/取消断点;或者全速运行程序,停止程序运行,观察变量的值,判断蜂鸣器控制是否正确。

如下图所示:
图未按下Key1时IO0PIN的值图按下Key1时IO0PIN的值
由上两图可知,当按下Key1时,IO0PIN寄存器的第16位由1变为0(F变为E),key1与相连,按下Key1时,管脚输出电平由1变为0,寄存器值变化,蜂鸣器响,说明控制是正确的。

现象描述:按下KEY1,蜂鸣器鸣叫,松开后停止蜂鸣。

源代码:
#include ""
const uint32 BEEP = 1 << 7;
图未按下KEY1时IO0PIN的值图按下KEY1后IO0PIN的值
对比图和,发现按下KEY1后,IO0PIN寄存器的第16位由1变为0;而KEY1对应管脚,当按下时输入低电平,这说明KEY1的控制是正确的。

上图所示为运行“IO0CLR = BEEP”后IO0PIN寄存器的值,与图对比,发现第8位由1变为0,BEEP对应管脚,这说明BEEP的控制是对的。

现象描述:当按下KEY1时,蜂鸣器鸣响,LED4亮;当松开KEY1后,蜂鸣器静音,LED4灭。

源代码如下:
#include ""
const uint32 BEEP = 1 << 7;。

相关主题