單片機(jī)與PC 機(jī)的通信原理的設(shè)計分析_第1頁
單片機(jī)與PC 機(jī)的通信原理的設(shè)計分析_第2頁
單片機(jī)與PC 機(jī)的通信原理的設(shè)計分析_第3頁
單片機(jī)與PC 機(jī)的通信原理的設(shè)計分析_第4頁
單片機(jī)與PC 機(jī)的通信原理的設(shè)計分析_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、【W(wǎng)ord版本下載可任意編輯】 單片機(jī)與PC 機(jī)的通信原理的設(shè)計分析 隨著系統(tǒng)的廣泛應(yīng)用和計算機(jī)網(wǎng)絡(luò)技術(shù)的普及,單片機(jī)的通信功能愈來愈顯得重要。單片機(jī)通信是指單片機(jī)與計算機(jī)或單片機(jī)與單片機(jī)之間的信息交換,通常單片機(jī)與計算機(jī)之間的通信用的較多。本文以溫度檢測數(shù)據(jù)為根底,研究了單片機(jī)與 機(jī)的及電路的設(shè)計。 引言 本文研究的是一種基于串口的溫度檢測數(shù)據(jù)收發(fā)模塊。利用DS18B20 溫度傳感器設(shè)計溫度監(jiān)測模塊,到0.1,用液晶顯示當(dāng)前溫度,然后通過串口調(diào)試助手向單片機(jī)發(fā)送指令。當(dāng)單片機(jī)收到十六進(jìn)制指令01時,將當(dāng)前溫度值以1s 為間隔傳回PC 機(jī)顯示,同時PC 機(jī)顯示Turn on temp;當(dāng)單片機(jī)

2、收到十六進(jìn)制指令02 時,停止溫度值的回傳,PC 機(jī)顯示Turn off temp;當(dāng)單片機(jī)收到其它指令時,PC 機(jī)顯示Error。 1 總體設(shè)計 本系統(tǒng)功能由硬件和軟件兩大部份協(xié)調(diào)完成,硬件部分主要完成信息的顯示;軟件主要完成信號的處理及控制功能等。 本系統(tǒng)的硬件采用模塊化設(shè)計,以AT89C52 單片機(jī)為,與LCD 顯示電路、串行口通信電路及DS18B20 溫度檢測電路組成控制系統(tǒng)。該系統(tǒng)硬件主要包括以下幾個模塊: AT89C52 主控模塊、LCD 顯示模塊、串行口通信模塊、DS18B20 溫度檢測模塊等。其中AT89C52 主要完成外圍硬件的控制以及一些運(yùn)算功能,LCD 顯示模塊完成字符、

3、數(shù)字的顯示功能、串行口通信模塊主要完成單片機(jī)和PC 機(jī)之間的通信功能,DS18B20 溫度檢測模塊主要完成環(huán)境溫度檢測功能。系統(tǒng)組成方框圖如圖1.1 所示。 圖1.1系統(tǒng)硬件組成方框圖 應(yīng)用軟件采用模塊化設(shè)計方法。該系統(tǒng)軟件主要由主程序、串口接收發(fā)送數(shù)據(jù)中斷子程序、LCD 顯示子程序等模塊組成,系統(tǒng)軟件構(gòu)造框圖如圖1.2 所示。 圖1.2系統(tǒng)軟件設(shè)計框圖 2 系統(tǒng)工作原理 MCS-51 單片機(jī)串行口發(fā)送/接收數(shù)據(jù)時,通過2 個串行緩沖器SBUF 開展,這2 個緩沖器采用一個地址(98H),但在物理上是獨(dú)立的。其中接收緩沖器只能讀出不能寫入,50 發(fā)送緩沖器只能寫入不能讀出。 1. 發(fā)送過程 當(dāng)

4、數(shù)據(jù)被寫入SBUF 存放器后,單片機(jī)自動開始從起始位發(fā)送數(shù)據(jù),發(fā)送到停止位的開始時,由內(nèi)部硬件將TI 置1,向CPU 申請中斷,接下來可在中斷服務(wù)程序中做相應(yīng)處理,也可選擇不進(jìn)入中斷。 2. 接收過程 串行口的接收與否受制于允許接收位REN 的狀態(tài),當(dāng)REN 被軟件置1后,允許接收器接收。串口的接收器以所選波特率的16 倍速對RXD 線開展監(jiān)視。當(dāng)1到0跳變時,檢測器連續(xù)采樣到RXD 線上低電平時。便認(rèn)定RXD 端出現(xiàn)起始位,繼而接收控制器開始工作。在每位傳送時間的第7、8、9 三個脈沖狀態(tài)采樣RXD 線,決定所接收的值為0或1.當(dāng)接收完停止位后,控制電路使中斷標(biāo)志R1置為1. 3. 溫度檢測

5、 溫度檢測采用DALLAS 單線數(shù)字溫度傳感器DS18B20,DS18B20 是一種新型的一線器件,其體積更小,更適用于多種場合,且適用電壓更寬、更經(jīng)濟(jì)。DALLAS 半導(dǎo)體公司的數(shù)字化溫度傳感器DS18B20 是世界上片支持一線總線接口的溫度傳感器。 溫度測量范圍為-55+125,可編程為9 位12位轉(zhuǎn)換精度,可分辨溫度分別為0.5,0.25,0.125和0.0625。在9 位分辨率時,多在93.75ms 內(nèi)把溫度轉(zhuǎn)換為數(shù)字;在12 位分辨率時,多在750ms 內(nèi)把溫度值轉(zhuǎn)換為數(shù)字。 3 溫度傳感器 3.1 溫度傳感器特性 DALLAS 單線數(shù)字溫度傳感器DS18B20是一種新型的一線器件,

6、其體積更小,更適用于多種場合,且適用電壓更寬、更經(jīng)濟(jì)。DALLAS 半導(dǎo)體公司的數(shù)字化溫度傳感器DS18B20 是世界上片支持一線總線接口的溫度傳感器。溫度測量范圍為-55+125,可編程為9 位12 位轉(zhuǎn)換精度,可分辨溫度分別為0.5,0.25,0.125和0.0625。在9 位分辨率時,多在93.75ms 內(nèi)把溫度轉(zhuǎn)換為數(shù)字;在12 位分辨率時,多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字。DS18B20的性能特點(diǎn)如下: 1. 獨(dú)特的單線接口僅需要一個端口引腳開展通信; 2. 多個 DS18B20 可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能 3. 無須外部器件; 4. 可通過數(shù)據(jù)線供電,電壓范圍為3.

7、05.5V; 5. 零待機(jī)功耗; 6. 溫度以 9 或12 位數(shù)字; 7. 用戶可定義報警設(shè)置; 8. 報警搜索命令識別并標(biāo)志超過程序限定溫度(溫度報警條件)的器件; 9. 負(fù)電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作; DS18B02 可以采用兩種方式供電,一種是采用電源供電方式,此時DS18B20的1 腳接地,2 腳作為信號線,3 腳接電源。另一種是寄生電源供電方式,單片機(jī)端口接單線總線,為保證在有效的DS18B20 時鐘周期內(nèi)提供足夠的電流,可用一個MOSFET 管來完成對總線的上拉。 當(dāng) DS18B20 處于寫存儲器操作和溫度A/D 轉(zhuǎn)換操作時,總線上必須有強(qiáng)的上

8、拉,上拉開啟時間為10us.采用寄生電源供電方式時VDD 端接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。 圖 3.1 DS18B20 引腳圖 3.2 工作時序圖 1. 初始化 圖 3.2 初始化時序圖 1)先將數(shù)據(jù)線置高電平1;2) 延時(該時間要求不是很嚴(yán)格,但是要盡可能短一些);3) 數(shù)據(jù)線拉到低電平0;4) 延時 750us(該時間范圍可以在480960us);5) 數(shù)據(jù)線拉到高電平1;6)延時等待。如果初始化成功則在1560ms內(nèi)產(chǎn)生一個由DS18B20 返回的低電平0,據(jù)該狀態(tài)可以確定它的存在。但是要注意,不能無限地等待,不然會使程序進(jìn)入死循環(huán),所以要開展超時判斷;7) 若

9、 CPU 讀到數(shù)據(jù)線上的低電平0 后,還要開展延時,其延時時間從發(fā)出高電平算起少要480us;8)將數(shù)據(jù)線再次拉到高電平后結(jié)束。 2. DS18B20 寫數(shù)據(jù) 圖3.3 寫數(shù)據(jù)時序圖 1) 數(shù)據(jù)線先置低電平0; 2)延時確定的時間為15us; 3) 按從低位到高位的順序發(fā)送數(shù)據(jù)(只發(fā)送一位); 4) 延時時間為 45us; 5) 將數(shù)據(jù)線拉到高電平1; 6) 重復(fù) 1)到5)步驟,直到發(fā)送完整個字節(jié); 7)將數(shù)據(jù)線拉高到1. 3. DS18B20 讀數(shù)據(jù) 圖3.4 讀數(shù)據(jù)時序圖 1)將數(shù)據(jù)線拉高為1; 2) 延時 2us ; 3) 將數(shù)據(jù)線拉低0 ; 4) 延時 6us ; 5) 將數(shù)據(jù)線拉高

10、1 ; 6)延時 4us ; 7) 讀數(shù)據(jù)線的狀態(tài)得到1 個狀態(tài)位,并且開展數(shù)據(jù)處理; 8) 延時 30us ; 9) 重復(fù) 1)到7)步,知道讀取完一個字節(jié)。 4 硬件設(shè)計 4.1 時鐘電路及復(fù)位電路 1.時鐘電路 時鐘電路可以產(chǎn)生CPU 校準(zhǔn)時序,是單片機(jī)的控制,本次設(shè)計是通過外接12MHz的晶振來實(shí)現(xiàn)時鐘電路的時序控制。在使用片內(nèi)振蕩器時,XTAL1 和XTAL2 分別為反向放大器的輸入端和輸出端。外接晶體以及電容C3 和C5 構(gòu)成并聯(lián)諧振電路,接在放大器的反應(yīng)回路中。當(dāng)用外部時鐘驅(qū)動時,XTAL2引腳應(yīng)懸空,而由XTAL1引腳上的信號驅(qū)動,外部振蕩器通過一個2 分頻的觸發(fā)器而成為內(nèi)部時

11、鐘信號,故對外部信號的占空比沒有什么要求,但和的高電平持續(xù)時間和低電平持續(xù)時間應(yīng)符合技術(shù)要求。電路如圖4.1 所示。 圖 4.1晶振電路 2.空閑方式 在空閑方式下,CPU 的內(nèi)部時鐘信號被門控電路所封鎖,CPU 即進(jìn)入睡眠狀態(tài),但內(nèi)部時鐘信號仍繼續(xù)供應(yīng)中斷系統(tǒng),定時器和串行口。這種方式由軟件調(diào)用。在空閑方式期間,片內(nèi)RAM和所有專用存放器的狀態(tài)仍被保存,空閑方式可通過任何允許的中斷或硬件復(fù)位來終止。當(dāng)空閑方式由硬件復(fù)位終止時,通常系統(tǒng)在空閑處恢復(fù)程序的執(zhí)行。硬件復(fù)位只需要信號持續(xù)有效兩個機(jī)器周期。當(dāng)用復(fù)位終止空閑方式時,為防止防止意外寫入端口引腳的可能性,調(diào)用空閑方式指令的下一條指令不應(yīng)是寫

12、端口引腳或外部存儲器。 3.掉電工作方式 5.2 程序設(shè)計 5.2.1 主程序設(shè)計 主程序主要完成硬件初始化、子程序調(diào)用等功能。 1. 初始化。 首先調(diào)用 LCD 初始化程序,在LCD 上顯示數(shù)據(jù)RECEIVE:和TEMP is: *C. 然后調(diào)用中斷及串口初始化子程序程序,把串口接收數(shù)據(jù)單元RECDATA 清零。設(shè)置存放器SCON 的SM0、SM1 位定義串口工作方式,選擇波特率發(fā)生器為定時器T1;設(shè)定定時器T1 工作方式為方式2;設(shè)置波特率參數(shù)為9600bps;允許串行中斷及總中斷;允許串口接收數(shù)據(jù),定義REN=1;啟動定時/計數(shù)器T1 工作,定義TR1=1. 2. 串口收發(fā)數(shù)據(jù)。 判斷串

13、口成功接收數(shù)據(jù)標(biāo)志位flag_UART 是否為0,若flag_uart 為0,說明串口未接收到數(shù)據(jù),則繼續(xù)等待串口接收數(shù)據(jù);若flag_uart 為1,說明串口成功接收或發(fā)送數(shù)據(jù),進(jìn)入串口中斷服務(wù)子程序,單片機(jī)接收數(shù)據(jù),并將串口成功接收數(shù)據(jù)標(biāo)志位flag_uart 清零,調(diào)用LCD 顯示接收數(shù)據(jù)子程序,在LCD 上顯示單片機(jī)從 判斷串口成功接收數(shù)據(jù)標(biāo)志位flag_UART 是否為0,若flag_uart 為0,說明串口未接收到數(shù)據(jù),則繼續(xù)等待串口接收數(shù)據(jù);若flag_uart 為1,說明串口成功接收或發(fā)送數(shù)據(jù),進(jìn)入串口中斷服務(wù)子程序,單片機(jī)接收數(shù)據(jù),并將串口成功接收數(shù)據(jù)標(biāo)志位flag_uart

14、 清零,調(diào)用LCD 顯示接收數(shù)據(jù)子程序,在LCD 上顯示單片機(jī)從串口接收到的數(shù)據(jù),同時回傳溫度值給PC機(jī)顯示。主程序設(shè)計流程圖如圖5.1 所示。 圖 5.1 主程序流程圖 5.2.2 串口中斷服務(wù)子程序 判斷串口發(fā)送標(biāo)志位TI 是否為1,若TI 為1,則把數(shù)據(jù)從單片機(jī)發(fā)給PC 機(jī),并把TI清零,中斷子程序返回;若TI為0,說明RI=0,則把串口接收標(biāo)志位RI清零,把串口接收緩沖器SBUF 中的數(shù)據(jù)寫入串口接收數(shù)據(jù)單元RECDATA,再把該數(shù)據(jù)送到串口發(fā)送緩沖器SBUF 中,傳給PC 機(jī),置串口成功接收數(shù)據(jù)標(biāo)志位RECOKBIT 為1,說明串口成功接收發(fā)送數(shù)據(jù),中斷子程序返回。串口收發(fā)數(shù)據(jù)中斷服

15、務(wù)子程序設(shè)計流程圖如圖5.2 所示。 圖5.2 串口中斷服務(wù)子程序 5.2.3 讀溫子程序 讀出溫度子程序的主要功能是讀出RAM 中的9 字節(jié),在讀出時需開展CRC 校驗,校驗有錯時不開展溫度數(shù)據(jù)的改寫。其程序流程圖如圖5.3 示。 圖5.3 讀溫子程序 5.2.4 溫度轉(zhuǎn)換命令子程序 溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12 位分辨率時轉(zhuǎn)換時間約為750ms,在本程序設(shè)計中采用1s顯示程序延時法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如上圖,圖5.4 所示。 圖5.4 溫度轉(zhuǎn)換流程圖 5.2.5 計算溫度子程序 計算溫濕度子程序?qū)AM 中讀取值開展BCD 碼的轉(zhuǎn)換運(yùn)算,并開展

16、溫度值正負(fù)的判定,其程序流程圖如圖5.5 所示。 圖5.5 計算溫度流程圖 5.2.6 顯示數(shù)據(jù)刷新子程序 顯示數(shù)據(jù)刷新子程序主要是對分離后的溫度顯示數(shù)據(jù)開展刷新操作,當(dāng)標(biāo)志位位為1時將符號顯示位移入位。程序流程圖如圖5.6 所示。 6 結(jié)論 本系統(tǒng)的硬件采用模塊化設(shè)計,以AT89C52 單片機(jī)為,與LCD 顯示電路、串行口通信電路及DS18B20 溫度檢測電路組成控制系統(tǒng)。該系統(tǒng)硬件主要包括以下幾個模塊: AT89C52 主控模塊、LCD 顯示模塊、串行口通信模塊、DS18B20 溫度檢測模塊等。其中AT89C52 主要完成外圍硬件的控制以及一些運(yùn)算功能,LCD 顯示模塊完成字符、數(shù)字的顯示

17、功能、串行口通信模塊主要完成單片機(jī)和PC 機(jī)之間的通信功能,DS18B20 溫度檢測模塊主要完成環(huán)境溫度檢測功能。 在掉電方式下,片內(nèi)振蕩器停止工作。調(diào)用掉電指令是執(zhí)行的一條指令。片內(nèi)RAM 和專用存放器的值被保存,直到掉電方式終止。退出掉電方式只能靠硬件復(fù)位。復(fù)位后將重新定義所有專用存放器,但不改變RAM 的內(nèi)容。在VCC 未恢復(fù)到正常工作電壓之前,不能啟動復(fù)位,復(fù)位信號應(yīng)保持足夠長的時間,以保證振蕩器的起振和到達(dá)穩(wěn)定。 為了使單片機(jī)正常工作,還需要參加上電復(fù)位電路和掉電檢測電路。上電復(fù)位簡要原理: 在系統(tǒng)不需要復(fù)位時,RST端是低電平;按下按鍵,RST端變?yōu)楦唠娖健?圖 4.2 上電復(fù)位電

18、路 AT89C51、晶振電路與上電復(fù)位電路共同組成單片機(jī)系統(tǒng),如圖4.3 所示。 圖 4.3 系統(tǒng) 4.2 溫度傳感器 圖4.4 DS18B20連線圖 從圖 4.4 可以看出,DS18B20 與單片機(jī)的連接非常簡單,單片機(jī)只需要一個I/O 口就可以控制DS18B20.這個圖的接法是單片機(jī)與一個DS18B20 通信,如果要控制多個DS18B20開展溫度采集,只要將所有的DS18B20 的I/O 口全部連接到一起就可以了。 4.3 LCD顯示模塊 顯示電路采用LCD1602 液晶顯示屏,P2 作為液晶8 位數(shù)據(jù)輸入端口。P1.0 口作為液晶數(shù)據(jù)/命令選擇端口,P1.1 為液晶使能端口。 圖 4.5

19、 LCD 顯示模塊 4.4 串行口通信模塊設(shè)計 51 單片機(jī)有一個全雙工的串行通信口,使單片機(jī)和計算機(jī)之間可以方便地開展通信。 電平范圍是電路能夠安全可靠識別信號的電壓范圍。 CMOS 電路的電平范圍一般是從0 到電源電壓。CMOS 電平中,高電平(3.55V)為邏輯1,低電平(00.8V)為邏輯0. RS232 接口的電平范圍是-15V 到+15V,RS232 電平采用負(fù)邏輯,即邏輯1:-3-15V,邏輯0:+3+15V. 單片機(jī)的串口是TTL 電平的,而計算機(jī)的串口是RS232 電平,要使兩者之間開展通信,兩者之間必須有一個電平轉(zhuǎn)換電路,即單片機(jī)的串口要外接電平轉(zhuǎn)換電路芯片把與TTL兼容的

20、CMOS 高電平表示的1 轉(zhuǎn)換成RS232 的負(fù)電壓信號,把低電平轉(zhuǎn)換成RS-232 的正電壓信號。典型的轉(zhuǎn)換電路給出-9V 和+9V. 本設(shè)計中實(shí)現(xiàn)邏輯電平轉(zhuǎn)換可以采用MAX232 芯片的轉(zhuǎn)換接口:MAX232 是MAXIM公司生產(chǎn)的,包含兩路驅(qū)動器和接收器的RS-232 轉(zhuǎn)換芯片。MAX232 芯片內(nèi)部有一個電壓轉(zhuǎn)換器,可以把輸人的+5V 電壓轉(zhuǎn)換為RS-232 接口所需的10V 電壓,尤其適用于沒有12V 的單電源系統(tǒng)。與此原理相同的芯片還有MAX202、AD 公司的ADDt101 以及SIL 公司的IC1232 芯片。 圖 4.6 MAX232 芯片引腳 由于 protues仿真時不需開展電平轉(zhuǎn)換,所以仿真時沒有用上MAX232 芯片電路,但做實(shí)物時需開展電平轉(zhuǎn)換,其硬件連線圖如圖4.7 所示。MAX232 芯片的T1in 引腳連接AT89C51 單片機(jī)的P3.1(TXD)引腳,MAX232 芯片的R

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論