炫彩LED二進(jìn)制時鐘
學(xué)習(xí)數(shù)字電路的二進(jìn)制之后,覺得二進(jìn)制數(shù)很神奇,例如現(xiàn)在的電腦都是采用二進(jìn)制。二進(jìn)制容易實現(xiàn),運算規(guī)則簡單,只有0和1,兩種狀態(tài)的轉(zhuǎn)換速度極快,從而由簡單的0和1構(gòu)成了復(fù)雜的計算機(jī)世界。我國古代的一本奇書《易經(jīng)》中說“萬事萬物都有陰陽”,似乎有異曲同工之妙,這些都讓我對二進(jìn)制數(shù)產(chǎn)生好奇。直到有一天我在網(wǎng)絡(luò)上看到一個這樣的題目:
一片果林的成熟季節(jié)又到了,大批量的水果就要和買主交易,然而,買主來收購之前給農(nóng)戶出了一個“難題”:將1000個水果事先放在10只籮筐里,待其到來時如果能整筐整筐地搬出來并湊夠臨時指定的數(shù)量,買賣照做還堅持長期合作;如果做不到,預(yù)約好的買賣取消,今后也不來打交道了。
題目出得很巧妙,我一想想不出來就查看答案,原來是一個跟二進(jìn)制數(shù)相關(guān)的問題,第一個籮筐裝1個,第二個箱子裝2個,后面的籮筐的數(shù)量都是前一個籮筐的一倍(最后一個除外),所以各個籮筐的數(shù)量分別為:1、2、4、8、16、32、64、128、256和489,這樣的話就可以任意取出所需的數(shù)量了。一看答案,驚嘆二進(jìn)制數(shù)的神奇之處,竟然能這樣任意表達(dá)出所需的數(shù)量。
二進(jìn)制時鐘誕生記
正好這幾天研究著用DS1302時鐘芯片和單片機(jī)制作一個時鐘,突然想到,既然二進(jìn)制能用“10個箱子”任意取出“1000內(nèi)的數(shù)”,那么是否可以制作出一個跟二進(jìn)制數(shù)相關(guān)的時鐘呢?當(dāng)兩種思維結(jié)合在一起的時候,就可以產(chǎn)生出很多有趣的事情來。這么一來,就很自然地想出了制作一個二進(jìn)制時鐘,但是用什么方式來顯示呢?看到手頭上有多種顏色的LED燈,于是想到就用發(fā)光二極管唄,燈亮就是“1”,燈滅就是“0”,一排LED的亮就形成一個二進(jìn)制數(shù),從而讀出相應(yīng)時間。這個想法讓我興奮不已,于是我開始著手單片機(jī)的編程,用單片機(jī)把在DS1302上取出的時間的BCD碼轉(zhuǎn)換成10進(jìn)制數(shù)直接放在一組I/O口上面,單片機(jī)會自動把十進(jìn)制數(shù)轉(zhuǎn)換成以1和0表示的數(shù)放在一組的8個I/O口上,這樣一來,在相應(yīng)I/O口上連接LED燈就能顯示出“時間”來了。由于小時最多為“24”,因此只需要5個LED燈就可以完整表示,而“分”和“秒”部分要6個LED燈才能完整表示。
注意事項
還有需要注意的地方是,我們平常讀數(shù)是從左到右讀高位數(shù)到低位數(shù),但是大多單片機(jī)的I/O口組是從低位到高位的,因此我們制作時要特別注意焊接LED燈的順序,或者把單片機(jī)翻轉(zhuǎn)擺放就可以解決這個問題。
讀時鐘的方法
如題圖所示的每組數(shù)就是“10110”、“101011”、“100001”,在腦袋里進(jìn)行簡單的運算就可以得出時間為:“22:43:33”??茖W(xué)發(fā)現(xiàn),經(jīng)常運算可以防止老年癡呆癥^_^,因此,二進(jìn)制時鐘就有了它的意義所在了。
評論