《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于PC與STC12C單片機(jī)串口通信的 溫度采集系統(tǒng)設(shè)計(jì)
基于PC與STC12C單片機(jī)串口通信的 溫度采集系統(tǒng)設(shè)計(jì)
2014年微型機(jī)與應(yīng)用第16期
周 鵬
華僑大學(xué) 信息學(xué)院, 福建 廈門(mén)
摘要: 設(shè)計(jì)了基于PC與STC12C單片機(jī)串口通信的溫度采集系統(tǒng)。STC12C單片機(jī)作為下位機(jī),利用數(shù)字溫度傳感器DS18B20采集現(xiàn)場(chǎng)溫度,同時(shí)通過(guò)串口RS232將溫度值上傳給PC,PC實(shí)時(shí)顯示溫度和變化曲線(xiàn)。實(shí)際運(yùn)行表明,系統(tǒng)運(yùn)行可靠,界面清楚直觀(guān),功能達(dá)到設(shè)計(jì)要求。
Abstract:
Key words :

  摘  要: 設(shè)計(jì)了基于PC與STC12C單片機(jī)串口通信的溫度采集系統(tǒng)。STC12C單片機(jī)作為下位機(jī),利用數(shù)字溫度傳感器DS18B20采集現(xiàn)場(chǎng)溫度,同時(shí)通過(guò)串口RS232將溫度值上傳給PC,PC實(shí)時(shí)顯示溫度和變化曲線(xiàn)。實(shí)際運(yùn)行表明,系統(tǒng)運(yùn)行可靠,界面清楚直觀(guān),功能達(dá)到設(shè)計(jì)要求。

  關(guān)鍵詞: 串口通信; STC12C單片機(jī); 溫度傳感器DS18B20; MSComm控件

  PC與單片機(jī)組成上下位機(jī),上位機(jī)通過(guò)串行接口獲取下位機(jī)采集的現(xiàn)場(chǎng)數(shù)據(jù),這是一種重要的測(cè)控形式,它易于實(shí)現(xiàn)遠(yuǎn)程采集和多通道采集。上下位機(jī)形式的采集系統(tǒng)既可以發(fā)揮單片機(jī)抗干擾性好、可擴(kuò)充、易面向現(xiàn)場(chǎng)等優(yōu)點(diǎn),又能充分利用PC在數(shù)據(jù)處理和交互方面的巨大優(yōu)勢(shì)[1]。

  本文設(shè)計(jì)了PC與STC12C5A60S2單片機(jī)(簡(jiǎn)稱(chēng)STC12C單片機(jī))組成的單通道溫度采集系統(tǒng),單片機(jī)實(shí)時(shí)采集溫度,PC利用串口通信獲得溫度值并實(shí)時(shí)顯示。

1 系統(tǒng)硬件設(shè)計(jì)

  系統(tǒng)主要由PC和單片機(jī)系統(tǒng)組成,PC為普通計(jì)算機(jī);單片機(jī)系統(tǒng)包括STC12C單片機(jī)、數(shù)字測(cè)溫電路、時(shí)鐘電路、液晶顯示電路、串口電路和鍵盤(pán)電路,如圖1所示。

001.jpg

  PC利用通信接口獲得現(xiàn)場(chǎng)溫度,處理后實(shí)時(shí)顯示;單片機(jī)系統(tǒng)通過(guò)測(cè)溫電路采集現(xiàn)場(chǎng)溫度并上傳給PC,同時(shí)利用液晶顯示電路和時(shí)鐘電路顯示溫度和時(shí)間;鍵盤(pán)電路用于設(shè)定溫度上限和時(shí)間。

  1.1 STC12C單片機(jī)

  STC12C單片機(jī)是單時(shí)鐘周期8051單片機(jī),它具有高速、低功耗及超強(qiáng)抗干擾等優(yōu)點(diǎn),指令完全兼容8051單片機(jī),但速度是后者的8~12倍;它內(nèi)置60 KB的Flash程序存儲(chǔ)器,集成1 280 B數(shù)據(jù)存儲(chǔ)器,有2個(gè)16位定時(shí)器/計(jì)數(shù)器,內(nèi)置2個(gè)全雙工異步串口(UART)用于串行通信[2-3]。圖2為STC12C單片機(jī)最小系統(tǒng)結(jié)構(gòu)圖。 1.2 數(shù)字測(cè)溫電路/時(shí)鐘電路

002.jpg

003.jpg

  數(shù)字測(cè)溫電路選用DS18B20作為溫度傳感器,如圖3所示。DS18B20具有以下特點(diǎn)使其得到廣泛應(yīng)用[4]:(1)它是數(shù)字溫度傳感器,直接輸出數(shù)字量;(2)它的測(cè)溫范圍廣, 為-55°C~+125°C,且分辨率和精度高,最高分辨率可達(dá)12 bit,精度為±0.5°C; (3)它是可編程芯片,可由程序直接讀出溫度值;(4)它是單總線(xiàn)接口,僅需一條輸入輸出線(xiàn)(DQ)就能與單片機(jī)進(jìn)行接口通信。

004.jpg

  時(shí)鐘電路由數(shù)字時(shí)鐘芯片DS1302組成,如圖4所示。它是一種高性能、低功耗、采用三線(xiàn)接口的實(shí)時(shí)時(shí)鐘芯片,可輸出設(shè)定的時(shí)間和日期[5]。

  1.3 液晶顯示電路

  單片機(jī)系統(tǒng)的顯示器選用液晶顯示器LCD12864,它內(nèi)置ST7920控制芯片,帶有中文字庫(kù)。LCD12864由DDRAM(顯示數(shù)據(jù)RAM)、CGROM(字型產(chǎn)生ROM)、CGRAM(自定義字型產(chǎn)生RAM)和GDRAM(繪圖RAM)等組成[6]。DDRAM和GDRAM是本系統(tǒng)所用到的模塊。

  DDRAM提供64×2個(gè)位元組的空間,最多可控制4行16字(64個(gè)字)的中文字型顯示,當(dāng)寫(xiě)入顯示數(shù)據(jù)RAM時(shí),可分別顯示CGROM與CGRAM的字型;此模塊可顯示HCGROM(半角)、CGRAM及CGROM 3種中文字型。液晶顯示器屏幕坐標(biāo)(AC地址)與DDRAM地址的對(duì)應(yīng)關(guān)系如表1所示。GDRAM提供64×32 B的空間,實(shí)際可控制128×64點(diǎn)陣的二維繪圖緩沖空間。GDRAM的二維地址與液晶屏幕坐標(biāo)的對(duì)應(yīng)關(guān)系如圖5所示。

010.jpg

005.jpg

  1.4 串口通信電路

006.jpg

  串口通信電路由MAX232及周邊元件組成,如圖6所示。 MAX232的功能是將PC的RS232串口信號(hào)電平(-10 V,+10 V)轉(zhuǎn)換為滿(mǎn)足單片機(jī)要求的TTL信號(hào)電平(0,+5 V)。它具有以下特性[7]:(1)符合所有RS232C技術(shù)標(biāo)準(zhǔn);(2)只需單一電源供電(+5 V);(3)功耗低、典型供電電流為5 mA;(4)片載電荷泵,具有升壓、電壓極性反轉(zhuǎn)能力;(5)內(nèi)置2個(gè)RS232驅(qū)動(dòng)器/接收器。

2 系統(tǒng)軟件設(shè)計(jì)

  系統(tǒng)軟件由PC程序和單片機(jī)程序構(gòu)成。PC程序采用VC++編程,主要由串口通信和界面處理兩個(gè)模塊組成,通過(guò)串口通信獲取單片機(jī)上傳的數(shù)據(jù),將其轉(zhuǎn)換為十進(jìn)制并進(jìn)行顯示,同時(shí)繪制出曲線(xiàn)。單片機(jī)程序以C51編程,主要由數(shù)據(jù)采集、數(shù)據(jù)發(fā)送和顯示三部分組成,實(shí)現(xiàn)采集數(shù)據(jù)、上傳數(shù)據(jù)和顯示溫度的功能。

  2.1 PC程序設(shè)計(jì)

  2.1.1 串行通信程序

  串行通信程序主要由串口消息處理/數(shù)據(jù)接收函數(shù)(OnSerialComm())、串口參數(shù)設(shè)置函數(shù)(OnSerialSet())組成。

  (1)串口消息處理/數(shù)據(jù)接收函數(shù)負(fù)責(zé)響應(yīng)數(shù)據(jù)緩沖區(qū)中有字符的消息,讀取緩沖區(qū)數(shù)據(jù),轉(zhuǎn)換數(shù)據(jù)格式,引起重繪調(diào)用繪圖函數(shù)。數(shù)據(jù)緩沖區(qū)中有字符的消息由MSComm控件提供的方法產(chǎn)生[8]。OnSerialComm()調(diào)用了以下函數(shù):

  ①GetCommEvent(),判斷接收緩沖區(qū)內(nèi)是否有數(shù)據(jù)的消息函數(shù);②GetInput(),讀緩沖區(qū)數(shù)據(jù)函數(shù);②GetOneDimSize(),獲得有效數(shù)據(jù)長(zhǎng)度函數(shù);④GetElement(),轉(zhuǎn)換數(shù)據(jù)類(lèi)型函數(shù);⑤Format(),字符格式化函數(shù);⑥Invalidate(),引起重繪調(diào)用繪圖函數(shù);⑦UpdateData(),更新編輯框函數(shù)。

  (2)串口參數(shù)設(shè)置函數(shù)用于設(shè)置串口參數(shù)、打開(kāi)串口、設(shè)置緩沖區(qū)參數(shù)。OnSerialSet()調(diào)用了以下函數(shù):

  ①SetCommPort(),選擇串口號(hào)函數(shù);②SetPortOpen(),打開(kāi)串口函數(shù);③SetSettings(),設(shè)置串口參數(shù)函數(shù);④SetInputMode(),設(shè)置輸入模式函數(shù);⑤SetRThreshold(),設(shè)置接收緩沖區(qū)接收多少個(gè)字符就能調(diào)用OnSerialComm()的函數(shù);⑥SetInputLen(),設(shè)置當(dāng)前接收區(qū)數(shù)據(jù)長(zhǎng)度函數(shù);⑦GetInput(),預(yù)讀緩沖區(qū)函數(shù)。

  2.1.2 繪圖程序

  繪圖程序由畫(huà)背景(坐標(biāo)軸、坐標(biāo)刻度、文字等)函數(shù)(DrawBkGrd())和實(shí)時(shí)繪圖函數(shù)(DrawCurve())組成。它們都調(diào)用了以下函數(shù):

  (1)CreateFont(),設(shè)定字體函數(shù);(2)SelectObject(),選定繪圖對(duì)象到設(shè)備描述表函數(shù);(3)MoveTo(),移動(dòng)到當(dāng)前坐標(biāo)函數(shù);(4)Linto(),畫(huà)線(xiàn)函數(shù);(5)TextOut(),輸出文字函數(shù)。

  2.2 單片機(jī)程序設(shè)計(jì)

  單片機(jī)程序主要由初始化函數(shù)(InitMcuSys())、讀取溫度/時(shí)鐘函數(shù)(ReadDigData())、串口通信函數(shù)(UartMcuData())組成。

  (1) InitMcuSys()調(diào)用以下函數(shù):

  ①TimerInit(),設(shè)定T0/T1的工作方式、初始值以及串口工作方式和波特率參數(shù)函數(shù);②Ds18b20Init()/Ds1302Init(),初始化溫度傳感器和時(shí)鐘芯片函數(shù);③LcdBaseInit (),初始化液晶顯示器函數(shù)。

  (2) ReadDigData()調(diào)用以下函數(shù):

  ①Read18b20Data(),讀取溫度函數(shù);②Read1302Data(),

  讀取時(shí)間函數(shù);③DataToByte(),數(shù)據(jù)格式轉(zhuǎn)化函數(shù)。

  3 實(shí)驗(yàn)及結(jié)論

  系統(tǒng)實(shí)驗(yàn)結(jié)果如圖7和圖8所示。

  圖7和圖8是人為改變環(huán)境溫度后的實(shí)際運(yùn)行結(jié)果。圖7設(shè)置為顯示1 000個(gè)溫度采樣點(diǎn),采樣時(shí)間為1次/s,圖中比較完整地反映了這個(gè)時(shí)間段的溫度變化;圖8設(shè)置為顯示60個(gè)溫度采樣點(diǎn),采樣時(shí)間也是1次/s,可見(jiàn)相對(duì)于PC,單片機(jī)反映溫度變化的時(shí)間非常短。實(shí)際運(yùn)行表明,整個(gè)電路簡(jiǎn)單實(shí)用,系統(tǒng)運(yùn)行穩(wěn)定、可靠;測(cè)試精度、串行通信、界面顯示等功能均達(dá)到了設(shè)計(jì)要求。

  參考文獻(xiàn)

  [1] 張毅剛,彭喜元.單片機(jī)原理與應(yīng)用設(shè)計(jì)[M].北京:電子工業(yè)出版社,2010.

  [2] 王鑫,崔忠林,劉建. 基于STC12C5A16S2的溫度采集系統(tǒng)的設(shè)計(jì)[J]. 微型機(jī)與應(yīng)用,2012,31(20):24-29.

  [3] 陳桂友.增強(qiáng)型8051單片機(jī)實(shí)用開(kāi)發(fā)技術(shù)[M]. 北京:北京航空航天大學(xué)出版社,2010.

  [4] 李雪峰. 分布式溫度采集網(wǎng)絡(luò)在恒溫控制中的應(yīng)用[J].微型機(jī)與應(yīng)用,2013,32(15):69-75.

  [5] 黃明強(qiáng).DS1302在單片機(jī)系統(tǒng)中的應(yīng)用[J].保定師范專(zhuān)科學(xué)校學(xué)報(bào),2004,17(2):30-33.

  [6] 田開(kāi)坤.基于LCD12864顯示器的數(shù)字示波器設(shè)計(jì)[J].電子制作,2011(5):30-37.

  [7] Max232 互動(dòng)百科[EB/OL].(2013-02-28)[2014-03-29].http://www.baike.com/wiki/max232.

  [8] 王英杰,林怡青,彭美春,等.基于VC++6.0的PC機(jī)和單片機(jī)串口通信[J].電腦應(yīng)用技術(shù),2006(60):36-40.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。