回覆列表
  • 1 # 科技電小二

    首先在硬體方面,我們使用了最經典的選型用AT89S51微控制器作為主控晶片,

    LED電路選用共陽極接法:8路紅色LED燈正極接5V電源、各路串聯一個限流電阻,保護髮光二極體不被燒壞,同時控制LED工作電流控制在10mA以內;根據I=U/R,則選用1K大小電阻。陰極分別接到P1.0~P1.7口,組成LED發光二極體驅動電路

    按鍵選用獨立按鍵方式。選用10K電阻與按鍵串聯,一端接5V,一端接微控制器IO口P2.0,如下圖所示:

    我們來看一下軟體部分:

    首先包含標頭檔案,呼叫51微控制器暫存器定義。第二行的sbit是用來定義一個引腳值(即P2.0用KEY來表示);

    這是一個延時的呼叫函式,我們在這個函數里,定義兩個變數 ,然後我們用兩個for迴圈,內部的j函式作為基礎延時單位,傳參tim代表具體延時時長。

    這類延時函式,具體的延時時間,可以透過延時函式對IO口進行翻轉,使用示波器檢視翻轉時間週期,就可以確定這個延時函式的真實延時時間了。

    這部分是按鍵處理函式,首先檢測是否有按鍵按下,採用Delayms延時消抖,再等待按鍵鬆開,再對狀態變數進行切換。

    上圖所示,在while(1)中,每次迴圈1ms,則num每加1,num數目代表ms數目,

    mode==1時,led全部亮

    mode==2時,led全滅

    mode==3或者mode==4,led數碼管間隔亮

    mode==5,mode==6 led兩種led流水亮滅

    按鍵按下,切換不同的led燈流水燈效果

    以上是對本題目進行的回答,難免會有遺漏或者錯誤,

  • 2 # 智造DIY創客空間

    1、發光二級管可以選擇共陰極或者共陽極連線。

    2、最好用的驅動方法:查表法。(共陰到共陽轉換隻需增減一個符號:~,而且很方便改變流水單的花樣。我做過51,stm32,arduino的)。

    3、如果只是簡單的“流”一下,那麼可以簡單粗暴地用for+delay搞定。如果要增加一些別的花樣,例如電位器控制“流速”,那就得開啟定時中斷,分配任務。

  • 中秋節和大豐收的關聯?
  • 橄欖球有多暴力?