版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于單片機(jī)的多點(diǎn)溫度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)</p><p> 摘 要:DS18B20是一種可組網(wǎng)的高精度數(shù)字式溫度傳感器,由于其具有單總線的獨(dú)特優(yōu)點(diǎn),可以使用戶輕松地組建起傳感器網(wǎng)絡(luò),并可使多點(diǎn)溫度測(cè)量電路變得簡(jiǎn)單、可靠。PL2303是Prolific公司生產(chǎn)的一種高度集成的RS232-USB接口轉(zhuǎn)換器,可提供一個(gè)RS232全雙工異步竄行通信裝置與USB功能接口便利連接的解決方案。</p>
2、;<p> 該系統(tǒng)由上位機(jī)和下位機(jī)兩大部分組成。下位機(jī)實(shí)現(xiàn)溫度的檢測(cè)并提供標(biāo)準(zhǔn)RS232通信接口,芯片使用了ATMEL公司的AT89S52單片機(jī)和DALLAS公司的DS18B20數(shù)字溫度傳感器。上位機(jī)部分使用了通用PC。該系統(tǒng)可應(yīng)用于倉(cāng)庫(kù)測(cè)溫、樓宇空調(diào)控制和生產(chǎn)過(guò)程監(jiān)控等領(lǐng)域。</p><p> 關(guān)鍵字:溫度測(cè)量;單總線;數(shù)字溫度傳感器;單片機(jī);轉(zhuǎn)換器</p><p>
3、 Based on SCM more temperature monitoring system design</p><p> Abstract:DS18B20 is a network of high precision digital temperature sensor, since it has the unique advantages single bus, users can easily se
4、t up sensor network, and can make more temperature measurement circuit become simple and reliable. PL2303 Prolific company is the production of a highly integrated RS232-USB interface converter, can provide a RS232 full-
5、duplex asynchronous channeling line of communication equipment and the USB interface convenient connection function of the solution.</p><p> The system consists of PC and a machine under two main components
6、. A machine to implement the temperature detection and provide standard RS232 communication interface, ATMEL company used chip AT89S52 SCM and DALLAS company DS18B20 digital temperature sensor. PC parts used the general
7、PC. This system can be used in storage temperature measurement, building the air conditioning control and production process monitoring, etc。</p><p> Key words:temperature measurement; Single bus; Digital t
8、emperature sensors; Single chip microcomputer; converter</p><p><b> 第一章 緒論</b></p><p><b> 1.1 系統(tǒng)概述</b></p><p> 在工、農(nóng)業(yè)生產(chǎn)和日常生活中,對(duì)溫度的測(cè)量及控制占據(jù)著極其重要地位。首先讓我們了解一下多
9、點(diǎn)溫度檢測(cè)系統(tǒng)在各個(gè)方面的應(yīng)用領(lǐng)域:消防電氣的非破壞性溫度檢測(cè),電力、電訊設(shè)備之過(guò)熱故障預(yù)知檢測(cè),空調(diào)系統(tǒng)的溫度檢測(cè),各類(lèi)運(yùn)輸工具之組件的過(guò)熱檢測(cè),保全與監(jiān)視系統(tǒng)之應(yīng)用,醫(yī)療與健診的溫度測(cè)試,化工、機(jī)械…等設(shè)備溫度過(guò)熱檢測(cè)。溫度檢測(cè)系統(tǒng)應(yīng)用十分廣闊。</p><p> 溫度檢測(cè)系統(tǒng)有則共同的特點(diǎn):測(cè)量點(diǎn)多、環(huán)境復(fù)雜、布線分散、現(xiàn)場(chǎng)離監(jiān)控室遠(yuǎn)等。若采用一般溫度傳感器采集溫度信號(hào),則需要設(shè)計(jì)信號(hào)調(diào)理電路、A/D 轉(zhuǎn)
10、換及相應(yīng)的接口電路,才能把傳感器輸出的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)送到計(jì)算機(jī)去處理。這樣,由于各種因素會(huì)造成檢測(cè)系統(tǒng)較大的偏差;又因?yàn)闄z測(cè)環(huán)境復(fù)雜、測(cè)量點(diǎn)多、信號(hào)傳輸距離遠(yuǎn)及各種干擾的影響,會(huì)使檢測(cè)系統(tǒng)的穩(wěn)定性和可靠性下降 。所以多點(diǎn)溫度檢測(cè)系統(tǒng)的設(shè)計(jì)的關(guān)鍵在于兩部分:溫度傳感器的選擇和主控單元的設(shè)計(jì)。溫度傳感器應(yīng)用范圍廣泛、使用數(shù)量龐大,也高居各類(lèi)傳感器之首。</p><p> 本設(shè)計(jì)運(yùn)用主從分布式思想,由一臺(tái)上位
11、機(jī)(PC微型計(jì)算機(jī)),下位機(jī)(單片機(jī))多點(diǎn)溫度數(shù)據(jù)采集,組成兩級(jí)分布式多點(diǎn)溫度測(cè)量的巡回檢測(cè)系統(tǒng)。該系統(tǒng)采用 RS-232串行通訊標(biāo)準(zhǔn),通過(guò)上位機(jī)(PC)控制下位機(jī)(單片機(jī))進(jìn)行現(xiàn)場(chǎng)溫度采集。溫度值既可以送回主控PC進(jìn)行數(shù)據(jù)處理,由顯示器顯示。也可以由下位機(jī)單獨(dú)工作,實(shí)時(shí)顯示當(dāng)前各點(diǎn)的溫度值,對(duì)各點(diǎn)進(jìn)行控制。</p><p> 下位機(jī)采用的是單片機(jī)基于數(shù)字溫度傳感器DS18B20的系統(tǒng)。DS18B20利用單總線
12、的特點(diǎn)可以方便的實(shí)現(xiàn)多點(diǎn)溫度的測(cè)量,輕松的組建傳感器網(wǎng)絡(luò),系統(tǒng)的抗干擾性好、設(shè)計(jì)靈活、方便,而且適合于在惡劣的環(huán)境下進(jìn)行現(xiàn)場(chǎng)溫度測(cè)量。本系統(tǒng)可以應(yīng)用在大型工業(yè)及民用常溫多點(diǎn)監(jiān)測(cè)場(chǎng)合。如糧食倉(cāng)儲(chǔ)系統(tǒng)、樓宇自動(dòng)化系統(tǒng)、溫控制程生產(chǎn)線之溫度影像檢測(cè)、醫(yī)療與健診的溫度測(cè)試、空調(diào)系統(tǒng)的溫度檢測(cè)、石化、機(jī)械…等。</p><p> 第二章 系統(tǒng)總體設(shè)計(jì)</p><p><b> 2.1
13、設(shè)計(jì)要求</b></p><p> ?、俣帱c(diǎn)溫度檢測(cè),制作3點(diǎn)溫度檢測(cè)系統(tǒng),檢測(cè)范圍為10℃——20℃。</p><p> ②將三點(diǎn)檢測(cè)的溫度采集并通過(guò)PC機(jī)界面顯示出來(lái),LED數(shù)碼管顯示出當(dāng)前環(huán)境溫度及三點(diǎn)的平均溫度。</p><p> ?、墼赑C機(jī)驅(qū)動(dòng)界面上分別設(shè)定三點(diǎn)的溫度報(bào)警閾值,當(dāng)任一被測(cè)點(diǎn)得溫度不在其設(shè)定的檢測(cè)范圍時(shí),蜂鳴器報(bào)警,同時(shí)在PC
14、機(jī)界面上顯示出相應(yīng)的報(bào)警符號(hào)(當(dāng)被測(cè)點(diǎn)溫度超出設(shè)定的檢測(cè)范圍時(shí)顯示紅色報(bào)警符,當(dāng)被測(cè)點(diǎn)溫度低于設(shè)定的檢測(cè)范圍時(shí)顯示白色報(bào)警符)</p><p> ?、鼙粶y(cè)點(diǎn)溫度誤差≤±0.5℃。</p><p> 本設(shè)計(jì)中采用數(shù)字式溫度傳感器DS18B20來(lái)采集溫度值并用AT89S52單片機(jī)來(lái)進(jìn)行數(shù)據(jù)處理并控制相關(guān)電路的工作,PL2303控制器與PC級(jí)相連顯示當(dāng)前測(cè)定的溫度,具有檢測(cè)方便、靈活
15、性大、精度高等優(yōu)點(diǎn)。當(dāng)溫度超過(guò)預(yù)設(shè)溫度上下限時(shí),系統(tǒng)將發(fā)出警報(bào)并記錄相應(yīng)警報(bào)的類(lèi)型和時(shí)間。</p><p> 2.2系統(tǒng)組成方框圖</p><p><b> 圖1系統(tǒng)方框圖</b></p><p> 第三章 系統(tǒng)硬件設(shè)計(jì)</p><p><b> 3.1總體思路</b></p>
16、<p> 在設(shè)計(jì)這個(gè)溫度檢測(cè)系統(tǒng)之前,先了解系統(tǒng)所要實(shí)現(xiàn)的各個(gè)功能情況。在設(shè)計(jì)的過(guò)程中,除了要讓硬件電路簡(jiǎn)潔外,還要兼顧軟件不能過(guò)于復(fù)雜。這樣才能達(dá)到設(shè)計(jì)的實(shí)際要求,硬件支持軟件,軟件帶動(dòng)硬件。</p><p> 本電路設(shè)計(jì)的主要思路是:對(duì)設(shè)置的三個(gè)溫控點(diǎn)進(jìn)行實(shí)時(shí)的溫度監(jiān)控,并且把采集的溫度通過(guò)電腦界面顯示出來(lái)。最基本的程序是溫度采樣程序,之后的設(shè)定的數(shù)碼管顯示和PL2303控制都是在基本程序上擴(kuò)
17、展而得到的。</p><p> 主要目的是將三點(diǎn)檢測(cè)的溫度采集并通過(guò)PC機(jī)界面顯示出來(lái),LED數(shù)碼管顯示出當(dāng)前環(huán)境溫度及三點(diǎn)的平均溫度。在PC機(jī)驅(qū)動(dòng)界面上分別設(shè)定三點(diǎn)的溫度報(bào)警閾值,當(dāng)任一被測(cè)點(diǎn)得溫度不在其設(shè)定的檢測(cè)范圍時(shí),蜂鳴器報(bào)警,同時(shí)在PC機(jī)界面上顯示出相應(yīng)的報(bào)警符號(hào)</p><p> 3.1.1系統(tǒng)總體設(shè)計(jì)圖</p><p> 圖2 系統(tǒng)總原理圖&l
18、t;/p><p> 3.2 各模塊電路圖</p><p> 3.2.1溫度測(cè)試電路設(shè)計(jì)</p><p> 這里我們用到溫度芯片DS18B20。DS18B20是DALLAS公司生產(chǎn)的一線式數(shù)字溫度傳感器,具有3引腳TO-92小體積封裝形式。測(cè)溫分辨率可達(dá)0.0625℃,被測(cè)溫度用符號(hào)擴(kuò)展的16位數(shù)字量方式串行輸出。其工作電源既可在遠(yuǎn)端引入,也可采用寄生電源方式
19、產(chǎn)生。CPU只需一根端口線就能與諸多DS18B20通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。</p><p> DS18B20支持“一線總線”接口,測(cè)量溫度范圍為 -55°C~+125°C,在-10~+85°C范圍內(nèi),精度為±0.5°C?,F(xiàn)場(chǎng)溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度測(cè)量,如:環(huán)境控制
20、、設(shè)備或過(guò)程控制、測(cè)溫類(lèi)消費(fèi)電子產(chǎn)品等。</p><p> DS18B20內(nèi)部結(jié)構(gòu)</p><p> DS18B20的內(nèi)部結(jié)構(gòu)如圖所示 </p><p> DS18B20內(nèi)部結(jié)構(gòu)圖</p><p> DS18B20有4個(gè)主要的數(shù)據(jù)部件:① 64位激光ROM。64位激光ROM從高位到低位依次為8位CRC、48位序列號(hào)和8位家族代碼(
21、28H)組成。</p><p><b> ?、?溫度靈敏元件。</b></p><p> ?、?非易失性溫度報(bào)警觸發(fā)器TH和TL。可通過(guò)軟件寫(xiě)入用戶報(bào)警上下限值。</p><p> ?、?配置寄存器。配置寄存器為高速暫存存儲(chǔ)器中的第五個(gè)字節(jié)。DS18B20在0工作時(shí)按此寄存器中的分辨率將溫度轉(zhuǎn)換成相應(yīng)精度的數(shù)值,其各位定義如圖所示。</p
22、><p> 其中,TM:測(cè)試模式標(biāo)志位,出廠時(shí)被寫(xiě)入0,不能改變;R0、R1:溫度計(jì)分辨率設(shè)置位,其對(duì)應(yīng)四種分辨率如下表所列,出廠時(shí)R0、R1置為缺省值:R0=1,R1=1(即12位分辨率),用戶可根據(jù)需要改寫(xiě)配置寄存器以獲得合適的分辨率。</p><p> 配置寄存器與分辨率關(guān)系表 :</p><p> ?。?) 高速暫存存儲(chǔ)器</p><p&
23、gt; 高速暫存存儲(chǔ)器由9個(gè)字節(jié)組成,其分配如下圖所示。當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在高速暫存存儲(chǔ)器的第0和第1個(gè)字節(jié)。單片機(jī)可通過(guò)單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在后,數(shù)據(jù)格式如圖所示。對(duì)應(yīng)的溫度計(jì)算:當(dāng)符號(hào)位S=0時(shí),直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1時(shí),先將補(bǔ)碼變?yōu)樵a,再計(jì)算十進(jìn)制值。</p><p> 溫度值格式圖DS18B20 溫度數(shù)據(jù)表:</p&g
24、t;<p> 典型對(duì)應(yīng)的溫度值表:</p><p> DS18B20最大的特點(diǎn)是單總線數(shù)據(jù)傳輸方式,DS18B20的數(shù)據(jù)I/O均由同一條線來(lái)完成。</p><p> 硬件連接電路如下圖: VCC=5V</p><p><b> 4.7K</b></p><p> 本系統(tǒng)為多點(diǎn)溫度測(cè)試。DS
25、18B20采用外部供電方式,理論上可以在一根數(shù)據(jù)總線上掛256個(gè)DS18B20,但時(shí)間應(yīng)用中發(fā)現(xiàn),如果掛接25個(gè)以上的DS18B20仍舊有可能產(chǎn)生功耗問(wèn)題。另外單總線長(zhǎng)度也不宜超過(guò)80M,否則也會(huì)影響到數(shù)據(jù)的傳輸。在這種情況下我們可以采用分組的方式,用單片機(jī)的多個(gè)I/O來(lái)驅(qū)動(dòng)多路DS18B20。在實(shí)際應(yīng)用中還可以使用一個(gè)MOSFET將I/O口線直接和電源相連,起到上拉的作用。</p><p> 對(duì)DS18B20
26、的設(shè)計(jì),需要注意以下問(wèn)題</p><p> ?。?)對(duì)硬件結(jié)構(gòu)簡(jiǎn)單的單線數(shù)字溫度傳感器DS18B20 進(jìn)行操作,需要用較為復(fù)雜的程序完成。編制程序時(shí)必須嚴(yán)格按芯片數(shù)據(jù)手冊(cè)提供的有關(guān)操作順序進(jìn)行,讀、寫(xiě)時(shí)間片程序要嚴(yán)格按要求編寫(xiě)。尤其在使用DS18B20 的高測(cè)溫分辨力時(shí),對(duì)時(shí)序及電氣特性參數(shù)要求更高。</p><p> ?。?)有多個(gè)測(cè)溫點(diǎn)時(shí),應(yīng)考慮系統(tǒng)能實(shí)現(xiàn)傳感器出錯(cuò)自動(dòng)指示,進(jìn)行自動(dòng)D
27、S18B20 序列號(hào)和自動(dòng)排序,以減少調(diào)試和維護(hù)工作量。</p><p> (3)測(cè)溫電纜線建議采用屏蔽4 芯雙絞線,其中一對(duì)線接地線與信號(hào)線,另一組接VCC和地線,屏蔽層在源端單點(diǎn)接地。DS18B20 在三線制應(yīng)用時(shí),應(yīng)將其三線焊接牢固;在兩線應(yīng)用時(shí),應(yīng)將VCC與GND接在一起,焊接牢固。若VCC脫開(kāi)未接,傳感器只送85.0 ℃的溫度值。</p><p> (4)實(shí)際應(yīng)用時(shí),要注意單
28、線的驅(qū)動(dòng)能力,不能掛接過(guò)多的DS18B20,同時(shí)還應(yīng)注意最遠(yuǎn)接線距離。另外還應(yīng)根據(jù)實(shí)際情況選擇其接線拓?fù)浣Y(jié)構(gòu)。</p><p> 3.2.2主控模塊電路設(shè)計(jì)</p><p> 本系統(tǒng)選用ATMEL公司的AT89系列單片機(jī)中的AT89S52,AT89S52單片機(jī)是一種新型的低功耗、高性能且內(nèi)含8K字節(jié)閃電的8位CMOS微控制器,與工業(yè)標(biāo)準(zhǔn)MCS一51指令系列和引腳完全兼容。有超強(qiáng)的加密功
29、能,其片內(nèi)閃電存儲(chǔ)器的編程與擦除完全用電實(shí)現(xiàn),數(shù)據(jù)不易揮發(fā),編程/擦除速度快。AT89S52芯片內(nèi)部有6個(gè)中斷源:兩個(gè)外部中斷INTO和INT1.三個(gè)定時(shí)器中斷(定時(shí)器0,1,2)和一個(gè)串行口中斷。在本系統(tǒng)中涉及到AT89S52芯片的中斷源有五個(gè):分別是外部中斷INT1,定時(shí)/計(jì)數(shù)器T0,T1和T2以及串行口中斷。本測(cè)控系統(tǒng)采用電平激活方式,也即是INT1=0;一旦INT1引腳的采樣值為低電平,則TCON寄對(duì)于定時(shí)器TO和Tl,通過(guò)寄存
30、器TMOD,TCON來(lái)控制和選擇定時(shí)/計(jì)數(shù)器的功能和操作模式。AT89S52的芯片管腳圖如圖5示。</p><p> 圖5 AT89S52芯片管腳</p><p> 3.2.3聯(lián)機(jī)模塊電路設(shè)計(jì)</p><p> 整個(gè)模塊通過(guò)PL2303轉(zhuǎn)換器驅(qū)動(dòng)與PC機(jī)連接,其模塊電路如下圖所示。通過(guò)一個(gè)USB接口與PC機(jī)連接,實(shí)現(xiàn)對(duì)溫度的實(shí)時(shí)監(jiān)控,并可通過(guò)控制界面對(duì)溫度
31、檢測(cè)范圍進(jìn)行調(diào)整控制,當(dāng)溫度不在檢測(cè)范圍內(nèi)時(shí)顯示報(bào)警符號(hào)。</p><p> 圖6 聯(lián)機(jī)模塊電路</p><p> 圖7 聯(lián)機(jī)控制界面截圖</p><p> PL2303介紹及工作原理詳見(jiàn)附錄二</p><p> 3.2.4顯示模塊電路設(shè)計(jì)</p><p> ?。?)數(shù)碼管顯示電路設(shè)計(jì)</p>
32、<p> 設(shè)計(jì)中采用一個(gè)四位數(shù)碼管來(lái)顯示當(dāng)前環(huán)境溫度,通過(guò)單片機(jī)的P1口控制數(shù)碼管的工作,并在P1口與數(shù)碼管間接上拉電阻對(duì)數(shù)碼管進(jìn)行保護(hù),同時(shí)也增加了數(shù)碼管的亮度,電路如圖7所示。</p><p> 圖8 數(shù)碼管顯示電路</p><p> ?。?)發(fā)光二極管顯示電路設(shè)計(jì)</p><p> 設(shè)計(jì)中采用了3個(gè)發(fā)光二極管作為預(yù)警顯示燈,采用下拉示串電阻是為
33、了保護(hù)發(fā)光二極管,如圖8所示。</p><p> Led1 L1</p><p> Led2 L2</p><p> Led3 L3</p><p> 圖9 發(fā)光二極管預(yù)警電路</p><p> 第四章 系統(tǒng)軟件設(shè)計(jì)</
34、p><p><b> 4.1主程序設(shè)計(jì)</b></p><p><b> Y</b></p><p><b> N</b></p><p><b> Y</b></p><p><b> N</b><
35、;/p><p> 圖10 主程序流程圖</p><p> 本軟件設(shè)計(jì)的程序設(shè)計(jì)包括采集各個(gè)點(diǎn)的溫度進(jìn)行數(shù)據(jù)處理,判斷當(dāng)前測(cè)定溫度是否在設(shè)定的閾值范圍內(nèi),若不在則發(fā)出報(bào)警。主程序調(diào)用了4個(gè)子程序,分別是數(shù)碼管顯示程序、LED預(yù)警顯示程序、溫度測(cè)試程序、單片機(jī)與PC機(jī)串口通訊程序。</p><p> LED預(yù)警顯示程序:實(shí)現(xiàn)對(duì)溫度控制的預(yù)警功能。</p>
36、<p> 溫度測(cè)試程序:對(duì)溫度芯片送過(guò)來(lái)的數(shù)據(jù)進(jìn)行處理,進(jìn)行判斷和顯示。</p><p> 數(shù)碼管顯示程序:向數(shù)碼的顯示送數(shù),控制系統(tǒng)的顯示部分。</p><p> 串口通訊程序:實(shí)現(xiàn)PC機(jī)與單片機(jī)通訊,將溫度數(shù)據(jù)傳送給PC機(jī)。</p><p> 圖11 程序結(jié)構(gòu)框圖</p><p> 4.2 串行口通訊程序</
37、p><p> 本次通訊中,測(cè)控系統(tǒng)分位上位機(jī)和下位機(jī)之間的通信,系統(tǒng)中單片機(jī)負(fù)責(zé)數(shù)據(jù)采集、處理和控制,上位機(jī)進(jìn)行現(xiàn)場(chǎng)可視化檢測(cè),通信協(xié)議采用半雙工異步串行通信方式,通過(guò)RS232的RTS信號(hào)進(jìn)行收發(fā)轉(zhuǎn)換,傳輸數(shù)據(jù)采用二進(jìn)制數(shù)據(jù),上位機(jī)與下位機(jī)之間采用主從式通訊。本人采用的VB環(huán)境下PC機(jī)與單片機(jī)之間實(shí)現(xiàn)串行通訊的軟硬件方案。VB是Microsoft公司推出的Windows應(yīng)用程序開(kāi)發(fā)工具,因其具有界面友好,編程簡(jiǎn)便
38、等優(yōu)點(diǎn)而受到廣泛的使用,而且Visual Basic 6.0 版本帶有專門(mén)實(shí)現(xiàn)串行通訊的MSCOMM控件。</p><p> MSComm控件串口具有完善的串口數(shù)據(jù)的發(fā)送和接收功能。通過(guò)此控件,PC機(jī)可以利用串行口與其它設(shè)備實(shí)現(xiàn)輕松連接,簡(jiǎn)單高效地實(shí)現(xiàn)設(shè)備之間的通訊。此控件的事件響應(yīng)有兩種處理方式。事件驅(qū)動(dòng)方式:由MSComm控件的OnComm事件捕獲并處理通訊錯(cuò)誤及事件;查詢方式:通過(guò)檢查CommEvent屬
39、性的值來(lái)判斷事件和錯(cuò)誤。 </p><p> 1) MSComm控件的主要屬性和方法 </p><p> a. CommPort:設(shè)置或返回串行端口號(hào),其取值范圍為1—99,缺省為1 </p><p> b. Setting:設(shè)置或返回串行端口的波特率、奇偶校驗(yàn)位、數(shù)據(jù)位數(shù)、停止位。 </p><p>
40、 c. PortOpen:打開(kāi)或關(guān)閉串行端口。 </p><p> d. RThreshold:該屬性為一閥值,它確定當(dāng)接收緩沖區(qū)內(nèi)字節(jié)個(gè)數(shù)達(dá)到或超過(guò)該值后就產(chǎn)生MSComml-OnComm事件。 </p><p> e. Input:從接收緩沖區(qū)移走一串字符。 </p><p> f. Output:向發(fā)送緩沖區(qū)傳送一字符串。 </p>&l
41、t;p><b> 軟件流程圖如下:</b></p><p> 圖12 PC通訊程序流程圖 圖13 單片機(jī)程序流程圖</p><p> 參數(shù)設(shè)定:通信端口選擇COM1,波特率設(shè)定為1200B/S</p><p> MSCOmm.CommPort=1</p><p>
42、MSComm.Setting=“1200, n, 8, 1”。 </p><p> START:MOVSP,#60H</p><p> MOVTMOD,#20H</p><p> MOVTH1,#0E6H</p><p> MOVTL1,#0E6H ;1200B/S,晶振為12MHZ</p><
43、;p> MOV PCON,#00H</p><p> MOVSCON,#50H</p><p><b> SETBTR1</b></p><p><b> 第五章 系統(tǒng)調(diào)試</b></p><p><b> 5.1軟件調(diào)試</b></p>
44、<p><b> 5.1.1分步調(diào)試</b></p><p><b> 1、測(cè)試環(huán)境及工具</b></p><p> 測(cè)試溫度:10~20攝氏度。(模擬多點(diǎn)不同溫度值環(huán)境)</p><p> 測(cè)試儀器及軟件:數(shù)字萬(wàn)用表,溫度計(jì)0~100攝氏度,串口調(diào)試助手。</p><p><
45、;b> 測(cè)試方法:目測(cè)。</b></p><p><b> 2、測(cè)試方法</b></p><p> 使系統(tǒng)運(yùn)行,觀察系統(tǒng)硬件檢測(cè)是否正常(包括單片機(jī)最小系統(tǒng),顯示電路,溫度測(cè)試電路等)。系統(tǒng)自帶測(cè)試表格數(shù)據(jù),觀察顯示數(shù)據(jù)是否相符合即可。</p><p> 采用溫度傳感器和溫度計(jì)同時(shí)測(cè)量多溫度變化情況(取溫度值不同的多點(diǎn)
46、),目測(cè)顯示電路是否正常。并記錄各點(diǎn)溫度值,與實(shí)際溫度值比較,得出系統(tǒng)的溫度指標(biāo)。</p><p> 使用串口調(diào)試助手與單片機(jī)通訊,觀察單片機(jī)與串口之間傳輸數(shù)據(jù)正確否。</p><p><b> 3、測(cè)試結(jié)果分析</b></p><p> 自檢正常,各點(diǎn)溫度顯示正常,串口傳輸數(shù)據(jù)正確。</p><p> 因?yàn)樾酒?/p>
47、是塑料封裝,所以對(duì)溫度的感應(yīng)靈敏度不是相當(dāng)高,需要一個(gè)很短的時(shí)間才能達(dá)到穩(wěn)定。</p><p><b> §5.2 統(tǒng)一調(diào)試</b></p><p> 將硬件及軟件結(jié)合起來(lái)進(jìn)行系統(tǒng)的統(tǒng)一調(diào)試。實(shí)現(xiàn)PC機(jī)與單片機(jī)通訊,兩者可以實(shí)時(shí)更新顯示各點(diǎn)溫度值。</p><p><b> 第六章 結(jié)束語(yǔ)</b></
48、p><p> 為期一個(gè)多月的畢業(yè)設(shè)計(jì)即將結(jié)束了,在這一個(gè)月里我在同學(xué)和老師的幫助下完成了路燈控制系統(tǒng)的設(shè)計(jì)。</p><p> 畢業(yè)設(shè)計(jì)作為綜合性的設(shè)計(jì),它不同于以前教學(xué)中的實(shí)驗(yàn)、課程設(shè)計(jì)等實(shí)踐環(huán)節(jié)。以前的所做的一些設(shè)計(jì)主要是根據(jù)相關(guān)的課本及老師所給資料去完成的,有一定的參照性,所以相對(duì)而言比較簡(jiǎn)單,不能完全達(dá)到鍛煉自己動(dòng)手能力的目的。而畢業(yè)設(shè)計(jì)則是對(duì)我們大學(xué)四年所學(xué)知識(shí)的一個(gè)綜合的訓(xùn)練及
49、考核,是對(duì)所學(xué)知識(shí)的應(yīng)用能力和大學(xué)所學(xué)理論知識(shí)對(duì)實(shí)踐技能相結(jié)合的全面的檢驗(yàn)。并對(duì)我們?nèi)绾胃鶕?jù)要做的課題對(duì)現(xiàn)有的資料進(jìn)行理解和運(yùn)用的能力的考核。真正做到了理論聯(lián)系實(shí)際,把以前所學(xué)的知識(shí)綜合貫通進(jìn)行實(shí)踐,并在實(shí)踐中不斷學(xué)習(xí)和自我完善。</p><p> 從剛確定畢業(yè)設(shè)計(jì)課題以來(lái),我首先是查找一些相關(guān)的書(shū)籍及資料,然后分析設(shè)計(jì),并根據(jù)實(shí)際情況擬定設(shè)計(jì)方案,從而達(dá)到優(yōu)化方案。在研究設(shè)計(jì)電路時(shí),我優(yōu)化了電路設(shè)計(jì),這就省去
50、了一部分時(shí)間,最難的是調(diào)試了,但在老師和同學(xué)的幫助下,完成的設(shè)計(jì)達(dá)到了預(yù)定的要求。同時(shí),通過(guò)這次畢業(yè)設(shè)計(jì),我們?cè)诟鱾€(gè)方面都有了很大的提高,特別是在理論和實(shí)踐結(jié)合方面使我們受益匪淺,使大學(xué)里學(xué)習(xí)的理論知識(shí)在根本上得到一次最完整的實(shí)踐和提高。也為我即將面臨的工作奠定了很好的基礎(chǔ)。</p><p> 同時(shí),在本次畢業(yè)設(shè)計(jì)中深深認(rèn)識(shí)到自己的各個(gè)方面的不足之處,本著提高動(dòng)手能力以及檢測(cè)四年所學(xué)知識(shí)的目的,我嚴(yán)格要求自己,
51、每一環(huán)節(jié)都認(rèn)真對(duì)待,定期向知道老師報(bào)告進(jìn)展情況和請(qǐng)教不懂的地方,得以完成任務(wù)。</p><p> 在以后的工作中,我們必須進(jìn)一步深化在實(shí)踐中去豐富理論,完善知識(shí)結(jié)構(gòu)。由于環(huán)境條件的影響,理論與實(shí)踐還是有一定的差距,這也要求我們?cè)趯?shí)踐中注意檢驗(yàn)的積累。</p><p><b> 參考文獻(xiàn):</b></p><p> [1]. 賈振國(guó). DS
52、1820 及高精度溫度測(cè)量的實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2000(1):58 - 59.</p><p> [2]. 賈正松.單片機(jī)系統(tǒng)復(fù)位電路設(shè)計(jì)[J].中國(guó)期刊全文數(shù)據(jù)庫(kù),2007/36 </p><p> [3]. 邦田. 電子電路實(shí)用抗干擾技術(shù). 北京:人民郵電出版社,1994
53、 </p><p> [4]. 李濤.新型單片機(jī)AT89C2051及其應(yīng)用舉例[J] 1996年 04期 </p><p> [5]. 曲喜貴. 電子元件材料手冊(cè)[ M]. 北京:電子工業(yè)出版社,1989.422-430.</p><p> [6]. 黃賢武,鄭筱
54、霞,曲波等. 傳感器實(shí)際應(yīng)用電路設(shè)計(jì)[M]. 成都:電子科技大學(xué)出版社,1997.4-10.</p><p> [7]. 劉君華. 智能傳感器系統(tǒng) [M] . 西安:西安電子科技大學(xué)出版社,1999.</p><p> [8]. 余永權(quán). Flash 單片機(jī)原理及應(yīng)用 [M]. 北京:電子工業(yè)出版社,1997.</p><p> [9]. 邦田. 電子電路實(shí)
55、用抗干擾技術(shù) [M] . 北京:人民郵電出版社,1994.</p><p> [10]. 周云波. 由DS18B20單線數(shù)字溫度計(jì)構(gòu)成的單線多點(diǎn)溫度測(cè)量系統(tǒng). 電子技術(shù)應(yīng)用,1996(2):15- 20.</p><p> [11]. 吉鵬 ,馬云峰等. 微機(jī)原理與接口技術(shù) [M]. 北京:高等教育出版社,2001.</p><p> [12]. 振國(guó). DS
56、1820 及高精度溫度測(cè)量的實(shí)現(xiàn) [J] . 電子技術(shù)應(yīng)用,2000 (1) .</p><p> [13]. 東耀,汪仁煌. 數(shù)字溫度傳感器在倉(cāng)庫(kù)溫度檢測(cè)系統(tǒng)的應(yīng)用[J]. 傳感器世界,2001(12):30- 33.</p><p> [14]. 月霞,孫傳友. DS18B20 硬件連接及軟件編程[J]. 傳感器世界,2001(12):25- 29.</p><
57、p> [15]. 一線數(shù)字溫度傳感器資料[M]. 武漢:武漢力源電子有限公司,1996.</p><p> [16]. 賢武,鄭霞,曲波. 傳感器實(shí)際應(yīng)用電路設(shè)計(jì)[M]. 成都:電子科技大學(xué)出版社,1997.</p><p> [17]. 偉正. 單線數(shù)字溫度傳感器的原理與應(yīng)用[1]. 電子技術(shù)應(yīng)用,2000,6.66-68</p><p> [18]
58、. DALLAS公司.DS18B20數(shù)據(jù)手冊(cè)[Z]</p><p> [19]. 周月霞,孫傳友. DS18B20 硬件連接及軟件編程[J]. 傳感器世界,2001,(12).</p><p> [20]. 單線數(shù)字溫度傳感器資料[M]. 武漢:武漢力源電子有限公司,1996.</p><p> [21]. 賈東耀,汪仁煌. 數(shù)字溫度傳感器在倉(cāng)庫(kù)溫度檢測(cè)系統(tǒng)
59、的應(yīng)用[J]. 傳感器世界,2001(12).</p><p> [22]. 余永權(quán). ATMEL 89系列單片機(jī)應(yīng)用技術(shù)[M]. 北京:北京航空航天大學(xué)出版社2002.</p><p> [23]. 胡漢才. 單片機(jī)原理及系統(tǒng)設(shè)計(jì)[M]. 北京:清華大學(xué)出版社,2002</p><p> [24]. 譚浩強(qiáng).C程序設(shè)計(jì)(第三版)[M].清華大學(xué)出版社.200
60、5/</p><p><b> 附錄一:元器件清單</b></p><p> 附錄二:PL2303介紹及工作原理</p><p> PL2303 是 Prolific 公司生產(chǎn)的一種高度集成的 RS232-USB 接口轉(zhuǎn)換器, 可提供一個(gè) RS232 全雙工異步串行通信裝置與 USB 功能接口便利聯(lián)接的解決方 案。該器件內(nèi)置 USB 功能
61、控制器、USB 收發(fā)器、振蕩器和帶有全部調(diào)制解調(diào)器控 制信號(hào)的 UART, 只需外接幾只電容就可實(shí)現(xiàn) USB 信號(hào)與 RS232 信號(hào)的轉(zhuǎn)換, 能夠方便嵌入到各種設(shè)備,所以 2000 年左右開(kāi)始 Armjishu.com 經(jīng)常推薦使用該 款芯片;該器件作為 USB/RS232 雙向轉(zhuǎn)換器,一方面從主機(jī)接收 USB 數(shù)據(jù)并將 其轉(zhuǎn)換為 RS232 信息流格式發(fā)送給外設(shè);另一方面從 RS232 外設(shè)接收數(shù)據(jù)轉(zhuǎn)換 為 USB 數(shù)據(jù)格式傳送回主
62、機(jī)。這些工作全部由器件自動(dòng)完成,開(kāi)發(fā)者無(wú)需考慮 固件設(shè)計(jì).</p><p> PL2303 的高兼容驅(qū)動(dòng)可在大多操作系統(tǒng)上模擬成傳統(tǒng) COM 端口,并允許基 于 COM 端口應(yīng)用可方便地轉(zhuǎn)換成 USB 接口應(yīng)用,通訊波特率高達(dá) 6 Mb/s。在工 作模式和休眠模式時(shí)都具有功耗低,是嵌入式系統(tǒng)手持設(shè)備的理想選擇。該器件 具有以下特征:完全兼容 USB1.1 協(xié)議;可調(diào)節(jié)的 3~5 V 輸出電壓,滿足 3V、<
63、;/p><p> 3.3V 和 5V 不同應(yīng)用需求;支持完整的 RS232 接口,可編程設(shè)置的波特率:75b/s~</p><p> 6 Mb/s,并為外部串行接口提供電源;512 字節(jié)可調(diào)的雙向數(shù)據(jù)緩存;支持默認(rèn) 的 ROM 和外部 EEPROM 存儲(chǔ)設(shè)備配置信息,具有 I2C 總線接口,支持從外部 MODEM 信號(hào)遠(yuǎn)程喚醒;支持 Windows98,Windows2000,Window
64、sXP 等操作系統(tǒng);28 引腳 的 SOIC 封裝.</p><p><b> 一 .產(chǎn)品特性:</b></p><p> 完全符合USB規(guī)范2.0(全速兼容)</p><p> 片內(nèi)擁有 USB 1.1 收發(fā)器,5V 轉(zhuǎn) 3.3V 的穩(wěn)壓器,12 MHz 的晶體 振蕩器</p><p> 3. 支持 RS232
65、 這樣的串行接口</p><p> 1)全雙工發(fā)送器和接收器(TxD 和 RxD)</p><p> 2)六個(gè)調(diào)制解調(diào)控制引腳(RTS,CTS,DTR,DSR,DCD 和 RI)</p><p> 3)內(nèi)容可以為 5,6,7 或 8 個(gè)數(shù)據(jù)位</p><p> 4) 支持自動(dòng)握手各種模式</p><p>
66、 5) 一,一個(gè)半,或兩個(gè)停止位</p><p> 6) 奇偶錯(cuò)誤,幀錯(cuò)誤和串行中斷檢測(cè)</p><p> 7) 可編程波特率從 75bps 到 6 Mbps</p><p> 8) 外部的 RS232 驅(qū)動(dòng)下降控制</p><p> 9) 獨(dú)立的串行接口電源</p><p> 4. 寬廣的流量控制機(jī)制&l
67、t;/p><p> 1)自動(dòng)與 CTS / RTS 流控制</p><p> 2)自動(dòng)使用的 XON / XOFF 流量控制</p><p> 3)入站數(shù)據(jù)緩沖區(qū)溢出檢測(cè)</p><p> 5. 可配置的 512 個(gè)字節(jié)雙向數(shù)據(jù)緩沖器</p><p> 1)256 字節(jié)的輸出緩沖區(qū)和 256 字節(jié)的輸入緩
68、沖區(qū)</p><p> 2)128 字節(jié)的輸出緩沖區(qū)和 384 字節(jié)的輸入緩沖區(qū)</p><p> 6. 支持從遠(yuǎn)程輸入相關(guān)調(diào)制信號(hào)進(jìn)行喚醒功能</p><p> 7. 兩個(gè)通用的I/O(GPIO)引腳</p><p> 8. 啟動(dòng)時(shí)可以講配置存儲(chǔ)于外部EEPROM</p><p> 9.提供支持Windo
69、ws和MacOS,Linux和WinCE的驅(qū)動(dòng)程序</p><p> 10.具有專為 Windows XP 驅(qū)動(dòng)程序認(rèn)證的標(biāo)志</p><p> 11.該 IC 是 SSOP 封裝的小尺寸 28 引腳</p><p><b> 二.簡(jiǎn)介:</b></p><p> PL2303 是 Prolific 公司生產(chǎn)
70、的一種高度集成的 RS232-USB 接口轉(zhuǎn)換器,可 提供一個(gè) RS232 全雙工異步串行通信裝置與 USB 功能接口便利聯(lián)接的解決方案。</p><p> 該器件內(nèi)置 USB 功能控制器、USB 收發(fā)器、振蕩器和帶有全部調(diào)制解調(diào)器控 制信號(hào)的 UART,只需外接幾只電容就可實(shí)現(xiàn) USB 信號(hào)與 RS232 信號(hào)的轉(zhuǎn)換,能 夠方便嵌入到手持設(shè)備。</p><p> 該器件作為 USB/
71、RS232 雙向轉(zhuǎn)換器,一方面從主機(jī)接收 USB 數(shù)據(jù)并將其轉(zhuǎn) 換為 RS232 信息流格式發(fā)送給外設(shè);另一方面從 RS232 外設(shè)接收數(shù)據(jù)轉(zhuǎn)換為 USB 數(shù)據(jù)格式傳送回主機(jī)。這些工作全部由器件自動(dòng)完成,開(kāi)發(fā)者無(wú)需考慮固件設(shè)計(jì)。</p><p> 通過(guò)利用 USB 塊傳輸模式,利用龐大的數(shù)據(jù)緩沖器和自動(dòng)流量控制,PL2303HX 能夠?qū)崿F(xiàn)更高的吞吐量比傳統(tǒng)的 UART(通用異步收發(fā)器)端口,高達(dá) 115200
72、bps 的波特率可用于更高的性能使用。</p><p><b> 三、對(duì)應(yīng)引腳方案:</b></p><p><b> 附錄三:源程序</b></p><p> //功能:與上位機(jī)完成通信,上位機(jī)發(fā)送請(qǐng)求指令,可以完成三路溫度數(shù)據(jù)的采集</p><p> #include <reg52
73、.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> sbit A1 = P3^7; //數(shù)碼管位選</p><p> sbit A2 = P3^6;</p><p> sbit A3
74、= P3^5;</p><p> sbit A4 = P3^4;</p><p> sbit db1 = P2^1; //定義采集點(diǎn)1與單片機(jī)的接口</p><p> sbit db2 = P2^3; //定義采集點(diǎn)2與單片機(jī)的接口</p><p> sbit db3 = P2^5; //定義采集點(diǎn)3與單片機(jī)的接口<
75、/p><p> sbit jb1 = P2^0;//采集點(diǎn)1溫度報(bào)警接口</p><p> sbit jb2 = P2^2;//采集點(diǎn)2溫度報(bào)警接口</p><p> sbit jb3 = P2^4;//采集點(diǎn)3溫度報(bào)警接口</p><p> sbit buzzer = P3^2; //蜂鳴器</p><p&g
76、t; int tem1;//用于儲(chǔ)存各采集點(diǎn)讀取的溫度值</p><p><b> int tem2;</b></p><p><b> int tem3;</b></p><p> uchar tt = 0;</p><p> uchar rex = 0;</p><
77、;p> uchar receivedat = 0; //用于存放單片機(jī)收到的指令數(shù)據(jù)</p><p> uchar c;//主程序中循環(huán)變量</p><p> uchar senden = 0; //發(fā)送使能</p><p> uchar qb1,sg1,qb2,sg2,qb3,sg3;//用于存放溫度值的各位數(shù)值 變量</p>&
78、lt;p> uchar wd[8];//用于存放待發(fā)送到PC端的溫度各位數(shù)據(jù) 數(shù)組</p><p> /***************************定義數(shù)碼管顯示數(shù)組**************************************/</p><p> uchar weixuan[] = {0x80,0x40,0x20,0x10}; //位選</p&
79、gt;<p> uchar duanxuan[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段選</p><p> uchar dxxsd[] = {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //段選含小數(shù)點(diǎn)</p><p> void d
80、elay(uint i)//ds18b20數(shù)據(jù)延時(shí)</p><p><b> {</b></p><p> while(i--);</p><p><b> } </b></p><p> void delay0(uint z) //數(shù)碼管顯示延時(shí)</p><p&g
81、t;<b> {</b></p><p><b> uint i,j;</b></p><p> for(i = 10;i > 0;i--)</p><p> for(j = z;j > 0;j--);</p><p><b> } </b>&l
82、t;/p><p> void init(void)//18b20初始化</p><p><b> {</b></p><p> //uchar x = 0;</p><p> db1 = 1;//db18b20復(fù)位</p><p> db2 = 1;//db18b20復(fù)位</p&
83、gt;<p> db3 = 1;//db18b20復(fù)位</p><p><b> delay(8);</b></p><p><b> db1 = 0;</b></p><p><b> db2 = 0;</b></p><p><b> db
84、3 = 0;</b></p><p> delay(80);</p><p> db1 = 1;//db18b20復(fù)位</p><p> db2 = 1;//db18b20復(fù)位</p><p> db3 = 1;//db18b20復(fù)位</p><p> delay(14);</p>
85、<p> //x = db;</p><p> delay(20);</p><p> //return(x);</p><p><b> }</b></p><p> char read1(void) //讀采集點(diǎn)1數(shù)據(jù)</p><p><b> {<
86、;/b></p><p> uchar i = 0;</p><p> uchar dat = 0;</p><p> for(i = 8;i > 0;i--)</p><p><b> {</b></p><p><b> db1 = 0;</b>&l
87、t;/p><p> dat >>= 1;</p><p><b> db1 = 1;</b></p><p><b> if(db1)</b></p><p> dat |= 0x80;</p><p><b> delay(4);</b&g
88、t;</p><p><b> }</b></p><p> return(dat);</p><p><b> }</b></p><p> char read2(void) //讀采集點(diǎn)2數(shù)據(jù)</p><p><b> {</b><
89、;/p><p> uchar i = 0;</p><p> uchar dat = 0;</p><p> for(i = 8;i > 0;i--)</p><p><b> {</b></p><p><b> db2 = 0;</b></p>
90、<p> dat >>= 1;</p><p><b> db2 = 1;</b></p><p><b> if(db2)</b></p><p> dat |= 0x80;</p><p><b> delay(4);</b></p&g
91、t;<p><b> }</b></p><p> return(dat);</p><p><b> }</b></p><p> char read3(void) //讀采集點(diǎn)3數(shù)據(jù)</p><p><b> {</b></p>&
92、lt;p> uchar i = 0;</p><p> uchar dat = 0;</p><p> for(i = 8;i > 0;i--)</p><p><b> {</b></p><p><b> db3 = 0;</b></p><p>
93、 dat >>= 1;</p><p><b> db3 = 1;</b></p><p><b> if(db3)</b></p><p> dat |= 0x80;</p><p><b> delay(4);</b></p><p&
94、gt;<b> }</b></p><p> return(dat);</p><p><b> }</b></p><p> void write(uchar dat1,uchar dat2,uchar dat3) //寫(xiě)數(shù)據(jù)</p><p><b> {</b>
95、</p><p> uchar i = 0;</p><p> for(i = 8;i > 0;i--)</p><p><b> {</b></p><p><b> db1 = 0;</b></p><p><b> db2 = 0;</b
96、></p><p><b> db3 = 0;</b></p><p> db1 = dat1 & 0x01;</p><p> db2 = dat2 & 0x01;</p><p> db3 = dat3 & 0x01;</p><p><b>
97、 delay(5);</b></p><p><b> db1 = 1;</b></p><p><b> db2 = 1;</b></p><p><b> db3 = 1;</b></p><p> dat1 >>= 1;</p>
98、<p> dat2 >>= 1;</p><p> dat3 >>= 1;</p><p><b> }</b></p><p><b> delay(4);</b></p><p><b> }</b></p>&
99、lt;p> void readtemperature(void) //讀取溫度值</p><p><b> {</b></p><p> uchar a = 0;</p><p> uchar b = 0;</p><p><b> init();</b></p>&
100、lt;p> write(0xcc,0xcc,0xcc);</p><p> write(0x44,0x44,0x44);//啟動(dòng)</p><p><b> init();</b></p><p> write(0xcc,0xcc,0xcc);</p><p> write(0xbe,0xbe,0xbe);
101、//讀取溫度到寄存器</p><p> a = read1();</p><p> b = read1();</p><p><b> tem1 = b;</b></p><p> tem1 <<= 8;</p><p> tem1 = tem1 | a;</p>
102、<p> tem1 = tem1 * 0.0625 * 100 + 0.5;</p><p> a = read2();</p><p> b = read2();</p><p><b> tem2 = b;</b></p><p> tem2 <<= 8;</p>&
103、lt;p> tem2 = tem2 | a;</p><p> tem2 = tem2 * 0.0625 * 100 + 0.5;</p><p> a = read3();</p><p> b = read3();</p><p><b> tem3 = b;</b></p><p
104、> tem3 <<= 8;</p><p> tem3 = tem3 | a;</p><p> tem3 = tem3 * 0.0625 * 100 + 0.5;</p><p><b> }</b></p><p> void jisuan(void) //分離出四位溫度值的各位<
105、;/p><p> {/*****計(jì)算分離采集點(diǎn)1數(shù)據(jù)******/</p><p> qb1 = tem1 / 100;//分離千位百位</p><p> sg1 = tem1 % 100; //分離十位個(gè)位</p><p> qb2 = tem2 / 100;//分離千位百位</p><p> sg2 =
106、tem2 % 100; //分離十位個(gè)位</p><p> qb3 = tem3 / 100;//分離千位百位</p><p> sg3 = tem3 % 100; //分離十位個(gè)位</p><p> wd[0] = 't'; //前一個(gè)字節(jié)'t'為幀頭</p><p> wd[1] = qb1;&
107、lt;/p><p> wd[2] = sg1;</p><p> wd[3] = qb2;</p><p> wd[4] = sg2;</p><p> wd[5] = qb3;</p><p> wd[6] = sg3;</p><p> wd[7] = 'e';//
108、后一個(gè)字節(jié)'e'為幀尾</p><p><b> }</b></p><p> /***************************數(shù)碼管顯示2位整數(shù)加2位小數(shù)**************************************/ </p><p> void display(float x) //數(shù)碼
109、管顯示2位整數(shù)加2位小數(shù),例x=12.34</p><p><b> {</b></p><p> uchar s = 0,g = 0,sf = 0,bf = 0;</p><p> uint zs,xs1;</p><p><b> float xs;</b></p><
110、;p> zs = (uint)x;//獲取整數(shù)部分</p><p> xs = x - zs;//獲取小數(shù)部分</p><p> xs = xs * 100;//擴(kuò)大小數(shù)100倍</p><p> xs1 = (uint)xs;//提取小數(shù)的十分位和百分位</p><p> s = zs/10;//分離整數(shù)部分十位</p
111、><p> g = zs%10;//分離整數(shù)部分個(gè)位</p><p> sf = xs1/10;//分離十分位</p><p> bf = xs1%10;//分離百分位</p><p> A1 = 1; //第一位顯示</p><p><b> A2 = 0;</b></p>
112、<p><b> A3 = 0;</b></p><p><b> A4 = 0;</b></p><p> P1 = duanxuan[s];</p><p> delay0(10);</p><p> A1 = 0; //第二位顯示</p><p&
113、gt;<b> A2 = 1;</b></p><p><b> A3 = 0;</b></p><p><b> A4 = 0;</b></p><p> P1 = dxxsd[g];</p><p> delay0(10);</p><p>
114、; A1 = 0; //第三位顯示</p><p><b> A2 = 0;</b></p><p><b> A3 = 1;</b></p><p><b> A4 = 0;</b></p><p> P1 = duanxuan[sf];</p>
115、<p> delay0(10);</p><p> A1 = 0; //第四位顯示</p><p><b> A2 = 0;</b></p><p><b> A3 = 0;</b></p><p><b> A4 = 1;</b></p>
116、<p> P1 = duanxuan[bf];</p><p> delay0(10);</p><p> A1 = 0; //數(shù)碼管全部關(guān)閉</p><p><b> A2 = 0;</b></p><p><b> A3 = 0;</b></p>
117、<p> A4 = 0; </p><p><b> }</b></p><p> void main(void)</p><p><b> {</b></p><p> buzzer = 0;</p><p> TMOD = 0x20;//設(shè)置定
118、時(shí)器1為工作方式2</p><p> TH1 = 0xfd;</p><p> TL1 = 0xfd;</p><p><b> TR1 = 1;</b></p><p><b> REN = 1;</b></p><p><b> SM0 = 0;<
119、;/b></p><p><b> SM1 = 1;</b></p><p><b> EA = 1;</b></p><p><b> ES = 1;</b></p><p><b> RI = 0;</b></p><
120、p><b> TI = 0;</b></p><p> jb1 = 0; //關(guān)警報(bào)燈</p><p><b> jb2 = 0;</b></p><p><b> jb3 = 0;</b></p><p><b> while(1)</b&g
121、t;</p><p><b> {</b></p><p> display((tem1 / 100.00 + tem2 / 100.00 + tem3 / 100.00) / 3);//數(shù)碼管顯示</p><p> readtemperature();</p><p><b> jisuan();
122、</b></p><p> display((tem1 / 100.00 + tem2 / 100.00 + tem3 / 100.00) / 3);//數(shù)碼管顯示</p><p> if(senden == 1)</p><p><b> {</b></p><p> senden = 0;//
123、 關(guān)閉發(fā)送使能</p><p> switch (receivedat)</p><p><b> {</b></p><p><b> case 48:</b></p><p><b> jb1 = 1;</b></p><p><b&g
124、t; jb2 = 1;</b></p><p><b> jb3 = 1;</b></p><p> buzzer = 1;</p><p><b> break;</b></p><p><b> case 49:</b></p><
125、p><b> jb1 = 1;</b></p><p><b> jb2 = 1;</b></p><p><b> jb3 = 0;</b></p><p><b> break;</b></p><p> buzzer = 1;<
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)多點(diǎn)溫度控制系統(tǒng)畢業(yè)論文
- 基于單片機(jī)的多點(diǎn)溫度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)與仿真-電氣自動(dòng)化畢業(yè)論文
- 基于單片機(jī)的溫度采集系統(tǒng)畢業(yè)論文
- 基于單片機(jī)的溫度測(cè)量系統(tǒng)-畢業(yè)論文
- 畢業(yè)設(shè)計(jì)-基于單片機(jī)的多點(diǎn)溫度檢測(cè)系統(tǒng)的設(shè)計(jì)
- 基于單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 基于單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)畢業(yè)論文
- 基于單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 基于單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 關(guān)于單片機(jī)的畢業(yè)論文--基于單片機(jī)的時(shí)間溫度顯示系統(tǒng)
- 基于單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 基于單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 基于單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 畢業(yè)論文設(shè)計(jì)基于單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)
- 基于單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 畢業(yè)論文 基于單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì)
- 基于單片機(jī)的多點(diǎn)無(wú)線溫度監(jiān)控系統(tǒng)設(shè)計(jì)-畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---單片機(jī)多點(diǎn)溫度控制系統(tǒng)
- 基于atc單片機(jī)的多點(diǎn)溫度測(cè)量系統(tǒng)設(shè)計(jì)
- 基于單片機(jī)的溫度控制系統(tǒng)畢業(yè)論文
評(píng)論
0/150
提交評(píng)論