| 我承認(rèn),這個題目聽起來挺無聊的——畢竟現(xiàn)在已經(jīng)有了一大把能夠?qū)鹘y(tǒng)HD44780驅(qū)動的1602/0802顯示屏轉(zhuǎn)換為IIC兩線接口的轉(zhuǎn)接板,我們?yōu)槭裁催€要用多一根線的方案呢?其實不然,因為我們今天所用的都是我們最熟悉的元器件:從學(xué)習(xí)開始就一直在接觸的74HC595和1602液晶屏。 一種傳統(tǒng)的、8根數(shù)據(jù)線式的接法 還記得單片機教程中對于74HC595的描述嗎?它能夠?qū)⒋休斎氲?位二進制位并行地輸出并鎖存在8個引腳上,從而達(dá)到擴充IO口的效果。使用它的時候,我們最少可以使用3根引線:數(shù)據(jù)線、串行數(shù)據(jù)時鐘和鎖存信號。而對于采用HD44780的1602來說,它的數(shù)據(jù)接口為8位,外加3個控制信號接口。不過它也可以采用4位數(shù)據(jù)線、傳輸兩次的方式將數(shù)據(jù)線的使用減少到4根,這樣一來4根數(shù)據(jù)線和3根控制線就能夠連接在一片74HC595上了。背光、對比度是模擬量輸入,與IO口沒有關(guān)系,可以用電位器來調(diào)整。這樣連接之后,3線的接口硬件部分便準(zhǔn)備好了。 有利必有弊,在簡化了硬件部分之后,軟件部分便要費上一些功夫。我們不妨將74HC595的8個輸出口當(dāng)成是控制器上原生的IO口來考慮,對于它們來說,應(yīng)該呈現(xiàn)出的就是1602液晶屏的控制時序:改變RW線電平、將數(shù)據(jù)放在4位的IO口上、改變時鐘信號等等。這些都和正常的1602驅(qū)動沒有區(qū)別,而另一方面,74HC595和單片機之間的數(shù)據(jù)交換則應(yīng)遵循74HC595的操作方法:串行寫入數(shù)據(jù),鎖存信號。在這個過程中,你少不了要用到變量之間的位運算——一個單片機新手學(xué)習(xí)過程中經(jīng)常會出現(xiàn)的“攔路虎”。 使用IIC轉(zhuǎn)接板驅(qū)動的1602 LCD 筆者一向認(rèn)為,設(shè)計電路、編寫程序的精髓就在于“讓正確的數(shù)據(jù)在正確的時間到達(dá)正確的位置”。而至于如何達(dá)到這樣的目標(biāo)則是設(shè)計過程中的有趣之處。反映到具體問題中,為外設(shè)芯片設(shè)計驅(qū)動電路和程序時,雖然達(dá)到的最終效果是一樣的,不過考慮到其他問題的制約,解決的方案也變得五花八門。題目的實用性雖然值得商榷,不過如果能夠通過自己的雙手將其實現(xiàn),你在單片機的學(xué)習(xí)過程中一定能夠更進一步了。 | 
|  |