最近弄一個燈的程序。我們都知道,世界上是沒有兩樣完全相同的東西。因此晶振也是有誤差的,即使是1%,在運行一段時候后,都會使有些燈可能跑得快些,而些燈跑得慢些。這樣的話,一段時間下來,幾個燈放在一起就會出現(xiàn)五顏六色的情況。這是不允許的。
既不允許增設(shè)信號線,又要同步。最簡便的方法便是在交流電中取一個交流電過零信號作為燈與燈之間的同步信號。但是,在寫這個程序的時候我犯了一個嚴重的錯誤。這個錯誤使的我的程序讓燈與燈之間的同步時間不長,調(diào)試得好的時候可以做到一兩小時,但是惡劣的情況下會更短。我卻將問題歸結(jié)于市電的頻率太低,同步必然存在誤差,這是無可避免的。我做過各種實驗,將程序改來改去。簡直是大修。直到我做了一個實驗。因為我們都知道,我國市電的頻率是50HZ的,即使有偏差,也在正負5HZ內(nèi)。因此市電整流后是100HZ的脈動直流電。因些,我實驗用單片機去測試6000個過零信號。理論上,6000個過零信號是要1分鐘才能完成的。但實際上,單片機卻是48秒內(nèi)檢測完了。怎么會快這么多的呢。一定是干擾脈沖加入了,使得6000個信號提早完成。
在別的方法都不能起作用的時候,我嘗試讓單片機多檢測幾次同步信號得到的結(jié)果是否都為高或都為低,居然一試成功,好高興。雖然走了彎路,但是人都是會犯錯誤的,我原諒我自己。但是犯了錯誤,我都習慣寫到本子上,以后再遇到這樣的問題,先看看,以前有沒有類似的情況。