單片機(jī)時(shí)序基礎(chǔ)知識(shí)
單片機(jī)時(shí)序是指單片機(jī)執(zhí)行指令時(shí)應(yīng)發(fā)出的控制信號(hào)的時(shí)間序列。這些控制信號(hào)在時(shí)間上的相互關(guān)系就是CPU的時(shí)序。它是一系列具有時(shí)間順序的脈沖信號(hào)。
CPU發(fā)出的時(shí)序有兩類(lèi):一類(lèi)用于片內(nèi)各功能部件的控制,它們是芯片設(shè)計(jì)師關(guān)注的問(wèn)題,對(duì)用戶(hù)沒(méi)有什么意義。另一類(lèi)用于片外存儲(chǔ)器或I/O端口的控制,需要通過(guò)器件的控制引腳送到片外,這部分時(shí)序?qū)Ψ治?a href="http://www.makelele.cn/v/tag/1751/" target="_blank">硬件電路的原理至關(guān)重要,也是軟件編程遵循的原則,需要認(rèn)真掌握。
CPU發(fā)出的時(shí)序有兩類(lèi):一類(lèi)用于片內(nèi)各功能部件的控制,它們是芯片設(shè)計(jì)師關(guān)注的問(wèn)題,對(duì)用戶(hù)沒(méi)有什么意義。另一類(lèi)用于單片機(jī)外部芯片的控制,這部分時(shí)序?qū)Ψ治鲇布娐返脑碇陵P(guān)重要,也是軟件編程遵循的原則。
操作時(shí)序永遠(yuǎn)使用是任何一片IC芯片的最主要的內(nèi)容。一個(gè)芯片的所有使用細(xì)節(jié)都會(huì)在它的官方器件手冊(cè)上包含。所以使用一個(gè)器件事情,要充分做好的第一件事就是要把它的器件手冊(cè)上有用的內(nèi)容提取,掌握其工作時(shí)序。
一、周期
1、時(shí)鐘周期
時(shí)鐘電路產(chǎn)生時(shí)鐘信號(hào)的周期我們叫時(shí)鐘周期(振蕩周期)。
單片機(jī)通電后就產(chǎn)生了固定標(biāo)稱(chēng)值的脈沖信號(hào),單片機(jī)就是在脈沖信號(hào)的驅(qū)動(dòng)下順序地從ROM中(程序存儲(chǔ)器)取出指令一條一條的順序執(zhí)行,然后進(jìn)行一系列的微操作控制,來(lái)完成各種指定的動(dòng)作。
2、機(jī)器周期
單片機(jī)每訪(fǎng)問(wèn)一次存儲(chǔ)器的時(shí)間我們把它稱(chēng)為一個(gè)機(jī)器周期,它是一個(gè)時(shí)間基準(zhǔn)就象我們?nèi)粘I钪惺褂玫拿胍粯?。單片機(jī)中一個(gè)機(jī)器周期包括12個(gè)振蕩周期。振蕩周期就是振蕩源的周期也就是我們使用的晶振的時(shí)間周期。一個(gè)12M的晶振它的時(shí)間周期是1/12微秒,那么使用12M晶振的單片機(jī)它的一個(gè)機(jī)器周期就應(yīng)該等于12*1/12微秒,也就是1微秒。
3、指令周期
單片機(jī)中有些指令只要一個(gè)機(jī)器周期而有些指令則需要兩個(gè)或三個(gè)機(jī)器周期另外還有兩條指令需要4個(gè)機(jī)器周期。如何衡量指令執(zhí)行時(shí)間的長(zhǎng)短我們就要用到一個(gè)新的概念:指令周期,即執(zhí)行一條指令所需的機(jī)器周期。
二、時(shí)鐘電路
單片機(jī)時(shí)鐘電路有三種方式:
1、單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是此放大器的輸入端和輸出端,XTAL1和XTAL2需外接上晶體和合適的電容。

2、有的單片機(jī)內(nèi)部也自帶時(shí)鐘電路,用于產(chǎn)生時(shí)鐘信號(hào)。
3、單片機(jī)管腳XTAL2直接接晶振。

單片機(jī)時(shí)序圖怎么看
了解了單片機(jī)的時(shí)序基礎(chǔ)知識(shí)肯定想知道單片機(jī)的時(shí)序圖怎么看,接下來(lái)我們以液晶1602為例,分析其操作時(shí)序。其基本時(shí)序有讀狀態(tài),寫(xiě)指令,讀數(shù)據(jù)和寫(xiě)數(shù)據(jù)。
引腳的功能數(shù)據(jù)表:

我們只需要關(guān)注以下幾個(gè)管腳:
3腳:VL,液晶顯示偏壓信號(hào),用于調(diào)整LCD1602的顯示對(duì)比度,一般會(huì)外接電位器用以調(diào)整偏壓信號(hào),注意此腳電壓為0時(shí)可以得到最強(qiáng)的對(duì)比度。
4腳:RS,數(shù)據(jù)/命令選擇端,當(dāng)此腳為高電平時(shí),可以對(duì)1602進(jìn)行數(shù)據(jù)字節(jié)的傳輸操作,而此腳為低電平時(shí),則是進(jìn)行命令字節(jié)的傳輸操作。命令字節(jié),即是用來(lái)對(duì)LCD1602的一些工作方式作設(shè)置的字節(jié);數(shù)據(jù)字節(jié),即使用以在1602上顯示的字節(jié)。值得一提的是,LCD1602的數(shù)據(jù)是8位的。
5腳:R/W,讀寫(xiě)選擇端。當(dāng)此腳為高電平可對(duì)LCD1602進(jìn)行讀數(shù)據(jù)操作,反之進(jìn)行寫(xiě)數(shù)據(jù)操作。筆者認(rèn)為,此腳其實(shí)用處不大,直接接地永久置為低電平也不會(huì)影響其正常工作。但是尚未經(jīng)過(guò)復(fù)雜系統(tǒng)驗(yàn)證,保留此意見(jiàn)。
6腳:E,使能信號(hào),其實(shí)是LCD1602的數(shù)據(jù)控制時(shí)鐘信號(hào),利用該信號(hào)的上升沿實(shí)現(xiàn)對(duì)LCD1602的數(shù)據(jù)傳輸。
7~14腳:8位并行數(shù)據(jù)口,使得對(duì)LCD1602的數(shù)據(jù)讀寫(xiě)大為方便。
LCD1602的操作時(shí)序詳解

在此,我們可以先不讀出它的數(shù)據(jù)的狀態(tài)或者數(shù)據(jù)本身。所以只需要看兩個(gè)寫(xiě)時(shí)序:
?、?當(dāng)我們要寫(xiě)指令字,設(shè)置LCD1602的工作方式時(shí):需要把RS置為低電平,RW置為低電平,然后將數(shù)據(jù)送到數(shù)據(jù)口D0~D7,最后E引腳一個(gè)高脈沖將數(shù)據(jù)寫(xiě)入。
?、?當(dāng)我們要寫(xiě)入數(shù)據(jù)字,在1602上實(shí)現(xiàn)顯示時(shí):需要把RS置為高電平,RW置為低電平,然后將數(shù)據(jù)送到數(shù)據(jù)口D0~D7,最后E引腳一個(gè)高脈沖將數(shù)據(jù)寫(xiě)入。
發(fā)現(xiàn)了么,寫(xiě)指令和寫(xiě)數(shù)據(jù),差別僅僅在于RS的電平不一樣而已。以下是LCD1602的時(shí)序圖:
大家要慢慢學(xué)會(huì)看時(shí)序圖,要知道操作一個(gè)器件的精華便蘊(yùn)藏在其中,看懂看準(zhǔn)了時(shí)序,你操控這個(gè)芯片就是非常容易的事了。1602的時(shí)序是我見(jiàn)過(guò)的一個(gè)最簡(jiǎn)單的時(shí)序:

大家要懂得估計(jì)主控芯片的指令時(shí)間,可以在官方數(shù)據(jù)手冊(cè)上查到MCU的一些級(jí)別參數(shù)。比如我們現(xiàn)在用AVR M16做為主控芯片,外部12MHz晶振,指令周期就是一個(gè)時(shí)鐘周期為(2/12MHz)s,所以至少確定了它執(zhí)行一條指令的時(shí)間是us級(jí)別的。
我們看到,以上給的時(shí)間參數(shù)全部是ns級(jí)別的,所以即便我們?cè)诔绦蚶锊患友訒r(shí)程序,也應(yīng)該可以很好的配合LCD1602的時(shí)序要求了。怎么看這個(gè)表呢?很簡(jiǎn)單,我們?cè)跁r(shí)序圖里可以找到TR1,對(duì)應(yīng)時(shí)序參數(shù)表,可以查到這個(gè)是E上升沿/下降沿時(shí)間,最大值為25ns,表示E引腳上的電平變化,必須在最大為25ns之內(nèi)的時(shí)間完成。大家看是不是這個(gè)意思?
現(xiàn)在我來(lái)解讀我對(duì)這個(gè)時(shí)序圖的理解:
當(dāng)要寫(xiě)命令字節(jié)的時(shí)候,時(shí)間由左往右,RS變?yōu)榈碗娖?,R/W變?yōu)榈碗娖?,注意看是RS的狀態(tài)先變化完成。然后這時(shí),DB0~DB7上數(shù)據(jù)進(jìn)入有效階段,接著E引腳有一個(gè)整脈沖的跳變,接著要維持時(shí)間最小值為tpw=400ns的E脈沖寬度。然后E引腳負(fù)跳變,RS電平變化,R/W電平變化。這樣便是一個(gè)完整的LCD1602寫(xiě)命令的時(shí)序。
看時(shí)序圖需要注意的問(wèn)題:
1、注意時(shí)間軸,從左往右的方向?yàn)闀r(shí)間正向軸,即時(shí)間在增長(zhǎng)。
2、時(shí)序圖最左邊一般是某一根引腳的標(biāo)識(shí),表示此行圖線(xiàn)體現(xiàn)該引腳的變化,上圖分別標(biāo)明了RS、R/W、E、DB0~DB7四類(lèi)引腳的時(shí)序變化。
3、有線(xiàn)交叉狀的部分,表示電平在變化。
4、兩條平行線(xiàn)分別對(duì)應(yīng)高低電平,如上圖右上角所示。
5、密封的菱形部分,表示數(shù)據(jù)有效,Valid Data這個(gè)詞也顯示了這點(diǎn)。
6、時(shí)序圖里各個(gè)引腳的電平變化,基于的時(shí)間軸是一致的。一定要嚴(yán)格按照時(shí)間軸的增長(zhǎng)方向來(lái)精確地觀察時(shí)序圖。要讓器件嚴(yán)格的遵守時(shí)序圖的變化。
7、時(shí)間的標(biāo)注,也是個(gè)十分重要的信息,這些時(shí)間的標(biāo)注表明了某些狀態(tài)所要維持的最短或最長(zhǎng)時(shí)間。因?yàn)槠骷墓ぷ魉俣纫彩怯邢薜模话愣几簧现骺匦酒乃俣?,所以它們直接之間要有時(shí)序配合。下面是時(shí)序參數(shù)表:

電子發(fā)燒友App


















評(píng)論