cc2530按键控制流水灯

LED电源驱动

51人已加入

描述

         本次设计用LED1,LED2,LED3 灯及按键S1 为外设。采用P10、P11、P14 口为输出口,驱动LED1/LED2/LED3,P01 口为输入口,接受按键信号输入(高电平为按键信号)。

  1.高性能2.4G 射频模块 Q2530RF

  Q2530RF是丘捷技基于TI公司第二代2.4GHz IEEE 802.15.4 /

  RF4CE/ZigBee的第二代片上系统解决方案CC2530 F256的全功能模块,集射频收发及MCU控制功能于一体。外围原件包含一颗32MHz晶振和一颗32.768KHz晶振及其他一些阻容器件。射频部分采用巴伦匹配和外置高增益SMA天线,接收灵敏度高,发送距离远,空旷环境最大传输距离可达400米。模块引出CC2530所有IO口,便于功能评估与二次开发。

  2.多功能开发板Q2530EB

  多功能扩展板Q2530EB 可支持多种射频主控模块(例如Q2530RF等),配置有串口液晶显示接口,USB供电接口,DC 5V电源接口,电池接口,RS232接口,DEBUG接口,五向按键及指示灯,红外遥控信号接收/发射等模块。

  所有的外设均通过SPI总线/UART /DEBUG等接口与射频模块Q2530RF 相连,并完全受Q2530RF 控制和访问。

  多功能仿真扩展板Q2530EB 采用三种电源供电方式:DC 5V供电、USB接口供电、电池供电,可在插座P5设置跳线选择,PIN1-PIN2 为电池供电,PIN2-PIN3 为外接直流电源或者USB接口供电。电源开关为P4。

  Q2530EB 板卡背面的电池盒可放置3节5号干电池,输出电压3.4~4.5V,板载电源电路将其调整到+3.3V 稳定的直流电压输出供后级使用。当电池电压低于3.4V 时,应更换电池以保持模块正常工作。

  Q2530EB 带有1个DC 5V的电源适配器接口P2和一个USB接口P1,输入电压经过稳压器降压为+3.3V输出供后极使用。

  Q2530EB 液晶显示模块提供串口控制方式,液晶显示模块放置于P12 的奇数脚侧,且1~16脚对应于P12的1~31脚, 与TI 官方SmartRF05EB 不同,我司多功能仿真扩展板Q2530EB 液晶显示模块为选配部件,选用128*64 的点阵图形液晶显示模块,并提供该液晶模块的驱动源代码。对不想在这个环节浪费精力的项目开发者来说,我司已为您准备好TI 公司Z-Stack/Basic RF 等几个平台下的液晶显示驱动文件,您只需将该文件将TI 官方资料中同名文件替换即可。

  多功能仿真扩展板Q2530EB配置的RS232接口可用于与其他外设进行通讯。电路上采用U5进行RS232电平转换。通过RS232插座P10 与外设相连。

  串口设有电源跳线P9,用于设置串口芯片启动和关闭。

  串口带有两个收发指示灯D5、D6,分别用于表示串口是否收到或在发送数据,D7为串口电源指示灯。

  多功能仿真扩展板Q2530EB 的主控部分为外接的射频控制模块。通过P14、P15 与Q2530RF 控制模块连接。

  多功能仿真扩展板Q2530EB提供DEBUG接口P13与仿真器相连,并将相关信号(SPI总线,DEBUG信号等)通过插座P14、P15连接至射频控制模块Q2530RF,这些信号线也可通过P11进行断开。

  多功能仿真扩展板Q2530EB 提供一个五相按键(U3)、四个轻触按键(S1/S2/S3/S4)、六颗LED(D1/D2/D3/D4/D8/D9)显示。

  U3可以检测五个方向(中心、向上、向下、向左、向右)和一个按键动作。这样的话就需要有KEY_UP、KEY_DOWN、KEY_LEFT、KEY_RIGHT、KEY_PUSH 五个信号来描述方向按键动作。如果用五个AD 口来采样信号,对某些射频控制模块来说是不现实的或者说不经济的。在与射频控制模块Q2530RF 配合时,Q2530EB 提供两个信号KEY_MOVE, KEY_LEVEL来描述按键动作。当按键朝任何方向移动或被按下时,KEY_MOVE 为高电平。

  同时,另一个信号KEY_LEVEL的值来表述按键方向。

  四个轻触按键(S1/S2/S3/S4)中S4 为系统复位键(RESET),S3 为RemoTI开发系统定义按键,S1、S2为Zigbee开发系统定义按键 。

  六个LED(D1/D2/D3/D4/D8/D9)中D1/D2/D3/D4为Zigbee 开发系统定义LED,D8/D9为RemoTI开发系统定义LED显示。

  多功能扩展开发板Q2530EB配置一个串口FLASH(U7)用于数据和参数的存储。

  红外遥控信号的输入由U8 及其他一些阻容件完成,IR 信号经解调去载波后输入射频控制模块Q2530RF。红外遥控信号的输出由射频控制模块Q2530RF 直接驱动红外发射二极管D10完成发射。

  板上含有一个10k的电位器,方便用户进行模拟量A/D采样的学习与实验,电位器与2530的跳线连接默认是断开的,实验前应将P16的25、26两脚用跳线帽短接;由于电位器、液晶背光、备用LED三个信号复用了2530的同一个管脚,使用时还应将P11的31、32脚和P16的27、28脚也断开。

  3.多功能电池板Q2530BB

  Q2530BB 的射频控制板接口定义同Q2530EB 板保持一致。

  延续Q2530EB 的三种供电方式:DC5V、USB或电池供电。可在插座P5 设置跳线选择,PIN1-PIN2 为电池供电,PIN2-PIN3 为外接直流电源或USB供电。电源开关为P4, 开关旁有”ON”/”OFF”字符指示。

  Q2530BB提供DEBUG接口P10与仿真器相连,相关信号(SPI总线、DEBUG信号等)通过插座P8、P9连接至射频控制模块Q2530RF,也可通过P11进行相关信号的连接与断开选择。

  用户可在PC上通过仿真器实现对射频控制模块Q2530RF的程序仿真调试和下载。

  Q2530BB 同样提供与仿真器配合实现协议分析仪Packet Sniffer的功能。

  Q2530BB 提供1个轻触按键S2和1个复位按键S1。同时提供两个LED指示灯D1和D2。

  Q2530BB 采用一个光敏电阻构成光照度传感器电路,一个温敏电阻构成的温度传感器电路,然后输入IC 进行AD 转换。开发系统提供了zstack组网时,对两路外部传感器电压采样的样例程序。

  下面是本次设计的流程图:

流水灯

  设计相关寄存器:P1,P1DIR,P0SEL,P0INP,P0,P0DIR

流水灯

  程序功能:本设计程序实现按键控制LED 灯:开机按键一次,LED3、LED2、LED1 依次点亮;再次按键,LED3、LED2、LED1 依次熄灭;如此循环。

  本次实习的程序代码如下所示:

  //BY QIUJIE TECH.INC

  #include 《ioCC2530.h》

  #define uint unsigned int

  #define uchar unsigned char

  //定义控制灯的端口

  #define RLED P1_0 //定义LED1为P10口控制

  #define GLED P1_1 //定义LED2为P11口控制

  #define YLED P1_4 //定义LED3为P14口控制

  #define KEY1 P0_1 //定义按键为P01口控制

  //函数声明

  void Delay(uint); //延时函数声明

  void InitIO(void); //初始化函数声明

  void InitKey(void); //初始化按键函数声明

  uchar KeyScan(void); //按键扫描函数声明

  uchar Keyvalue = 0 ; //定义变量记录按键动作

  uint KeyTouchtimes = 0 ; //定义变量记录按键次数

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

  //按键初始化

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

  void InitKey(void)

  {

  P0SEL &= ~0X02;

  P0DIR &= ~0X02; //按键在P01口,设置为输入模式

  P0INP |= 0x02; //上拉

  }

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

  //初始化程序,将P10、P11、P14定义为输出口,并将LED灯初始化为灭

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

  void InitIO(void)

  {

  P1DIR |= 0x13; //P10、P11、P14定义为输出

  RLED = 0;

  GLED = 0;

  YLED = 0; //LED灯初始化为灭

  }

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

  //按键动作记录函数

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

  uchar KeyScan(void)

  {

  if(KEY1 == 1) //高电平有效

  {

  Delay(100); //检测到按键

  if(KEY1 == 1)

  {

  while(KEY1); //直到松开按键

  return(1);

  }

  }

  return(0);

  }

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

  //主函数

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

  void main(void)

  {

  InitIO(); //初始化LED灯控制IO口

  InitKey(); //初始化按键控制IO口

  while(1)

  {

  Keyvalue = KeyScan(); //读取按键动作

  if(Keyvalue == 1) //按下按键设置为LED3,LED2,LED1倒序流水闪烁

  {

  GLED = !GLED;

  Delay(20000);

  YLED = !YLED;

  Delay(20000);

  RLED = !RLED;

  Delay(20000);

  }

  }

  }

  以下是本次设计的原理图

  Q2530BB电池板原理图

  流水灯

  Q2530EB开发板原理图

  流水灯
流水灯

Q2530RF射频板原理图

  流水灯

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分