當前位置:首頁 > 單片機 > 單片機
[導讀]內容摘要:隨著單片機系統(tǒng)的廣泛應用和計算機網(wǎng)絡技術的普及,單片機的通信功能愈來愈顯得重要。單片機通信是指單片機與計算機或單片機與單片機之間的信息交換,通常單片機與計算機之間的通信用的較多。本文以溫度檢測數(shù)據(jù)為基礎,研究了單片機與PC 機的通信原理及電路的設計。

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

引言

本文研究的是一種基于串口的溫度檢測數(shù)據(jù)收發(fā)模塊。利用DS18B20 溫度傳感器設計溫度監(jiān)測模塊,精確到0.1℃,用液晶顯示當前溫度,然后通過串口調試助手向單片機發(fā)送指令。當單片機收到十六進制指令01時,將當前溫度值以1s 為間隔傳回PC 機顯示,同時PC 機顯示Turn on temp;當單片機收到十六進制指令02 時,停止溫度值的回傳,PC 機顯示Turn off temp;當單片機收到其它指令時,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ù)據(jù)中斷子程序、LCD 顯示子程序等模塊組成,系統(tǒng)軟件結構框圖如圖1.2 所示。

 

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

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

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

1. 發(fā)送過程

當數(shù)據(jù)被寫入SBUF 寄存器后,單片機自動開始從起始位發(fā)送數(shù)據(jù),發(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)多點組網(wǎng)功能

3. 無須外部器件;

4. 可通過數(shù)據(jù)線供電,電壓范圍為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.1 DS18B20 引腳圖

3.2 工作時序圖

1. 初始化

 

圖 3.2 初始化時序圖

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

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) 重復 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ù)線拉高1 ;

6)延時 4us ;

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

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ù)據(jù)"RECEIVE:"和"TEMP is: *C".

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

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

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

 

圖 5.1 主程序流程圖

5.2.2 串口中斷服務子程序

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

 

圖5.2 串口中斷服務子程序

5.2.3 讀溫子程序

讀出溫度子程序的主要功能是讀出RAM 中的9 字節(jié),在讀出時需進行CRC 校驗,校驗有錯時不進行溫度數(shù)據(jù)的改寫。其程序流程圖如圖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ù)據(jù)刷新子程序

顯示數(shù)據(jù)刷新子程序主要是對分離后的溫度顯示數(shù)據(jù)進行刷新操作,當標志位位為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.4 DS18B20連線圖

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

4.3 LCD顯示模塊

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

 

圖 4.5 LCD 顯示模塊

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.6 MAX232 芯片引腳

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

 

圖4.7 電平轉換硬件連接圖

4.5 系統(tǒng)原理圖

由以上模塊化設計可得整個系統(tǒng)原理圖如圖4.8 所示:

 

圖4.8 系統(tǒng)原理圖

5 軟件設計

5.1 算法設計

編寫單片機異步通信程序步驟如下:

1. 設置串口工作方式

此時需對串行控制器SCON 中的SM0、SM1 進行設置。PC 機與單片機的通信中一般選擇串口工作在方式1 下。

2. 選擇波特率發(fā)生器

選擇定時器1或定時器2 做為其波特率發(fā)生器。

3. 設置定時器工作方式

當選擇定時器1 做為波特率發(fā)生器時,需設置其方式寄存器TMOD 為計數(shù)方式并選擇相應的工作方式(一般選擇方式2 以避免重裝定時器初值);當選擇定時器2 做為波特率發(fā)生器時,需將T2CON 設置為波特率發(fā)生器工作方式。

4. 設置波特率參數(shù)

影響波特率的參數(shù)有二,一是特殊寄存器PCON 的SMOD 位,另一個是相應定時器初值。

5. 允許串行中斷

因在程序中我們一般采有中斷接收方式,故應設EA=1、ES=1.

6. 允許接收數(shù)據(jù)

設置 SCON 中的REN 為1.表示允許串行口接收數(shù)據(jù)。

7. 允許定時/計數(shù)器工作

此時開啟定時/計數(shù)器,使其產生波特率8. 編寫串行中斷服務程序。

當有數(shù)據(jù)到達串口時,系統(tǒng)將自動執(zhí)行所編寫的中斷服務程序。

9. 收/發(fā)相應數(shù)據(jù)

注意的是發(fā)送操作完成需將T1清零,接收工作完成后需將R1清零。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉