嵌入式系统GPIO输入输出实验报告Word文档格式.docx
《嵌入式系统GPIO输入输出实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《嵌入式系统GPIO输入输出实验报告Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
进行GPIO输入实验时,先要设置IODIR使接□线成为输入方式,然后读取IOPIN的值即可。
图4.2按键电路原理图
实验通过跳线JP8连接KEY1.P0.16,程序检测按键KEY1的状态,控制蜂鸣器BEEP的鸣叫。
按下KEY1,蜂鸣器鸣叫,松幵后停止蜂鸣。
在这个实验中,需要将按键KEY1输入口P0.16设为输入□而蜂鸣器控制口P0.7设置为输出口。
蜂鸣器电路如图4.3所示,当跳线JP6连接蜂鸣器时,P0.7控制蜂鸣器,低电平时蜂鸣器鸣叫。
LED灯电路如图4.4所示,低电平时灯亮。
图4.3蜂鸣器控制电路
图4.4LED控制电路
程序首先设置管脚连接寄存器PINSEL0和PINSEL1,设置P0.16为输入设置P0.7,P1.21为输出。
然后检测端口卩0.16的电平,对P0.7,P1.21进行相应的控制,流程图如图4.5所示,实现程序见程序清单4.1。
图4.5按键输入实验流程图
五、实验步骤.源代码及调试结果
内容1
实验步骤
1启动ADS1.2IDE集成开发环境,选择ARMExecutableImageforlpc2131工程模板建立一个工程BEEP_keyo
2在user组里编写主程序代码main.c。
3选用DebuglnFLASH生成目标,然后编译链接工程。
4将EasyARM教学实验开发平台上的相应管脚跳线短接。
5选择Project->
Debug,启动AXD进行JLINK仿真调试。
6全速运行程序,程序将会在main.c的主函数中停止。
如下图所
加:
7单击ContextVariable图标按钮(或者选择ProcessorViews->
Variables)打开变量观察窗口,通过此窗□可以观察局部变量和全局变量。
选择SystemViews->
DebuggerInternals即可打开LPC2000系列ARM7微控制器的片内外寄存器窗口。
通过变量窗□可以观察变量BEEP、KEY1等的值和ARM7微控制
器的片内外寄存器窗口。
如下图所示:
8可以单步运行程序,先按下Keyl,观察IOOPIN寄存器的值,
然后断开Keyl,观察IOOPIN寄存
器的值。
可以设置/取消断点;
或者
*欧阳光明*创编
全速运行程序,停止程序运行,观察变量的值,判断蜂鸣器控制是否正确。
图4.6未按下Keyl时IOOPIN的值图4.7按下Keyl时IOOPIN
的值
由上两图可知,当按下Keyl时,IOOPIN寄存器的第16位由1变为0(F变为E),keyl与P0.16相连,按下Keyl时,P0.16管脚输出电平由1变为0,寄存器值变化,蜂鸣器响,说明控制是正确的。
现象描述:
按下KEY1,蜂鸣器鸣叫,松幵后停止蜂鸣。
源代码:
#include"
config.h"
constuint32BEEP=1«
7;
//P0.7控制蜂鸣器
constuint32KEY1=1«
16;
//P0」6连接KEY1
(改为KEY3时,只需“constuint32KEY1=1«
16”改为“const
uint32KEY3=1«
18w,其余不变。
)
/■士■士%•丄■■士■士%J”•士■士■丄"
■士J.■士■士•土
f彳・彳、哼.
■士■土*1*•土%L**1*
#7^#1%#T*#Tv#Tv
**函数名称:
main()
糾函数功能:
GPIO输入实验测试。
糾检测按键KEY1OKEY1按下,蜂鸣器蜂鸣,松开后停止蜂鸣。
糾跳线说明:
把JP8的KEY1跳线短接,JP11连接蜂鸣器。
•士•["
■士■士■士•士■]"
%■士■士■["
%•士•士■]"
%■士■士■]"
■丄.•["
■士■土■]"
•士
叫・彳.彳.#r^#Tv
■[“■]“•土•土%f>
%■士■”•士■士■”■士■]“•”•士■士!
#r%#r%V#v^>
intmain(void)
{PINSEL0=0x00000000;
//所有管脚连接GPIO
PINSEL1=0x00000000;
IOODIR=BEEP;
//蜂鸣器控制□输出,其余输入
while
(1)
{if((IOOPIN&
KEY1)==0)IOOCLR=BEEP;
//如果KEY1按下,蜂
鸣器鸣叫
elseIOOSET=BEEP;
//松幵则停止蜂鸣
return0;
内容二
1启动ADS1.2IDE集成开发环境,选择ARMExecutableImage
forlpc2131工程模板建立一个工程BEEP_keyo
Debug,启动AXD逬行JLINK仿真调试。
Variables)打开变量观察窗口,通过此窗□可以观察局部变量和全局变量。
DebuggerInternals即可打开LPC2000系列ARM7微控制器的片内外寄存器窗口。
通过变量窗□可以观察变量BEEP、KEY1等全局变量、i等本地
变量和ARM7微控制器的片内外寄存器窗口。
如下图所示:
左图所示为ARM7微控制器的片内寄存器窗口。
图4.9本地变量
图4.8全局变量
水欧阳光明*创编
8
可以单步运行程序,先按下Keyl,观察IOOPIN寄存器的值,然后断开Keyl,观察IOOPIN寄存器的值。
或者全速运行程序,停止程序运行,观察变量的值,判断蜂鸣器控制是否正确。
的第16位由1变为0;
而KEY1对应管脚P0.16,当按下时输入低电平,这说明KEY1的控制是正确的。
上图所示为运行“IO0CLR=BEEP”后IOOPIN寄存器的值,与图4.10对比,发现第8位由1变为0,BEEP对应P0.7管脚,这说明BEEP的控制是对的。
当按下KEY1时,蜂鸣器鸣响,LED4亮;
当松开KEY1后,蜂鸣器静音,LED4灭。
源代码如下:
#include'
'
(改为KEY4按键时,只需把上句代码改为"
constuint32
KEY4=1«
19,\其余不变)
constuint32LEDS4=1«
21;
//P1[21]控制LED4,低电平点亮
(改为LED6时,只需把上句代码改为“constuint32LED6=1«
23:
其余不变。
J7"
■士•土■]"
■丄"
•丄"
■士7“■["
•土■士vi#%Lr•]"
■土■["
7"
J”■士7"
■士■土■士■士7"
・士^L>
7“"
“•”
g彳、彳・^4*^T%#T%^yw#T%#T%彳、^T*^T%
•]“■[“■士■土■["
%fx■”•士
#7^#T%#T%zT^#Jv^Tw#T^#T%#T%#Tw
糾检测按键KEYloKEY1按下,蜂鸣器蜂鸣,松开后停止蜂鸣。
粋跳线说明:
把JP8的KEY]跳线短接,JP11连接蜂鸣器。
•]"
■["
■士■土J"
%f>
■”•士kI^■["
•土■士•[“%■士kI^/
#jv^Tw#T^#T%#T%t
{
Uint32i;
PINSELO=0x00000000;
IO0DIR=BEEP;
//蜂鸣器控制□输出0
IO1DIR=LEDS4;
//设置LED4灯亮
KEYl)==0)
for(i=0;
i<
1000;
i++);
〃软件延时
IO0CLR=BEEP;
//如果KEY1按下,蜂鸣器鸣叫
IO1DCLR=LEDS4;
else
IO0SET=BEEP;
//松开则停止蜂鸣
101SET二LEDS4;
〃设置LED4灯灭
}
内容三
示:
7单击ContextVariable图标按钮(或者选择ProcessorViews-
>
Variables)打开变量观察窗口,通过此窗□可以观察局部变
量和全局变量。
通过变量窗□可以观察变量BEEP、KEY1等的值和ARM7微控制器的片内外寄存器窗口。
由上两图可知,
可以单步运行程序,先按下Keyl,观察IOOPIN寄存器的值,然后断开Keyl,观察IOOPIN寄存器的值。
可以设置/取消断点;
或者全速运行程序,停止程序运行,观察变量的值,判断蜂鸣器控制是否正确。
图4.12未按下Keyl