国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【23物聯(lián)網(wǎng)國賽樣題第二套】單片機,CC2530單片機呼吸燈與按鍵控制--單擊雙擊長按、呼吸燈與亮度維持,物聯(lián)網(wǎng)競賽今年歷年國賽樣題真題代碼

這篇具有很好參考價值的文章主要介紹了【23物聯(lián)網(wǎng)國賽樣題第二套】單片機,CC2530單片機呼吸燈與按鍵控制--單擊雙擊長按、呼吸燈與亮度維持,物聯(lián)網(wǎng)競賽今年歷年國賽樣題真題代碼。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

任務(wù)要求:

  • ZigBee節(jié)點盒通電或重置,節(jié)點盒的LED1、LED2燈都不亮。
  • 長按SW1鍵不松開,LED1燈亮,LED2燈熄滅。
  • 松開SW1鍵,LED1、LED2亮燈都常亮。
  • 雙擊SW1可以控制LED1燈實現(xiàn)呼吸燈效果,LED2燈保持熄滅狀態(tài)。
  • 再次雙擊SW1可以控制LED1維持當(dāng)前亮度不再發(fā)生變化,LED2繼續(xù)保持熄滅狀態(tài)。
  • 將編寫好的程序發(fā)布到藍(lán)色ZigBee節(jié)點盒中。

cc2530呼吸燈,物聯(lián)網(wǎng)競賽,物聯(lián)網(wǎng),單片機,嵌入式硬件,c語言

任務(wù)分析:

這道題其實并不難,主要考的是思維邏輯,這邊我們只寫平常常用的按鍵與呼吸燈,通過變量控制來達(dá)到想要的效果,不用定時器,只在循環(huán)中完成任務(wù)。我們按照任務(wù)步驟一步一步開發(fā),先寫初始化,然后編寫按鍵觸發(fā)代碼,最后在相應(yīng)位置加入燈的效果。

代碼實現(xiàn):

?※本次代碼使用library版競賽工程

在工程app目錄下新建Breath.c與.h文件,該呼吸燈代碼是從別的工程移植過來的,有明顯bug,建議動手修改,改不來留言

以下為Breath.c文件,

#include "iocc2530.h"
#include "Breath.h"

#define false 0
#define true 1
unsigned char levelCount = 8;
unsigned char led_levet_timer = 2;
unsigned char devideCount = 16;
unsigned char level = 1;
unsigned char timeTic = 0;
unsigned char isUprise = 1;


void _pwmLevelUp() {
    static unsigned long led_level_tick = 0;
    led_level_tick++;
    if (led_level_tick > led_levet_timer) {
        led_level_tick = 0;
        if (isUprise)
            level++;
        else
            level--;
        if (level > levelCount) {
            level = levelCount;
            isUprise = false;
        } else if (level == 0) {
            isUprise = true;
        }
    }
}

void _pwm() {
    timeTic++;
    if (timeTic > level) {
         P1_0  = 1;
    }
    if (timeTic > levelCount) {
        timeTic = 0;
        P1_0  = 0;
    }
}

unsigned char timeDevice = 0;
void _breathLed() {
    timeDevice++;
    if (timeDevice >= devideCount) {
        timeDevice = 0;
        _pwmLevelUp();
    }
    _pwm();
}



以下為Breath.h文件

#ifndef _BREATH_H_
#define _BREATH_H_
#endif


void _pwm(void);
void _breathLed(void);


以下為Main.c內(nèi)容

引入頭文件,定義所需變量

#include "Breath.h"

#define Sw1 P1_2
#define Led1 P1_0
#define Led2 P1_1

unsigned int keyTime=0, keyCnt=0, bFlag=0;
//keyTime長按時間,keyCnt按鍵次數(shù),bFlag是否呼吸1呼吸0暫停

初始化函數(shù),基本io最簡化版

void Init()
{
  P1DIR = 0X1B;
  P1=0X00;
}

以下為按鍵功能,比較簡單,不理解就自己斷點跑一跑

void key()
{
  if(Sw1==0)
  {
    keyTime = 0;
    while(Sw1==0)
    {
      halMcuWaitMs(1);
      //按下時間大于300ms視為長按,
      if(++keyTime>300)
      {
        Led1 = 1;
        Led2 = 0;
      }
    }
    if(Sw1==1)
    {
      //長按后燈全部亮起,短按則計算按鍵次數(shù)
      if(keyTime>300)
        Led1 = Led2 = 1;
      else
        keyCnt+=1;
    }
  }
  //0.3s內(nèi)沒有第二次點擊按鈕則失效當(dāng)前次數(shù)
  //短時間內(nèi)連續(xù)觸發(fā)即為連擊
  if(keyCnt>1)
  {
     halMcuWaitMs(1);
    if(++keyTime>300)
    {
      if(bFlag==0)
        bFlag=1;
      else if(bFlag==1)
        bFlag=2;
      else if(bFlag==2)
        bFlag=1;
      keyCnt=0;
    }
  }
}

以下為呼吸燈控制代碼

void BreathLed()
{
  //幾連擊就填幾
  if(keyCnt==2)
  {
    Led2=0;
    bFlag=!bFlag;
    keyCnt=0;
  }
  if(bFlag==1)
    _breathLed();
  else if(bFlag==2)
    _pwm();
}

以下為main函數(shù)

void main(void)
{
  Init();
  while(1)
  {
    halMcuWaitMs(1);
    key();
    BreathLed();
  }
}

main.c源代碼

/**
  ******************************************************************************
  * File Name          : main.c
  * Description        : Main program body
  * By                 :Azhuo
  ******************************************************************************
  */
#include <string.h>
#include <stdio.h>
#include "basic_rf.h"
#include "hal_defs.h"
#include "hal_cc8051.h"
#include "hal_int.h"
#include "hal_mcu.h"
#include "hal_board.h"
#include "hal_led.h"
#include "hal_rf.h"
#include "hal_uart.h" 
#include "Breath.h"

#define Sw1 P1_2
#define Led1 P1_0
#define Led2 P1_1

unsigned int keyTime=0, keyCnt=0, bFlag=0;
//keyTime長按時間,keyCnt按鍵次數(shù),bFlag是否呼吸1呼吸0暫停
void Init()
{
  P1DIR = 0X1B;
  P1=0X00;
}
void key()
{
  if(Sw1==0)
  {
    keyTime = 0;
    while(Sw1==0)
    {
      halMcuWaitMs(1);
      //按下時間大于300ms視為長按,
      if(++keyTime>300)
      {
        Led1 = 1;
        Led2 = 0;
      }
    }
    if(Sw1==1)
    {
      //長按后燈全部亮起,短按則計算按鍵次數(shù)
      if(keyTime>300)
        Led1 = Led2 = 1;
      else
        keyCnt+=1;
    }
  }
  //0.3s內(nèi)沒有第二次點擊按鈕則失效當(dāng)前次數(shù)
  //短時間內(nèi)連續(xù)觸發(fā)即為連擊
  if(keyCnt>1)
  {
     halMcuWaitMs(1);
    if(++keyTime>300)
    {
      if(bFlag==0)
        bFlag=1;
      else if(bFlag==1)
        bFlag=2;
      else if(bFlag==2)
        bFlag=1;
      keyCnt=0;
    }
  }
}
void BreathLed()
{
  //幾連擊就填幾
  if(keyCnt==2)
  {
    Led2=0;
    bFlag=!bFlag;
    keyCnt=0;
  }
  if(bFlag==1)
    _breathLed();
  else if(bFlag==2)
    _pwm();
}

/**
 * Main application entry point.
 */
void main(void)
{
  Init();
  while(1)
  {
    halMcuWaitMs(1);
    key();
    BreathLed();
  }
}

今天的訓(xùn)練就到這,下了鬼泣5所以比較急,代碼是有些bug的,不過如果這點bug都解決不了就別比了,加油各位,奧利給。文章來源地址http://www.zghlxwxcb.cn/news/detail-719263.html

到了這里,關(guān)于【23物聯(lián)網(wǎng)國賽樣題第二套】單片機,CC2530單片機呼吸燈與按鍵控制--單擊雙擊長按、呼吸燈與亮度維持,物聯(lián)網(wǎng)競賽今年歷年國賽樣題真題代碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 區(qū)塊鏈技術(shù)與應(yīng)用 【全國職業(yè)院校技能大賽國賽題目解析】第二套區(qū)塊鏈系統(tǒng)部署與運維

    區(qū)塊鏈技術(shù)與應(yīng)用 【全國職業(yè)院校技能大賽國賽題目解析】第二套區(qū)塊鏈系統(tǒng)部署與運維

    第二套區(qū)塊鏈系統(tǒng)部署與運維題目 環(huán)境 : ubuntu20 fisco : 2.8.0 docker: 20.10.21 webase-deploy : 1.5.5 mysql: 8.0.34 使用 build_chain.sh 腳本文件進(jìn)行搭建區(qū)塊鏈 ,要求: 四節(jié)點,默認(rèn)配置,單機,docker

    2024年02月08日
    瀏覽(98)
  • 2023國賽數(shù)學(xué)建模A題第二問解題思路 - 定日鏡場的優(yōu)化設(shè)計(詳細(xì)過程,小白讀完就會)

    2023國賽數(shù)學(xué)建模A題第二問解題思路 - 定日鏡場的優(yōu)化設(shè)計(詳細(xì)過程,小白讀完就會)

    2.1.1基礎(chǔ)布局 在塔式太陽能熱發(fā)電領(lǐng)域,由 Laurence等人提出的輻射網(wǎng)格布局是一種應(yīng)用較廣泛的排布方式。此布局方式是將定日鏡沿等方位線交替放置在各恒定半徑處,且隨著徑向距離的增加,鏡場排布也呈現(xiàn)出由密到疏的趨勢。為定量表示定日鏡與吸熱塔的位置關(guān)系,還引

    2024年02月09日
    瀏覽(23)
  • 區(qū)塊鏈國賽第一套樣題(關(guān)于運維)

    區(qū)塊鏈國賽第一套樣題(關(guān)于運維)

    基于給定服務(wù)器環(huán)境以及軟件(地址\\\"/root/tools\\\"),搭建一條4節(jié)點的區(qū)塊鏈系統(tǒng)并驗證,具體工作內(nèi)容如下: 1.?采用默認(rèn)配置搭建區(qū)塊鏈網(wǎng)絡(luò); 2.?通過命令驗證區(qū)塊鏈節(jié)點進(jìn)程運行狀況; 3.?通過命令驗證區(qū)塊鏈連接狀態(tài)和共識狀態(tài)日志輸出。 前置準(zhǔn)備工作:下載依賴(op

    2024年03月23日
    瀏覽(25)
  • 區(qū)塊鏈國賽第四套樣題(關(guān)于運維)

    區(qū)塊鏈國賽第四套樣題(關(guān)于運維)

    通過給定區(qū)塊鏈項目需求,進(jìn)行區(qū)塊鏈系統(tǒng)部署,包括系統(tǒng)部署、控制臺部署等。通過監(jiān)控工具完成對網(wǎng)絡(luò)、節(jié)點服務(wù)的監(jiān)控。最終利用業(yè)務(wù)需求規(guī)范,完成系統(tǒng)日志、網(wǎng)絡(luò)參數(shù)、節(jié)點服務(wù)等系統(tǒng)結(jié)構(gòu)的維護(hù)。 部署區(qū)塊鏈服務(wù)器,配置管理平臺參數(shù)及訪問端口; 部署項目節(jié)

    2024年04月22日
    瀏覽(23)
  • 2022數(shù)模國賽B題無人機第一題第一小問的簡單編程

    2022數(shù)模國賽B題無人機第一題第一小問的簡單編程

    2022年國賽B題是關(guān)于無人機定位的抽象模型,總體難度不大。接下來簡單介紹一下第一題第一小問的程序?qū)崿F(xiàn),當(dāng)時國賽倉促,寫的比較簡略,僅供參考。 無源定位 第一個是無源定位,無源定位可以理解為需要通過計算才能求解出具體位置,位置不能直接測出。具備隱

    2024年02月06日
    瀏覽(20)
  • 2023國賽數(shù)學(xué)建模A題第一問解題思路 - 定日鏡場的優(yōu)化設(shè)計

    2023國賽數(shù)學(xué)建模A題第一問解題思路 - 定日鏡場的優(yōu)化設(shè)計

    A 題 定日鏡場的優(yōu)化設(shè)計 構(gòu)建以新能源為主體的新型電力系統(tǒng), 是我國實現(xiàn)“碳達(dá)峰”“碳中和”目標(biāo)的一項重要 措施。塔式太陽能光熱發(fā)電是一種低碳環(huán)保的新型清潔能源技術(shù)[1]。 定日鏡是塔式太陽能光熱發(fā)電站(以下簡稱塔式電站)收集太陽能的基本組件,其底座由 縱向

    2024年02月09日
    瀏覽(30)
  • 藍(lán)橋杯刷題第二十三天

    題目描述 小明有一塊空地,他將這塊空地劃分為 n 行 m 列的小塊,每行和每列的長度都為 1。 小明選了其中的一些小塊空地,種上了草,其他小塊仍然保持是空地。 這些草長得很快,每個月,草都會向外長出一些,如果一個小塊種了草,則它將向自己的上、下、左、右四小

    2023年04月22日
    瀏覽(25)
  • 藍(lán)橋杯刷題第二十五天

    題目描述 你有一張某海域?NxN?像素的照片,\\\".\\\"表示海洋、\\\"#\\\"表示陸地,如下所示: ....... .##.... .##.... ....##. ..####. ...###. ....... 其中\(zhòng)\\"上下左右\\\"四個方向上連在一起的一片陸地組成一座島嶼。例如上圖就有 2 座島嶼。 由于全球變暖導(dǎo)致了海面上升,科學(xué)家預(yù)測未來幾十年,島

    2023年04月09日
    瀏覽(28)
  • 【C++刷題】經(jīng)典簡單題第二輯

    【C++刷題】經(jīng)典簡單題第二輯

    回文排列 URL化 配對交換 遞歸乘法 階乘尾數(shù) 二進(jìn)制鏈表轉(zhuǎn)整數(shù) 從鏈表中刪去總和值為零的連續(xù)節(jié)點 括號的最大嵌套深度 整理字符串 奇偶樹 將句子排序 最長和諧子序列

    2024年02月09日
    瀏覽(19)
  • 2023國賽數(shù)學(xué)建模A題第一問解題思路 - 定日鏡場的優(yōu)化設(shè)計(詳細(xì)過程,小白讀完就會)

    2023國賽數(shù)學(xué)建模A題第一問解題思路 - 定日鏡場的優(yōu)化設(shè)計(詳細(xì)過程,小白讀完就會)

    補充知識點: 定日鏡是反射聚焦太陽輻射的單元,聚光子系統(tǒng)由成千上萬面的定日鏡組成,聚光子系統(tǒng)的投資成本約占了電站總投資成本的 50%[39]。由于太陽光線的發(fā)散性和太陽位置的變化,入射的太陽光線并不能完全被定日鏡反射聚焦到吸熱器上,系統(tǒng)存在的能量損失約為

    2024年02月09日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包