小蜜蜂笔记
嵌入式开发与物联网应用教育践行者

【感知层备赛训练题】CC2530开发基础-人流量计数统计

任务要求

商场在某段时间,需要对人流量进行计数统计,该题模拟计数器功能。选手找到一块国赛Zigbee小模块或者XMF09B开发板,由选手独立新建工程并编写、编译代码,模拟计数效果,实现以下任务要求:
计数从Zigbee模块复位后,由0开始计数,每按下1次SW1按键直到松开后,进行一次计数统计。并且计数结果通过板上D3-D6四个灯以二进制显示。当技术到16进位归零。
例:当复位后,点击SW1按键后松开一次,面板的D5灯亮,其余灯灭(表示二进制0001),当点击第二次后松开,D6灯亮,其余灯熄灭(表示二进制0010),具体二进制表示方法如下:
D4灯 ——> bit3
D3灯 ——> bit2
D6灯 ——> bit1
D5灯 ——> bit0

参考源码

#include "ioCC2530.h"

#define D3  P1_0
#define D4  P1_1
#define D5  P1_3
#define D6  P1_4
#define SW1 P1_2

unsigned char Num = 0;    //计数统计变量
/*=======================简单的延时函数========================*/
void Delay(unsigned int t)
{
  while(t--);
}
/*=======================端口初始化函数========================*/
void Init_Port()
{
  P1SEL &= ~0x1b;       //将P1_0,P1_1,P1_3,P1_4设置为通用I/O端口  
  P1DIR |= 0x1b;        //将P1_0,P1_1,P1_3,P1_4设置为输出方向
  P1 &= ~0x1b;          //关闭4个LED灯
  
  P1SEL &= ~0x04;       //将P1_2设置为通用I/O端口
  P1DIR &= ~0x04;       //将P1_2设置为输入方向
  P1INP &= ~0x04;       //将P1_2设置为上拉/下拉
  P2INP &= ~0x40;       //将P1_2设置为上拉
}
/*===================统计结果显示函数====================*/
void Display_LED()
{
  D5 = 0;
  D6 = 0;
  D3 = 0;
  D4 = 0;
  if((Num & 0x01) == 0x01)       //第0位为1,点亮D5灯
  {
    D5 = 1;
  }
  if((Num & 0x02) == 0x02)       //第1位为1,点亮D6灯
  {
    D6 = 1;
  }
  if((Num & 0x04) == 0x04)       //第2位为1,点亮D3灯
  {
    D3 = 1;
  }
  if((Num & 0x08) == 0x08)       //第3位为1,点亮D4灯
  {
    D4 = 1;
  }
}
/*=======================按键扫描函数=========================*/
void Scan_Keys()
{
  if(SW1 == 0)            //发现有SW1按键信号
  {
    Delay(100);           //延时片刻,去抖动处理
    if(SW1 == 0)          //确认为SW1按键信号
    {
      while(SW1 == 0);    //等待按键松开
      Num++;              //计数统计
      Display_LED();      //显示结果
    }
  }       
}
/*==========================主函数============================*/
void main()
{
  Init_Port();
  while(1)
  {
    Scan_Keys();
  }
}
赞(30)
未经允许不得转载:小蜜蜂笔记 » 【感知层备赛训练题】CC2530开发基础-人流量计数统计

小蜜蜂笔记 更专业 更方便 更高效

联系我们精品小店