课程名称:Zigbee技术及应用 实验项目:LED灯闪烁实验 指导教师: ________
专业班级: ___________ 姓名: ________ 学号: _______________ 成绩: _________
1. 实验目的
(1) 学习单片机10 口配置与驱动,实现指示灯LED1闪烁,频率为1Hz; (2) 通过模块化编程,养成良好编程习惯。
2. 实验设备
(1) CC253C核心板一块; (2) 传感器底板一个; (3) 仿真器一个; (4) 方口 USB线一根;
3. 实验原理
3.1硬件设计原理
本实验的原理如图1-1所示。其中,LED1和LED3都串联一个R273和R275限流电阻,然后连接到
CC2530勺P1 口的P1_1和P1_0管脚上。当P1_1为低电平时,LED1上有电流流过,LED1被点亮,反
之 熄灭。
33V LED1
T
片
_ ____________ _________________ gS P11—
LED3
------------------- ---------------------------- —
4T0R
图 1-1 LED 灯原理图
限流电阻R的计算:图中R273和R275限流电阻,其计算公式如下:
R= (U— UF)/ID
(1-1)
式中,U为电路供电电压,UF为LED正向压降,ID为LED的工作电流。对于普通LED发光二极管, 其正向压降:黄色为1.4V、红色为1.6V、蓝/白色为2.5V;点亮工作电流为3-20mA。
由图1-1可知,电路供电电压为U=3.3V,LED1选择为黄色发光二极管(压降是 1.4V),带入(1-1) 式可得R的取值范围是95-633Q,电阻只要在此范围内即可,一般选择了 470Q的常用电阻。 从图1-1可以看出,如果要让LED1发光,需要设置CC253C对应的I/O 口将LED电平拉低。本实验 我们只点亮LED1指示灯,所以只要设置LED1为低电平即可,所以只要我们知道LED1与CC2530哪个 管脚相连就可以进行编程。随着这个思路我们在原理图中找到 将P1_1管脚拉低LED1即被点亮。
LED1与CC2530芯片的P1_1管脚连接,
3.2 程序设计原理
( 1 )主程序分析
本实验的程序流程如图1-2所示,其重点IO 口的配置。如果以1Hz的频率点亮LED1闪烁,贝嚅要 配置P1_1为输出,然后在P1_1输出1Hz的脉冲信号。
开始
图1-2程序逻辑流程图
(2) 10端口配置
P1 口通过特殊功能寄存器 P1SEL ( P1 口功能选择寄存器)和P1DIR ( P1 口方向寄存器)进行配 置,其定义如下
P1SEL( P1功能选择寄存器,P0SEL同理): 位号码 7:0 名称 SELP1_[7:0] 复位 0x00 R/W R/W 描述 P1.7到P0.0功能选择 0: 通用1 / 0 1:外设功能
P1DIR( P1方向寄存器,P0DIR同理): 位号码 7:0 名称 复位 R/W R/W 描述 P1.7到P1.0的I/O 方向 0:输入 1:输出 SELP1_[7:0] 0x00 特殊功能寄存器的配置方法:通过位操作实现对特殊功能寄存器的配置。【例如,如果需要对P1SEL 的第3位设置为1,则可用P1SEL |= 0x08 (二进制表示为:0000 1000来实现;如果需要对P1SEL的第3 位设置为0,则可用P1SEL &= 0xF7来实现。】
(3)延时子程序设计
延时函数原型如下,在16M Hz主时钟频率下,参数time的值表示延时了多少ms。(本例使用的 cc253(单片机上电默认使用内部RC振荡器产生系统主时钟,内部主时钟 RC振荡器频率为16M Hz)
void Delay_m$ un sig nedint time) {
unsigned int i, j; for(i=0; i