多機(jī)溫度檢測課程設(shè)計(jì)_第1頁
已閱讀1頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  《單片機(jī)應(yīng)用與仿真訓(xùn)練》設(shè)計(jì)報(bào)告</p><p>  多機(jī)溫度檢測系統(tǒng)設(shè)計(jì)</p><p>  2011年11月23日</p><p><b>  摘要</b></p><p>  本設(shè)計(jì)是采用AT89S52單片機(jī)作為控制核心設(shè)計(jì)了溫度測量系統(tǒng),該系統(tǒng)由溫度檢測模塊、微控制器模塊、串口通信模塊、數(shù)碼

2、管顯示和報(bào)警模塊等四部分組成,能對(duì)0℃~100℃范圍的溫度進(jìn)行測量,同時(shí)利用4位八段數(shù)碼管可以實(shí)時(shí)顯示環(huán)境溫度。</p><p>  系統(tǒng)硬件電路包括傳感器數(shù)據(jù)采集、溫度顯示、模式選擇、上、下限報(bào)警主電路等。整個(gè)裝置的控制核心是 AT89S52單片機(jī)。溫度傳感器 DS18B20采用外部電源供電,傳感器輸出引腳直接和單片機(jī)相連。電路支持模式選擇功能,可以選擇設(shè)定報(bào)警極限值或顯示當(dāng)前溫度值。當(dāng)被測溫度越限時(shí),報(bào)警主電

3、路產(chǎn)生聲光報(bào)警。撥動(dòng)開關(guān)可以對(duì)設(shè)定報(bào)警極限值進(jìn)行寫保護(hù)。采用2片單片機(jī),組成多機(jī)溫度檢測系統(tǒng);下位單片機(jī)采集溫度,通過串行通信傳送至上位單片機(jī);上位單片機(jī)用數(shù)碼管顯示溫度大小;基本范圍0℃~100℃;精度誤差小于0.5℃;可以任意設(shè)定溫度的上下限報(bào)警功能。</p><p>  該系統(tǒng)精度高、測溫范圍廣、報(bào)警及時(shí),可廣泛應(yīng)用于基于單片機(jī)的測溫報(bào)警場合。系統(tǒng)抗干擾性強(qiáng)、設(shè)計(jì)靈活方便,適合在惡劣的環(huán)境下進(jìn)行溫度測量。&

4、lt;/p><p>  關(guān)鍵詞:AT89S52;DS18B20溫度傳感器;共陰極LED顯示;報(bào)警</p><p><b>  摘要2</b></p><p><b>  1 概述4</b></p><p>  1.1 下位機(jī)溫度采集發(fā)送系統(tǒng)4</p><p>  1.2上

5、位機(jī)顯示及報(bào)警系統(tǒng)4</p><p>  2 系統(tǒng)方案設(shè)計(jì)5</p><p>  2.1主控制部分設(shè)計(jì)5</p><p>  2.2 傳感器部分設(shè)計(jì)5</p><p>  3.系統(tǒng)總體方案及硬件設(shè)計(jì)7</p><p>  3.1系統(tǒng)總體方案7</p><p>  3.2系統(tǒng)總體方案圖

6、7</p><p>  3.3系統(tǒng)各部分硬件電路設(shè)計(jì)8</p><p>  3.3.1 AT89S52單片機(jī)及最小相系統(tǒng)8</p><p>  3.3.2數(shù)據(jù)顯示電路9</p><p>  3.3.3 數(shù)字溫度傳感器DS18B2010</p><p>  3.4整體電路14</p><

7、p><b>  4 軟件設(shè)計(jì)15</b></p><p><b>  4.1 概述15</b></p><p>  4.2 主程序方案15</p><p>  4.3DS18B20的相處理子程序16</p><p>  4.3.1DS18B20初始化16</p><

8、;p>  DS18B20初始化子程序:16</p><p>  4.3.2 DS18B20的寫操作17</p><p>  4.3.3 DS18B20的讀操作17</p><p>  5.Proteus軟件仿真19</p><p>  5.1 系統(tǒng)仿真環(huán)境19</p><p>  5.2 器件參數(shù)選

9、取19</p><p>  5.3仿真結(jié)果19</p><p>  6.課程設(shè)計(jì)體會(huì)21</p><p><b>  參考文獻(xiàn)22</b></p><p>  附件一:源程序代碼23</p><p>  附件二:系統(tǒng)原理圖30</p><p><b>

10、  1 概述</b></p><p>  1.1 下位機(jī)溫度采集發(fā)送系統(tǒng) </p><p>  下位機(jī)溫度采集發(fā)送系統(tǒng)是本系統(tǒng)的主要核心之一,它的主要功能是采集DS18B20的溫度數(shù)據(jù),進(jìn)行轉(zhuǎn)換,并通過串口發(fā)送出去。該溫度測量系統(tǒng)采用8051內(nèi)核Atmel公司的AT89S52八位單片機(jī)。</p><p>  溫度采集發(fā)送系統(tǒng)由溫度檢測模塊、下位控制器

11、模塊、發(fā)送放大模塊三部分組成,如圖1-1 溫度測量系統(tǒng)的系統(tǒng)框圖:</p><p>  圖 溫度測量系統(tǒng)的系統(tǒng)框圖</p><p>  溫度檢測模塊中溫度傳感器DS18B20采集溫度數(shù)據(jù),通過P2.3口傳給下位單片機(jī),微控制模塊進(jìn)行數(shù)據(jù)轉(zhuǎn)換,得出十進(jìn)制溫度值,然后通過串行口經(jīng)MAX232將數(shù)據(jù)發(fā)送出去。</p><p>  1.2上位機(jī)顯示及報(bào)警系統(tǒng)</p&g

12、t;<p>  上位機(jī)系統(tǒng)的主要功能是接收下位機(jī)發(fā)送過來的溫度數(shù)據(jù),與報(bào)警溫度進(jìn)行比較,判斷是否發(fā)送報(bào)警信號(hào),并同時(shí)直接驅(qū)動(dòng)四位八段數(shù)碼管進(jìn)行顯示。</p><p>  上位機(jī)系統(tǒng)由串口接收模塊、處理控制模塊、數(shù)碼管顯示模塊和報(bào)警模塊四部分組成,如圖1-2上位機(jī)系統(tǒng)框圖:</p><p><b>  圖 上位機(jī)系統(tǒng)框圖</b></p>&l

13、t;p>  串行口接收數(shù)據(jù)后進(jìn)行判斷是否報(bào)警,并由P0口和P2.0~P2.3直接驅(qū)動(dòng)數(shù)碼管顯示溫度數(shù)據(jù)。報(bào)警控制模塊通過按鈕電路可以改變報(bào)警溫度的上下限實(shí)現(xiàn)系統(tǒng)的靈活功能。</p><p><b>  2 系統(tǒng)方案設(shè)計(jì)</b></p><p>  2.1主控制部分設(shè)計(jì)</p><p><b>  方案一:</b>&l

14、t;/p><p>  此方案采用PC機(jī)實(shí)現(xiàn)。它可在線編程,可在線仿真的功能,這讓調(diào)試變得方便。且人機(jī)交互友好。但是PC機(jī)輸出信號(hào)不能直接與DS18B20通信。需要通過RS232電平轉(zhuǎn)換兼容,硬件的合成在線調(diào)試,較為繁瑣,很不簡便。而且在一些環(huán)境比較惡劣的場合,PC機(jī)的體積大,攜帶安裝不方便,性能不穩(wěn)定,給工程帶來很多麻煩!</p><p><b>  方案二:</b>&l

15、t;/p><p>  此方案采用AT89S52八位單片機(jī)實(shí)現(xiàn)。單片機(jī)軟件編程的自由度大,可通過編程實(shí)現(xiàn)各種各樣的算術(shù)算法和邏輯控制。而且體積小,硬件實(shí)現(xiàn)簡單,安裝方便。既可以單獨(dú)對(duì)多DS18B20控制工作,還可以與PC機(jī)通信.運(yùn)用主從分布式思想,由一臺(tái)上位機(jī),下位機(jī)多點(diǎn)溫度數(shù)據(jù)采集,組成兩級(jí)分布式多點(diǎn)溫度測量的巡回檢測系統(tǒng),實(shí)現(xiàn)遠(yuǎn)程控制。另外AT89S52在工業(yè)控制上也有著廣泛的應(yīng)用,編程技術(shù)及外圍功能電路的配合使用

16、都很成熟 </p><p>  2.2 傳感器部分設(shè)計(jì)</p><p><b>  方案一:</b></p><p>  采用熱敏電阻,可滿足40攝氏度至90攝氏度測量范圍,但熱敏電阻精度、重復(fù)性、可靠性較差,對(duì)于檢測1攝氏度的信號(hào)是不適用的。而且在溫度測量系統(tǒng)中,采用單片溫度傳感器,比如AD590,LM35等.但這些芯片輸出的都是模擬信號(hào),必

17、須經(jīng)過A/D轉(zhuǎn)換后才能送給計(jì)算機(jī),這樣就使得測溫裝置的結(jié)構(gòu)較復(fù)雜.另外,這種測溫裝置的一根線上只能掛一個(gè)傳感器,不能進(jìn)行多點(diǎn)測量.即使能實(shí)現(xiàn),也要用到復(fù)雜的算法,一定程度上也增加了軟件實(shí)現(xiàn)的難度。</p><p><b>  方案二:</b></p><p>  在多點(diǎn)測溫系統(tǒng)中,傳統(tǒng)的測溫方法是將模擬信號(hào)遠(yuǎn)距離采樣進(jìn)行AD轉(zhuǎn)換,而為了獲得較高的測溫精度,就必須采用措

18、施解決由長線傳輸,多點(diǎn)測量切換及放大電路零點(diǎn)漂移等造成的誤差補(bǔ)償問題。采用數(shù)字溫度芯片DS18B20測量溫度,輸出信號(hào)全數(shù)字化。便于單片機(jī)處理及控制,省去傳統(tǒng)的測溫方法的很多外圍電路。且該芯片的物理化學(xué)性很穩(wěn)定,它能用做工業(yè)測溫元件,此元件線形較好。在0—100攝氏度時(shí),最大線形偏差小于1攝氏度。DS18B20的最大特點(diǎn)之一采用了單總線的數(shù)據(jù)傳輸,由數(shù)字溫度計(jì)DS1820和微控制器AT89S52構(gòu)成的溫度測量裝置,它直接輸出溫度的數(shù)字信

19、號(hào),可直接與計(jì)算機(jī)連接。這樣,測溫系統(tǒng)的結(jié)構(gòu)就比較簡單,體積也不大,且由于AT89S52可以帶多個(gè)DSB1820,因此可以非常容易實(shí)現(xiàn)多點(diǎn)測量.輕松的組建傳感器網(wǎng)絡(luò)。</p><p>  采用溫度芯片DS18B20測量溫度,可以體現(xiàn)系統(tǒng)芯片化這個(gè)趨勢。部分功能電路的集成,使總體電路更簡潔,搭建電路和焊接電路時(shí)更快。而且,集成塊的使用,有效地避免外界的干擾,提高測量電路的精確度。所以集成芯片的使用將成為電路發(fā)展的一

20、種趨勢。本方案應(yīng)用這一溫度芯片,也是順應(yīng)這一趨勢。</p><p>  綜上所述,溫度傳感器以及主控部分都采用第二方案。</p><p>  系統(tǒng)采用針對(duì)傳統(tǒng)溫度測溫系統(tǒng)測溫點(diǎn)少,系統(tǒng)兼容性及擴(kuò)展性較差的特點(diǎn),運(yùn)用分布式通訊的思想。設(shè)計(jì)一種可以用于大規(guī)模多點(diǎn)溫度測量的巡回檢測系統(tǒng)。該系統(tǒng)采用的是RS-232串行通訊的標(biāo)準(zhǔn),通過上位機(jī)進(jìn)行現(xiàn)場的溫度采集,溫度數(shù)據(jù)既可以由下位機(jī)模塊實(shí)時(shí)顯示,也

21、可以送回上位機(jī)進(jìn)行數(shù)據(jù)處理,具有巡檢速度快,擴(kuò)展性好,成本低的特點(diǎn)。</p><p>  3.系統(tǒng)總體方案及硬件設(shè)計(jì)</p><p><b>  3.1系統(tǒng)總體方案</b></p><p>  該數(shù)字溫度計(jì)由電源電路、晶振電路、復(fù)位電路、下載電路、單片機(jī)、</p><p>  數(shù)字顯示電路、溫度測量電路、報(bào)警電路和控制電

22、路組成。 可以實(shí)現(xiàn)基本范圍0℃-100℃的測量和任意設(shè)置溫度的上下限,當(dāng)所設(shè)置的溫度高于所設(shè)置的上限或低于所設(shè)置的下限時(shí)可通過發(fā)光二極管報(bào)警。當(dāng)開關(guān)處于開的狀態(tài)時(shí)才可實(shí)現(xiàn)上述功能,否則不可實(shí)現(xiàn)。</p><p>  3.2系統(tǒng)總體方案圖</p><p>  3.3系統(tǒng)各部分硬件電路設(shè)計(jì)</p><p>  3.3.1 AT89S52單片機(jī)及最小相系統(tǒng)</p&

23、gt;<p><b>  AT89S52</b></p><p>  AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。使用Atmel 公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash

24、,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。AT89S52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉

25、電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。</p><p>  AT89S52最小相系統(tǒng)</p><p>  3.3.2數(shù)據(jù)顯示電路</p><p>  本次設(shè)計(jì)中采用共陰極數(shù)碼管作為顯示器。LED的驅(qū)動(dòng)電路簡單,使用方便,具有耗電少、成本低廉、配置簡單靈活、安裝方便、耐振動(dòng)、使用壽命長等優(yōu)點(diǎn)。LED顯示器與單片

26、機(jī)的接口一般有動(dòng)態(tài)顯示與靜態(tài)顯示接口兩種電路。</p><p>  1、靜態(tài)顯示方式:是指當(dāng)顯示器顯示某一字符時(shí),發(fā)光二極管的位選始終被選中。在這種顯示方式下,每一個(gè)LED數(shù)碼管顯示器都需要一個(gè)8位的輸出口進(jìn)行控制,顯示穩(wěn)定,提高了CPU的工作效率。其不足之處是占用硬件資源較多,每個(gè)LED數(shù)碼管需要獨(dú)占8條輸出線。隨著顯示器位數(shù)的增加,需要的I/O口線也將增加。</p><p>  2、動(dòng)

27、態(tài)顯示方式:動(dòng)態(tài)顯示方式是指一位一位地輪流點(diǎn)亮每位顯示器(稱為掃描),即每個(gè)數(shù)碼管的位選被輪流選中,多個(gè)數(shù)碼管公用一組段選,段選數(shù)據(jù)僅對(duì)位選選中的數(shù)碼管有效。對(duì)于每一位顯示器來說,每隔一段時(shí)間輪流點(diǎn)亮。顯示器的亮度既與導(dǎo)通電流有關(guān),也與點(diǎn)亮?xí)r間和間隔時(shí)間的比例有關(guān), 由于掃描速度極快,顯示效果與靜態(tài)驅(qū)動(dòng)相同。通過調(diào)整電流和時(shí)間參數(shù),可以既保證亮度,又保證顯示。</p><p>  本次設(shè)計(jì)中,由于單片機(jī)本身提供的

28、I/O口有限,本次設(shè)計(jì)采用動(dòng)態(tài)顯示,數(shù)碼管采用的是共陰極接法。用AT89S52的P0口作段碼輸出時(shí), 驅(qū)動(dòng)能力相當(dāng)大,但由于輸出極為漏極開路電路,驅(qū)動(dòng)拉電流負(fù)載,引腳上應(yīng)外接上拉電阻。。因此,在本次設(shè)計(jì)中我們將數(shù)碼管各段加上拉電阻后接單片機(jī)P0口。我們把P2口的輸出信號(hào)直接接到數(shù)碼管的位選端作為位選信號(hào),低電平有效。</p><p><b>  數(shù)據(jù)顯示電路</b></p>&

29、lt;p>  3.3.3 數(shù)字溫度傳感器DS18B20</p><p>  本次設(shè)計(jì)的硬件電路簡單,關(guān)鍵的地方在DS18B20,也是最復(fù)雜難懂的。</p><p>  由DALLAS半導(dǎo)體公司生產(chǎn)的DS18B20型單線智能溫度傳感器,屬于新一代適配微處理器的智能溫度傳感器,可廣泛用于工業(yè)、民用、軍事等領(lǐng)域的溫度測量及控制儀器、測控系統(tǒng)和大型設(shè)備中。它具有體積小,接口方便,傳輸距離遠(yuǎn)等

30、特點(diǎn)。</p><p>  DS18B20的性能特點(diǎn):</p><p>  采用單總線專用技術(shù),既可通過串行口線,也可通過其它I/O口線與微機(jī)接口,無須經(jīng)過其它變換電路,直接輸出被測溫度值(9位二進(jìn)制數(shù),含符號(hào)位)</p><p>  測溫范圍為-55℃-+125℃,測量分辨率最小為0.0625℃</p><p>  內(nèi)含64位經(jīng)過激光修正的

31、只讀存儲(chǔ)器ROM</p><p>  DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)</p><p>  適配各種單片機(jī)或系統(tǒng)機(jī)</p><p>  測量結(jié)果直接輸出數(shù)字溫度信號(hào),以“一線總線“串行傳送給CPU,同時(shí)可傳送CRC校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力</p><p>  用戶可分別設(shè)

32、定各路溫度的上、下限</p><p>  適應(yīng)電壓范圍寬,3.0~5.5V,在寄生電源方式下可由數(shù)據(jù)線供電</p><p>  DS18B20的管腳排列如圖5所示。引腳功能如下表所示:</p><p><b>  圖DS18B20</b></p><p><b>  表1:</b></p>

33、;<p>  DS18B20主要包括寄生電源、溫度傳感器、64位激光ROM單線接口、存放中間數(shù)據(jù)的高速暫存器(內(nèi)含便箋式RAM),用于存儲(chǔ)用戶設(shè)定的溫度上下限值的TH和TL觸發(fā)器存儲(chǔ)與控制邏輯、8位循環(huán)冗余校驗(yàn)碼(CRC)發(fā)生器等七部分內(nèi)部,其內(nèi)部結(jié)構(gòu)框圖如圖所示。</p><p>  圖DS18B20內(nèi)部結(jié)構(gòu)</p><p>  DS18B20有4個(gè)主要的數(shù)據(jù)部件:<

34、/p><p>  ① 64位激光ROM。64位激光ROM從高位到低位依次為8位CRC、48位序列號(hào)和8位家族代碼(28H)組成。</p><p><b> ?、?溫度靈敏元件。</b></p><p> ?、?非易失性溫度報(bào)警觸發(fā)器TH和TL。可通過軟件寫入用戶報(bào)警上下限值。</p><p>  ④ 配置寄存器。 配置

35、寄存器為高速暫存存儲(chǔ)器中的第五個(gè)字節(jié)。DS18B20在0工作時(shí)按此寄存器中的分辨率將溫度轉(zhuǎn)換成相應(yīng)精度的數(shù)值,</p><p>  其各位定義如圖所示。</p><p>  其中,TM:測試模式標(biāo)志位,出廠時(shí)被寫入0,不能改變;R0、R1:溫度計(jì)分辨率設(shè)置位,其對(duì)應(yīng)四種分辨率如下表所列,出廠時(shí)R0、R1置為缺省值:R0=1,R1=1(即12位分辨率),用戶可根據(jù)需要改寫配置寄存器以獲得合適

36、的分辨率。</p><p>  配置寄存器與分辨率關(guān)系表 :</p><p>  高速暫存存儲(chǔ)器。高速暫存存儲(chǔ)器由9個(gè)字節(jié)組成,其分配如下圖所示。當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在高速暫存存儲(chǔ)器的第0和第1個(gè)字節(jié)。單片機(jī)可通過單線接口讀到該數(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í),

37、先將補(bǔ)碼變?yōu)樵a,再計(jì)算十進(jìn)制值。</p><p>  溫度值格式圖DS18B20 溫度數(shù)據(jù)表:</p><p>  對(duì)DS18B20的設(shè)計(jì),需要注意以下問題:</p><p>  對(duì)硬件結(jié)構(gòu)簡單的單線數(shù)字溫度傳感器DS18B20 進(jìn)行操作,需要用較為復(fù)雜的程序完成。編制程序時(shí)必須嚴(yán)格按芯片數(shù)據(jù)手冊(cè)提供的有關(guān)操作順序進(jìn)行,讀、寫時(shí)間片程序要嚴(yán)格按要求編寫。尤其在使用

38、DS18B20 的高測溫分辨率時(shí),對(duì)時(shí)序及電氣特性參數(shù)要求更高。</p><p>  有多個(gè)測溫點(diǎn)時(shí),應(yīng)考慮系統(tǒng)能實(shí)現(xiàn)傳感器出錯(cuò)自動(dòng)指示,進(jìn)行自動(dòng)DS18B20 序列號(hào)和自動(dòng)排序,以減少調(diào)試和維護(hù)工作量。</p><p>  測溫電纜線建議采用屏蔽4 芯雙絞線,其中一對(duì)線接地線與信號(hào)線,另一組接VCC和地線,屏蔽層在源端單點(diǎn)接地。DS18B20 在三線制應(yīng)用時(shí),應(yīng)將其三線焊接牢固;在兩線應(yīng)

39、用時(shí),應(yīng)將VCC與GND接在一起,焊接牢固。若VCC脫開未接,傳感器只送85.0 ℃的溫度值。</p><p>  實(shí)際應(yīng)用時(shí),要注意單線的驅(qū)動(dòng)能力,不能掛接過多的DS18B20,同時(shí)還應(yīng)注意最遠(yuǎn)接線距離。另外還應(yīng)根據(jù)實(shí)際情況選擇其接線拓?fù)浣Y(jié)構(gòu)。</p><p>  圖DS18B20接線圖</p><p><b>  3.4整體電路</b>&l

40、t;/p><p>  見附件二:系統(tǒng)原理圖</p><p><b>  4 軟件設(shè)計(jì)</b></p><p><b>  4.1 概述</b></p><p>  整個(gè)系統(tǒng)的功能是由硬件電路配合軟件來實(shí)現(xiàn)的,當(dāng)硬件基本定型后,軟件的功能也就基本定下來了。從軟件的功能不同可分為兩大類:一是監(jiān)控軟件(主程序

41、),它是整個(gè)控制系統(tǒng)的核心,專門用來協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系。二是執(zhí)行軟件(子程序),它是用來完成各種實(shí)質(zhì)性的功能如測量、計(jì)算、顯示、通訊等。每一個(gè)執(zhí)行軟件也就是一個(gè)小的功能執(zhí)行模塊。這里將各執(zhí)行模塊一一列出,并為每一個(gè)執(zhí)行模塊進(jìn)行功能定義和接口定義。各執(zhí)行模塊規(guī)劃好后,就可以規(guī)劃監(jiān)控程序了。</p><p>  首先要根據(jù)系統(tǒng)的總體功能和鍵盤設(shè)置選擇一種最合適的監(jiān)控程序結(jié)構(gòu),然后根據(jù)實(shí)時(shí)性的要求,合理地安排

42、監(jiān)控軟件和各執(zhí)行模塊之間地調(diào)度關(guān)系。</p><p><b>  4.2 主程序方案</b></p><p>  主程序調(diào)用了數(shù)碼管顯示程序、溫度測試程序、中斷控制程序、單片機(jī)與PC機(jī)串口通訊等程序。</p><p>  溫度測試程序:對(duì)溫度芯片送過來的數(shù)據(jù)進(jìn)行處理,進(jìn)行判斷和顯示。</p><p>  數(shù)碼管顯示程序:

43、向數(shù)碼的顯示送數(shù),控制系統(tǒng)的顯示部分。</p><p>  中斷控制程序:實(shí)現(xiàn)循環(huán)顯示功能。</p><p>  串口通訊程序:實(shí)現(xiàn)PC機(jī)與單片機(jī)通訊,將溫度數(shù)據(jù)傳送給PC機(jī)</p><p>  將各個(gè)功能程序以子程序的形式寫好,當(dāng)寫主程序的時(shí)候,只需要調(diào)用子程序,然后在寄存器的分配上作一下調(diào)整,消除寄存器沖突和I/O沖突即可。程序應(yīng)該盡可能多的使用調(diào)用指令代替跳轉(zhuǎn)

44、指令。因?yàn)樘D(zhuǎn)指令使得程序難以看懂各程序段之間的結(jié)構(gòu)關(guān)系。而調(diào)用指令則不同,調(diào)用指令使得程序結(jié)構(gòu)清晰,無論是修改還是維護(hù)都比較方便。將功能程序段寫成子程序的形式,除了方便調(diào)用之外,還有一個(gè)好處那就是以后寫程序的時(shí)候如果要用到,就可以直接調(diào)用這個(gè)單元功能模塊。</p><p>  4.3DS18B20的相處理子程序 </p><p>  4.3.1DS18B20初始化</p>

45、<p> ?。?) 先將數(shù)據(jù)線置高電平“1”。</p><p> ?。?) 延時(shí)(該時(shí)間要求的不是很嚴(yán)格,但是盡可能的短一點(diǎn))</p><p> ?。?) 數(shù)據(jù)線拉到低電平“0”。</p><p> ?。?) 延時(shí)750微秒(該時(shí)間的時(shí)間范圍可以從480到960微秒)。</p><p> ?。?) 數(shù)據(jù)線拉到高電平“1”。</

46、p><p>  (6) 延時(shí)等待(如果初始化成功則在15到60毫秒時(shí)間之內(nèi)產(chǎn)生一個(gè)由DS18B20所返回的低電平“0”。據(jù)該狀態(tài)可以來確定它的存在,但是應(yīng)注意不能無限的進(jìn)行等待,不然會(huì)使程序進(jìn)入死循環(huán),所以要進(jìn)行超時(shí)控制)。</p><p> ?。?) 若CPU讀到了數(shù)據(jù)線上的低電平“0”后,還要做延時(shí),其延時(shí)的時(shí)間從發(fā)出的高電平算起(第(5)步的時(shí)間算起)最少要480微秒。</p>

47、;<p> ?。?) 將數(shù)據(jù)線再次拉高到高電平“1”后結(jié)束。</p><p>  DS18B20初始化子程序:</p><p>  void Init_DS18B20(void) </p><p><b>  {</b></p><p>  unsigned char x=0;</p><

48、;p>  DQ = 1; //DQ復(fù)位</p><p>  delay_18B20(8); //稍做延時(shí)</p><p>  DQ = 0; //單片機(jī)將DQ拉低</p><p>  delay_18B20(80); //精確延時(shí) 大于 480us</p><p>  DQ = 1;

49、 //拉高總線</p><p>  delay_18B20(14);</p><p>  x=DQ; //稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗</p><p>  delay_18B20(20);</p><p><b>  }</b></p><p> 

50、 4.3.2 DS18B20的寫操作</p><p> ?。?) 數(shù)據(jù)線先置低電平“0”。</p><p> ?。?) 延時(shí)確定的時(shí)間為15微秒。</p><p> ?。?) 按從低位到高位的順序發(fā)送字節(jié)(一次只發(fā)送一位)。</p><p> ?。?) 延時(shí)時(shí)間為45微秒。</p><p> ?。?) 將數(shù)據(jù)線拉到

51、高電平。</p><p> ?。?) 重復(fù)上(1)到(6)的操作直到所有的字節(jié)全部發(fā)送完為止。</p><p> ?。?) 最后將數(shù)據(jù)線拉高。</p><p>  DS18B20的寫程序?yàn)?lt;/p><p>  void WriteOneChar(unsigned char dat)</p><p><b> 

52、 {</b></p><p>  unsigned char i=0;</p><p>  for (i=8; i>0; i--)</p><p><b>  {</b></p><p><b>  DQ = 0;</b></p><p>  DQ = da

53、t&0x01;</p><p>  Delay_DS18B20(5);</p><p><b>  DQ = 1;</b></p><p><b>  dat>>=1;</b></p><p><b>  }</b></p><p>

54、<b>  }</b></p><p>  4.3.3 DS18B20的讀操作</p><p> ?。?)將數(shù)據(jù)線拉高“1”。</p><p><b> ?。?)延時(shí)2微秒。</b></p><p> ?。?)將數(shù)據(jù)線拉低“0”。</p><p> ?。?)延時(shí)15微秒。&l

55、t;/p><p>  (5)將數(shù)據(jù)線拉高“1”。</p><p> ?。?)延時(shí)15微秒。</p><p> ?。?)讀數(shù)據(jù)線的狀態(tài)得到1個(gè)狀態(tài)位,并進(jìn)行數(shù)據(jù)處理。</p><p> ?。?)延時(shí)30微秒。</p><p>  DS18B20的讀程序?yàn)椋?lt;/p><p>  unsigned cha

56、r ReadOneChar(void)</p><p><b>  {</b></p><p>  unsigned char i=0;</p><p>  unsigned char dat = 0;</p><p>  for (i=8;i>0;i--)</p><p><b>

57、;  {</b></p><p>  DQ = 0; // 給脈沖信號(hào)</p><p><b>  dat>>=1;</b></p><p>  DQ = 1; // 給脈沖信號(hào)</p><p><b>  if(DQ)</b></p><

58、p>  dat|=0x80;</p><p>  Delay_DS18B20(4);</p><p><b>  }</b></p><p>  return(dat);</p><p><b>  }</b></p><p>  5.Proteus軟件仿真</p

59、><p>  5.1 系統(tǒng)仿真環(huán)境</p><p>  本設(shè)計(jì)采用Proteus仿真軟件進(jìn)行仿真,Proteus軟件是英國Labcenter electronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。</p><p>  首先在Proteus的元件庫中找到所需的元件,按照硬

60、件設(shè)計(jì)中的說明把各部件連接起來組成一個(gè)數(shù)字式溫度計(jì)硬件系統(tǒng)。然后把在Keil環(huán)境調(diào)試下生成的.HEX文件導(dǎo)入到AT89S52里,點(diǎn)擊運(yùn)行符號(hào)就可以使軟硬件的配套設(shè)施在Proteus的環(huán)境下仿真實(shí)現(xiàn),以檢查是否存在錯(cuò)誤。</p><p>  5.2 器件參數(shù)選取</p><p>  單片機(jī)采用AT89C52,時(shí)鐘頻率為12MHz。時(shí)鐘產(chǎn)生電路的晶振為12MHz,接地電容為30pF。復(fù)位電路的

61、電解電容為10uF,與電容并聯(lián)的電阻為1K,接地的電阻為10K。LED數(shù)碼管及DS18B20的工作電壓為+5V。</p><p><b>  5.3仿真結(jié)果</b></p><p>  系統(tǒng)原理圖見附件二:</p><p>  此圖為正常測溫?cái)?shù)碼管畫面</p><p>  溫度超下限或者超過100℃</p>

62、<p><b>  數(shù)碼管顯示bbbb</b></p><p>  并且此時(shí)報(bào)警電路二極管D2亮</p><p>  溫度超上限數(shù)碼管顯示</p><p>  超上限時(shí)報(bào)警電路二極管D1亮</p><p><b>  6.課程設(shè)計(jì)體會(huì)</b></p><p>  

63、通過這次單片機(jī)課程設(shè)計(jì),我們不僅加深了對(duì)單片機(jī)理論的理解,將很多課本理論很好地應(yīng)用到實(shí)際當(dāng)中,而且我們還學(xué)會(huì)了如何去培養(yǎng)我們的學(xué)習(xí)精神和團(tuán)隊(duì)協(xié)作能力,從而不斷地戰(zhàn)勝自己,超越自己。通過這次完成這次的設(shè)計(jì),我們發(fā)現(xiàn)了我們?cè)谡n堂上學(xué)習(xí)的知識(shí)是十分寶貴且有用的,也發(fā)現(xiàn)了我們?cè)谡n堂學(xué)習(xí)過程中的不足和大意,有很多東西都在課堂上被我們忽略來了,為了完成本次的設(shè)計(jì),我們不斷地翻閱書籍、請(qǐng)教同學(xué),重新學(xué)習(xí)了課堂上的知識(shí),雖然還沒能做到融會(huì)貫通、厚積薄發(fā)

64、,但畢竟窺一管而知全豹,走進(jìn)了單片機(jī)應(yīng)用的遼闊世界,了解到了單片機(jī)系統(tǒng)的強(qiáng)大功能,開闊了視野,提高了設(shè)計(jì)能力,使更多的知識(shí)成為了自己的東西,相信這些在我們今后的學(xué)習(xí)和工作生涯中將會(huì)是一筆寶貴的財(cái)富。</p><p>  在這次設(shè)計(jì)中,串口通信是我們的一大難點(diǎn),不斷的仿真和不斷的錯(cuò)誤和失敗告訴我們基礎(chǔ)知識(shí)的不踏實(shí),正如老師所言“基礎(chǔ)不牢,地動(dòng)山搖”,于是我們重新認(rèn)真的看課本重新的學(xué)習(xí),終于實(shí)現(xiàn)了串口發(fā)送和接受功能。

65、</p><p>  本次設(shè)計(jì)我們使用的是C51語言,雖然c語言結(jié)構(gòu)明確,可讀性強(qiáng),但由于單片機(jī)的硬件資源有限,在數(shù)據(jù)定義和特殊寄存器的選用及修改上比較固定,對(duì)于新手來說有些理解和實(shí)現(xiàn),所以C語言編程時(shí)很多地方程序結(jié)構(gòu)固定,而我們又沒有系統(tǒng)深入的學(xué)習(xí)過C51語言,所以在這次設(shè)計(jì)中我們部分的借鑒了別人的程序,雖然這一部分不是我們寫的,但是我們認(rèn)真讀懂了它并且學(xué)到了很多東西,包括編程思想和設(shè)計(jì)技巧,這些都提高了我們的

66、學(xué)習(xí)能力和模仿能力。</p><p>  總之,通過這次的課程設(shè)計(jì),使我們認(rèn)識(shí)到了不足,看清了學(xué)習(xí)的方向,找到了學(xué)習(xí)的動(dòng)力,提高了動(dòng)手能力和學(xué)習(xí)能力,收獲很大。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 余發(fā)山主編.單片機(jī)原理及應(yīng)用技術(shù).徐州:中國礦業(yè)大學(xué)出版社.2003.12</p><p&

67、gt;  [2] 白澤生. 用MCS-51單片機(jī)實(shí)現(xiàn)溫度的檢測[J].現(xiàn)代電子技術(shù).2005.10</p><p>  [3] 李玉梅編著.基于MCS-51系列單片機(jī)原理的應(yīng)用設(shè)計(jì).國防工業(yè)出版社</p><p>  [4] 余小平、奚大順編著.電子系統(tǒng)設(shè)計(jì)基礎(chǔ)篇.北京:北京航空航天大學(xué)出版社,2007.3</p><p>  [5] 郭愛芳主編.傳感器原理及應(yīng)用.

68、西安電子科技大學(xué)出版社.2007.5</p><p>  [6] http//www.jiangx.net/post/322.html</p><p>  [7] 譚浩強(qiáng)著.C語言程序設(shè)計(jì).清華大學(xué)出版社.2005.7</p><p><b>  附件一:源程序代碼</b></p><p><b>  上位機(jī)源

69、代碼</b></p><p>  #include<reg51.h></p><p>  unsigned char t[]={0,0},tt1[]={0,0,0,0,0},tt2[4],flag=1;</p><p>  unsigned char *pt;//用來存放溫度值,測溫程序就是通過這個(gè)數(shù)組與主函數(shù)通信的</p&

70、gt;<p>  unsigned char code dotcode[]={0,25,50,75};</p><p>  sbit DQ = P1^6;</p><p>  sbit UP=P1^0;</p><p>  sbit DW=P1^1;</p><p>  sbit G=P1^2;</p><p

71、>  void delay(unsigned char i)</p><p><b>  {</b></p><p>  while(i--);</p><p><b>  }</b></p><p>  void delay_18B20(unsigned int i)</p>

72、<p><b>  {</b></p><p>  while(i--);</p><p><b>  }</b></p><p>  /**********ds18b20初始化函數(shù)**********************/</p><p>  void Init_DS18B20(vo

73、id) </p><p><b>  {</b></p><p>  unsigned char x=0;</p><p>  DQ = 1; //DQ復(fù)位</p><p>  delay_18B20(8); //稍做延時(shí)</p><p>  DQ = 0;

74、//單片機(jī)將DQ拉低</p><p>  delay_18B20(80); //精確延時(shí) 大于 480us</p><p>  DQ = 1; //拉高總線</p><p>  delay_18B20(14);</p><p>  x=DQ; //稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗&

75、lt;/p><p>  delay_18B20(20);</p><p><b>  }</b></p><p>  /***********ds18b20讀一個(gè)字節(jié)**************/ </p><p>  unsigned char ReadOneChar(void)</p><p>

76、<b>  {</b></p><p>  unsigned char i=0;</p><p>  unsigned char dat = 0;</p><p>  for (i=8;i>0;i--)</p><p><b>  {</b></p><p>  DQ

77、= 0; // 給脈沖信號(hào)</p><p><b>  dat>>=1;</b></p><p>  DQ = 1; // 給脈沖信號(hào)</p><p><b>  if(DQ)</b></p><p>  dat|=0x80;</p><p>  delay_18

78、B20(4);</p><p><b>  }</b></p><p>  return(dat);</p><p><b>  }</b></p><p>  /*************ds18b20寫一個(gè)字節(jié)****************/ </p><p>  v

79、oid WriteOneChar(unsigned char dat)</p><p><b>  {</b></p><p>  unsigned char i=0;</p><p>  for (i=8; i>0; i--)</p><p><b>  {</b></p>&

80、lt;p><b>  DQ = 0;</b></p><p>  DQ = dat&0x01;</p><p>  delay_18B20(5);</p><p><b>  DQ = 1;</b></p><p><b>  dat>>=1;</b>

81、</p><p><b>  }</b></p><p><b>  }</b></p><p>  /**************讀取ds18b20當(dāng)前溫度************/</p><p>  unsigned char *ReadTemperature(char TH,char TL,

82、unsigned char RS)</p><p><b>  {</b></p><p>  unsigned char tt[]={0,0};</p><p>  Init_DS18B20();</p><p>  WriteOneChar(0xCC); // 跳過讀序號(hào)列號(hào)的操作</p>

83、<p>  WriteOneChar(0x4E); // //寫入"寫暫存器"命令,修改TH和TL和分辯率配置寄存器</p><p>  //先寫TH,再寫TL,最后寫配置寄存器</p><p>  WriteOneChar(TH);//寫入想設(shè)定的溫度報(bào)警上限</p><p>  WriteOneChar(TL);//寫入想

84、設(shè)定的溫度報(bào)警下限</p><p>  WriteOneChar(RS);//寫配置寄存器,格式為0 R1 R0 1,1 1 1 1</p><p>  //R1R0=00分辨率婁9位,R1R0=11分辨率為12位 </p><p>  delay_18B20(80); // this message is wery important</p&

85、gt;<p>  Init_DS18B20();</p><p>  WriteOneChar(0xCC); // 跳過讀序號(hào)列號(hào)的操作</p><p>  WriteOneChar(0x44); // 啟動(dòng)溫度轉(zhuǎn)換</p><p>  delay_18B20(80); // this message is wery import

86、ant</p><p>  Init_DS18B20();</p><p>  WriteOneChar(0xCC); //跳過讀序號(hào)列號(hào)的操作</p><p>  WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度</p><p>  delay_18B20(80);</p>

87、<p>  tt[0]=ReadOneChar(); //讀取溫度值低位</p><p>  tt[1]=ReadOneChar(); //讀取溫度值高位</p><p>  return(tt);</p><p><b>  }</b></p><p>  void init()</p&

88、gt;<p><b>  {</b></p><p>  SCON=0X40; //多機(jī)通信方式,接收允許</p><p>  PCON=0X00; //波特率加倍</p><p>  TMOD=0x20; //定時(shí)器1,模式2</p><p><b>  TH1=0xf3;</b&g

89、t;</p><p>  TL1=0xf3; //定時(shí)器初值</p><p>  TR1=1; //啟動(dòng)定時(shí)器1</p><p><b>  }</b></p><p>  void senddata(unsigned char tt2[])</p><p><b>  {<

90、;/b></p><p><b>  int i;</b></p><p><b>  init();</b></p><p>  for(i=0;i<4;i++)</p><p><b>  {</b></p><p>  SBUF=tt2

91、[i]; //寫SBUF,開始發(fā)送</p><p>  while(!TI); //等待發(fā)送</p><p>  TI=0; //清發(fā)送標(biāo)志位</p><p>  delay_18B20(100);</p><p><b>  }</b></p><p><b>  }</b&

92、gt;</p><p>  void main()</p><p><b>  {</b></p><p>  unsigned char x,y; //下一步擴(kuò)展時(shí)可能通過這兩個(gè)變量,調(diào)節(jié)上下限</p><p>  unsigned int TH=100,TL=15; //測溫函

93、數(shù)返回這個(gè)數(shù)組的頭地址</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  pt=ReadTemperature(TH,TL,0x3f); //上限溫度-22,下限-24,分辨率9位,也就是0.25C,TM R1 R0 1 1 1 1 1 </p&

94、gt;<p>  t[0]=*pt;//讀取溫度,溫度值存放在一個(gè)兩個(gè)字節(jié)的數(shù)組中</p><p><b>  pt++;</b></p><p>  t[1]=*pt;</p><p>  t[1]<<=4;//將高字節(jié)左移4位</p><p>  t[1]=t[1]&

95、;0x70;//取出高字節(jié)的3個(gè)有效數(shù)字位</p><p>  x=t[0];//將t[0]暫存到X,因?yàn)槿⌒?shù)部分還要用到它</p><p>  x>>=4;//右移4位</p><p>  x=x&0x0f;//和前面兩句就是取出t[0]的高四位</p><p>  t[1]=t[1

96、]|x;//將高低字節(jié)的有效值的整數(shù)部分拼成一個(gè)字節(jié)</p><p>  tt1[0]=(t[1]%100)/10;//分離出十位</p><p>  tt1[1]=(t[1]%100)%10; //分離出個(gè)位</p><p>  t[0]=t[0]&0x0c;//取有效的兩位小數(shù)</p><p>

97、  t[0]>>=2;//左移兩位,以便查表</p><p>  x=t[0];</p><p>  y=dotcode[x];//查表換算成實(shí)際的小數(shù)</p><p>  tt1[2]=y/10;//分離出十分位</p><p>  tt1[3]=y%10;

98、//分離出百分位 </p><p>  if(G==0||UP==0||DW==0)</p><p><b>  {</b></p><p><b>  flag=0;</b></p><p><b>  if(G==0)</b></p><

99、p><b>  {</b></p><p><b>  if(UP==0)</b></p><p><b>  TH++;</b></p><p><b>  if(DW==0)</b></p><p><b>  TH--;</b&

100、gt;</p><p>  if(TH>=100||TH<=0)</p><p><b>  TH=0;</b></p><p>  tt1[0]=TH/10;</p><p>  tt1[1]=TH%10;</p><p><b>  }</b></

101、p><p><b>  else</b></p><p><b>  {</b></p><p><b>  if(UP==0)</b></p><p><b>  TL++;</b></p><p><b>  if(DW

102、==0)</b></p><p><b>  TL--;</b></p><p>  if(TL>=100||TL<=0)</p><p><b>  TL=0;</b></p><p>  tt1[0]=TL/10;</p><p>  tt1[1]

103、=TL%10;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  if(flag)</b></p><p><b>  {</b></p><p>  if((tt1[0

104、]>=(TH/10))&&(tt1[1]>=(TH%10)))</p><p><b>  {</b></p><p>  tt1[0]=10;</p><p>  tt1[1]=10;</p><p>  tt1[2]=10;</p><p>  tt1[3]=10;

105、</p><p><b>  }</b></p><p>  if((tt1[0]<=TL/10)&&(tt1[1]<=TL%10)||(tt1[0]<=TL/10))</p><p><b>  {</b></p><p>  tt1[0]=11;</p&g

106、t;<p>  tt1[1]=11;</p><p>  tt1[2]=11;</p><p>  tt1[3]=11;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  flag=1;

107、</b></p><p>  senddata(tt1);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  下位機(jī)源代碼</b></p><p>  #include<

108、reg52.h></p><p>  #include<intrins.h></p><p>  #define uint unsigned int</p><p>  #define uchar unsigned char</p><p>  uchar code tab[] ={0xc0,0xf9,0xa4,0xb0,0

109、x99,0x92,0x82,0xf8,0x80,0x90,0X88,0X83};</p><p>  uchar code tab1[]={0x08,0x04,0x02,0x01};</p><p>  uchar code tt1[4];</p><p>  uchar b,num=0,i;</p><p>  sbit RE=P1^0;&

110、lt;/p><p>  sbit LENG=P1^1;</p><p>  void delay(unsigned int i)</p><p><b>  {</b></p><p>  while(i--);</p><p><b>  } </b></p>&

111、lt;p>  void UART_Init(void)</p><p><b>  {</b></p><p>  SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr </p><p>  PCON |= 0x00; //SMOD=0;/波特率加倍 </p>

112、<p>  TMOD=0x20; //定時(shí)器1,模式2</p><p><b>  TH1=0xf3;</b></p><p><b>  TL1=0xf3;</b></p><p><b>  TR1=1;</b></p><p><b>  ES=

113、1;</b></p><p><b>  EA=1;</b></p><p><b>  }</b></p><p>  void show(uchar tt1[4]) //數(shù)碼管顯示</p><p><b>  {</b></p><p>

114、;  for(num=0;num<4;num++)</p><p><b>  {</b></p><p>  b=tt1[num];</p><p>  P2=tab1[num];</p><p>  if(num==1)</p><p>  P0=tab[b]&0x7f;<

115、/p><p><b>  else</b></p><p>  P0=tab[b];</p><p>  delay(200);</p><p><b>  }</b></p><p><b>  }</b></p><p>

116、;  void main()</p><p><b>  {</b></p><p>  UART_Init();</p><p><b>  while(1);</b></p><p><b>  }</b></p><p>  void INT_Ua

117、rtRcv(void) interrupt 4 //定時(shí)器1中斷服務(wù)子函數(shù)</p><p><b>  {</b></p><p>  uchar Rcv=0;</p><p>  uchar tt[4];</p><p><b>  if(RI)</b></p><p>

118、<b>  {</b></p><p>  RI=0; </p><p><b>  Rcv=SBUF;</b></p><p>  tt[i]=Rcv;</p><p><b>  i++;</b></p><p>  if(tt[0]==10

119、)</p><p><b>  RE=0;</b></p><p><b>  else </b></p><p><b>  RE=1;</b></p><p>  if(tt[0]==11)</p><p><b>  LENG=0;<

120、;/b></p><p><b>  else</b></p><p><b>  LENG=1;</b></p><p><b>  if(i==4)</b></p><p><b>  {</b></p><p><

121、b>  show(tt);</b></p><p><b>  i=0;</b></p><p><b>  }</b></p><p><b>  return;</b></p><p><b>  }</b></p>&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論