找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13399|回复: 1
打印 上一主题 下一主题
收起左侧

CC2530按键控制LED开关实验详解与源程序

[复制链接]
跳转到指定楼层
楼主
ID:261369 发表于 2017-12-14 01:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
4、CC2530 按键控制LED开关

1.实验目的
1)、通过实验掌握CC2530芯片GPIO的配置方法
2)、掌握Led驱动电路及开关Led的原理
3)、掌握检测按键的方法

2.实验设备

硬件:PC 机 一台 EB2530(底板、核心板、仿真器、USB 线) 一套

软件:2000/XP/win7 系统,IAR 8.10 集成开发环境

3.实验相关电路图



发光二极管是属于二极管的一种,具有二级管单向导电特性,即只有在正向电压(二极 管的正极接正,负极接负)下才能导通发光。P1.0引脚接发光二极管(D1)的负极, 所以P1.0引脚输出低电平D1亮,P1.0引脚输出高电平D1熄灭,D2,D3同理。

注:D3灯的控制脚复用到了防真器,而防真器用到了锁存器,所以要使得D3亮,必 须取下防真器。

按键S1接在P0_1上,当按键松开时,p0_1通过电阻上拉为高电平,当按键S1按下时,
p0_1为低电平。


4.实验相关寄存器

操作P1.0我们需要掌握相关寄存器的作用和配置方法。如下表所示:

寄存器
作用
描述
P1 (0x90)
端口1
端口1。通用I / O端口。可以从SFR位寻址。
P0SEL
端口0 功能
选择
P0.7 到P0.0功能选择
0: 通用I / O
1: 外设功能
P0DIR
端口0方向
P0.7到P0.0的I/O方向
0: 输入
1: 输出
P1SEL
端口1 功能
选择
P1.7 到P0.0功能选择
0: 通用I / O
1: 外设功能
P1DIR
端口1 方向
P1.7到P1.0的I/O方向
0: 输入
1: 输出

按照表格寄存器的内容,对P1.0口进行配置,当P1.0输出低电平时D1被点亮。 所 以配置如下:


P1SEL &=~0x01; //配置P1.0为通用IO口 ,默认为0的,可以不设 P1DIR |= 0x01;              //P10 定义为输出

按键S1配置如下:
P0SEL &= ~0X2;              //设置 P01 为普通 IO 口
P0DIR &= ~0X2;              //按键在 P01 口,设置为输入模式

5.源码分析

1)、请打开工程,学习例程 \4、CC2530 按键控制 LED 开关\sz-yy-zigbee\sz-yy-zigbee.eww
2)、主代码 main.c 如下:

  1. #include <ioCC2530.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. //定义控制 LED 灯的端口
  5. #define LED1 P1_0 //LED1 为 P1.0 口控制
  6. #define KEY1 P0_1              //KEY1 为 P0.1 口控制
  7. //函数声明
  8. void Delayms(uint);              //延时函数
  9. void InitLed(void);              //初始化 LED1
  10. void KeyInit();              //按键初始化
  11. uchar KeyScan();              //按键扫描程序
  12. /**************************** 延时函数
  13. *****************************/
  14. void Delayms(uint xms)              //i=xms 即延时 i 毫秒
  15. {
  16. uint i,j;
  17. for(i=xms;i>0;i--)
  18. for(j=587;j>0;j--);
  19. }
  20. /**************************** LED 初始化函数
  21. *****************************/
  22. void InitLed(void)



  23. {
  24. P1DIR |= 0x01;              //P1_0 定义为输出 LED1 = 1;              //LED1 灯熄灭
  25. }
  26. /**************************** 按键初始化函数
  27. *****************************/
  28. void InitKey()
  29. {
  30. P0SEL &= ~0X2;              //设置 P01 为普通 IO 口
  31. P0DIR &= ~0X2;              //按键在 P01 口,设置为输入模式
  32. }
  33. /**************************** 按键检测函数
  34. *****************************/
  35. uchar KeyScan(void)
  36. {
  37. if(KEY1==0)
  38. {
  39. Delayms(10);
  40. if(KEY1==0)
  41. {
  42. while(!KEY1);              //松手检测
  43. return 1;              //有按键按下
  44. }
  45. }
  46. return 0;              //无按键按下
  47. }
  48. /*************************** 主函数
  49. ***************************/
  50. void main(void)
  51. {
  52. InitLed();              //调用初始化函数 InitKey();
  53. while(1)
  54. {
  55. if(KeyScan())              //按键改变 LED 状态 LED1=~LED1;
  56. }



  57. }
复制代码

6.实验步骤

1)、打开代码工程,\4、CC2530 按键控制 LED 开关\sz-yy-zigbee\sz-yy-zigbee.eww,如 果 IAR 没有很安装,请按。\学习例程以及开发环境安装\2.开发环境搭建.pdf 去安装。
2)通过仿真器把开发板接到电脑上。

3)编绎下载。





程序已下载完成,可以运行:

4).现象:每按下一次 S1,D1 的状态会跟着变化。



全部资料51hei下载地址:
4、CC2530 按键控制LED开关.rar (486.34 KB, 下载次数: 12)



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:547648 发表于 2019-5-26 16:45 | 只看该作者
请问:cc2530的s2键端口是什么?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表