單片機與PC 機的通信原理的設計研究-設計應用_第1頁
單片機與PC 機的通信原理的設計研究-設計應用_第2頁
單片機與PC 機的通信原理的設計研究-設計應用_第3頁
單片機與PC 機的通信原理的設計研究-設計應用_第4頁
單片機與PC 機的通信原理的設計研究-設計應用_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

精品文檔-下載后可編輯單片機與PC機的通信原理的設計研究-設計應用隨著系統(tǒng)的廣泛應用和計算機網絡技術的普及,單片機的通信功能愈來愈顯得重要。單片機通信是指單片機與計算機或單片機與單片機之間的信息交換,通常單片機與計算機之間的通信用的較多。本文以溫度檢測數(shù)據為基礎,研究了單片機與機的及電路的設計。

引言

本文研究的是一種基于串口的溫度檢測數(shù)據收發(fā)模塊。利用DS18B20溫度傳感器設計溫度監(jiān)測模塊,到0.1℃,用液晶顯示當前溫度,然后通過串口調試助手向單片機發(fā)送指令。當單片機收到十六進制指令01時,將當前溫度值以1s為間隔傳回PC機顯示,同時PC機顯示Turnontemp;當單片機收到十六進制指令02時,停止溫度值的回傳,PC機顯示Turnofftemp;當單片機收到其它指令時,PC機顯示Error。

1總體設計

本系統(tǒng)功能由硬件和軟件兩大部份協(xié)調完成,硬件部分主要完成信息的顯示;軟件主要完成信號的處理及控制功能等。

本系統(tǒng)的硬件采用模塊化設計,以AT89C52單片機為,與LCD顯示電路、串行口通信電路及DS18B20溫度檢測電路組成控制系統(tǒng)。該系統(tǒng)硬件主要包括以下幾個模塊:

AT89C52主控模塊、LCD顯示模塊、串行口通信模塊、DS18B20溫度檢測模塊等。其中AT89C52主要完成外圍硬件的控制以及一些運算功能,LCD顯示模塊完成字符、數(shù)字的顯示功能、串行口通信模塊主要完成單片機和PC機之間的通信功能,DS18B20溫度檢測模塊主要完成環(huán)境溫度檢測功能。系統(tǒng)組成方框圖如圖1.1所示。

圖1.1系統(tǒng)硬件組成方框圖

應用軟件采用模塊化設計方法。該系統(tǒng)軟件主要由主程序、串口接收發(fā)送數(shù)據中斷子程序、LCD顯示子程序等模塊組成,系統(tǒng)軟件結構框圖如圖1.2所示。

圖1.2系統(tǒng)軟件設計框圖

2系統(tǒng)工作原理

MCS-51單片機串行口發(fā)送/接收數(shù)據時,通過2個串行緩沖器SBUF進行,這2個緩沖器采用一個地址(98H),但在物理上是獨立的。其中接收緩沖器只能讀出不能寫入,50發(fā)送緩沖器只能寫入不能讀出。

1.發(fā)送過程

當數(shù)據被寫入SBUF寄存器后,單片機自動開始從起始位發(fā)送數(shù)據,發(fā)送到停止位的開始時,由內部硬件將TI置1,向CPU申請中斷,接下來可在中斷服務程序中做相應處理,也可選擇不進入中斷。

2.接收過程

串行口的接收與否受制于允許接收位REN的狀態(tài),當REN被軟件置1后,允許接收器接收。串口的接收器以所選波特率的16倍速對RXD線進行監(jiān)視。當1到0跳變時,檢測器連續(xù)采樣到RXD線上低電平時。便認定RXD端出現(xiàn)起始位,繼而接收控制器開始工作。在每位傳送時間的第7、8、9三個脈沖狀態(tài)采樣RXD線,決定所接收的值為0或1.當接收完停止位后,控制電路使中斷標志R1置為1.

3.溫度檢測

溫度檢測采用DALLAS單線數(shù)字溫度傳感器DS18B20,DS18B20是一種新型的一線器件,其體積更小,更適用于多種場合,且適用電壓更寬、更經濟。DALLAS半導體公司的數(shù)字化溫度傳感器DS18B20是世界上片支持一線總線接口的溫度傳感器。

溫度測量范圍為-55℃~+125℃,可編程為9位~12位轉換精度,可分辨溫度分別為0.5℃,0.25℃,0.125℃和0.0625℃。在9位分辨率時,多在93.75ms內把溫度轉換為數(shù)字;在12位分辨率時,多在750ms內把溫度值轉換為數(shù)字。

3溫度傳感器

3.1溫度傳感器特性

DALLAS單線數(shù)字溫度傳感器DS18B20[2]是一種新型的一線器件,其體積更小,更適用于多種場合,且適用電壓更寬、更經濟。DALLAS半導體公司的數(shù)字化溫度傳感器DS18B20是世界上片支持一線總線接口的溫度傳感器。溫度測量范圍為-55℃~+125℃,可編程為9位~12位轉換精度,可分辨溫度分別為0.5℃,0.25℃,0.125℃和0.0625℃。在9位分辨率時,多在93.75ms內把溫度轉換為數(shù)字;在12位分辨率時,多在750ms內把溫度值轉換為數(shù)字。DS18B20的性能特點如下:

1.獨特的單線接口僅需要一個端口引腳進行通信;

2.多個DS18B20可以并聯(lián)在惟一的三線上,實現(xiàn)多點組網功能

3.無須外部器件;

4.可通過數(shù)據線供電,電壓范圍為3.0~5.5V;

5.零待機功耗;

6.溫度以9或12位數(shù)字;

7.用戶可定義報警設置;

8.報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件;

9.負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作;

DS18B02可以采用兩種方式供電,一種是采用電源供電方式,此時DS18B20的1腳接地,2腳作為信號線,3腳接電源。另一種是寄生電源供電方式,單片機端口接單線總線,為保證在有效的DS18B20時鐘周期內提供足夠的電流,可用一個MOSFET管來完成對總線的上拉。

當DS18B20處于寫存儲器操作和溫度A/D轉換操作時,總線上必須有強的上拉,上拉開啟時間為10us.采用寄生電源供電方式時VDD端接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。

圖3.1DS18B20引腳圖

3.2工作時序圖

1.初始化

圖3.2初始化時序圖

1)先將數(shù)據線置高電平1;2)延時(該時間要求不是很嚴格,但是要盡可能短一些);3)數(shù)據線拉到低電平0;4)延時750us(該時間范圍可以在480~960us);5)數(shù)據線拉到高電平1;6)延時等待。如果初始化成功則在15~60ms內產生一個由DS18B20返回的低電平0,據該狀態(tài)可以確定它的存在。但是要注意,不能無限地等待,不然會使程序進入死循環(huán),所以要進行超時判斷;7)若CPU讀到數(shù)據線上的低電平0后,還要進行延時,其延時時間從發(fā)出高電平算起少要480us;8)將數(shù)據線再次拉到高電平后結束。

2.DS18B20寫數(shù)據

圖3.3寫數(shù)據時序圖

1)數(shù)據線先置低電平0;

2)延時確定的時間為15us;

3)按從低位到高位的順序發(fā)送數(shù)據(只發(fā)送一位);

4)延時時間為45us;

5)將數(shù)據線拉到高電平1;

6)重復1)到5)步驟,直到發(fā)送完整個字節(jié);

7)將數(shù)據線拉高到1.

3.DS18B20讀數(shù)據

圖3.4讀數(shù)據時序圖

1)將數(shù)據線拉高為1;

2)延時2us;

3)將數(shù)據線拉低0;

4)延時6us;

5)將數(shù)據線拉高1;

6)延時4us;

7)讀數(shù)據線的狀態(tài)得到1個狀態(tài)位,并且進行數(shù)據處理;

8)延時30us;

9)重復1)到7)步,知道讀取完一個字節(jié)。

4硬件設計

4.1時鐘電路及復位電路

1.時鐘電路

時鐘電路可以產生CPU校準時序,是單片機的控制,本次設計是通過外接12MHz的晶振來實現(xiàn)時鐘電路的時序控制。在使用片內振蕩器時,XTAL1和XTAL2分別為反向放大器的輸入端和輸出端。外接晶體以及電容C3和C5構成并聯(lián)諧振電路,接在放大器的反饋回路中。當用外部時鐘驅動時,XTAL2引腳應懸空,而由XTAL1引腳上的信號驅動,外部振蕩器通過一個2分頻的觸發(fā)器而成為內部時鐘信號,故對外部信號的占空比沒有什么要求,但和的高電平持續(xù)時間和低電平持續(xù)時間應符合技術要求。電路如圖4.1所示。

圖4.1晶振電路

2.空閑方式

在空閑方式下,CPU的內部時鐘信號被門控電路所封鎖,CPU即進入睡眠狀態(tài),但內部時鐘信號仍繼續(xù)供給中斷系統(tǒng),定時器和串行口。這種方式由軟件調用。在空閑方式期間,片內RAM和所有專用寄存器的狀態(tài)仍被保留,空閑方式可通過任何允許的中斷或硬件復位來終止。當空閑方式由硬件復位終止時,通常系統(tǒng)在空閑處恢復程序的執(zhí)行。硬件復位只需要信號持續(xù)有效兩個機器周期。當用復位終止空閑方式時,為防止避免意外寫入端口引腳的可能性,調用空閑方式指令的下一條指令不應是寫端口引腳或外部存儲器。

3.掉電工作方式

5.2程序設計

5.2.1主程序設計

主程序主要完成硬件初始化、子程序調用等功能。

1.初始化。

首先調用LCD初始化程序,在LCD上顯示數(shù)據RECEIVE:和TEMPis:*C.

然后調用中斷及串口初始化子程序程序,把串口接收數(shù)據單元RECDATA清零。設置寄存器SCON的SM0、SM1位定義串口工作方式,選擇波特率發(fā)生器為定時器T1;設定定時器T1工作方式為方式2;設置波特率參數(shù)為9600bps;允許串行中斷及總中斷;允許串口接收數(shù)據,定義REN=1;啟動定時/計數(shù)器T1工作,定義TR1=1.

2.串口收發(fā)數(shù)據。

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

判斷串口成功接收數(shù)據標志位flag_UART是否為0,若flag_uart為0,表明串口未接收到數(shù)據,則繼續(xù)等待串口接收數(shù)據;若flag_uart為1,表明串口成功接收或發(fā)送數(shù)據,進入串口中斷服務子程序,單片機接收數(shù)據,并將串口成功接收數(shù)據標志位flag_uart清零,調用LCD顯示接收數(shù)據子程序,在LCD上顯示單片機從串口接收到的數(shù)據,同時回傳溫度值給PC機顯示。主程序設計流程圖如圖5.1所示。

圖5.1主程序流程圖

5.2.2串口中斷服務子程序

判斷串口發(fā)送標志位TI是否為1,若TI為1,則把數(shù)據從單片機發(fā)給PC機,并把TI清零,中斷子程序返回;若TI為0,表明RI=0,則把串口接收標志位RI清零,把串口接收緩沖器SBUF中的數(shù)據寫入串口接收數(shù)據單元RECDATA,再把該數(shù)據送到串口發(fā)送緩沖器SBUF中,傳給PC機,置串口成功接收數(shù)據標志位RECOKBIT為1,表明串口成功接收發(fā)送數(shù)據,中斷子程序返回。串口收發(fā)數(shù)據中斷服務子程序設計流程圖如圖5.2所示。

圖5.2串口中斷服務子程序

5.2.3讀溫子程序

讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時需進行CRC校驗,校驗有錯時不進行溫度數(shù)據的改寫。其程序流程圖如圖5.3示。

圖5.3讀溫子程序

5.2.4溫度轉換命令子程序

溫度轉換命令子程序主要是發(fā)溫度轉換開始命令,當采用12位分辨率時轉換時間約為750ms,在本程序設計中采用1s顯示程序延時法等待轉換的完成。溫度轉換命令子程序流程圖如上圖,圖5.4所示。

圖5.4溫度轉換流程圖

5.2.5計算溫度子程序

計算溫濕度子程序將RAM中讀取值進行BCD碼的轉換運算,并進行溫度值正負的判定,其程序流程圖如圖5.5所示。

圖5.5計算溫度流程圖

5.2.6顯示數(shù)據刷新子程序

顯示數(shù)據刷新子程序主要是對分離后的溫度顯示數(shù)據進行刷新操作,當標志位位為1時將符號顯示位移入位。程序流程圖如圖5.6所示。

6結論

本系統(tǒng)的硬件采用模塊化設計,以AT89C52單片機為,與LCD顯示電路、串行口通信電路及DS18B20溫度檢測電路組成控制系統(tǒng)。該系統(tǒng)硬件主要包括以下幾個模塊:

AT89C52主控模塊、LCD顯示模塊、串行口通信模塊、DS18B20溫度檢測模塊等。其中AT89C52主要完成外圍硬件的控制以及一些運算功能,LCD顯示模塊完成字符、數(shù)字的顯示功能、串行口通信模塊主要完成單片機和PC機之間的通信功能,DS18B20溫度檢測模塊主要完成環(huán)境溫度檢測功能。

在掉電方式下,片內振蕩器停止工作。調用掉電指令是執(zhí)行的一條指令。片內RAM和專用寄存器的值被保留,直到掉電方式終止。退出掉電方式只能靠硬件復位。復位后將重新定義所有專用寄存器,但不改變RAM的內容。在VCC未恢復到正常工作電壓之前,不能啟動復位,復位信號應保持足夠長的時間,以保證振蕩器的起振和達到穩(wěn)定。

為了使單片機正常工作,還需要加入上電復位電路和掉電檢測電路。上電復位簡要原理:

在系統(tǒng)不需要復位時,RST端是低電平;按下按鍵,RST端變?yōu)楦唠娖健?/p>

圖4.2上電復位電路

AT89C51、晶振電路與上電復位電路共同組成單片機系統(tǒng),如圖4.3所示。

圖4.3系統(tǒng)

4.2溫度傳感器

圖4.4DS18B20連線圖

從圖4.4可以看出,DS18B20與單片機的連接非常簡單,單片機只需要一個I/O口就可以控制DS18B20.這個圖的接法是單片機與一個DS18B20通信,如果要控制多個DS18B20進行溫度采集,只要將所有的DS18B20的I/O口全部連接到一起就可以了。

4.3LCD顯示模塊

顯示電路采用LCD1602液晶顯示屏,P2作為液晶8位數(shù)據輸入端口。P1.0口作為液晶數(shù)據/命令選擇端口,P1.1為液晶使能端口。

圖4.5LCD顯示模塊

4.4串行口通信模塊設計

51單片機有一個全雙工的串行通信口,使單片機和計算機之間可以方便地進行通信。

電平范圍是電路能夠安全可靠識別信號的電壓范圍。

CMOS電路的電平范圍一般是從0到電源電壓。CMOS電平中,高電平(3.5~5V)為邏輯1,低電平(0~0.8V)為邏輯0.

RS232接口的電平范圍是-15V到+15V,RS232電平采用負邏輯,即邏輯1:-3~-15V,邏輯0:+3~+15V.

單片機的串口是TTL電平的,而計算機的串口是RS232電平,要使兩者之間進行通信,兩者之間必須有一個電平轉換電路,即單片機的串口要外接電平轉換電路芯片把與TTL兼容的CMOS高電平表示的1轉換成RS232的負電壓信號,把低電平轉換成RS-232的正電壓信號。典型的轉換電路給出-9V和+9V.

本設計中實現(xiàn)邏輯電平轉換可以采用MAX232芯片的轉換接口:MAX232是MAXIM公司生產的,包含兩路驅動器和接收器的RS-232轉換芯片。MAX232芯片內部有一個電壓轉換器,可以把輸人的+5V電壓轉換為RS-232接口所需的±10V電壓,尤其適用于沒有±12V的單電源系統(tǒng)。與此原理相同的芯片還有MAX202、AD公司的ADDt101以及SIL公司的IC1232芯片。

圖4.6MAX232芯片引腳

由于protues仿真時不需進行電平轉換,所以仿真時沒有用上MAX232芯片電路,但做實物時需進行電平轉換,其硬件連線圖如圖4.7所示。MAX232芯片的T1in引腳連接AT89C51單片機的P3.1(TXD)引腳,MAX232芯片的R1out引腳連接AT89C51單片機的P3.0(RXD)引腳;MAX232芯片的T1out引腳連接DB9針接口的第2引腳,MAX232芯

溫馨提示

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

評論

0/150

提交評論