記得小時候有玩具電動車,車玩壞了就拆了,最高興的就是能拆出電機和燈泡,玩這兩樣東西的樂趣不比玩玩具車少。 
用干電池就能讓小燈泡亮起來,也能讓電機轉起來,雖然現象很簡單,但卻融入了自己的控制和想象,這是很有意思的。想讓一個燈泡亮起來,給一個適當的電壓就可以,這是中學物理都學過的。其實小燈泡的工作電壓是2-3V,干電池的電壓是1.5V,所以小時候小孩子玩的時候用一節電池或兩節電池小燈泡都會亮。而且暗和亮的程度不一樣,電機轉動的狀態也不一樣,這就對電學有個直觀的認識。 
現在燈泡越來越少了,越來越多被LED取代。LED就是Lighting Emitting Diode的縮寫,即發光二極管。LED只能往一個方向導通,即給LED加上正向偏壓,當電流流過時,電子與空穴在其內復合而發出單色光,這叫電致發光效應,而光線的波長、顏色跟其所采用的半導體材料種類與摻入的元素雜質有關。 LED的工作電壓大概2V左右,不同的材料不同型號的LED電壓稍稍會有些偏差,但對實際使用的影響不大。
--為什么要跑流水燈
流水燈實驗是學單片機的經典例程,可以說是單片機學習中的"HELLO WORLD"。 那么怎么通過STM32把一個LED點亮呢?想讓LED發光當然需要給LED加一個正向偏壓。STM32的引腳輸出電壓高電壓為3.3V,低電壓為0V。想要用STM32控制LED的亮和滅,這里有兩種方式可以把給一個LED加上正向偏壓:第一種方法就是把LED的負極和電路的地(0V)相連,當STM32輸出低電平時,LED兩端沒有電勢差。當STM32輸出高電平時,LED正極就加上了3.3V的電壓,這樣LED就亮了,但是這時候LED可能亮的有點不正常,因為LED的工作電壓約為2V,所以這時候LED可能是特別亮,但可能亮了一段時間就會燒壞。為了LED能長期正常工作,所以要讓LED在2V的工作電壓,所以加一個電阻起保護作用,電阻選470歐或510歐。 第二種方法就是將LED的正極連著3.3V的電源上,負極連在STM32的引腳上,當STM32的引腳輸出低電平時LED就會亮。 
為什么要通過流水燈的形式來完成實驗呢?因為能自由的控制一個燈泡的亮和滅、能自由的控制一個燈亮的時長和滅的時長,這樣也就證明已經掌握了一個STM32的IO口高低電平的輸出,這就已經可以做很多事情了。
--怎么控制小燈的亮滅
當然是寫程序控制了,先從思路上理順一遍就是:
以下邊電路圖中3個LED為例: 
先讓第一個燈亮(因為圖中LED采用的是上一段介紹的第二種電路,所以應該讓和LED1相連的STM32引腳輸出0V低電平),亮一會(這個通過延時函數來實現);把第一個熄滅(同理,讓引腳輸出高電平即可熄滅),接著(在程序上編程語句的執行肯定有先后之分,因為沒有延時函數,STM32工作頻率很高,所以就是“同時”)把第二個燈點亮,亮一會;把第二個燈熄滅,接著點亮第三個燈,亮一會;把三個燈熄滅,接著把第一個燈點亮...(這個省略號就是周而復始循環的意思,在程序實現的時候,我們用一個循環函數就可以實現。)
這周就是在思路上、電路上介紹例程,下周主要介紹程序的編寫。
以下是本系列教程文章列表:歡迎大家踴躍討論,有問題可在51黑論壇回帖提出.
STM32教程(1)-大學里沒碰見像STM32一樣吸引我的姑娘:http://www.zg4o1577.cn/bbs/dpj-41167-1.html STM32教程(2)-各種應用和外設簡單介紹:http://www.zg4o1577.cn/bbs/dpj-41168-1.html STM32教程(3)-芯片引腳性質介紹:http://www.zg4o1577.cn/bbs/dpj-41169-1.html STM32教程(4)-最小系統的設計:http://www.zg4o1577.cn/bbs/dpj-41170-1.html STM32教程(5)-庫:http://www.zg4o1577.cn/bbs/dpj-41171-1.html STM32教程(6)-STM32的流水燈程序:http://www.zg4o1577.cn/bbs/dpj-41162-1.html
STM32編程基礎(1)-Keil編程軟件的安裝:http://www.zg4o1577.cn/bbs/dpj-41163-1.html STM32編程基礎(2)-Keil庫的修改:http://www.zg4o1577.cn/bbs/dpj-41164-1.html STM32編程基礎(3)-Keil建立工程模版:http://www.zg4o1577.cn/bbs/dpj-41165-1.html STM32編程基礎(4)-Keil工程設置http://www.zg4o1577.cn/bbs/dpj-41166-1.html
|