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

上传人:仙*** 文档编号:89326275 上传时间:2022-05-12 格式:DOC 页数:10 大小:184KB
收藏 版权申诉 举报 下载
嵌入式系统GPIO输入输出实验报告_第1页
第1页 / 共10页
嵌入式系统GPIO输入输出实验报告_第2页
第2页 / 共10页
嵌入式系统GPIO输入输出实验报告_第3页
第3页 / 共10页
资源描述:

《嵌入式系统GPIO输入输出实验报告》由会员分享,可在线阅读,更多相关《嵌入式系统GPIO输入输出实验报告(10页珍藏版)》请在装配图网上搜索。

1、-实验四 GPIO 输入实验一、实验目的1、能够使用GPIO的输入模式读取开关信号。2、掌握GPIO相关存放器的用法和设置。3、掌握用C语言编写程序控制GPIO。二、实验环境PC机 一台 ADS 1.2集成开发环境 一套EasyARM2131教学实验平台 一套 三、实验容1.实验通过跳线 JP8 连接KEY1与P0.16,程序检测按键KEY1 的状态,控制蜂鸣器BEEP 的鸣叫。按下KEY1,蜂鸣器鸣叫,松开后停顿蜂鸣。调通实验后,改为KEY3键进展输入。2.当检测到KEY1有按键输入时点亮发光二极管LED4并控制蜂鸣器响,软件延时后关掉发光管并停顿蜂鸣,然后循环这一过程直到检测按键没有输入。

2、键输入改为键KEY4,发光管改为LED6。3.结合实验三,当按下按键Key1时,启动跑马灯程序并控制蜂鸣器响,软件延时后关掉发光管并停顿蜂鸣,然后循环这一过程直到检测按键再次按下。四、实验原理当P0 口用于GPIO输入时如按键输入,部无上拉电阻,需要加上拉电阻,电路图参见图 4.2。进展 GPIO 输入实验时,先要设置IODIR 使接口线成为输入方式,然后读取IOPIN 的值即可。图 4.2按键电路原理图实验通过跳线 JP8 连接KEY1_P0.16,程序检测按键KEY1 的状态,控制蜂鸣器BEEP 的鸣叫。按下KEY1,蜂鸣器鸣叫,松开后停顿蜂鸣。在这个实验中,需要将按键KEY1 输入口P0

3、.16 设为输入口而蜂鸣器控制口P0.7 设置为输出口。蜂鸣器电路如图 4.3所示,当跳线JP6 连接蜂鸣器时,P0.7 控制蜂鸣器,低电平时蜂鸣器鸣叫。LED灯电路如图4.4所示,低电平时灯亮。图 4.3蜂鸣器控制电路图 4.4 LED 控制电路程序首先设置管脚连接存放器PINSEL0 和PINSEL1,设置P0.16 为输入,设置P0.7,P1.21为输出。然后检测端口P0.16 的电平,对P0.7, P1.21进展相应的控制,流程图如图 4.5所示,实现程序见程序清单 4.1。图 4.5按键输入实验流程图五、 实验步骤、源代码及调试结果容1实验步骤 启动ADS1.2IDE集成开发环境,选

4、择ARM E*ecutable Image for lpc2131工程模板建立一个工程BEEP_key。 在user组里编写主程序代码main.c。 选用DebugInFLASH生成目标,然后编译工程。 将EasyARM教学实验开发平台上的相应管脚跳线短接gde台ngtheng 222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222。 选择Project-Debug,启动A*D进展JLINK仿真调试。 全速运行程序,程序将会在main.c的主函数

5、中停顿。如下列图所示: 单击Conte*t Variable图标按钮或者选择Processor Views-Variables翻开变量观察窗口,通过此窗口可以观察局部变量和全局变量。选择System Views-Debugger Internals 即可翻开LPC2000系列ARM7微控制器的片外存放器窗口。通过变量窗口可以观察变量BEEP、KEY1等的值和ARM7微控制器的片外存放器窗口。如下列图所示: 可以单步运行程序,先按下Key1,观察IO0PIN存放器的值,然后断开Key1,观察IO0PIN存放器的值。可以设置/取消断点;或者全速运行程序,停顿程序运行,观察变量的值,判断蜂鸣器控制是

6、否正确。如下列图所示:图4.6 未按下Key1时IO0PIN的值 图4.7 按下Key1时IO0PIN的值由上两图可知,当按下Key1时,IO0PIN存放器的第16位由1变为0F变为E,key1与P0.16相连,按下Key1时,P0.16管脚输出电平由1变为0,存放器值变化,蜂鸣器响,说明控制是正确的。现象描述:按下KEY1,蜂鸣器鸣叫,松开后停顿蜂鸣。源代码:*include config.hconst uint32 BEEP = 1 7; / P0.7 控制蜂鸣器const uint32 KEY1 = 1 16; / P0.16 连接KEY1 改为KEY3时,只需const uint32

7、KEY1 = 1 16改为const uint32 KEY3 = 1 Debug,启动A*D进展JLINK仿真调试。 全速运行程序,程序将会在main.c的主函数中停顿。如下列图所示: 单击Conte*t Variable图标按钮或者选择Processor Views-Variables翻开变量观察窗口,通过此窗口可以观察局部变量和全局变量。选择System Views-Debugger Internals 即可翻开LPC2000系列ARM7微控制器的片外存放器窗口。通过变量窗口可以观察变量BEEP、KEY1等全局变量、i等本地变量和ARM7微控制器的片外存放器窗口。如下列图所示: 左图所示为

8、ARM7微控制器的片存放器窗口。 图4.9 本地变量 图4.8 全局变量 可以单步运行程序,先按下Key1,观察IO0PIN存放器的值,然后断开Key1,观察IO0PIN存放器的值。可以设置/取消断点;或者全速运行程序,停顿程序运行,观察变量的值,判断蜂鸣器控制是否正确。如下列图所示:.图4.10 未按下KEY1时IO0PIN的值图4.11 按下KEY1后IO0PIN的值比照图4.10和4.11,发现按下KEY1后,IO0PIN存放器的第16位由1变为0;而KEY1对应管脚P0.16,当按下时输入低电平,这说明KEY1的控制是正确的。 上图所示为运行IO0CLR = BEEP后IO0PIN存放

9、器的值,与图4.10比照,发现第8位由1变为0,BEEP对应P0.7管脚,这说明BEEP的控制是对的。现象描述:当按下KEY1时,蜂鸣器鸣响,LED4亮;当松开KEY1后,蜂鸣器静音,LED4灭。源代码如下:*include config.hconst uint32 BEEP = 1 7; / P0.7 控制蜂鸣器const uint32 KEY1 = 1 16; / P0.16 连接KEY1 改为KEY4按键时,只需把上句代码改为const uint32 KEY4=119,其余不变const uint32 LEDS4= 1 21; / P121控制LED4,低电平点亮改为LED6时,只需把上

10、句代码改为const uint32 LED6=123,其余不变。/* 函数名称:main()* 函数功能:GPIO 输入实验测试。* 检测按键KEY1。KEY1 按下,蜂鸣器蜂鸣,松开后停顿蜂鸣。* 跳线说明:把 JP8 的KEY1 跳线短接,JP11 连接蜂鸣器。*/int main (void) Uint32 i; PINSEL0 = 0*00000000; / 所有管脚连接GPIOPINSEL1 = 0*00000000;IO0DIR = BEEP; / 蜂鸣器控制口输出0IO1DIR = LEDS4; / 设置LED4灯亮while (1) if (IO0PIN & KEY1) = 0

11、)for(i=0; i1000; i+); / 软件延时IO0CLR = BEEP; / 如果KEY1 按下,蜂鸣器鸣叫IO1DCLR = LEDS4; / 设置LED4灯亮else IO0SET = BEEP; / 松开则停顿蜂鸣IO1SET= LEDS4; / 设置LED4灯灭for(i=0; iDebug,启动A*D进展JLINK仿真调试。 全速运行程序,程序将会在main.c的主函数中停顿。如下列图所示: 单击Conte*t Variable图标按钮或者选择Processor Views-Variables翻开变量观察窗口,通过此窗口可以观察局部变量和全局变量。选择System Vie

12、ws-Debugger Internals 即可翻开LPC2000系列ARM7微控制器的片外存放器窗口。通过变量窗口可以观察变量BEEP、KEY1等的值和ARM7微控制器的片外存放器窗口。如下列图所示: 可以单步运行程序,先按下Key1,观察IO0PIN存放器的值,然后断开Key1,观察IO0PIN存放器的值。可以设置/取消断点;或者全速运行程序,停顿程序运行,观察变量的值,判断蜂鸣器控制是否正确。如下列图所示:图4.12未按下Key1时IO0PIN的值 图4.13按下Key1时IO0PIN的值由上两图可知,当按下Key1时,IO0PIN存放器的第16位由1变为0F变为E,key1与P0.16

13、相连,按下Key1时,P0.16管脚输出电平由1变为0,存放器值变化,蜂鸣器响,流水灯亮,说明控制是正确的。现象描述:当按下按键KEY1时,蜂鸣器鸣响,流水灯亮;松开后,蜂鸣器静音,流水灯灭。源代码如下:*include config.hconst uint32 BEEP = 1 7; / P0.7 控制蜂鸣器const uint32 KEY = 1 16; / P0.16 连接KEY1const uint32 LEDS8 = 0*FF 0; dly-) for(i=0; i50000; i+); /* 函数名称:liushuideng()* 函数功能:流水灯显示实验。* 调试说明:连接跳线

14、JP12 至LED8LED1。*/* 流水灯把戏,低电平点亮,注意调用时候用了取反操作 */const uint32 LED_TBL = 0*00, 0*FF, / 全部熄灭后,再全部点亮0*01, 0*02, 0*04, 0*08, 0*10, 0*20, 0*40, 0*80, / 依次逐个点亮0*01, 0*03, 0*07, 0*0F, 0*1F, 0*3F, 0*7F, 0*FF, / 依次逐个叠加0*FF, 0*7F, 0*3F, 0*1F, 0*0F, 0*07, 0*03, 0*01, / 依次逐个递减0*81, 0*42, 0*24, 0*18, 0*18, 0*24, 0*

15、42, 0*81, / 两个靠拢后分开0*81, 0*C3, 0*E7, 0*FF, 0*FF, 0*E7, 0*C3, 0*81 / 从两边叠加后递减;int liushuideng(void) uint8 i;PINSEL1 = 0*00000000; / 设置管脚连接GPIOIO1DIR = LEDS8; / 设置LED 控制口为输出while (1) for (i=0; i42; i+) /* 流水灯把戏显示 */IO1SET = (LED_TBLi) 18);DelayNS(20);IO1CLR = (LED_TBLi) 18);DelayNS(20);return 0;/主函数in

16、t main(void) uint32 i; PINSEL0 = 0*00000000; / 所有管脚连接GPIOPINSEL1 = 0*00000000;IO0DIR = BEEP; / 蜂鸣器控制口输出0while (1) if (IO0PIN & KEY) = 0)for(i=0; i1000; i+); / 软件延时IO0CLR = BEEP; / 如果KEY 按下,蜂鸣器鸣叫liushuideng();else IO0SET = BEEP; / 松开则停顿蜂鸣 IO1SET= LEDS8;for(i=0; i100; i+); / 软件延时return 0;六、思考题1、如果将P0.30设置为GPIO输入模式,且管脚悬空,则读取P0.30得到的值是0还是1.或者是不确定.当管脚悬空时,该管脚有可能是高电平也有可能是低电平。读取IO0PIN的值并不能确定管教的值。有时管脚是高电平,读取到的不一定是高电平。2、如果需要读取当前P0.7的输出值(不是管脚上的电平),如何实现. 将该管脚与一个LED连接,假设LED亮,则输出值为0,否则为1. z

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!