家電小知識:旋轉POV LED顯示的自適應調節算法

導讀 新時代發展越來越快相信很多小伙伴對家電知識這方面很朦朧吧,正好小編對家電方面頗有研究,現在就跟小伙伴們聊聊一篇關于旋轉POV LED顯示

新時代發展越來越快相信很多小伙伴對家電知識這方面很朦朧吧,正好小編對家電方面頗有研究,現在就跟小伙伴們聊聊一篇關于旋轉POV LED顯示的自適應調節算法,相信很多小伙伴們都會感興趣,那么小編也收集到了有關旋轉POV LED顯示的自適應調節算法信息,希望小伙伴們看了有所幫助。

  在制作自行車上的POV LED顯示時,最讓人頭疼的是車輪的轉速不勻問題,如何在隨時改變轉速的情況下保證能正常顯示是POV制作中的難題。

  經我若干時間的試驗,采用自適應調節的方法,很好解決了這個問題,實際運行效果很好。并同時應用在我的新版“硬盤時鐘”的程序中。

  根據POV顯示原理,我們需要讓LED的閃亮頻率與旋轉的頻率同步。

  自適應調節的算法的思想就是在外部中斷處理程序里,先給定時器T0一個合適的初始值,通過定時器T0處理程序給T0的中斷的次數計數,當旋轉一周完成后,根據實際中斷次數與預設的N比較,根據比較結果,在外部中斷處理程序中對T0的初設值進行修正,直到定時器T0的中斷次數達到N為止。

  整個調節過程是動態的,程序中并不需要知道旋轉一周的具體時間值。

  一般在中斷處里程序里應盡量簡化運算,減少程序代碼量。我這里巧妙的使用了這樣一個修正值:

  D=D+(S-N)*2;

  其中N為預設的固定值。

  當S>N時,修正值D增大,使定時器T0的時間值增大,隨之N值減小。

  當S<N時,修正值D減小,使定時器T0的時間值減小,隨之N值增大。  當S=N時,修正值不產生變化。

  程序程序片段如下:

  

  void intersvr0(void) interrupt 0 using 1

  {

  D=D+(S-N)*2; //修正值

  Pt=600+D; //得到定時器T0的初設值

  S=0; //計數器清零,將重新計數

  }

  

  void TImer0(void) interrupt 1 using 1

  {

  TH0=-Pt/256;TL0=-Pt%256; //設置定時器T0的初設值

  S++; //計數

  }

免責聲明:本文由用戶上傳,如有侵權請聯系刪除!