欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1846|回復: 4
收起左側

問個單片機問題 讓一個LED燈以一定頻率閃爍

[復制鏈接]
ID:1090365 發表于 2023-10-8 09:56 | 顯示全部樓層 |閱讀模式
我想實現程序每次取值,取到這個值為0的時候(這個值是我用鑷子在pcb板子上短接得到的),讓一個LED燈以一定頻率閃爍,假設閃爍頻率是一秒亮,一秒滅,500ms亮,500ms滅。我想讓我每次拿開鑷子后再短接,讓LED燈重新從一秒亮,一秒滅開始。只要拿開,再接上就從頭開始,想問問思路。
回復

使用道具 舉報

ID:744809 發表于 2023-10-8 13:48 | 顯示全部樓層
挺簡單的吧,用狀態機,短接的時候,就進入閃爍狀態,斷開的時候,恢復到初始狀態就好了。
回復

使用道具 舉報

ID:628113 發表于 2023-10-8 15:45 | 顯示全部樓層
如果從理論來看,觸發時 【啟動或者重置】 定時器即可。但是這樣會獨占一個定時器資源。
一般來說,你不太可能直接讓定時器直接輸出1秒這么長時間,而且又閃爍頻率不固定,所以定時器后面一定有計數器。
這樣的話,如果采用 1000HZ 方波計數,定時器不去修改它,只操作后面計數器復位,最多也就是觸發后,響應延遲了1/1000 秒,定時器不需要修改就可以直接運行,這樣兼容性就會好很多。
例如:
計數數組:  unsigned int  ca[4]={1000,1000,500,500};     一組計數滿了,就翻轉; 下次觸發從頭計數。
回復

使用道具 舉報

ID:161164 發表于 2023-10-8 17:54 | 顯示全部樓層
  1. uint Count = 0;
  2. sbit Key = P3^4;
  3. sbit Led = P1^0;

  4. if(Flag_1ms)//定時器產生1ms標志位
  5. {
  6.         Flag_1ms = 0;
  7.         if(!Key)
  8.         {
  9.                 Count++;
  10.                 if(Count<1000)Led = 0;
  11.                 else if(Count<2000)Led = 1;
  12.                 else if(Count<2500)Led = 0;
  13.                 else if(Count<3000)Led = 1;
  14.                 else Count=0;
  15.         }else
  16.                 Count=0;
  17. }
復制代碼
回復

使用道具 舉報

ID:1097455 發表于 2023-10-27 13:36 | 顯示全部樓層
只要每次鑷子短接你讓計時清0;計時為0亮 為1滅  為2清0計時從頭開始
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表