嵌入式cc2530单片机ZigBee-流水灯的实验

嵌⼊式cc2530单⽚机ZigBee-流⽔灯的实验
嵌⼊式cc2530单⽚机ZigBee
单⽚机是⼀种集成电路芯⽚,包含中央处理器CPU、随机存储器RAM、只读存储器ROM、输⼊输出I/O接⼝、中断控制系统、定时/计数器和通信等多种功能部件
阴极保护防腐其针脚定义如下:
1.0 --P0、P1各8个针脚(1字节=8位,针脚/位。⼀般16进制定义,可以⾃⼰换算⼆进制并结合参数表去理解每个设定功能),P2有5个针脚。
1.1–CC2530单⽚机采⽤QFN40封装,外观上是⼀个边长为6mm的正⽅形芯⽚,每个边上有10个引脚,总共40个引脚。CC2530的引脚布局如图所⽰。
【软件】
步态识别1、IAR Embedded Workbench for 8051,IAR是著名的C编译器,CC2530使⽤的是8051内核。
2、SmartRF Flash Programmer,将IAR⽣成的hex⽂件烧写进cc2530芯⽚中。
3、sscom3.2 串⼝调试助⼿。
⼀、任务要求
编写程序控制实验板上的LED1和LED2的亮、灭状态,使它们以流⽔灯⽅式进⾏⼯作,即实验板通电后两个发光⼆极管以下述⽅式⼯作:
①电后LED1和LED2都熄灭。
②延时⼀段时间后LED1点亮。
③延时⼀段时间后LED2点亮,此时LED1和LED2都处在点亮状态。
④延时⼀段时间后LED1熄灭。
⑤延时⼀段时间后LED2熄灭,此时LED1和LED2都处在熄灭状态。
⑥返回步骤②循环执⾏。
⼆、2、CC2530的I/O引脚
1)CC2530总共具有21个数字I/O引脚,这些引脚可以组成3个8位端⼝,分别为端⼝0、端⼝1和端⼝2,通常表⽰为P0、P1和P2。其中,P0和P1是完全的8位端⼝,⽽P2仅有5位可以使⽤。21个I/O引脚具有以下特性,可以通过编程进⾏配置。
2)1.0–可配置为通⽤I/O端⼝
通⽤I/O端⼝是指可以对外输出逻辑值0(低电平)或1(⾼电平),也可读取从I/O引脚输⼊的逻辑值(低电平为0,⾼电平为1)。可以通过编程来将I/O端⼝设置成输出⽅式或输⼊⽅式。
3)1.1–可配置为外部设备I/O端⼝
CC2530内部除了含有8051CPU核⼼外,还具有其他功能模块,如ADC、定时器和串⾏通信模块,我们也称这些功能模块为外设。可通过编程将I/O⼝与这些外设建⽴起连接关系,以便这些外设与CC2530芯⽚外界电路进⾏信息交换。需要注意的是,不能随意指定某个I/O ⼝连接到某个外设
4)1.2–输⼊⼝具备3种输⼊模式
当CC2530的I/O⼝被配置成通⽤输⼊端⼝时,端⼝的输⼊模式有上拉、下拉和三态三种选择,可通过编程进⾏选择,能够适应多种不同的输⼊应⽤。
5)1.3 --具有外部中断能⼒
当使⽤外部中断时,I/O⼝引脚可以作为外部中断源的输⼊⼝,这使得电路设计变得更加灵活。
6)I/O端⼝的相关寄存器
在单⽚机内部,有⼀些具有特殊功能的存储单元,这些存储单元⽤来存放控制单⽚机内部器件的命令、数据或是运⾏过程中的⼀些状态信息。这些寄存器统称“特殊功能寄存器(SFR)”,操作单⽚机本质上就是对这些特殊功能寄存器进⾏读写操作,并且某些特殊功能寄存器可以位寻址。例如通过已配置好的P1_1⼝向外输出⾼电平可⽤以下代码实现:
P1 = 0x02; 或者 P1_1 = 1;
7)P1是特殊功能寄存器的名字,P1_1是P1中⼀个位的名字,为了便于使⽤,每个特殊功能寄存器都会起⼀个名字,其中x取值为0~2,分别对应P0、P1和P2⼝。
三、电路分析
要使⽤单⽚机控制外界器件,就要清楚器件与单⽚机的连接关系和⼯作原理,这样才能在编写程序代码时知道该操作哪些I/O端⼝或功能模块,以及应该输⼊或输出什么样的控制信号。
(1)LED的连接和⼯作原理
实验板上LED1和LED2与CC2530的连接如图2-2所⽰,LED1和LED2的负极端分别通过⼀个限流电阻连接到地(低电平),它们的正极端分别连接到CC2530的P1_0端⼝和P1_1端⼝。
为控制两个LED,连接LED的P1_0端⼝和P1_1端⼝应被配置成通⽤输出端⼝。当端⼝输出低电平(逻辑值0)时,LED正极端和负极端都为低电平,LED两端没有电压差,也就不会有电流流过LED,此时LED熄灭。当端⼝输出⾼电平时,LED正极端电平⾼于负极端电平,LED 两端存在电压差,会有电流从端⼝流出并通过LED的正极端流向负极端,此时LED点亮
四、寄存器配置分析:
这⾥我们只⽤到了灯,所以我们只配置灯的⼀系列寄存器。
第⼀个是我们端⼝功能选择寄存器,我们⽤的是P1端⼝所以我们只对P1端⼝进⾏配置。
对端⼝输⼊和输出进⾏定义:
五、流程分析
根据任务要求,可将LED的控制流程⽤流程图进⾏表⽰,如下图所⽰。
六、代码如下:
#include"ioCC2530.h"//引⽤CC2530头⽂件
/**************************************************************函数名称:delay
功能:软件延时
⼊⼝参数:time--延时循环执⾏次数
出⼝参数:⽆
返回值:⽆
**************************************************************/ void delay(unsigned int time)
{
unsigned int i;
unsigned char j;
for(i =0;i < time;i++){
for(j =0;j <240;j++)
}
}
/**************************************************************函数名称:main
功能:程序主函数l型密封圈
热流道分流板⼊⼝参数:⽆
出⼝参数:⽆
返回值:⽆
**************************************************************/ void main(void)
{
P1SEL &=~0xff;//设置P1⼝所有位为普通IO⼝    P1DIR |=0xff;//设置P1⼝所有位为输出⼝
while(1)//程序主循环
人造板生产线{
P1 =~P1;//P1⼝输出状态反转
delay(1000);//延时
}
}弹片开关
或者代码为:
#include"iocc2530.h"//头⽂件
#define LED1 P1_0 //宏定义p1_0
#define LED2 P1_1 //宏定义p1_1
void delay(unsigned int time){//延时函数unsigned int i,j;
for(i=0;i<time;i++){
for(j=0;j<200;j++);
}
}
void main(void){//主函数
P1SEL &=~0X03;//定义通⽤I/O⼝
P1DIR |=0X03;//定义输出接⼝
LED1=0;//将led1置于低电平
LED2=0;//将led2置于低电平
while(1){
delay(100);
LED1=1;
delay(100);
LED2=1;
delay(100);
LED1=0;
delay(100);
LED2=0;
delay(100);
}//利⽤while循环使灯依此循环亮循环灭}

本文发布于:2024-09-26 02:17:41,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/320281.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:功能   寄存器   输出   引脚   控制   极端   连接   低电平
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议