简单话题:LED呼吸灯和串口LED指示灯
最近在串口發送引腳上接LED指示發送或者接收狀態,但是需求是希望連續發送或者接收字符過程中LED閃爍,而不是保持在一個常量或者常滅的狀態。首先,把實際電路圖和串口時序貼出來:
可以看出串口發送接收空閑態為高電平,只要進行數據發送就一定會產生低電平,利用低電平點亮LED,再利用高電平熄滅。
但是在實際操作中發現大于2500bps,連續發送數據的時候燈是不會閃爍的,會保持一個常量的狀態,只是亮度會隨數據內容不同而變化,這就牽涉到 LED 點亮的一個時間問題了。LED點亮熄滅到再次點亮是需要一定時間間隔的,一般常見的在 4.x ms,這里以4ms舉例,也就是說如果點亮led,熄滅,下次點亮,只有這個熄滅的時間超過4ms,才可以看出閃爍,否則看起來就像是常亮的。既然有這個要求,就和波特率有一定關系了,我們按照極端情況來考慮,發送字符為0xFF的情況,那么只有起始位是一個低電平,按照4ms發送一個字符(10bit)來計算,此時波特率為2500bps。這就表明大于2500波特率的時候,無論連續發送什么數據,燈都是不會閃爍的。
好了,確定燈目前處于一個常亮狀態了,那么現在的問題是為什么燈亮度會不略有變化,做一個測試,發送連續十六進制,會發現這個十六進制數中的為0的bit越多,燈就越亮。說道這里,那就是 PWM 呼吸燈一個原理啦。實際上都是較快頻率控制LED亮滅,值得注意的是不少人認為是亮滅太快,導致肉眼觀察不出,這個說法有點牽強,我以前也是跟著這個想法走,實際上 LED 根本沒有不停亮滅,根據我前面說的LED點亮的間隔可以得知,所以燈一直是亮的,亮度發聲變化是由于LED兩端的電壓差發生了變化。以PWM舉例,高頻率的周期變化的0和1電平,也就是占空比對應到模擬信號上也就成了轉換電壓,拿5V舉例,占空比百分之50,那么實際輸出平均電壓就是2.5V,但是為什么要平均呢?這就是數字信號和模擬信號的區別了,我們控制的是數字信號,而實際起作用的要轉換成模擬信號了。
綜上,低頻是亮滅效果,因為可以滿足led點亮間隔要求,高頻就是不同亮度的常亮效果了,原因如上。
總結
以上是生活随笔為你收集整理的简单话题:LED呼吸灯和串口LED指示灯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数组去重的4种方法(Which one
- 下一篇: Windows Intellij环境下G