在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 數(shù)據(jù)庫/ 13.1 單片機(jī)通信時(shí)序解析
18. RS485 通信與 Modbus 協(xié)議
17.5 A/D 差分輸入信號(hào)
15.8 C 語言復(fù)合數(shù)據(jù)類型(結(jié)構(gòu)體,共用體,枚舉類型)
16.3 NEC 協(xié)議紅外遙控器
13.1 單片機(jī)通信時(shí)序解析
14.4 單片機(jī) EEPROM 單字節(jié)讀寫操作時(shí)序
13.3 多個(gè) .c 文件的初步認(rèn)識(shí)
18.2 Modbus 通信協(xié)議介紹
15.1 BCD 碼介紹
18.3 單片機(jī) Modbus 多機(jī)通信程序設(shè)計(jì)
18.1 單片機(jī) RS485 通信接口、控制線、原理圖及程序?qū)嵗?/span>
15. 實(shí)時(shí)時(shí)鐘 DS1302
14.7 單片機(jī) I2C 和 EEPROM 的綜合編程
17. 模數(shù)轉(zhuǎn)換與數(shù)模轉(zhuǎn)換
16.2 紅外遙控通信原理
13.2 1602 液晶整屏移動(dòng)程序
17.6 D/A 輸出
17.7 單片機(jī)信號(hào)發(fā)生器程序
16.4 溫度傳感器 DS18B20
14.6 單片機(jī)EEPROM的頁寫入
13.4 單片機(jī)計(jì)算器程序設(shè)計(jì)[詳細(xì)]
17.2 A/D(模數(shù)轉(zhuǎn)換)的主要指標(biāo)
17.4 PCF8591 應(yīng)用程序
17.1 A/D 和 D/A 的基本概念
17.3 PCF8591硬件接口(電路圖引腳圖)
14.3 單片機(jī) EEPROM 簡介
13.5 單片機(jī)串口通信原理和控制程序
15.5 DS1302 寄存器介紹
15.2 單片機(jī) SPI 通信接口
15.6 DS1302 通信時(shí)序介紹
14.5 單片機(jī) EEPROM 多字節(jié)讀寫操作時(shí)序
16. 紅外通信與 DS18B20 溫度傳感器
14.1 單片機(jī) I2C 時(shí)序介紹
15.3 實(shí)時(shí)時(shí)鐘芯片 DS1302 介紹
15.9 單片機(jī)電子時(shí)鐘程序設(shè)計(jì)
16.1 紅外光的基本原理
15.4 DS1302 的硬件信息
15.7 DS1302 的 BURST 模式
14.2 單片機(jī) I2C 尋址模式
14. 單片機(jī) I2C 總線與 EEPROM
13. 單片機(jī) 1602 液晶與串口的應(yīng)用實(shí)例

13.1 單片機(jī)通信時(shí)序解析

隨著我們對(duì)通信技術(shù)的深入學(xué)習(xí),大家要逐漸在頭腦中建立起時(shí)序這種概念。所謂“時(shí)序”從字面意義上來理解,一是“時(shí)間問題”,二是“順序問題”。

先說“順序問題”,這個(gè)相對(duì)簡單一些。我們?cè)趯W(xué) UART 串口通信的時(shí)候,先1位起始位,再8位數(shù)據(jù)位,最后1位停止位,這個(gè)先后順序不能錯(cuò)。我們?cè)趯W(xué) 1602 液晶的時(shí)候,比如寫指令,RS=L,R/W=L,D0~D7=指令碼,這三者的順序是無所謂的,但是最終的 E=高脈沖,必須是在這三條程序之后,這個(gè)順序一旦錯(cuò)誤,寫的數(shù)據(jù)也可會(huì)出錯(cuò)。

“時(shí)間問題”內(nèi)容相對(duì)復(fù)雜。比如 UART 通信,每一位的時(shí)間寬度是 1/baud。我們初中就學(xué)過一個(gè)概念,世界上沒有絕對(duì)的準(zhǔn)確。那么每一位的時(shí)間寬度 1/baud 要求精確到什么范圍內(nèi)呢?

前邊教程我提到過,單片機(jī)讀取 UART 的 RXD 引腳數(shù)據(jù)的時(shí)候,一位數(shù)據(jù),單片機(jī)平均分成了16份,取其中的7、8、9三次讀到的結(jié)果,這三次中有2次是高電平那這一位就是1,有2次是低電平,那這一次就是0。如果我們的波特率稍微有些偏差,只要累計(jì)下來到最后一位停止位,這7、8、9還在范圍內(nèi)即可。如圖13-1所示。

http://wiki.jikexueyuan.com/project/mcu-tutorial-three/images/1.png" alt="" />

圖13-1 UART 信號(hào)采集時(shí)序圖

我們用三個(gè)箭頭來表示7、8、9這三次的采集位置,大家可以注意到,當(dāng)采集到 D7 的時(shí)候,已經(jīng)有一次采集偏出去了,但是我們采集到的數(shù)據(jù)還是不會(huì)錯(cuò),因?yàn)橛?次采集正確。至于這個(gè)偏差允許多大,大家自己可以詳細(xì)算一下。實(shí)際上 UART 通信的波特率是允許一定范圍內(nèi)誤差存在的,但是不能過大,否則就會(huì)采集錯(cuò)誤。大家在計(jì)算波特率的時(shí)候,發(fā)現(xiàn)沒有整除,有小數(shù)部分的時(shí)候,就要特別小心了,因?yàn)樾?shù)部分是一概被舍掉的,于是計(jì)算誤差就產(chǎn)生了。我們用 11.0592 M 晶振計(jì)算的過程中,11059200/12/32/9600得到的是一個(gè)整數(shù),如果用 12 M 晶振計(jì)算12000000/12/32/9600就會(huì)得到一個(gè)小數(shù),大家可以算一下誤差多少,是否在誤差范圍內(nèi)。

1602 的時(shí)序問題,大家要學(xué)會(huì)通過 LCD1602 的數(shù)據(jù)手冊(cè)提供的時(shí)序圖和時(shí)序參數(shù)表格來進(jìn)行研究,而且看懂時(shí)序圖是學(xué)習(xí)單片機(jī)所必須掌握的一項(xiàng)技能,如圖13-2所示。

http://wiki.jikexueyuan.com/project/mcu-tutorial-three/images/2.png" alt="" />

圖13-2 1602 時(shí)序圖

大家看到這種圖的時(shí)候,不要感覺害怕。說句不過分的話,單片機(jī)這些邏輯上的問題,只要小學(xué)畢業(yè)就可以理解的,很多時(shí)候是因?yàn)榇蠹野褑栴}想象的太難才學(xué)不下去的。

我們先來看一下讀操作時(shí)序的 RS 引腳和 R/W 引腳,這兩個(gè)引腳先進(jìn)行變化,因?yàn)槭亲x操作,所以 R/W 引腳首先要置為高電平,而不管它原來是什么。讀指令還是讀數(shù)據(jù),都是讀操作,而且都有可能,所以 RS 引腳既有可能是置為高電平,也有可能是置為低電平,大家注意圖上的畫法。而 RS 和 R/W 變化了經(jīng)過 Tsp1 這么長時(shí)間后,使能引腳 E 才能從低電平到高電平發(fā)生變化。

而使能引腳 E 拉高經(jīng)過了 tD 這么長時(shí)間后,LCD1602 輸出 DB 的數(shù)據(jù)就是有效數(shù)據(jù)了,我們就可以來讀取 DB 的數(shù)據(jù)了。讀完了之后,我們要先把使能 E 拉低,經(jīng)過一段時(shí)間后 RS、R/W 和 DB 才可以變化繼續(xù)為下一次讀寫做準(zhǔn)備了。

而寫操作時(shí)序和讀操作時(shí)序的差別,就是寫操作時(shí)序中,DB 的改變是由單片機(jī)來完成的,因此要放到使能引腳 E 的變化之前進(jìn)行操作,其它區(qū)別大家可以自行對(duì)比一下。

細(xì)心的同學(xué)會(huì)發(fā)現(xiàn),這個(gè)時(shí)序圖上還有很多時(shí)間標(biāo)簽。比如 E 的上升時(shí)間 tR,下降時(shí)間時(shí)間 tF,使能引腳 E 從一個(gè)上升沿到下一個(gè)上升沿之間的長度周期 tC,使能 E 下降沿后,R/W 和 RS 變化時(shí)間間隔 tHD1 等等很多時(shí)間要求,這些要求怎么看呢?放心,只要是正規(guī)的數(shù)據(jù)手冊(cè),都會(huì)把這些時(shí)間要求給大家標(biāo)記出來的。我們來看一下表13-1。

表 13-1 1602 時(shí)序參數(shù)

http://wiki.jikexueyuan.com/project/mcu-tutorial-three/images/3.png" alt="" />

大家要善于把手冊(cè)中的這個(gè)表格和時(shí)序圖結(jié)合起來看。表13-1中的數(shù)據(jù),都是時(shí)序參數(shù),本節(jié)課的所有時(shí)序參數(shù),我都一點(diǎn)點(diǎn)的給大家講出來,以后遇到同類時(shí)序圖,就不再講了,只是提一下,但是大家務(wù)必要學(xué)會(huì)自己看時(shí)序圖,這個(gè)很重要,此外,看以下解釋需要結(jié)合圖13-2來看。

tC:指的是使能引腳 E 從本次上升沿到下次上升沿的最短時(shí)間是 400 ns,而我們單片機(jī)因?yàn)樗俣容^慢,一個(gè)機(jī)器周期就是 1 us 多,而一條 C 語言指令肯定是一個(gè)或者幾個(gè)機(jī)器周期的,所以這個(gè)條件完全滿足。

tPW:指的是使能引腳 E 高電平的持續(xù)時(shí)間最短是 150 ns,同樣由于我們的單片機(jī)比較慢,這個(gè)條件也完全滿足。

tR, tF:指的是使能引腳 E 的上升沿時(shí)間和下降沿時(shí)間,不能超過 25 ns,別看這個(gè)數(shù)很小,其實(shí)這個(gè)時(shí)間限值是很寬裕的,我們實(shí)際用示波器測(cè)了一下開發(fā)板的這個(gè)引腳上升沿和下降沿時(shí)間大概是 10 ns 到 15 ns 之間,完全滿足。

tSP1:指的是 RS 和 R/W 引腳使能后至少保持 30 ns,使能引腳 E 才可以變成高電平,這個(gè)條件同樣也完全滿足。

tHD1:指的是使能引腳 E 變成低電平后,至少保持 10 ns 之后,RS 和 R/W 才能進(jìn)行變化,這個(gè)條件也完全滿足。

tD:指的是使能引腳 E 變成高電平后,最多 100 ns 后,1602 就把數(shù)據(jù)送出來了,那么我們就可以正常去讀取狀態(tài)或者數(shù)據(jù)了。

tHD2:指的是讀操作過程中,使能引腳 E 變成低電平后,至少保持 20 ns,DB 數(shù)據(jù)總線才可以進(jìn)行變化,這個(gè)條件也完全滿足。

tSP2:指的是 DB 數(shù)據(jù)總線準(zhǔn)備好后,至少保持 40 ns,使能引腳 E 才可以從低到高進(jìn)行使能變化,這個(gè)條件也完全滿足。

tHD2:指的是寫操作過程中,要引腳 E 變成低電平后,至少保持 10 ns,DB 數(shù)據(jù)總線才可以變化,這個(gè)條件也完全滿足。

好了,表13-1這個(gè) LCD1602 的時(shí)序參數(shù)表已經(jīng)解析完成了,看完之后,是不是感覺比你想象的要簡單,沒有你想的那么困難。大家自己也得慢慢學(xué)會(huì)看這種時(shí)序圖和表格,在今后的學(xué)習(xí)中,這方面的能力尤為重要。如果以后換用了其它型號(hào)的單片機(jī),那么就根據(jù)單片機(jī)的執(zhí)行速度來評(píng)估你的程序是否滿足時(shí)序要求,整體上來說器件都是有一個(gè)最快速度的限制,而沒有最慢限制,所以當(dāng)換用高速的單片機(jī)后通常都是靠在各步驟間插入軟件延時(shí)來滿足較慢的時(shí)序要求。