您好,欢迎来到好土汽车网。
搜索
您的当前位置:首页CC2530基础实验指导

CC2530基础实验指导

来源:好土汽车网


无线传感网络基础实验-CC2530

指导书

一、开发环境介绍

硬件设备:CC2530扩展板一块,Zigbee模块一块,编程器一个,USB线一条

CC2530引脚图

软件环境:IAR Embedded Workbench for MCS-51

二、IAR的使用

1、打开IAR:

开始->IAR Systems->IAR Embedded Workbench for MCS-51 7.51A Evaluation

下点击IAR Embedded Workbench图标打开IAR软件,如图1

图1

2、工程建立:

在菜单栏选择File->New->Workspace,完成工作区的建立。

在菜单栏选择Project->Creat New Project,建立一个新的工程,如图2所示:

图2

弹出图3建立新工程对话框,确认Tool chain 栏已经选择8051,在Project

templates栏选择Empty project 单击下方OK 按钮。

图3

根据需要选择工程保存的位置,更改工程名,如ledtest 单击Save来保存,如图4所示。这样便建立了一个空的工程。

图4

这样工程就出现在工作区窗口中了,如图5所示

图5

系统产生两个创建配置:调试和发布。在这里我们只使用Debug即调试。项目名称后的星号(*)指示修改还没有保存。选择菜单:File\\Save\\Workspace ,保存工作区文件,并指明存放路径,这里把它放到新建的工程目录下。

3、添加文件或新建程序文件

选择菜单Project\\Add File 或在工作区窗口中,在工程名上点右键,在弹出的快捷菜单,选择CC2530基础实验中对应实验中需要的文件,点击打开,如图6。

图6

打开后工程文件显示如图7:

图7

如没有建好的程序文件也可单击工具栏上的 或选择菜单File\\New\\File 新建一个空文本文件,向文件里添加程序代码。

4、工程的编译与下载

编译方式有以下几种:

A.菜单栏中快捷方式

编译:

生成可执行代码:

B.选择菜单栏中的Project->Compile,然后选择菜单栏中Project->Make; C.选择菜单栏中的Project->Rebuild All Code下载:

A.选择菜单栏中Project->Debug B.单击菜单栏图标

三、驱动安装

在第一次插上下载器时,一般会提示驱动安装失败。在设备管理器对话框中,右面图中的Chipcom SRF04EB上会打红叉。 安装驱动过程:右键点击我的电脑,选择设备管理器,右键单击打红叉的Chipcom SRF04EB项,会出现如图8所示的对话框。

图8

选择浏览计算机以查找驱动程序软件(R)项,调到下界面,如图9

图9

单击浏览,选择IAR软件安装路径中的D:\\IAR Systems\\Embedded Workbench 5.3 Evaluation version\\8051\\drivers目录。如图10

图10

驱动安装成功,如图11

图11

IAR编译器中的设置:

点击工作空间名,如右图12中的蓝色立方体

图12

然后选择菜单栏中的Project->Option,弹出图13,单击Debugger,在Setup栏的Driver下,选择驱动为Texas Instruments。其他的选择默认就可以。

图13

实验一 I/O口的控制

实验介绍:

本次实验的目的是让用户学会使用CC2530的I/O来控制外设,本例以LED灯为外设,用CC2530控制简单外设时,应将I/O设置为输出,实现LED的闪烁。LED2与LED3分别与CC2530单片机的P1.0(红灯)与P1.1(绿灯)连接。 实验设备:仿真器1块,Zigbee模块1块,USB连接线一根。 实验相关寄存器:

实验中操作了的寄存器有P1,P1DIR,没有设置而是取默认值得寄存器有:P1SEL,P1INP。

实验目的:通过延时来控制LED2与LED3交替发光。

P1DIR(P1方向寄存器) 位号 7 6 5 4 3 2 1 0 位名 DIRP1_7 DIRP1_6 DIRP1_5 DIRP1_4 DIRP1_3 DIRP1_2 DIRP1_1 DIRP1_0 复位值 0 0 0 0 0 0 0 0 操作性 度/写 度/写 度/写 度/写 度/写 度/写 度/写 度/写 功能描述 P1_7方向,0输入,1输出 P1_6方向,0输入,1输出 P1_5方向,0输入,1输出 P1_4方向,0输入,1输出 P1_3方向,0输入,1输出 P1_2方向,0输入,1输出 P1_1方向,0输入,1输出 P1_0方向,0输入,1输出

P1SEL(P1功能选择寄存器) 位号 7 6 5 4 3 2 1 0 位名 SELP1_7 SELP1_6 SELP1_5 SELP1_4 SELP1_3 SELP1_2 SELP1_1 SELP1_0 复位值 0 0 0 0 0 0 0 0 操作性 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 功能描述 P1_7功能,0普通I/O,1外设功能 P1_6功能,0普通I/O,1外设功能 P1_5功能,0普通I/O,1外设功能 P1_4功能,0普通I/O,1外设功能 P1_3功能,0普通I/O,1外设功能 P1_2功能,0普通I/O,1外设功能 P1_1功能,0普通I/O,1外设功能 P1_0功能,0普通I/O,1外设功能 P1INP(P1口输入模式寄存器) 位号 7 6 5 4 3 2 1,0 位名 MDP1_7 MDP1_6 MDP1_5 MDP1_4 MDP1_3 MDP1_2 保留 复位值 0 0 0 0 0 0 0 操作性 读/写 读/写 读/写 读/写 读/写 读/写 R0 功能描述 P1.7输入模式功能,0上下拉电阻,1三态 P1.6输入模式功能,0上下拉电阻,1三态 P1.5输入模式功能,0上下拉电阻,1三态 P1.4输入模式功能,0上下拉电阻,1三态 P1.3输入模式功能,0上下拉电阻,1三态 P1.2输入模式功能,0上下拉电阻,1三态 无用

上下拉电阻控制请查看P2INP寄存器。

实验代码:

#include #define RLED p1-0 #define YLED p1-1

#define s1 p1-2 #define s3 p1-3

int s1,s3;

Void Delay(unsig

实验二 按键控制LED闪烁

实验介绍:

本次试验是通过检测按键状态来控制LED2和LED3的状态,按键S1对应CC2530的引脚P1.2,按键S3对应CC2530的引脚P1.3,LED2对应CC2530的引脚P1.0,LED3对应CC2530的引脚P1.1 。要实现按下S1,LED2闪烁。按下S3,LED3闪烁。

实验设备:仿真器一块,Zigbee模块一块,USB线一根。 实验相关寄存器:

实验中操作了的寄存器有P0,P0DIR,P0SEL,P1INP。 P0:通用IO口;

P0DIR:P0口方向寄存器;(描述同P1DIR)

P0SEL:P0口功能选择寄存器(通用IO、外围功能接口);(描述同P1SEL) P1INP:端口P1输入模式控制寄存器。(参见实验1说明) 实验目的:

通过扫描检测按键S1与S3按键的状态,根据按键状态控制LED2与LED3状态。当S1按下时,LED2闪烁。当S3按下时,LED3闪烁。任何一个按键只要再次按下,对应LED的状态就会发生改变。

实验三 系统睡眠状态唤醒

实验介绍:

本次实验使能外部I/O中断(按下液晶扩展板的S1或S3按键)唤醒CC2530,每次唤醒LED闪烁10次,然后进入低功耗模式,在进入PM3之前程序会将两个LED灯关闭。

实验设备:仿真器一块,Zigbee模块一块,USB线一根。 实验相关寄存器:

P2INP(P2输入模式寄存器) 位号 位名 复位值 操作性 功能描述 7 PDUP2 0 读/写 P2口上下拉选择,0上拉,1下拉 6 PDUP1 0 读/写 P1口上下拉选择,0上拉,1下拉 5 4-0

PDUP0 MDP2_4 0 0 读/写 读/写 P0口上下拉选择,0上拉,1下拉 P2.4-P2.0口输入模式,0上拉,1下拉 CC2530共有四种工作模式,运行模式、待机模式、低功耗模式1、低功耗模式2、低功耗模式3。详细说明如下

实验中用到的寄存器如下:

实验目的:

熟悉CC2530电源管理模块,掌握常用的几种工作模式。

实验代码: //cd wxl2009

#include

#define uint unsigned int #define uchar unsigned char #define DELAY 10000

//小灯控端口定义 #define RLED P1_0 #define YLED P1_1

void Delay(void);

void Init_IO_AND_LED(void); void PowerMode(uchar sel);

/****************************************************************

*函数功能:延时 *入口参数:无 *返回值 :无 *说 明 :可在宏定义中改变延时长度

****************************************************************/ void Delay(void) { uint tt; for(tt = 0;tt/**************************************************************** *函数功能:初始化电源 *入口参数:para1,para2,para3,para4 *返回值 :无 *说 明 :para1,模式选择 * * * para1 0 1 2 3 * * mode PM0 PM1 PM2 PM3 * * *

****************************************************************/ void PowerMode(uchar sel) { uchar i,j; i = sel; if(sel<4) { SLEEPCMD &= 0xfc; SLEEPCMD |= i; for(j=0;j<4;j++); PCON = 0x01;//睡眠 } else { PCON = 0x00;//唤醒 } }

/****************************************************************

* 函数功能:初始化I/O,控制LED * 入口参数:无 * 返回值 :无 * 说 明 :初始化完成后关灯

****************************************************************/ void Init_IO_AND_LED(void) {

P1DIR = 0X03; RLED = 1; YLED = 1;

// P0SEL &= ~0X30; //设置P0口的P1.4,P1.5为通用IO口 // P0DIR &= ~0X30;

// P0INP &= ~0X30;//有上拉、下拉 P2INP &= ~0X40; //P1口选择上拉

P1IEN |= 0X0C; //允许P1.2,P1.3中断 PICTL |= 0X02; //P1口下降沿产生中断

EA = 1; //允许总中断

IEN2 |= 0X10; //P1IE = 1(P1口中断允许);

P1IFG |= 0x00; //清P1口中断标志 };

/**************************************************************** * 函数功能:主函数 * 入口参数: * 返回值 :无

* 说 明 :10次绿色LED闪烁后进入睡眠状态

****************************************************************/ void main() { uchar count = 0; Init_IO_AND_LED(); RLED = 0 ; //开红色LED,系统工作指示 Delay(); //延时 Delay(); Delay(); Delay(); while(1) { YLED = !YLED;

RLED = 0; count++; if(count >= 20) {

count = 0; RLED = 1; PowerMode(3); //10次闪烁后进入睡眠状态 } //Delay(); Delay();

//延时函数无形参,只能通过改变系统时钟频率 //来改变小灯的闪烁频率 }; }

/***************************************** //唤醒系统

*****************************************/ #pragma vector = P1INT_VECTOR __interrupt void P1_ISR(void) {

if(P1IFG>0) {

P1IFG = 0; }

P1IF = 0;

PowerMode(7);//退出睡眠模式 }

实验四 片内温度采集

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- howto234.com 版权所有 湘ICP备2022005869号-3

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务