无线通信技术报告 - 图文 下载本文

无线通信技术综合训练报告

训练二 GPIO实验

一、实验内容

1.LED指示灯自动闪烁; 2.按键控制LED指示灯亮灭; 3.按键控制LED指示灯闪烁。

二、实验原理

CC2530有21个数字输入/输出引脚,可以配置为通用数字I/O接口,也可以作为外部I/O

接口连接到ADC、定时器或者USART等外部设备。这些I/O口的用途,可以通过一系列寄存器配置,由用户软件加以实现。

三、基本实验步骤(从节点)

(一)基本实验一:指示灯自动闪烁

操作步骤:①连接实验设备,将USB电缆线插到PC机的USB端口上,实验板电源指示灯亮。 ②启动IAR开发环境,打开“开始”菜单->“程序”->IAR Embedded Workbench for 8051 7.60->IAR Embedded Workbench。

③创建工程,并将编写的代码添加到工程中,再进行编译和调试,确定无误后,通过下载器将程序下载到开发板上。观察现象。

(二)基本实验二:按键控制灯亮灭

操作步骤:①连接实验设备,将USB电缆线插到PC机的USB端口上,实验板电源指示灯亮。 ②启动IAR开发环境,打开“开始”菜单->“程序”->IAR Embedded Workbench for 8051 7.60->IAR Embedded Workbench。

③创建工程,并将编写的代码添加到工程中,再进行编译和调试,确定无误后,通过下载器将程序下载到开发板上。观察现象。

四、设计性实验程序流程与分析(从节点)

实验要求:设计一个工程,下载到目标板上,要求按下K1时,LED1 闪烁(视觉能够分辨出),再次按下K1,LED1 熄灭;按下K2时,LED2 闪烁,再次按下 K2,LED2 熄灭;如此重复循环。

1.初始化流程图如下所示:

第3页,共58页

无线通信技术综合训练报告 训练二 GPIO实验 Yes 延时函数 开始 初始化声明 按键初始化,从节点P0.1、P0.7为普通I/O口,输入状态、上/下拉端口输入 LED初始化 按键扫描 No K1是否等于0 延时消抖 Yes K2是否等于0 Yes K1是否等于0 No 延时消抖 扫描值为1 扫描值为0 Yes K2是否等于0 扫描值为2 图2.1初始化流程图

扫描值为0 2.主函数流程图如下所示:

第4页,共58页

无线通信技术综合训练报告 训练二 GPIO实验

LED1闪 LED1灭 Yes 按键1是否等于1 开始 初始化指示当1成立 Yes 扫描值是否等于1 No No Yes 扫描值是否等于2 No 按键2是

LED2扫描值为0 否等于1 按键都没按 LED2 图2.2主函数流程图 五、实验结果与分析

(一)基本实验一实验结果:开发板上的指示灯自动地闪烁。

结果分析:程序中对LED进行初始化设置,从节点LED1、LED2对应的端口分别为P1.1和P1.0,将其设置为普通I/O口,并将端口定义为输出方向,“ON”为点亮,“OFF”为熄灭,调用while函数,使LED1、LED2不停地闪烁。

(二)基本实验二实验结果:按下按键K1,指示灯LED1闪烁,按下按键K2,指示灯LED2闪烁。

结果分析:程序中较之实验1添加了对按键的初始化,通过它来分别控制LED1和LED2,在定义按键时,要对按键进行按键扫描,扫描过程中要通过调用延时程序来进行消抖,防止按键激活失败,调用while函数,当扫描值为1,说明按键1激活,按下K1,就可以使LED1闪烁,当扫描值为2,则说明按键2激活,按下K2,则可以使LED2闪烁。否则返回扫描值为0,则说明按键没被激活。

(三)设计性实验实验结果:按下K1时,LED1 闪烁,再次按下K1,LED1 熄灭;按下K2时,LED2 闪烁,再次按下 K2,LED2 熄灭,如此重复循环。

结果分析:设计性实验同基本实验相似,只要在基本实验2的基础上稍作改动即可,通过对按键初始化使按键分别控制LED1和LED2,在定义按键时,对按键进行按键扫描,扫描过程中要通过调用延时程序来进行消抖,防止按键激活失败,如果K1=0,返回扫描值为1;如果K2=0,则返回扫描值为2,否则返回扫描值为0;调用while函数,当扫描值为1,说明按键1激活,按下K1,就可以使LED1点亮,再按下K1,可以使LED1熄灭;当扫描值为2,则说明按键2激活,按下K2,则可以使LED2点亮,再按下K2,则使LED2熄灭。否则返回扫描

第5页,共58页

无线通信技术综合训练报告 训练二 GPIO实验 值为0,则说明按键没被激活。从而实现设计性试验的要求。

六、实验思考题

1. Delay(uint)中参数uint 取值范围是什么?如果超范围程序能运行吗? 为什么? 答:取值范围是(0~65535),如果超范围程序仍然能够运行。

2.基本实验 2 中“Keyvalue = 0”语句的作用是什么?如果删除对实验结果有什么影响? 答:“Keyvalue = 0”语句的作用是把相应按键清零。删除对实验结果没有影响。 3.本实验对 CC2530的哪些寄存器进行了操作?都是必要的吗?

答:首先是对“P0、P1和P2端口功能寄存器”的操作,由于它们默认都是普通I/O口所以不是必要的;接下来是对“P0、P1和P2端口方向选择寄存器”的操作,默认为输入方向,所以对于端口设置为输入时是不必要的,而对于端口设置为输出时是必要的。最后是对“P0、P1和P2端口输入模式选择寄存器”的操作,它规定了端口输入模式是“三态”还是“上拉/下拉”,根据具体设置而定。

4.设计性实验中如何使 LED 有多种不同的闪烁方式?

答:①可以通过延时时间长短不一样来实现LED闪烁快慢的不同。 ②可以通过按键控制不同LED指示灯,闪烁不同频率来实现。

七、存在问题和解决方法

存在的问题1:基本实验1中,LED指示灯闪烁频率太快,视觉无法分辨。

解决方法:通过改变延时时间的长短来实现LED指示灯闪烁的快慢。 存在的问题2:基本实验2中,按键无法控制LED指示灯的亮灭。

解决方法:查看程序,看按键端口、指示灯端口初始化设置是否正确,主从端口是否

区分清楚,按键对应相应的LED指示灯是否正确。

第6页,共58页