基于單片機的多點采集系統(tǒng)_第1頁
基于單片機的多點采集系統(tǒng)_第2頁
基于單片機的多點采集系統(tǒng)_第3頁
基于單片機的多點采集系統(tǒng)_第4頁
基于單片機的多點采集系統(tǒng)_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

中北大學(xué)2013屆畢業(yè)設(shè)計說明書第頁共49頁1引言多點采集,是利用一種裝置,從系統(tǒng)外部多點采集數(shù)據(jù)并輸入到系統(tǒng)內(nèi)部的一個接口。被采集數(shù)據(jù)是已被轉(zhuǎn)換成為電信號的各種物理量,如溫度、風(fēng)速、壓力等采集的數(shù)據(jù)大多是瞬時值,也可是某段時間內(nèi)的一個特征值。準(zhǔn)確的數(shù)據(jù)測量是數(shù)據(jù)采集的基礎(chǔ)。數(shù)據(jù)測量方法有接觸式和非接觸式,檢測元件也多種多樣。不論使用哪種方法和元件,均以不影響被測對象狀態(tài)和測量環(huán)境為前提,以保證采樣數(shù)據(jù)的正確性。在互聯(lián)網(wǎng)行業(yè)快速發(fā)展的今天,多點采集已經(jīng)被廣泛應(yīng)用于互聯(lián)網(wǎng)及分布式領(lǐng)域,多點采集領(lǐng)域已經(jīng)發(fā)生了重要的變化。國內(nèi)外各種多點采集器先后問世將多點采集帶入了一個全新的時代。多點采集系統(tǒng)根據(jù)不同的應(yīng)用需求有不同的定義,這就使得多點采集系統(tǒng)的發(fā)展顯得尤為重要。多點采集系統(tǒng)的任務(wù)就是根據(jù)不同的地理環(huán)境對信號進(jìn)行采集,如實現(xiàn)采集地點的任意性,采集時間的任意性,然后將采集的模擬信號轉(zhuǎn)換成單片機能夠識別的數(shù)字信號,送入單片機進(jìn)行相應(yīng)的處理,得出相應(yīng)的數(shù)據(jù),并將其進(jìn)行顯示或加以通信,以便實現(xiàn)對采集量的實時監(jiān)視和處理。在生產(chǎn)與生活的各個方面多點采集系統(tǒng)幾乎無處不在,凡是有自動監(jiān)控系統(tǒng)的地方都會有多點采集系統(tǒng)的出現(xiàn),隨著工業(yè)生產(chǎn)生活不斷發(fā)展的需要,對多點采集系統(tǒng)的要求越來越高,尤其是根據(jù)不同的需求實現(xiàn)以不同的方式采集數(shù)據(jù)。溫度作為一個與人們生活密切相關(guān)的物理量一直以來都得到各方面的重視,因此本課題以對多點溫度數(shù)據(jù)的采集完成整個設(shè)計,該課題的研究具有較大的發(fā)展前景和一定的經(jīng)濟(jì)價值。2系統(tǒng)設(shè)計方案整個系統(tǒng)采用模塊化設(shè)計,硬件結(jié)構(gòu)由傳感器和單片機、LED數(shù)碼管、蜂鳴器、LED燈等裝置組成,傳感器將物理參量轉(zhuǎn)換為電壓變化并將轉(zhuǎn)換結(jié)果輸送給芯片進(jìn)行處理,芯片將處理結(jié)果發(fā)送給單片機,采用AT89S51讀取芯片的數(shù)據(jù),單片機控制顯示電路實時顯示各路的采集數(shù)據(jù),同時控制報警系統(tǒng)工作,保證系統(tǒng)安全運行單片機還將數(shù)據(jù)通過總線送給上位機,上位機設(shè)有顯示功能、報警功能和設(shè)置下位機報警參數(shù)的功能。下位機有按鍵設(shè)置強制控制。能夠?qū)崟r顯示報警參數(shù)和調(diào)節(jié)報警上限。2.1方案選擇2.1.1測量單元的選擇方案一:本設(shè)計的測溫電路,可以使用熱敏電阻之類的器件作為溫度傳感器,將由溫度變化所引起的電壓變化采集過來,然后進(jìn)行A/D轉(zhuǎn)換,這樣,單片機就可以進(jìn)行數(shù)據(jù)處理,同時,也可以通過上位機或LED屏,將被測溫度實時地顯示出來,這種設(shè)計需要用到A/D轉(zhuǎn)換電路,測溫電路比較麻煩,設(shè)計模塊較大,不利于多點采集。方案二:采用集成芯片和傳感器搭配完成測溫單元。在單片機電路設(shè)計中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只K型熱電偶與MAX6675芯片搭配作為溫度測量模塊。此模塊,可以很容易的將溫度變化轉(zhuǎn)換成電壓變化,通過MAX6675將電壓變化轉(zhuǎn)換成與實際溫度相應(yīng)的數(shù)字量,采用此模塊能滿足設(shè)計要求。從以上兩種方案比較,很容易看出,采用方案二具有很強的優(yōu)越性,模塊電路比較簡單且抗干擾能力強,系統(tǒng)的穩(wěn)定性得到很大的提高,同時下位機軟件設(shè)計也能更加簡潔,單片機運行效率更高,因此采用了方案二作為溫度測量模塊。2.1.2顯示單元的選擇方案一:使用LED靜態(tài)顯示,這種方法編程簡單而且不用另加驅(qū)動模塊,可以直接與單片機管腳相連,能達(dá)到較高的顯示指標(biāo),而且顯示程序簡潔。但是靜態(tài)顯示占用了較多的I/O口。只能應(yīng)用于顯示位數(shù)不多的情況。雖然LED靜態(tài)顯示也能通過外加鎖存器的方法節(jié)約I/O口,但是這種方法必須在每一個顯示位加一個鎖存器鎖存單片機送出的顯示字段,同時還要控制鎖存器的鎖存時間與顯示字段的協(xié)調(diào),這樣就加大了編程的工作量,同時也大大增加了硬件的數(shù)量,擴大了系統(tǒng)的面積,既不實用也不經(jīng)濟(jì)。方案二:使用LED動態(tài)顯示完成顯示單元,動態(tài)掃描在一定程度上節(jié)省了I/O口的使用,減少了硬件的數(shù)量,系統(tǒng)面積得到減小,既經(jīng)濟(jì)又實惠。但這種方法需要加外部驅(qū)動,以此增加輸出電流來更好的驅(qū)動數(shù)碼管顯示,電路雖簡單,但是還需要特定的編程來完成動態(tài)掃描,增加了編程的難度和編程的工作量。通過以上兩種顯示方法的比較,考慮本設(shè)計最終輸出的數(shù)據(jù)位較多,單片機沒有太多的輸出口來完成靜態(tài)顯示,同時考慮到實際要求和設(shè)計的經(jīng)濟(jì)性本,設(shè)計最終決定使用動態(tài)顯示。2.1.3下位機方案選擇單片機自1971年誕生以來經(jīng)過飛速的發(fā)展,單片機技術(shù)已經(jīng)得到了巨大的提高單片機已經(jīng)廣泛應(yīng)用于人類生活的方方面面。單片機的型號也多種多樣,本文設(shè)計采用AT89S51單片機。AT89S51是一個低功耗,高性能CMOS的8位單片機,片內(nèi)含有4kBytes的可反復(fù)擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)以及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISPFlash存儲單元,AT89S51在眾多嵌入式控制應(yīng)用系統(tǒng)中已經(jīng)得到了廣泛應(yīng)用[1]?;诖耍疚牟捎昧薃T89S51作為采集系統(tǒng)的核心,圍繞其完成整個系統(tǒng)的設(shè)計。2.1.4上位機方案選擇目前上位機設(shè)計主要采用VC++編程,VC++的代碼可移植性好,執(zhí)行效率高,是專業(yè)的上位機開發(fā)語言,但是VC++涉及的知識面很廣,不利于在短時間內(nèi)掌握應(yīng)用方法,對于一個比較簡單的人機交互界面設(shè)計,如果采用VC++編程似乎有殺雞用牛刀的感覺。其實上位機的設(shè)計也可以采用VB語言編程,VB與VC++比較有很多不足的地方,但是簡單的設(shè)計VB語言已經(jīng)綽綽有余。對于一個非計算機專業(yè)的學(xué)生來說采用VB具有很多優(yōu)勢。首先VB上手速度快,語言簡單且能夠在較短的時間內(nèi)掌握VB的基本用法,況且采用VB已經(jīng)能完全滿足上位機設(shè)計的需要,基于此本文最終決定上位機采用VB語言設(shè)計。2.2系統(tǒng)總體設(shè)計框圖本文系統(tǒng)總體設(shè)計包括兩部分,一部分為硬件設(shè)計,一部分為軟件設(shè)計。硬件設(shè)計框圖如圖2.1,系統(tǒng)軟件設(shè)計框圖如圖硬件設(shè)計框圖KK型熱電偶K型熱電偶K型熱電偶聲光報警系統(tǒng)AT89S51三路溫度數(shù)據(jù)顯示按鍵開關(guān)MAX66755MAX66755MAX66755串口通信上位機實時采集顯示界面 圖2.1采集系統(tǒng)硬件設(shè)計框圖 2.2.2軟件設(shè)計框圖 NNNNNYYY單片機接受數(shù)據(jù)是否接收到上位機數(shù)據(jù)?第三路聲光報警第二路聲光報警第一路聲光報警串口設(shè)計讀第一路溫度并處理數(shù)據(jù)循環(huán)顯示第一路溫度多次讀第二路溫度并處理數(shù)據(jù)循環(huán)顯示第二路溫度多次循環(huán)顯示第三路溫度多次讀第三路溫度并處理數(shù)據(jù)是否超過報警上限?是否超過報警上限?是否超過報警上限?向上位機發(fā)送數(shù)據(jù)上電復(fù)位 YY 圖2.2采集系統(tǒng)軟件設(shè)計框圖3硬件設(shè)計3.1單片機AT89S513.1.1簡介AT89S51是一種低功耗,高性能CMOS8位單片機,片內(nèi)含有4kBytes可反復(fù)擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)和80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISPFlash存儲單元,功能強大的微型計算機AT89S51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價比的解決方案。AT89S51具有以下特點:40個引腳,4kBytesFlash片內(nèi)程序存儲器(ROM)128bytes的隨機存取數(shù)據(jù)存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5個中斷優(yōu)先級以及2層中斷嵌套中斷,2個16位可編程的定時計數(shù)器,2個全雙工串行通信口,看門狗(WDT)電路和片內(nèi)時鐘振蕩器[2]。此外,AT89S51設(shè)計和配置了振蕩頻率可為0Hz并可通過軟件設(shè)置省電模式。在空閑模式下,CPU暫時停止工作而RAM定時計數(shù)器,串行口,外部中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直到有外部中斷激活或硬件復(fù)位。主要功能特性為:AT89S51兼容MCS-51指令系統(tǒng);4k可反復(fù)擦寫的(>1000次)ISPFlashROM;32個雙向輸入/輸出(I/O)口;4.5-5.5V的工作電壓;2個16位的可編程定時/計數(shù)器;時鐘頻率0-33MHz;全雙工UART串行中斷口線;128×8bit內(nèi)部RAM;2個外部中斷源;低功耗空閑和省電工作模式;中斷喚醒省電模式;看門狗(WDT)電路;靈活的ISP字節(jié)以及分頁編程;雙數(shù)據(jù)寄存器指針。AT89S51單片機與其他品牌的單片機相比有著非常高的性價比高,以及性能穩(wěn)定的特點。(1)51單片機的優(yōu)點如果是作低成本的智能產(chǎn)品,51構(gòu)架單片機的成本優(yōu)勢是無人能敵,比如一片AT89S51和AT89S52單片機的批量價格大概是5元左右,STC89C52單片機的批量價格大概是6元左右,這樣的芯片價格是非常低的。一片普通的74系列通用數(shù)字邏輯芯片大概要1元左右,而一片51單片機內(nèi)部集成有成千上萬個晶體管開關(guān)電路。51構(gòu)架已經(jīng)誕生很多年了,到目前任然具有非常強大的生命力和實用性,自從1976年51構(gòu)架成功面市以來,多少年過去了,從90年代初全新閃存結(jié)構(gòu)的AT89C51要90元一片,到目前的AT89S51只要5元多一片,51依然在大量的使用著使用51單片機能夠非常有效的控制智能產(chǎn)品整機的總體成本,因此51系列單片機還是有著無法替代的重要地位。(2)AT89S51與AT89C51的比較AT89S51相對與AT89C51新增加了很多功能,性能有了很多的提升,價格卻基本保持不變,甚至比89C51更低[3]。AT89S51具有ISP在線編程功能,這個功能的優(yōu)勢在于改寫單片機存儲器內(nèi)的程序時不需要把芯片從工作環(huán)境上拔除,可以在線燒寫,大大的提高了單片機的實用性和工作效率。AT89S51單片機的最高工作頻率為33MHz,89C51的極限工作頻率是24MHZ也就是說S51具有更高工作頻率,從而具有了更快的計算速度和更高的工作效率。AT89S51具有雙工UART串行通道。AT89S51內(nèi)部集成有看門狗計時器,不再需要像89C51那樣外接看門狗計時器單元電路,給單片機應(yīng)用開發(fā)提供了更大的便利。

AT89S51具有雙數(shù)據(jù)指示器。

AT89S51具有電源關(guān)閉標(biāo)識。

AT89S51具有全新的加密算法,這使得對于89S51的解密變?yōu)椴豢赡?,程序的保密性得到了很大的加強,這樣就可以有效的保護(hù)知識產(chǎn)權(quán)不被侵犯。在兼容性方面,AT89S51向下完全兼容51全部字系列產(chǎn)品。例如8051、89C51等產(chǎn)品。就是說不論教科書上采用的單片機是8051還是89C51還是MCS-51等等。在89S51上也一樣可以照常運行,這就是所謂的向下兼容[4]。AT89S51與AT89C51就如同INTEL的P3向P4升級一樣,雖然都可以應(yīng)用Windows98,不過速度是不同的??傊瑹o論是與其他不同品牌同類產(chǎn)品相比,還是與同品牌產(chǎn)品相比都顯示出了AT89S51優(yōu)良的性能,以及更高的性價比。因此AT89S51芯片成為了本系統(tǒng)的首選。AT89S51管腳說明如圖3.1所示:圖3.1AT89S51管腳圖VCC:供電電壓。GND:接地管腳。P0口:P0口是一個8位漏極開路雙向I/O口,每腳可吸收8個TTL門電流。當(dāng)P0口的管腳第一次寫1時,被定義為高阻態(tài)輸入。P0能夠可以用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的八位口線。在FIASH編程時,P0口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗時,P0作為原碼輸出口,此時P0外部必須被拉高。P1口:P1口是一個內(nèi)部提供了上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4個TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入口P1口被外部下拉為低電平時,將會輸出電流,這是由于內(nèi)部上拉電阻的緣故在FLASH編程和校驗時,P1口作為第八位地址接收。P2口:P2口為一個內(nèi)部含有上拉電阻的8位雙向I/O口,P2口緩沖器可接收輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于有內(nèi)部上拉的緣故。當(dāng)P2口用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,P2口輸出是地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容,P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口:P3口管腳是帶內(nèi)部上拉電阻的8位雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸出由于外部下拉為低電平,P3口將輸出電流這是由于上拉電阻的所產(chǎn)生的結(jié)果[5]。3.1.2單片機的基本結(jié)構(gòu)AT89S51單片機基本結(jié)構(gòu)主要包括了以下幾個主要部件:(1)控制器控制器是單片機的指揮控制部件,控制器的主要任務(wù)是識別指令和執(zhí)行指令并根據(jù)指令的性質(zhì)和功能控制單片機各功能部件進(jìn)行工作,從而保證單片機各部分能夠自動而協(xié)調(diào)地工作。單片機執(zhí)行指令是在控制器的控制下進(jìn)行的。首先從程序存儲器中讀出指令,然后送到指令寄存器保存,最后送至指令譯碼器進(jìn)行譯碼,譯碼結(jié)果被送到定時控制邏輯電路,由定時控制邏輯電路產(chǎn)生各種定時信號和控制信號再將各個信號送到單片機的各個部件中去進(jìn)行相應(yīng)的操作。這就是執(zhí)行一條指令的全過程,執(zhí)行程序的過程就是不斷重復(fù)這一過程。控制器主要包括的部分有程序計數(shù)器、程序地址寄存器、指令寄存器IR、指令譯碼器、條件轉(zhuǎn)移邏輯電路以及時序控制邏輯電路。(2)存儲器AT89S51單片機存儲器采用哈佛結(jié)構(gòu),即程序存儲器空間和數(shù)據(jù)存儲器空間截然分開,程序存儲器和數(shù)據(jù)存儲器各有各的尋址方式,尋址空間和控制系統(tǒng)這種結(jié)構(gòu)使單片機面向控制的實際應(yīng)用變得十分方便,在8051/8751中,不僅在片內(nèi)集成了一定容量的程序存儲器和數(shù)據(jù)存儲器以及眾多的特殊功能寄存器,而且還具有非常強的外存儲器的擴展能力,尋址能力分別可達(dá)64KB,尋址和操作非常簡單方便[6]。(3)并行I/O口MCS-51單片機共有4個雙向的8位并行I/O端口,分別記作P0-P3,共有32根口線,各口的每一位均由鎖存器、輸出驅(qū)動器和輸入緩沖器組成[7]。實際上P0-P3已被歸入特殊功能寄存器之內(nèi)。這四個口除了按字節(jié)尋址以外,還可以按位進(jìn)行尋址。由于它們在結(jié)構(gòu)上有一些差異,故各口的性質(zhì)和功能有具有一些差異。(4)時鐘電路與時序時鐘電路用于產(chǎn)生MCS-51單片機工作時所需要的時鐘信號[8]。MCS-51單片機本身就是一個很復(fù)雜的同步時序電路,為保證同步工作方式的實現(xiàn),MCS-51單片機應(yīng)該在唯一的時鐘信號控制下,嚴(yán)格地按照時序執(zhí)行進(jìn)行工作,而時序所研究的是指令執(zhí)行中各個信號的關(guān)系。3.1.3最小系統(tǒng)單片機最小系統(tǒng)包含兩個部分,一部分為復(fù)位電路,一部分為時鐘電路。單片機第九引腳為復(fù)位引腳,當(dāng)該引腳接5V電壓時單片機復(fù)位,單片機從新開始執(zhí)行程序[9]。為了保證可靠地復(fù)位通常VCC與RESET引腳之間要加一個電容。復(fù)位電路如圖3.2所示。單片機最小系統(tǒng)另一部分為時鐘電路,時鐘電路接單片機的18和19引腳AT89S51單片機內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器,該高增益反相放大器的輸入端為芯片引腳19,輸出端為引腳18。這兩個引腳跨接石英晶體振蕩器和微調(diào)電容,就構(gòu)成一個穩(wěn)定的自激振蕩器。在本系統(tǒng)時鐘模塊的設(shè)計中所選用的12MHz的石英晶振,由于12MHz晶體振蕩的每個定時周期為1us,可得到1us的精度由此設(shè)置就可以使單片機在運行時能夠有條不紊。晶振電路如圖3.3所示。圖3.2單片機復(fù)位電路圖3.3單片機晶振電路3.2熱電偶熱電偶是一種測溫元件,它能把溫度信號轉(zhuǎn)換成熱電動勢信號,通過電氣表轉(zhuǎn)換成被測介質(zhì)的實際溫度[10]。熱電偶測溫的基本原理是兩種不同成份的均質(zhì)導(dǎo)體組成閉合回路,當(dāng)兩端存在溫度差時,回路中就會有電流通過,此時兩端之間就會產(chǎn)生電動勢——熱電動勢,這就是所謂的塞貝克效應(yīng)。兩種不同成份的均質(zhì)導(dǎo)體均為熱電極,溫度較高的一端為工作端,溫度較低的一端為自由端,自由端通常處于某個恒定的溫度環(huán)境下。根據(jù)回路產(chǎn)生的熱電動勢與溫度的函數(shù)關(guān)系制成熱電偶分度表。分度表是在自由端溫度為0℃的條件下得到的,不同的熱電偶具有不同的分度表[11]。在熱電偶回路中接入第三種金屬材料時,只要該材料兩個接點的溫度保持相同,熱電偶所產(chǎn)生的熱電勢將保持不變,即回路不受第三種金屬接入的影響。因此,在熱電偶測量溫時,可接入測量儀表,測得熱電動勢后即可知道被測介質(zhì)的實際溫度。熱電偶是工業(yè)中常用的測溫元件,熱電偶具有如下特點:①測量精度高熱電偶與被測對象直接接觸,且熱電偶回路不受接入中間介質(zhì)的影響。②熱電偶熱響應(yīng)時間快:熱電偶對溫度變化反應(yīng)非常靈敏。③測量范圍大:熱電偶從-40——1600℃均可以進(jìn)行連續(xù)測溫[12]。④熱電偶性能可靠,機械強度好。⑤使用壽命長,安裝方便,維護(hù)方便。熱電偶的種類K型(鎳鉻-鎳硅)WRN系列N型(鎳鉻硅-鎳硅鎂)WRM系列E型(鎳鉻-銅鎳)WRE系列J型(鐵-銅鎳)WRF系列T型(銅-銅鎳)WRC系列S型(鉑銠10-鉑)WRP系列R型(鉑銠13-鉑)WRQ系列熱電偶的基本結(jié)構(gòu)包含熱電極,絕緣材料和保護(hù)管三個部分;并且與顯示儀表、記錄儀表或者與計算機等設(shè)備配套使用。在現(xiàn)場使用中根據(jù)不同的環(huán)境,被測介質(zhì)的性質(zhì)等多種因素研制成適合各種環(huán)境的通用熱電偶。熱電偶簡單分為三種類型,分別為裝配式熱電偶,鎧裝式熱電偶和特殊形式熱電偶;按使用的不同環(huán)境細(xì)分有耐高溫?zé)犭娕?,耐磨損熱電偶,耐腐蝕熱電偶,耐高壓熱電偶,隔爆熱電偶,鋁液測溫用熱電偶,循環(huán)硫化床用熱電偶,水泥回轉(zhuǎn)窯爐用熱電偶高溫?zé)犸L(fēng)爐用熱電偶,汽化爐用熱電偶,滲碳爐用熱電偶,銅、鐵及鋼水用熱電偶抗氧化鎢錸熱電偶,真空爐用熱電偶,鉑銠熱電偶等3.2.1熱電偶冷端的溫度補償由于熱電偶的制作材料一般都比較貴重,而測溫點到儀表的距離通常又很遠(yuǎn),為了節(jié)省熱電偶材料,降低系統(tǒng)成本,通常需要采用補償導(dǎo)線把熱電偶的冷端(自由端)延伸到溫度比較穩(wěn)定的控制室,連接到儀表的端子上進(jìn)行冷端補償?shù)潜仨氈赋?,熱電偶補償導(dǎo)線的作用只起延伸熱電極,使熱電偶的冷端移動到控制室的儀表端子上的作用,它本身并不能消除冷端溫度變化對測溫效果的影響并不能起到冷端補償?shù)淖饔肹13]。因此,還需采用其他修正方法來補償冷端溫度T0≠0℃時對測溫的影響。在使用熱電偶補償導(dǎo)線時必須注意所選型號必須與熱電偶相配,且極性不能接錯補償導(dǎo)線與熱電偶連接端的溫度不能超過100℃。熱電偶作為一種主要的測溫元件,具有很多優(yōu)點,熱電偶具有結(jié)構(gòu)簡單、制造容易、使用方便、測溫范圍大、測溫精度高等諸多特點。但是將熱電偶應(yīng)用于基于單片機的嵌入式系統(tǒng)領(lǐng)域時,卻存在著以下幾個問題。①非線性:熱電偶輸出的熱電勢與所測溫度之間的關(guān)系為非線性關(guān)系,因此應(yīng)用在基于單片機的嵌入式系統(tǒng)時就必須進(jìn)行線性化處理。②冷補償:熱電偶輸出的熱電勢為冷端保持為0℃時與測量端的電勢差值,而在實際應(yīng)用中冷端的溫度卻是隨著環(huán)境溫度而變化的故需進(jìn)行冷端補償。③數(shù)字化輸出:與嵌入式系統(tǒng)接口必然要采用數(shù)字化輸出及數(shù)字化接口,而作為模擬小信號測溫元件的熱電偶所產(chǎn)生的信號顯然無法直接滿足這個要求。因此,若將熱電偶應(yīng)用于嵌入式系統(tǒng)時,須進(jìn)行復(fù)雜的信號放大A/D轉(zhuǎn)換、查表線性線、溫度補償以及數(shù)字化輸出接口等軟硬件設(shè)計,如此一來系統(tǒng)結(jié)構(gòu)將十分復(fù)雜,體積與較大,系統(tǒng)成本相應(yīng)升高,非常不利于多點采集系統(tǒng)的設(shè)計,但是如果能將上述問題的解決集成到一個集成電路芯片中,即采用單芯片來完成信號放大、冷端補償、線性化及數(shù)字化輸出功能,則將大大簡化熱電偶在嵌入式領(lǐng)域的應(yīng)用設(shè)計,大大拓寬了熱電偶的使用范圍[14]。

3.2.2K型熱電偶本次設(shè)計對溫度范圍沒有明確的規(guī)定,因此根據(jù)實際情況本次設(shè)計最終決定采用K型熱電偶進(jìn)行設(shè)計,K型熱電偶具有線性度好,熱電動勢較大,靈敏度高穩(wěn)定性和均勻性好,抗氧化能力強,價格便宜等諸多優(yōu)點,也能應(yīng)用于氧化性惰性氣氛中。目前K型熱電偶已經(jīng)廣泛應(yīng)用在工業(yè)的各個方面[15]。K型熱電偶的冷端熱端在不同溫度下產(chǎn)生的電勢差如表3.1所示,在Protues中熱電偶與MAX6675接法如圖3.4所示:圖3.4熱電偶與MAX6675接法表3.1K型熱電偶冷熱端溫度電勢對照表3.3MAX6675芯片3.3.1MAX6675簡介MAX6675是Maxim公司推出一個集成了熱電偶放大器、冷端補償、A/D轉(zhuǎn)換器及SPI串口的熱電偶放大器與數(shù)字轉(zhuǎn)換器的熱電偶處理芯片。MAX6675是一個很復(fù)雜的單片熱電偶數(shù)字轉(zhuǎn)換器,內(nèi)部集成了信號調(diào)節(jié)放大器、12位的模擬/數(shù)字化熱電偶轉(zhuǎn)換器、冷端補償傳感和校正、數(shù)字控制器、1個SPI兼容接口和1個相關(guān)的邏輯控制單元。該器件具有很多優(yōu)點:MAX6675具有簡單的SPI串行口溫度值輸出功能;0℃~+1024℃的測溫范圍;片內(nèi)冷端補償;低功耗特性;12位0.25℃的分辨率;高阻抗差動輸入;熱電偶斷線檢測;單一+5V的電源電壓。工作溫度范圍-20℃~+85℃。MAX6675采用8引腳SO帖片封裝[16]。該器件引腳功能如表3.2所列。器件的引腳排列如圖3.5所示表3.2MAX6675引腳功能圖引腳名稱功能1GND接地端2T-K型熱電偶負(fù)極3T+K型熱電偶正極4VCC正電源端5SCK串行時鐘輸入6CS片選端,CS為低時、啟動串行接口7SO串行數(shù)據(jù)輸出8N.C.空引腳圖3.5MAX6675引腳排列圖3.3.2MAX6675原理MAX6675是通過冷端補償檢測和校正周圍溫度的變化來處理熱電偶信號,該器件可將周圍環(huán)境溫度通過內(nèi)部的溫度檢測二極管轉(zhuǎn)換成溫度補償電壓,以此產(chǎn)生實際熱電偶溫度測量值,MAX6675從熱電偶的輸出和檢測二極管的輸出作為測量電壓該器件內(nèi)部電路將二極管電壓和熱電偶電壓送到ADC中進(jìn)行數(shù)模轉(zhuǎn)換,以計算熱電偶的熱端溫度。當(dāng)熱電偶的冷端與芯片溫度相等時,MAX6675可獲得最佳的測量精度[17]。因此在實際測溫應(yīng)用時,應(yīng)盡避免在MAX6675附近放置發(fā)熱器件或元件,因為這樣會造成冷端誤差。熱電偶的功能是檢測熱、冷兩端溫度的差值從而產(chǎn)生相應(yīng)的熱電勢,熱電偶熱節(jié)點溫度可在0℃~+1023.75℃范圍變化。冷端即安裝MAX6675的電路板周圍溫度,其溫度在-20℃~+85℃范圍內(nèi)變化。當(dāng)冷端溫度波動時,MAX6675仍能精確檢測熱端的溫度變化。在測溫實際應(yīng)用中,芯片自熱將會降低MAX6675溫度測量精度,誤差大小依賴于MAX6675封裝的熱傳導(dǎo)性、安裝技術(shù)和通風(fēng)效果。為降低芯片自熱所引起的測量誤差,可在布線時用大面積接地技術(shù)以此來提高M(jìn)AX6675溫度測量精度MAX6675的測量精度對電源耦合噪聲較敏感。為了降低電源噪聲對測量結(jié)果產(chǎn)生不利影響,可在MAX6675的電源引腳附近接入1只0.1μF陶瓷旁路電容,提高測量精度熱電偶系統(tǒng)的測量精度可通過以下預(yù)防措施來提高測量精度:盡量采用不能從測量區(qū)散熱的大截面導(dǎo)線;如必須采用小截面導(dǎo)線則只能應(yīng)用在測量區(qū)域,并且在無溫度變化率區(qū)域用擴展導(dǎo)線,減少測溫區(qū)傳導(dǎo)出熱量影響測量精度;避免導(dǎo)線的機械擠壓和振動;當(dāng)熱電偶距離較遠(yuǎn)時,應(yīng)該采用雙絞線作熱電偶連線;在溫度額定值范圍內(nèi)可以使用熱電偶導(dǎo)線避免急劇溫度變化在嚴(yán)劣環(huán)境中,應(yīng)該使用合適的保護(hù)套以保證熱電偶導(dǎo)線;僅在低溫和小變化率區(qū)域使用擴展導(dǎo)線;保持熱電偶電阻的事件記錄和連續(xù)記錄。MAX6675內(nèi)部具含有將熱電偶信號轉(zhuǎn)換為與ADC輸入通道兼容電壓的信號調(diào)節(jié)放大器,T+和T-輸入端連接到低噪聲放大器A1,以保證檢測輸入的高精度同時讓熱電偶連接導(dǎo)線與干擾源隔離。熱電偶輸出的熱電勢經(jīng)低噪聲放大器A1放大后再經(jīng)過A2電壓跟隨器緩沖后,被送至ADC通道的輸入端。在將溫度電壓值轉(zhuǎn)換為相等價的溫度值之前,它需要對熱電偶的冷端溫度進(jìn)行補償,冷端溫度即是MAX6675周圍溫度與0℃實際參考值之間的差值。對于K型熱電偶,熱電勢電壓變化率為41μV/℃,電壓可由線性公式Vout=(41μV/℃)×(tR-tAMB)來近似熱電偶的特性。上式中,Vout為熱電偶輸出電壓(mV),tR是測量點溫度tAMB是周圍溫度。MAX6675采用標(biāo)準(zhǔn)的SPI串行外設(shè)總線設(shè)計與MCU接口,且MAX6675只能作為從設(shè)備不能作主設(shè)備。MAX6675的SO端輸出溫度數(shù)據(jù)的格式如表3.3所示,MAX6675SPI接口時序如圖3.6所示。MAX6675從SPI串行接口輸出數(shù)據(jù)的過程如下所述:MCU使片選端CS變低并提供時鐘信號給SCK,由SO讀取測量數(shù)據(jù)。CS變低后將停止任何轉(zhuǎn)換過程;CS從新變高將啟動一個新的轉(zhuǎn)換過程一個完整串行接口讀數(shù)據(jù)操作需16個時鐘周期,在時鐘信號的下降沿讀16個輸出位,輸出數(shù)據(jù)的第1位和第15位是一偽標(biāo)志位,并總為0;第14位到第3位為轉(zhuǎn)換溫度值;第2位平時總為0,當(dāng)熱電偶輸入開放時為高,開放熱電偶檢測電路完全由MAX6675實現(xiàn),為開放熱電偶檢測器操作,T-必須接地,并使接地點盡可能接近GND腳;第1位為低目的為提供MAX6675器件身份碼,第0位為三態(tài)。表3.3MAX6675的SO端輸出溫度數(shù)據(jù)的格式

圖3.6MAX6675SPI接口時序3.4顯示電路設(shè)計3.4.1LED簡介7段LED數(shù)碼顯示管,是在一定形狀的絕緣材料上,利用單只LED燈組合排列成“8”字型的數(shù)碼顯示管,分別引出它們的電極,點亮相應(yīng)的點劃來顯示出0-F的數(shù)字。LED數(shù)碼顯示管根據(jù)LED的接法不同分為共陰數(shù)碼管和共陽數(shù)碼管兩類,了解LED的這些特性,對編程實現(xiàn)數(shù)碼顯示功能是非常重要的,因為不同類型的數(shù)碼管除了它們的硬件電路有所差異外,使用的編程方法也是有一些不同的。圖3.7是共陰和共陽極數(shù)碼管的內(nèi)部電路,它們的發(fā)光原理是一樣的,只是它們的電源極性不同。將多只LED數(shù)碼顯示管的陰極連在一起即為共陰式數(shù)碼管,而將多只LED數(shù)碼顯示管的陽極連在一起即為共陽式數(shù)碼管。以共陰式數(shù)碼管為例,如把陰極接地,在相應(yīng)段的陽極接上正電源,該段即會發(fā)光。當(dāng)然,LED的電流通常較小一般均需在回路中接上限流電阻。假如我們將"b"和"c"段接上正電源,其它端接地或懸空,那么"b"和"c"段發(fā)光,此時,數(shù)碼管顯示將顯示數(shù)字“1”。而將"a""b""d"、"e"和"g"段都接上正電源,其它引腳都懸空,此時數(shù)碼管將顯示“2”以此類推,其它字符的顯示原理類同。共陽極數(shù)碼管顯示原理與共陰極數(shù)碼管顯示方式非常相似,當(dāng)把共陽極端接上電源,其他端接地,此時數(shù)碼管將全亮,顯示數(shù)字為8。圖3.7數(shù)碼管共陰極、共陽極接法數(shù)碼管的兩種接法顯示譯碼如表3.4所示:表3.4數(shù)碼管顯示譯碼表顯示字符共陰極段碼共陽極段碼顯示字符共陰極段碼共陽極段碼03FHC0H87FH80H106HF9H96FH90H25BHA4HA77H88H34FHB0Hb7CH83H466H99Hc39HC6H56DH92Hd5EHA1H67DH82HE79H86H707HF8HF71H8EH3.4.2LED顯示方式N個LED顯示塊會有N條位選線和8×N根段碼線。段線控制顯示的字型,位選線控制該顯示位的亮或暗。LED數(shù)碼管的顯示方式可以分為靜態(tài)顯示和動態(tài)顯示兩種方式。1.靜態(tài)顯示方式將數(shù)碼管的公共端連接在一起(接地或+5V)。每位的段碼線分別與一個8的鎖存器輸出相連。顯示字符一確定,相應(yīng)鎖存器的段碼輸出將維持不變,將要顯示的字符鎖存到鎖存器中,然后通過數(shù)碼管進(jìn)行顯示,直到送入另一個段碼為止。靜態(tài)顯示具有顯示亮度高的特點,但是需要硬件配合,多位顯示不利于采取這種方法。圖3.8是4位靜態(tài)LED顯示器電路。該電路各位可獨立顯示。圖3.84位靜態(tài)LED顯示器電路2.動態(tài)顯示方式將多位數(shù)碼管的段碼線并在一起,由一個8位I/O口控制形成段碼線的多路復(fù),各位的公共端分別由相應(yīng)的I/O線控制,形成對各位的亮與暗分時選通。圖3.9是4位8段LED動態(tài)顯示電路。其中的段碼線占用一個8位I/O口,而位選線占用一個4位I/O口[7]。圖3.94位動態(tài)LED顯示電路由于本次設(shè)計中共使用了三個四位八段的數(shù)碼作為顯示模塊,如果采用靜態(tài)顯示將占用較大資源,因此,本設(shè)計中將采用動態(tài)顯示模式。3.4.3LED與單片機接口電路本次設(shè)計中的LED與單片機的接口電路如圖3.10所示:圖3.10LED與單片機的接口電路3.5報警電路設(shè)計報警電路在許多設(shè)計中已經(jīng)廣泛應(yīng)用,報警電路能夠?qū)ΜF(xiàn)場的實際情況進(jìn)行實時的監(jiān)控,當(dāng)工作環(huán)境發(fā)生變化且超過了預(yù)先設(shè)定的值,報警器能夠及時工作,提醒人們環(huán)境的變化。報警電路在人們生活的方方面面已經(jīng)得到了廣泛的應(yīng)用。尤其是在工業(yè)領(lǐng)域,報警電路的應(yīng)用幾乎無處不在。本次設(shè)計是對三個點的溫度數(shù)據(jù)進(jìn)行實時的采集和顯示,設(shè)置溫度的上限報警電路是該系統(tǒng)不可或缺的部分,如果缺少了報警電路,該系統(tǒng)的可用性將大打折扣。為此本次設(shè)計采用了聲光報警系統(tǒng),報警系統(tǒng)包括一個蜂鳴器和三個二極管燈。其中蜂鳴器為公用器件,無論那一路采集到的溫度值超過所設(shè)定的報警值時,蜂鳴器將發(fā)出報警聲音。但是對于多路的溫度采集系統(tǒng)來說,一個蜂鳴器還遠(yuǎn)遠(yuǎn)不夠。當(dāng)蜂鳴器發(fā)出報警聲時,人們還不能迅速判斷是那一路溫度超過了報警上限值。基于此,在報警電路中增加了三個二極管燈作為報警的指示燈,三個二極管燈分別位于三個四位數(shù)碼管旁邊,當(dāng)采集的溫度超過報警上限時,蜂鳴器會立刻發(fā)出報警音,同時相應(yīng)的二極管也將發(fā)光,由于二極管位于數(shù)碼顯示管的旁邊,人們能夠非常方便的判斷是那一路溫度超過了上限值大大提高了人們的反應(yīng)時間,同時也提高了該系統(tǒng)的實用性和工作效率。報警電路設(shè)計圖如圖3.11所示。圖3.11報警電路圖該報警電路包含了一個開關(guān),一個三極管(NPN)和兩個按鈕。開關(guān)用于控制整個報警電路的工作狀態(tài),開關(guān)按下時報警系統(tǒng)停止工作,開關(guān)彈起時報警系統(tǒng)恢復(fù)工作。三級管用于驅(qū)動蜂鳴器,本設(shè)計中采用的是9013(NPN)三極管,但是在硬件調(diào)試中卻遇到了諸多麻煩,尤其是已經(jīng)做出了PCB板,改電路圖顯得麻煩。但是值得注意到是在Protues中仿真時用9013不會遇到問題,其能順利的驅(qū)動蜂鳴器工作,但是實際中卻不是如此,使用9013在硬件實際電路中,一個單片機引腳是無法驅(qū)動蜂鳴器工作的,蜂鳴器的聲音極其微小,此時只有加上拉電阻以加大單片機引腳所輸出的電流來驅(qū)動蜂鳴器正常工作,也可以用單片機兩個引腳來同時驅(qū)動蜂鳴器。這樣單片機有限的輸入輸出口就被浪費。因此強烈建議使用9015(PNP)三極管來驅(qū)動蜂鳴器工作,如果使用9015單片機只需要一個引腳就能控制和驅(qū)動蜂鳴器正常工作了,而且蜂鳴器發(fā)出的聲音非常明亮。本次設(shè)計中由于沒有找到9015而使用了9013來驅(qū)動蜂鳴器工作,導(dǎo)致了非常多的麻煩,具體情況是已經(jīng)做好的PCB板被割開,以至于被迫連導(dǎo)線,嚴(yán)重破壞了PCB的美觀以及整個系統(tǒng)的穩(wěn)定性。因此建議使用單片機驅(qū)動蜂鳴器時最好使用9015但是前提是蜂鳴器是5V的有源蜂鳴器,如果蜂鳴器是12V的蜂鳴器那么最好使用9013驅(qū)動,因為9013只需要單片機的一個引腳就完全能夠三極管工作。報警系統(tǒng)中包含了兩個按鍵,這兩個按鍵分別與單片機的P3.2和P3.3口連接,此次單片機的P3.2和P3.3口作為輸入引腳。其中與P3.2口相連的按鍵作為報警上限的切換顯示按鍵,當(dāng)按下該鍵時三個四位數(shù)碼管停止溫度顯示,同時第一個四位數(shù)碼管顯示第一路的上限報警溫度,當(dāng)再一次按下該鍵時,第二個四位數(shù)碼管顯示第二路所設(shè)置的上限報警溫度,當(dāng)再按一次該鍵時,第三個四位數(shù)碼管顯示第三路所設(shè)置的上限報警溫度。當(dāng)再按一次時停止報警上限的顯示功能,三個四位數(shù)碼管同時恢復(fù)實時顯示三路溫度的實時采集到的數(shù)據(jù)。與P3.3連接的按鍵作為下位機調(diào)節(jié)報警上限的調(diào)節(jié)開關(guān),其與P3.2口相連的按鍵配合使用,當(dāng)P3.2口的鍵按下時,第一個四位數(shù)碼管開始顯示第一路報警上限時,再按下P3.2口相連的鍵,此時報警上限值進(jìn)行加一過程,當(dāng)再次按下該鍵是,報警上限再加一,通過P3.2與P3.3口的按鍵配合使用能夠在有限的范圍了對報警上限進(jìn)行調(diào)節(jié),但是很難滿足實際的要求,因為該系統(tǒng)的溫度數(shù)據(jù)范圍比較大,范圍在0℃-1000℃如果通過按鍵加一來調(diào)節(jié)將顯得十分繁瑣,且設(shè)計時沒有設(shè)計按鍵減一的功能一旦跳過需要設(shè)定的值時就必須復(fù)位單片機進(jìn)行重新調(diào)節(jié),這樣調(diào)節(jié)操作將變得十分惱人。由于單片機輸入輸出口的數(shù)量有限,本次設(shè)計用一個單片機控制了多位的顯示電路和多路的采集口,而且還附帶了三路的報警電路,占用了很大的輸入輸出口,單片機的輸入與輸出口消耗殆盡?;诖?,下位機原計劃設(shè)計的通過按鍵實現(xiàn)報警上限的按鍵減一的功能也因此取消,因此通過下位機來調(diào)節(jié)報警上限功能就變得十分有限,為使本次設(shè)計顯得有意義和實用,最終采用了上位機與下位機共同控制報警上限的設(shè)置和顯示。方案的功能是下位機能通過按鍵來實時顯示所設(shè)定的報警上限,上位機實時采集報警上限值,并且上位機能夠任意設(shè)定三路溫度的報警上限值,然后通過串口發(fā)送給下位機,上位機再通過下位機發(fā)送的數(shù)據(jù)從新在采集界面顯示新的設(shè)定值,這樣就保證了整個報警系統(tǒng)的實用性,提高了系統(tǒng)的工作效率。該方案能基本滿足實際應(yīng)用的要求。其中的報警比較程序以及按鍵調(diào)節(jié)程序?qū)⒃谙鹿?jié)的下位機程序中一一介紹。4串口通信設(shè)計4.1MAX232原理MAX232芯片是美信(MAXIM)公司專為RS-232標(biāo)準(zhǔn)串口設(shè)計的單電源的電平轉(zhuǎn)換芯片,芯片使用+5v單電源供電。MAX232芯片是MAXIM公司生產(chǎn)的包含有兩路接收器和驅(qū)動器的IC芯片,適用于各種EIA-232C和V.28/V.24的通信接口,其內(nèi)部含有一個電源電壓變換器可以把輸入的+5V電源電壓變換成RS-232輸電平所需的±12V電壓[18]。MAX232具有功耗低、價格便宜、單一電源供電的優(yōu)點。MAX232芯片引腳結(jié)構(gòu)如圖4.1所示:圖4.1MAX232引腳圖MAX232內(nèi)部結(jié)構(gòu)大致可分為以下三個部分:第一部分是電荷泵電路。由1、2、3、4、5、6腳和4只電容共同構(gòu)成。功能是產(chǎn)生+12v和-12v兩個電源電壓,提供給RS-232串口電平通信的需要。第二部分是數(shù)據(jù)轉(zhuǎn)換通道。由7、8、9、10、11、12、13、14腳構(gòu)成兩個數(shù)據(jù)通道。其中13腳(R1IN)、12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)為第一數(shù)據(jù)通道。8腳(R2IN)、9腳(R2OUT)、10腳(T2IN)、7腳(T2OUT)為第二數(shù)據(jù)通道。TTL/CMOS電平數(shù)據(jù)從T1IN、T2IN輸入轉(zhuǎn)換成RS-232電平數(shù)據(jù)從T1OUT、T2OUT送到電腦DB9插頭DB9插頭的RS-232數(shù)據(jù)從R1IN、R2IN輸入轉(zhuǎn)換成TTL/CMOS數(shù)據(jù)后從R1OUT,R2OUT輸出。第三部分是供電。15腳GND、16腳VCC(+5v)。為了保證可靠地通信可以在15腳和16腳增加一個電容[19]。本次設(shè)計中下位機中的MAX232的接法如圖4.2所示[20]圖4.2MAX232的接法4.2串口協(xié)議設(shè)計對于點對點之間的通信,按消息傳送的方向與時間關(guān)系,通信方式可分為單工通信、半雙工通信及全雙工通信三種方式[21]。單工通信方式所謂單工通信,是指消息只能單個方向傳輸?shù)墓ぷ鞣绞?。例如遙控、遙測就是單工通信方式,單工通信信道是單向信道,發(fā)送端和接收端的身份是固定的發(fā)送端只能發(fā)送信息,不能接收信息;接收端只能接收信息,但是不能發(fā)送信息,數(shù)據(jù)信號僅從一端傳送到另一端,即信息流的方向是單方向的。這種通信方式可以實現(xiàn)雙向的通信,但不能在兩個方向上同時進(jìn)行,必須輪流交替地進(jìn)行。也就是說,通信信道的每一段都可以是發(fā)送端,也可以是接收端但同一時刻里,信息只能有一個傳輸?shù)姆较騕22]。如日常生活中的例子有步話機通信等。全雙工通信所謂的全雙工即FullduplexCommunication,是指在通信的任意時刻,線路上存在A到B和B到A的雙向信號傳輸通道。全雙工通信允許數(shù)據(jù)同時在兩個方向上同時傳輸,又稱為雙向同時通信,即通信的雙方可以同時發(fā)送和接收數(shù)據(jù)。在全雙工方式下,通信系統(tǒng)的每一端都設(shè)置了發(fā)送器和接收器,因此,能控制數(shù)據(jù)同時在兩個方向上發(fā)送與接收。全雙工方式無需進(jìn)行方向的切換,因此沒有切換操作所產(chǎn)生的時間延遲,這對那些不能有時間延誤的交互式應(yīng)用(例如遠(yuǎn)程監(jiān)測和控制系統(tǒng))十分有利。這種方式要求通訊雙方均有發(fā)送器和接收器,同時,需要2根數(shù)據(jù)線傳送和接收數(shù)據(jù)信號[23]。(可能還需要控制線和狀態(tài)線,以及地線)。理論上,全雙工傳輸可以提高網(wǎng)絡(luò)效率,但是實際上仍是配合其他相關(guān)設(shè)備才能有用。例如必須選用雙絞線的網(wǎng)絡(luò)纜線才可以進(jìn)行全雙工傳輸,而且中間所接的集線器(HUB),也要能全雙工傳輸;最后,所采用的網(wǎng)絡(luò)操作系統(tǒng)也得支持全雙工作業(yè),如此才能真正發(fā)揮全雙工傳輸?shù)耐?。比如,計算機主機用串行接口連接顯示終端,而顯示終端帶有鍵盤。這樣一方面鍵盤上輸入的字符送到主機內(nèi)存;另一方面,主機內(nèi)存的信息可以送到屏幕顯示通常,往鍵盤上打入1個字符以后,先不顯示,計算機主機收到字符后立即回送到計算機終端,然后終端再把這個字符顯示出來[24]。這樣,前一個字符的回送過程和后一個字符的輸入過程是同時進(jìn)行的,即工作于全雙工方式。本系統(tǒng)采用異步串行通信方式,約定雙方的通信協(xié)議如下:波特率:2400b/s。信息格式:8位數(shù)據(jù),1位停止位,無奇偶校驗位。傳送方式:PC機采用查詢方式接收數(shù)據(jù),89S51采用查詢方式發(fā)送數(shù)據(jù)采用串口中斷的方式接收數(shù)據(jù)。89S51發(fā)送給上位機的數(shù)據(jù)中包含一個校驗數(shù)據(jù)“10”上位機每接收一次數(shù)據(jù)都會判斷校驗數(shù)據(jù)的存在,如果接收不到校驗數(shù)據(jù),上位機將停止采集并提示通信異常[25]。串口初始化程序如下:MOVSCON,#50H ;串行口工作于方式一MOVTMOD,#20H;定時器T1工作于模式2MOVTH1,#0F3H;波特率設(shè)置為2400b/sMOVTL1,#0F3HSETBTR1;啟動定時器T1SETBEA;開總中斷SETBES;開串口中斷4.3MSCOMM控件VB中的MSComm控件通過串行端口傳輸和接收數(shù)據(jù),為應(yīng)用程序提供串行口通訊功能,MSComm控件在串口編程時非常方便,程序員不必去花時間去了解較為復(fù)雜的API函數(shù)而且在VC、VB、Delphi等語言中均可使用[26]。Mscomm是Microsoft公司提供的簡化Windows下串行通信編程的ActiveX控件,它為應(yīng)用程序提供了通過串行接口收發(fā)數(shù)據(jù)的簡便方法。具體的來說,它提供了兩種處理通信問題的方法一是事件驅(qū)動(Event-driven)方法,一是查詢法。事件驅(qū)動通訊是處理串行端口交互作用的一種非常有效的方法。在許多情況下在事件發(fā)生時需要得到通知,例如,在串口接收緩沖區(qū)中有字符,或者Carrie(CD)或RTS線上一個字符到達(dá)或一個變化發(fā)生時。在這些情況下,可以用MSComm控件的OnComm事件捕獲并處理這些通訊事件。OnComm事件還可以用來檢查和處理通訊錯誤,同時產(chǎn)生所有通訊事件和通訊錯誤的列表,參閱CommEvent屬性。在編程過程中就可以在OnComm事件處理函數(shù)中加入自己的處理代碼。這種方法的優(yōu)點是程序響應(yīng)及時性好可靠性高。每個MSComm控件對應(yīng)著一個串行端口。如果應(yīng)用程序需要訪問多個串行端口,必須使用多個MSComm控件。

查詢方式實質(zhì)上還是事件驅(qū)動,但在有些情況下,這種方式顯得更為便捷和有效在程序的每個關(guān)鍵功能之后,可以通過檢查CommEvent屬性的值來查詢事件和錯誤。如果應(yīng)用程序較小,并且是自保持的,這種方法可能是更可取的。例如如果寫一個簡單的電話撥號程序,則沒有必要對每接收一個字符都產(chǎn)生事件因為唯一等待接收的字符是調(diào)制解調(diào)器的“確定”響應(yīng)[27]。MSComm的常用屬性如下:MSComm的屬性

Commport:設(shè)置或返回通信串口號。如設(shè)成1(默認(rèn)值),表示對串口Com1進(jìn)行操作

Settings:以字符串的形式設(shè)置或返回串口通信參數(shù)。包括串口通訊方式例如波特率,奇偶校驗,數(shù)據(jù)位長度、停止位等。其默認(rèn)值是“9600,N,8,1”,表示串口比特率是9600bit/s,不作奇偶校驗,8位數(shù)據(jù)位,1個停止位。

Portopen:設(shè)置或返回串口狀態(tài)。值為True時表示打開串口,值為False時表示關(guān)閉串口。

InputMode:設(shè)置或返回接收數(shù)據(jù)的類型。若值為0,則表示以文本形式讀取如果值為1,則表示以二進(jìn)制形式讀取。

Inputlen:設(shè)置或返回一次從接收緩沖區(qū)中讀取字節(jié)數(shù)量。

InBufferSize:設(shè)置或返回接收緩沖區(qū)的大小,缺省值為1024字節(jié)。

InBufferCount:設(shè)置或返回接收緩沖區(qū)中等待計算機接收的字符個數(shù)。當(dāng)將其值設(shè)為0時,則輸入寄存器將被清空。

Input:從接收緩沖區(qū)中讀取數(shù)據(jù)并清空該緩沖區(qū),該屬性設(shè)計時無效,運行時只讀。OutBufferSize:設(shè)置或返回發(fā)送緩沖區(qū)的大小,默認(rèn)值為512字節(jié)。

OutBufferCount:設(shè)置或返回發(fā)送緩沖區(qū)中等待計算機發(fā)送的字符數(shù)。當(dāng)將其值設(shè)為0時,則輸出寄存器將被清空。

Output:向發(fā)送緩沖區(qū)發(fā)送數(shù)據(jù),該屬性設(shè)計時無效,運行時只能讀。

Rthreshold:該屬性為一閥值。當(dāng)接收緩沖區(qū)中字符數(shù)達(dá)到該值時,MSComm控件設(shè)置Commevent屬性為ComEvReceive,并產(chǎn)生OnComm事件。用戶可在OnComm事件處理程序中進(jìn)行相應(yīng)處理。若Rthreshold屬性設(shè)置為0,則不會產(chǎn)生OnComm事件例如用戶希望接收緩沖區(qū)中達(dá)到一個字符就接收一個字符,Rthreshold可以設(shè)置為1。這樣接收緩沖區(qū)中接收到一個字符,就產(chǎn)生一次OnComm事件。

Sthreshold:該屬性亦為一閥值。當(dāng)發(fā)送緩沖區(qū)中字符數(shù)小于該值時,MSComm控件設(shè)置Commevent屬性為ComEvSend,并產(chǎn)生OnComm事件。若Sthreshold屬性設(shè)置為0則不產(chǎn)生OnComm事件。要特別注意的是僅當(dāng)發(fā)送緩沖區(qū)中字符數(shù)小于該值的瞬間才產(chǎn)生OnComm事件,其后就不再產(chǎn)生OnComm事件。Sthreshold設(shè)置為3僅當(dāng)發(fā)送緩沖區(qū)中字符數(shù)從3降為2時,MSComm控件設(shè)置Commevent屬性ComEvSend,同時產(chǎn)生OnComm事件,如發(fā)送緩沖區(qū)中字符始終為2,則不會再產(chǎn)生OnComm事件。這就避免了發(fā)送緩沖區(qū)中數(shù)據(jù)未發(fā)送完就反復(fù)發(fā)生。CommEvent:這是一個非常重要的屬性。該屬性設(shè)計時無效,運行時只能讀。一旦串口發(fā)生通信事件或產(chǎn)生錯誤,依據(jù)產(chǎn)生的事件和錯誤,MSComm的CommEvent屬性賦不同的代碼,同時產(chǎn)生OnComm事件。用戶程序就可在OnComm事件處理程序中針對不同的代碼,進(jìn)行相應(yīng)的處理。5結(jié)論在整個設(shè)計過程,經(jīng)過反復(fù)思考和不斷修改,將所遇到的問題一一解決,最終通過了軟件和硬件的全部調(diào)試,所做出的實物已經(jīng)能達(dá)到設(shè)計目的,通過本次設(shè)計我對89S51單片機的引腳功能,指令系統(tǒng),單片機編程,用VB構(gòu)成簡易的人機交互界面的方法有了更深的了解,同時對protel,keil等軟件的運用也更加熟練。在本次設(shè)計中我深深的感覺到只有自己動腦去設(shè)計,遇到問題后,敢于解決問題才對知識有更為深刻的理解,才能把別人的東西變成自己的知識,然后熟練運用在設(shè)計中難免會遇到種種困難,但是遇到困難不能放棄,只要堅持不懈,困難終將被解決。在本次設(shè)計中的軟件調(diào)試時遇到了不少問題,尤其是在經(jīng)過好長一段時間的調(diào)試,問題任然沒有得到解決時,有過要放棄的想法,但是后來通過不斷查閱資料,問題都得到了解決。在硬件的調(diào)試過程中的問題更是有增無減,但是所有的問題最終都得到了解決。通過本次設(shè)計我收獲很多。6軟件編程6.1下位機程序設(shè)計ORG0000HJMPMAINORG0023HJMPSEE;串口中斷服務(wù)程序TAB:DB3FH,06H,5BH,4FH,66H,6DHDB7DH,07H,7FH,6FH;0-9顯示的段碼MAIN:MOVDPTR,#TABSCKBITP1.1;MAX6675芯片的時鐘信號引腳SOBITP1.0;MAX6675數(shù)據(jù)輸出引腳DATAHDATA40H;MAX6675高八位輸出數(shù)據(jù)DATALDATA41H ;MAX6675低八位輸出數(shù)CLRP1.5 ;三路報警控制引腳清零CLRP1.6CLRP1.7MOVSCON,#50H ;串口工作于方式1MOVTMOD,#20H ;定時器T1工作于模式2MOVTH1,#0F3H ;波特率2400b\sMOVTL1,#0F3H SETBTR1 ;開定時器T1SETBEA;總中斷開SETBES;開串口中斷 MOV70H,#0 ;三路報警初始溫度設(shè)置 MOV71H,#200 MOV72H,#0 MOV73H,#200 MOV74H,#0 MOV75H,#200H1: ACALLTIAOJIE ;按鍵調(diào)節(jié)子程序調(diào)用CLRP1.2 ;讀第一路數(shù)據(jù)子程序CLRSCKSETBSCKCLRAMOVR7,#04H;讀高四位RDDATAH:MOVC,SOSETBSCKNOPRLCACLRSCKDJNZR7,RDDATAHMOVDATAH,AMOVR7,#08H;讀低8位溫度數(shù)據(jù)RDDATAL:MOVC,SORLCASETBSCKNOPCLRSCKDJNZR7,RDDATALMOVDATAL,ASETBP1.2 ;第一路數(shù)據(jù)讀取完成CLRCMOV55H,#250;第一路循環(huán)顯示250次SUBBA,#11 ;第一路初始溫度修正MOVDATAL,AMOVA,DATAHSUBBA,#00HMOVDATAH,AMOVA,DATALACALLXIUZHI;0-1000范圍類整體修正CLRC ;第一路報警上限比較 MOVA,40H CJNEA,70H,B1 MOVA,41H CJNEA,71H,B1JMPB10B1: JNCB10CLRP1.5 CLRP2.7JMP B11B10:SETBP1.5 SETBP2.7B11:M05:MOV60H,#4M1:MOV20H,#0FEH ;顯示程序入口參數(shù)位選1 MOV21H,#0FDH ;位選2 MOV22H,#0FBH ;位選3 MOV23H,#0F7H ;位選4 ACALLXIANSHIMOV67H,42HMOV66H,43H SETBP0.3 DJNZ60H,M1 DJNZ55H,M05MOV29H,#250H2:CLRP1.3 ;讀第二路溫度數(shù)據(jù)CLRSCKSETBSCKCLRAMOVR7,#04HRDATAH:MOVC,SOSETBSCKNOPRLCACLRSCKDJNZR7,RDATAHMOVDATAH,AMOVR7,#08HRDATAL:MOVC,SORLCASETBSCKNOPCLRSCKDJNZR7,RDATALMOVDATAL,ASETBP1.3 ;第二路溫度數(shù)據(jù)讀取完CLRCMOV29H,#250;第二路循環(huán)顯示250次SUBBA,#12 ;第二路初始溫度修正入口MOVDATAL,AMOVA,DATAHSUBBA,#00HMOVDATAH,AMOVA,DATALACALLXIUZHICLRC ;第二路報警上限比較 MOVA,40H CJNEA,72H,B2 MOVA,41H CJNEA,73H,B2JMPB20B2: JNCB20CLRP1.6 CLRP2.7JMP B22B20:SETBP1.6 SETBP2.7B22:MOV61H,#4M2:MOV20H,#0EFH ;顯示程序入口參數(shù)位選1 MOV21H,#0DFH ;位選2 MOV22H,#0BFH ;位選3 MOV23H,#07FH ;位選4 ACALLXIANSHI MOV51H,42HMOV50H,43HSETBP0.7 DJNZ61H,M2 DJNZ29H,B22MOV55H,#250 MOV69H,#250H3:CLRP1.4 ;讀取第三路溫度數(shù)據(jù)CLRSCKSETBSCKCLRAMOVR7,#04HRATAH:MOVC,SOSETBSCKNOPRLCACLRSCKDJNZR7,RATAHMOVDATAH,AMOVR7,#08HRATAL:MOVC,SORLCASETBSCKNOPCLRSCKDJNZR7,RATALMOVDATAL,ASETBP1.4 CLRC ;第三路溫度采集完成MOV19H,#250SUBBA,#15 ;第三路初始溫度修正MOVDATAL,AMOVA,DATAHSUBBA,#00HMOVDATAH,AMOVA,DATALACALLXIUZHICLRC MOVA,40H ;第三路報警上限比較CJNEA,74H,B3 MOVA,41H CJNEA,75H,B3JMPB30B3:JNCB30CLRP1.7 CLRP2.7JMP B33B30:SETBP1.7 SETBP2.7B33:MOV68H,#4B68:MOV20H,#0EFH ;顯示程序入口參數(shù)位選1 MOV21H,#0DFH ;位選2 MOV22H,#0BFH ;位選3 MOV23H,#07FH ;位選4 MOVR0, 40H ; BCD轉(zhuǎn)換入口 MOVR1, 41H ; ACALLHEX2BCD MOV42H,R4 ;BCD轉(zhuǎn)換出口 MOV43H,R3 MOV53H,42HMOV52H,43H MOVR5,42H ;BCD碼顯示入口MOVR4,20HMOVR6,21HACALLXSHI2MOVR5,43HMOVR4,22HMOVR6,23HACALLXSHI2SETBP3.7 DJNZ68H,B68DJNZ19H,B33 ;循環(huán)顯示第三路溫度值A(chǔ)CALLWEICLRESACALLFASONG ; 向上位機實時發(fā)送三路溫度值 ACALLBOJINGI ; 向上位機實時發(fā)送三路報警溫度值 ACALLWEIACALLFASONGMOV56H,#10 ;通信狀態(tài)識別標(biāo)志 MOVR3,56H ACALLSENDH107:SETBESJMPH1END6.2上位機程序設(shè)計上位機編程采用VB語言編寫,上位機程序如下所示:PrivateSubForm_Load();上位機窗口設(shè)計Image8.Visible=FalseImage7.Visible=FalseWindowsMediaPlayer1.Settings.volume=0;上位機報警音量為0WindowsMediaPlayer2.Settings.volume=0WindowsMediaPlayer3.Settings.volume=0Image9.Visible=FalseImage10.Visible=TrueLabel12.Visible=FalseLabel13.Visible=FalseLabel14.Visible=FalseSS.Visible=FalseSS1.Visible=Falsess2.Visible=FalseCommand5.Visible=FalseEndSubPrivateSubMSComm1_OnComm();接收下位機發(fā)送的數(shù)據(jù) Dimbuf(1To25);接收數(shù)據(jù)數(shù)組Dimav(1To13)DimW(1To6)For(i=1;i<=25;i++){buf(i)=MSComm1.Input};接收25個字節(jié)的數(shù)據(jù)a=Asc(buf(1)) ;將接收的25個數(shù)據(jù)的ASCAII碼轉(zhuǎn)換成原始數(shù)據(jù)中間省略f=Asc(buf(12)) av(1)=Asc(buf(13));中間省略部分av(13)=Asc(buf(25))s.Text=a&b&c&d;第一路采集溫度顯示r.Text=e&f&g&h;第二路采集溫度顯示Text2.Text=i&j&k&m ;第三路采集溫度顯示B4.Text=av(13) B1.Text=av(1)&av(2)&av(3)&av(4) ;第一路采集報警溫度顯示B2.Text=av(5)&av(6)&av(7)&av(8);第二路采集報警溫度顯示B3.Text=av(9)&av(10)&av(11)&av(12);第三路采集報警溫度顯示W(wǎng)(1)=a*1000+b*100+c*10+dW(2)=e*1000+f*100+g*10+hW(3)=i*1000+j*100+k*10+mW(4)=av(1)*1000+av(2)*100+av(3)*10+av(4)W(5)=av(5)*1000+av(6)*100+av(7)*10+av(8)W(6)=av(9)*1000+av(10)*100+av(11)*10+av(12)Image1.Visible=FalseImage2.Visible=FalseImage3.Visible=FalseImage4.Visible=FalseImage5.Visible=FalseImage6.Visible=FalseWindowsMediaPlayer1.Settings.setMode"loop",TrueIfW(1)>=W(4)Then;第一路上位機報警Image2.Visible=TrueWindowsMediaPlayer1.Controls.playWindowsMediaPlayer1.Settings.setMode"loop",TrueElseImage1.Visible=TrueWindowsMediaPlayer1.CloseEndIfIfW(2)>=W(5)Then ;第二路上位機報警Image4.Visible=TrueWindowsMediaPlayer2.Controls.playElseImage3.Visible=TrueWindowsMediaPlayer2.CloseEndIfIfW(3)>=W(6)Then ;第三路上位機報警Image6.Visible=TrueWindowsMediaPlayer3.Controls.playElseImage5.Visible=TrueWindowsMediaPlayer3.CloseEndIfEndSubPrivateSubCommand1_Click()s.Text=""r.Text=""MSComm1.PortOpen=TrueEndSubPrivateSubCommand2_Click()Image7.Visible=TrueImag

溫馨提示

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

評論

0/150

提交評論