如何看懂時(shí)序圖?
操作時(shí)序永遠(yuǎn)使用是任何一片IC芯片的最主要的內(nèi)容。一個(gè)芯片的所有使用細(xì) 節(jié)都會(huì)在它的官方器件手冊上包含。所以使用一個(gè)器件事情,要充分做好的第一件事就是要把它的器件手冊上有用的內(nèi)容提取,掌握。介于中國目前的芯片設(shè)計(jì)能力 有限,所以大部分的器件都是外國幾個(gè)IC巨頭比如TI、AT、MAXIM這些公司生產(chǎn)的,器件資料自然也是英文的多,所以,英文的基礎(chǔ)要在閱讀這些數(shù)據(jù)手 冊時(shí)得到提高哦。即便有中文翻譯版本,還是建議看英文原版,看不懂時(shí)不妨再參考中文版,這樣比較利于提高。
我們首先來看1602的引腳定義,1602的引腳是很整齊的SIP單列直插封裝,所以器件手冊只給出了引腳的功能數(shù)據(jù)表:
我們只需要關(guān)注以下幾個(gè)管腳:
3腳:VL,液晶顯示偏壓信號(hào),用于調(diào)整LCD1602的顯示對比度,一般會(huì)外接電位器用以調(diào)整偏壓信號(hào),注意此腳電壓為0時(shí)可以得到最強(qiáng)的對比度。
4腳:RS,數(shù)據(jù)/命令選擇端,當(dāng)此腳為高電平時(shí),可以對1602進(jìn)行數(shù)據(jù)字節(jié)的傳輸操作,而此腳為低電平時(shí),則是進(jìn)行命令字節(jié)的傳輸操作。命令字 節(jié),即是用來對LCD1602的一些工作方式作設(shè)置的字節(jié);數(shù)據(jù)字節(jié),即使用以在1602上顯示的字節(jié)。值得一提的是,LCD1602的數(shù)據(jù)是8位的。
5腳:R/W,讀寫選擇端。當(dāng)此腳為高電平可對LCD1602進(jìn)行讀數(shù)據(jù)操作,反之進(jìn)行寫數(shù)據(jù)操作。筆者認(rèn)為,此腳其實(shí)用處不大,直接接地永久置為低電平也不會(huì)影響其正常工作。但是尚未經(jīng)過復(fù)雜系統(tǒng)驗(yàn)證,保留此意見。
6腳:E,使能信號(hào),其實(shí)是LCD1602的數(shù)據(jù)控制時(shí)鐘信號(hào),利用該信號(hào)的上升沿實(shí)現(xiàn)對LCD1602的數(shù)據(jù)傳輸。
7~14腳:8位并行數(shù)據(jù)口,使得對LCD1602的數(shù)據(jù)讀寫大為方便。
現(xiàn)在來看LCD1602的操作時(shí)序:
在此,我們可以先不讀出它的數(shù)據(jù)的狀態(tài)或者數(shù)據(jù)本身。所以只需要看兩個(gè)寫時(shí)序:
① 當(dāng)我們要寫指令字,設(shè)置LCD1602的工作方式時(shí):需要把RS置為低電平,RW置為低電平,然后將數(shù)據(jù)送到數(shù)據(jù)口D0~D7,最后E引腳一個(gè)高脈沖將數(shù)據(jù)寫入。
② 當(dāng)我們要寫入數(shù)據(jù)字,在1602上實(shí)現(xiàn)顯示時(shí):需要把RS置為高電平,RW置為低電平,然后將數(shù)據(jù)送到數(shù)據(jù)口D0~D7,最后E引腳一個(gè)高脈沖將數(shù)據(jù)寫入。
發(fā)現(xiàn)了么,寫指令和寫數(shù)據(jù),差別僅僅在于RS的電平不一樣而已。以下是LCD1602的時(shí)序圖:
大家要慢慢學(xué)會(huì)看時(shí)序圖,要知道操作一個(gè)器件的精華便蘊(yùn)藏在其中,看懂看準(zhǔn)了時(shí)序,你操控這個(gè)芯片就是非常容易的事了。1602的時(shí)序是我見過的一個(gè)最簡單的時(shí)序:
1、注意時(shí)間軸,如果沒有標(biāo)明(其實(shí)大部分也都是不標(biāo)明的),那么從左往右的方向?yàn)闀r(shí)間正向軸,即時(shí)間在增長。
2、上圖框出并注明了看懂此圖的一些常識(shí):
(1).時(shí)序圖最左邊一般是某一根引腳的標(biāo)識(shí),表示此行圖線體現(xiàn)該引腳的變化,上圖分別標(biāo)明了RS、R/W、E、DB0~DB7四類引腳的時(shí)序變化。
(2).有線交叉狀的部分,表示電平在變化,如上所標(biāo)注。
(3).應(yīng)該比較容易理解,如上圖右上角所示,兩條平行線分別對應(yīng)高低電平,也正好吻合(2)中電平變化的說法。
(4).上圖下,密封的菱形部分,注意要密封,表示數(shù)據(jù)有效,Valid Data這個(gè)詞也顯示了這點(diǎn)。
3、需要十分嚴(yán)重注意的是,時(shí)序圖里各個(gè)引腳的電平變化,基于的時(shí)間軸是一致的。一定要嚴(yán)格按照時(shí)間軸的增長方向來精確地觀察時(shí)序圖。要讓器件嚴(yán)格的遵守時(shí)序圖的變化。在類似于18B20這樣的單總線器件對此要求尤為嚴(yán)格。
4、以上幾點(diǎn),并不是LCD1602的時(shí)序圖所特有的,絕大部分的時(shí)序圖都遵循著這樣的一般規(guī)則,所以大家要慢慢的習(xí)慣于這樣的規(guī)則。
也許你還注意到了上面有許多關(guān)于時(shí)間的標(biāo)注,這也是個(gè)十分重要的信息,這些時(shí)間的標(biāo)注表明了某些狀態(tài)所要維持的最短或最長時(shí)間。因?yàn)槠骷墓ぷ魉俣?也是有限的,一般都跟不上主控芯片的速度,所以它們直接之間要有時(shí)序配合。話說現(xiàn)在各種處理器的主頻也是瘋狂增長,日后搞不好出現(xiàn)個(gè)雙核單片機(jī)也不一定就 是夢話。下面是時(shí)序參數(shù)表:
大家要懂得估計(jì)主控芯片的指令時(shí)間,可以在官方數(shù)據(jù)手冊上查到MCU的一些級(jí)別參數(shù)。比如我們現(xiàn)在用AVR M16做為主控芯片,外部12MHz晶振,指令周期就是一個(gè)時(shí)鐘周期為(2/12MHz)s,所以至少確定了它執(zhí)行一條指令的時(shí)間是us級(jí)別的。我 們看到,以上給的時(shí)間參數(shù)全部是ns級(jí)別的,所以即便我們在程序里不加延時(shí)程序,也應(yīng)該可以很好的配合LCD1602的時(shí)序要求了。怎么看這個(gè)表呢?很簡 單,我們在時(shí)序圖里可以找到TR1,對應(yīng)時(shí)序參數(shù)表,可以查到這個(gè)是E上升沿/下降沿時(shí)間,最大值為25ns,表示E引腳上的電平變化,必須在最大為 25ns之內(nèi)的時(shí)間完成。大家看是不是這個(gè)意思?
現(xiàn)在我來解讀我對這個(gè)時(shí)序圖的理解:
當(dāng)要寫命令字節(jié)的時(shí)候,時(shí)間由左往右,RS變?yōu)榈碗娖?,R/W變?yōu)榈碗娖剑⒁饪词荝S的狀態(tài)先變化完成。然后這時(shí),DB0~DB7上數(shù)據(jù)進(jìn)入有效 階段,接著E引腳有一個(gè)整脈沖的跳變,接著要維持時(shí)間最小值為tpw=400ns的E脈沖寬度。然后E引腳負(fù)跳變,RS電平變化,R/W電平變化。這樣便 是一個(gè)完整的LCD1602寫命令的時(shí)序。
ps感謝熱心網(wǎng)友的指出錯(cuò)誤之處:
(1/12MHz)s是振蕩周期,而不是時(shí)鐘周期,因?yàn)闀r(shí)鐘周期(狀態(tài)周期)等于兩個(gè)振蕩周期,換句話說就是對振動(dòng)頻率進(jìn)行“二分頻”的振蕩信號(hào),所以(2/12MHz)s才是晶振為12MHz時(shí)的時(shí)鐘周期。