小區(qū)交換站供熱系統(tǒng)數(shù)據(jù)采集模塊的設計本科畢業(yè)設計論文_第1頁
小區(qū)交換站供熱系統(tǒng)數(shù)據(jù)采集模塊的設計本科畢業(yè)設計論文_第2頁
小區(qū)交換站供熱系統(tǒng)數(shù)據(jù)采集模塊的設計本科畢業(yè)設計論文_第3頁
小區(qū)交換站供熱系統(tǒng)數(shù)據(jù)采集模塊的設計本科畢業(yè)設計論文_第4頁
小區(qū)交換站供熱系統(tǒng)數(shù)據(jù)采集模塊的設計本科畢業(yè)設計論文_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本科畢業(yè)設計第55頁共55頁1引言1.1課題研究的意義和目的以往,我國北方大多采用分散供熱的方式。但是,隨著計算機技術的發(fā)展以及人們節(jié)能降耗和環(huán)保意識的增強,分散供暖方式逐漸被集中供暖方式所取代。在供熱系統(tǒng)中,換熱站是連接熱源和用戶的樞紐,是數(shù)據(jù)監(jiān)測中心,目前大型熱電聯(lián)產(chǎn)系統(tǒng)大多采用間接連接的供熱方式。熱電廠提供的高溫過熱蒸汽經(jīng)電廠換熱站汽—水換熱器形成供暖熱水,由一次管網(wǎng)送至各換熱站,高溫熱水再由板式換熱器水—水換熱器形成供暖熱水由二次管網(wǎng)送至用戶。課題主要研究社區(qū)交換站供熱系統(tǒng)的數(shù)據(jù)采集模塊的設計,通過對熱水管網(wǎng)溫度、壓力、流量等數(shù)據(jù)參數(shù)的采集,實現(xiàn)對供熱系統(tǒng)的實時監(jiān)測。同時,分布于多個換熱站的該供暖換熱站運行參數(shù)監(jiān)測裝置可采集多個換熱站的運行參數(shù),并通過互聯(lián)網(wǎng)將換熱站的運行參數(shù)傳送到供暖監(jiān)控中心,集中顯示和監(jiān)測,可使供熱調(diào)度部門需要對分散在不同地理位置換熱站的溫度、壓力、流量、液位、設備狀態(tài)等許多參數(shù)進行集中實時監(jiān)測,有效的掌握系統(tǒng)各數(shù)據(jù)參數(shù)的變化和主要設備的運行效率極其變化規(guī)律,從而減少各個換熱站的工作人員,實現(xiàn)各換熱站無人值守,達到了減員增效的目的,提高工作效率和管理水平,同時提高了供暖可靠性,保證供暖質(zhì)量,為社區(qū)交換站供熱系統(tǒng)的優(yōu)化運行管理提供可靠的保證[1]。1.2國內(nèi)外發(fā)展狀況數(shù)據(jù)采集系統(tǒng)起始于20世紀中期,在70年代初,原來由小規(guī)模集成的數(shù)字邏輯電路及硬件程控器組成的采集系統(tǒng)被微處理器控制的采集系統(tǒng)所代替。由微處理器去完成程控,數(shù)據(jù)處理及大部分邏輯操作,使系統(tǒng)的靈活性和可靠性大大地提高,系統(tǒng)硬件成本和系統(tǒng)的重建費用大大地降低。近年來,國外數(shù)據(jù)采集系統(tǒng)快速發(fā)展,占據(jù)著大量市場,其結(jié)構基本上都是與一定個人計算機配套使用的模塊化數(shù)采單元和系統(tǒng),無論在性能、工藝或裝潢方面都具有較強的競爭力,并由專門的產(chǎn)業(yè)集團公司研制和生產(chǎn),產(chǎn)品也在不斷更新?lián)Q代。比較典型的有美國的B+F公司、HP公司,英國輸力強公司,法國邁威公司的MOVILOG數(shù)據(jù)采集器等。我國的數(shù)據(jù)采集技術也已經(jīng)有了很大的提高,應用于眾多領域。數(shù)據(jù)采集的效果,主要是看精度和速度。作為一個整體來說,數(shù)據(jù)采集系統(tǒng)的發(fā)展受到很多方面的限制,比如:軟件技術、網(wǎng)絡技術、測量技術、傳感器技術,這些都影響了數(shù)據(jù)采集的發(fā)展。朱本坤在在其文獻中介紹了基于PC的單片機數(shù)據(jù)采集系統(tǒng),討論了PC機和單片機之間的通信原理和通訊方法,同時給出了VB通訊程序的設計要點。同時,社區(qū)交換站供熱系統(tǒng)的數(shù)據(jù)采集與監(jiān)控也在不斷的提高,使我國城市的集中供熱的有效運行更加可靠。例如,有的小區(qū)交換站的數(shù)據(jù)監(jiān)測模塊,采取了一種新型現(xiàn)代化監(jiān)控器,以保證安全生產(chǎn)和提高運行效率。針對一些問題,例如目前換熱站運行依賴于人力,因此管理水平和運營效率都很低,因此設計了人機交互平臺,從此實現(xiàn)了換熱站調(diào)度、管理、系統(tǒng)仿真的集成化,這對于供熱系統(tǒng)的現(xiàn)代化運行和有效管理來說是一個有利的工具[2]。我國現(xiàn)已實現(xiàn)集中供熱智能無人值守換熱站自控系統(tǒng)的設計,林舒宜與張炳偉在其文獻中闡述了通過對換熱站的數(shù)據(jù)參數(shù)進行數(shù)據(jù)采集、集中管理,通過網(wǎng)絡把各個換熱站的信息匯總到服務器,增強自動化管理。通過對曲線進行對比、分析,可對換熱站進行宏觀調(diào)控,動態(tài)的修改控制參數(shù),最終達到控制供熱質(zhì)量,節(jié)約能源的作用。另外,王萌也在其論文中闡述了的供暖換熱站運行參數(shù)監(jiān)測裝置,可采集多個換熱站的運行參數(shù),并通過互聯(lián)網(wǎng)將換熱站的運行參數(shù)傳送到供暖監(jiān)控中心,集中顯示和監(jiān)測,從而減少各個換熱站的工作人員,實現(xiàn)各換熱站無人值守,達到了減員增效的目的,同時提高了供暖可靠性,保證供暖質(zhì)量[3]。由此可看出我國的城市的集中供暖,換熱站的數(shù)據(jù)采集與自動監(jiān)控已經(jīng)取得了顯著的成果,實現(xiàn)了監(jiān)控管理自動化,同時也可以根據(jù)監(jiān)控數(shù)據(jù)隨時調(diào)整,達到有效供暖與節(jié)約能源雙管齊下。1.3論文主要任務本課題主要是完成小區(qū)交換站供熱系統(tǒng)數(shù)據(jù)采集模塊的設計,以單片機為核心器件,達到數(shù)據(jù)采集、顯示、存儲以及通信等功能。課題從初步構思到整體完成所包含的主要任務有:完成了數(shù)據(jù)采集模塊總體框圖的設計;完成了器件的選型及硬件電路的設計;完成了軟件程序的設計;完成了硬軟件的調(diào)試;2課題方案設計2.1集中供熱系統(tǒng)的構成城市集中供熱系統(tǒng)主要包括熱力站(或稱熱源廠)、熱水管網(wǎng)、換熱站、用戶(或稱居民社區(qū))等幾部分。

連接于熱源廠和熱用戶之間的供熱系統(tǒng)是整個集中供熱系統(tǒng)的重要組成部分,居民社區(qū)的供熱系統(tǒng)主要包括社區(qū)的熱水管網(wǎng)和熱力站,熱水管網(wǎng)分為一次網(wǎng)與二次網(wǎng),一次網(wǎng)是指連接于城市管網(wǎng)與熱力站之間的管網(wǎng),二次網(wǎng)是指連接于熱力站與熱用戶之的管網(wǎng),熱力站通過二次管網(wǎng)把熱量送到終端用戶。集中供熱系統(tǒng)的構成如圖2.1所示。一次網(wǎng)供水一次網(wǎng)回水一次網(wǎng)供水一次網(wǎng)回水二次網(wǎng)供水圖2.1城市集中供熱系統(tǒng)的構成補水泵二次網(wǎng)回水二次網(wǎng)回水用戶戶換熱站熱源源用戶戶換熱站熱源源循環(huán)泵循環(huán)泵本課題的研究設計主要是實現(xiàn)基于以單片機為核心的對供熱系統(tǒng)溫度、壓力、流量等模擬量及循環(huán)泵和補水泵啟??刂频乳_關量的數(shù)據(jù)采集模塊的設計,具體包括:1)、熱交換站一次側(cè)總管的供水溫度和回水溫度(兩路溫度信號)

2)、熱交換站二次側(cè)總管的供水溫度和回水溫度(兩路溫度信號)3)、熱交換站一次側(cè)供水總管壓力和回水總管壓力(兩路壓力信號)4)、熱交換站二次側(cè)供水總管壓力和回水總管壓力(兩路壓力信號)5)、熱力站補水管網(wǎng)的的流量(一路流量信號)

6)、熱力站一次管網(wǎng)的流量(一路流量信號)7)、循環(huán)泵和補水泵的啟停(開關量信號)2.2方案總體設計框圖根據(jù)本課題的設計要求,數(shù)據(jù)采集模塊包括單片機最小系統(tǒng)、電源電路、數(shù)據(jù)采集模塊、數(shù)據(jù)采集與輸入模塊、數(shù)據(jù)通信模塊、數(shù)據(jù)存儲模塊??傮w的方案原理圖設計如圖2.2所示。數(shù)據(jù)顯示A/D轉(zhuǎn)換器數(shù)據(jù)顯示A/D轉(zhuǎn)換器A/D轉(zhuǎn)換器A/D轉(zhuǎn)換器溫度檢測壓力檢測流量檢測鍵盤輸入通信電路循環(huán)泵,補水泵的啟停狀態(tài)存儲電路單片機電源圖2.2數(shù)據(jù)采集模塊的構成2.3單片機的選擇本課題要求完成對溫度、壓力、流量等模擬量的采集,為了盡可能降低成本,簡化電路,本課題采用自帶8路A/D轉(zhuǎn)換的單片機STC12C5A60S2。STC12C5A60S2是STC生產(chǎn)的單時鐘/機器周期(1T)的單片機,是高速、低功耗、超強抗干擾的新一代8051單片機,指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。內(nèi)部集成MAX810專用復位電路,2路PWM,8路高速10位A/D轉(zhuǎn)換,針對電機控制,強干擾場合[5]。本課題采用40引腳封裝的單片機型號:PDIP-40,單片機STC12C5A60S2芯片及引腳如圖2.3所示:圖2.3單片機STC12C5A60S2的引腳圖2.4傳感器的選擇1)溫度傳感器的選擇本設計中,要求水溫測量范圍0°C~120°C,誤差為±0.5°C。DS18B20單總線數(shù)字溫度傳感器的測溫范圍可達-55°C~+125°C,精度可達±0.5°C,完全可以滿足所要求的測量范圍和精度,因此,選擇DS18B20作為本次設計的溫度傳感器。DS18B20數(shù)字溫度計提供9~12位攝氏溫度測量而且有一個由高低電平觸發(fā)的可不因電源消失而改變的報警功能。DS18B20通過一個單線界面發(fā)送或接受信息,因此在中央處理器和DS18B20之間僅需一條連接線(加上地線),直接從單線通訊在線汲取能量,除去了對外部電源的需求。2)壓力傳感器的選擇考慮到工業(yè)實際環(huán)境和要求,壓力傳感器采用工業(yè)中的壓力變送器,它能夠接收氣體液體等壓力信號并將其轉(zhuǎn)換成電流信號,以供記錄儀、報警儀等儀器進行測量。本論文要求的壓力變送器需要輸出4~20mA的電流信號,能夠測得0~20Mpa的壓力,供電電壓為24V,且量程可調(diào)。壓力變送器具有優(yōu)良的可靠性,廣泛的適應性以及很強的適應性和多樣性,可廣泛用于石油、化工、電力等領域。3)流量傳感器的選擇本課題采用電磁流量計測量一、二次管網(wǎng)的流量,電磁流量計是根據(jù)法拉第電磁感應定律進行流量測量的流量計。電磁流量計的優(yōu)點是壓損極小,可測流量范圍大。最大流量與最小流量的比值一般為20:1以上,適用的工業(yè)管徑范圍寬,最大可達3m,輸出信號和被測流量成線性,精確度較高,可測量電導率≥5μs/cm的酸、堿、鹽溶液、水、污水、腐蝕性液體以及泥漿、礦漿、紙漿等的流體流量。電磁流量計測量范圍度大,通常為20:1~50:1,可選流量范圍寬;電磁流量計的口徑范圍比其他品種流量儀表寬,從幾毫米到3米;可測量正反雙向流量,也可測脈動流量,只要脈動頻率低于激磁頻率很多;儀表輸出本質(zhì)上是線性的;易于選擇與流體接觸件的材料品種,可應用于腐蝕性流體等優(yōu)點。由于電磁流量計測量含有懸浮固體或污臟體的機會遠比其他流量儀表多,出現(xiàn)內(nèi)壁附著層產(chǎn)生的故障概率也就相對較高。若附著層電導率與液體電導率相近,儀表還能正常輸出信?;谝陨咸攸c,本課題最終選用電磁流量計作為測量元件[6]。2.5顯示器的選擇本課題要求顯示4路溫度、四路壓力、兩路流量數(shù)據(jù),以及兩路開關量,本課題采用LCD1602液晶顯示器進行溫度、壓力、流量等數(shù)據(jù)顯示,用兩只二極管的亮滅分別代表循環(huán)泵和補水泵的啟停狀態(tài)等開關量。LCD是液晶顯示器的簡稱,具有功耗低、體積小、無電磁輻射、顯示量大、易于彩色化等一系列優(yōu)點。液晶顯示器的主要原理是以電流刺激液晶分子產(chǎn)生點、線、面并配合背部燈管構成畫面。工業(yè)字符型液晶,能夠同時顯示16x02即32個字符。(16列2行)1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用。1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個字符液晶模塊(顯示字符和數(shù)字)。1602采用標準的16腳界面,其引腳圖如圖2.5所示:圖2.5LCD1602引腳圖圖2.5LCD1602引腳圖3硬件電路的設計3.1單片機最小系統(tǒng)的設計單片機STC12C5A60S2外部晶振為12MHz,一個指令周期為1/12us,其最小系統(tǒng)包括復位電路和時鐘電路。時鐘電路用于產(chǎn)生單片機工作時所需的時鐘控制信號,AT89C52單片機各功能部件的運行都是以時鐘控制信號為基準的,有條不紊的一拍一拍的工作,時鐘信號直接影響單片機的速度,時鐘電路的質(zhì)量也可以直接影響單片機的系統(tǒng)穩(wěn)定性。常用的時鐘信號電路設計兩種方式,一種是內(nèi)部時鐘方式,另一種是外部時鐘方式,本設計從簡化電路方面考慮,采用內(nèi)部時鐘方式。STC12C5A60S2單片機內(nèi)有一個用于構成振蕩器的高增益的反相放大器,該高增益反相放大器的輸人端為芯片引腳(XTAL1),輸出端為芯片引腳(XTAL2),這兩個引腳接石英晶體振蕩器(簡稱晶振)和微調(diào)電容,就構成了一個穩(wěn)定的自激振蕩器。電路中電容C1和C2通常選擇30pF左右,電容的大小會影響振蕩器頻率的高低、振蕩器的穩(wěn)定性和起振的快速性。晶體振蕩器的頻率范圍通常是在1.2MHz~12MHz之間,晶振頻率越高,則系統(tǒng)的時鐘頻率就越高,單片機也就運行更快[7]。復位電路單片機的初始化操作,可以初始化系統(tǒng),擺脫由于程序運行出錯和操作失誤造成的系統(tǒng)死鎖狀態(tài)。STC12C5A60S2單片機是通過外部復位電路實行復位功能的,復位電路通常采用上電自動復位和按鈕復位兩種方式。本課題采用手動復位。單片機最小系統(tǒng)電路圖如圖3.1所示。圖3.1STC12C5A60S2的最小系統(tǒng)圖3.1STC12C5A60S2的最小系統(tǒng)3.2數(shù)據(jù)采集電路的設計1)溫度采集模塊的設計DS18B20有8引腳的SO封裝、8引腳μSOP封裝以及3引腳TO—92封裝3種形式。本設計采用的只有三引腳的DS18B20封裝形式,三個引腳分別是GND接地引腳,DQ數(shù)據(jù)輸入或者輸出引腳,VCC電源引腳或者工作在寄生電源時該引腳接地。接線圖如圖3.2所示。圖3.2DS18B20溫度傳感器與單片機連接圖2)壓力采集模塊的設計壓力變送器所采集的壓力范圍為0~20MPa,輸出的是4~20mA的直流信號,因為單片機具有A/D轉(zhuǎn)換功能的P1口輸入的模擬信號是1~5V的電壓信號,因此,需要將壓力變送器輸出的4~20mA的電流經(jīng)250Ω的電阻變成1~5V的電壓,經(jīng)電容濾波后連接到自帶A/D轉(zhuǎn)換的單片機的P1口,其信號處理電路如圖3.3所示[8]。圖3.3壓力采集及其信號處理電路圖3.3壓力采集及其信號處理電路3)流量采集模塊的設計電磁流量計的測量范圍為1~10000(m3/h),輸出信號為4~20mA電流輸出,須經(jīng)250Ω電阻轉(zhuǎn)換成1~5V的電壓信號,再經(jīng)電容濾波后送至單片機的P1口,其信號處理電路如圖3.4所示。圖3.4流量采集及其信號處理電路圖3.4流量采集及其信號處理電路4)開關量采集模塊的設計光電耦合器亦稱光電隔離器,簡稱光耦。光電耦合器以光為媒介傳輸電信號。它對輸入、輸出電信號有良好的隔離作用,光耦合器一般由三部分組成:光的發(fā)射、光的接收及信號放大。輸入的電信號驅(qū)動發(fā)光二極管,使之發(fā)出一定波長的光,被光探測器接收而產(chǎn)生光電流,再經(jīng)過進一步放大后輸出。這就完成了電—光—電的轉(zhuǎn)換,從而起到輸入、輸出、隔離的作用。由于光耦合器輸入輸出間互相隔離,電信號傳輸具有單向性等特點,因而具有良好的電絕緣能力和抗干擾能力[9]。圖3.5流量采集及其信號處理電路本課題須采集循環(huán)泵、補水泵啟停狀態(tài)等開關量,設計電路為上電后分別用一個開關代表控制兩個泵啟停的接觸器線圈的吸合狀態(tài),輸出的信號經(jīng)過光電耦合器傳送至單片機,其電路圖如圖3.5所示。圖3.5流量采集及其信號處理電路3.3鍵盤與顯示電路的設計1)顯示電路LCD1602與單片機的連接圖如圖3.6所示:圖3.6LCD1602液晶界面2)鍵盤電路鍵盤在單片機應用系統(tǒng)中能實現(xiàn)向單片機輸入數(shù)據(jù)、傳送命令等功能,是人工干預單片機的主要手段。在一般情況下,鍵盤是由一組排列規(guī)則的按鍵組成的,但鍵盤實際上是一組按鍵開關的集合。通常,鍵盤開關利用了機械觸點的閉合和斷開作用,一個電壓信號通過鍵盤開關機械觸電的斷開和閉合,輸出一個電壓波形。圖3.7鍵盤界面電路原理圖常用的鍵盤界面分為獨立式鍵盤界面和行列式鍵盤界面。由于本設計中只有兩個按鍵,故采用設計簡便的獨立式鍵盤界面。獨立式界面鍵盤是最簡單的鍵盤,各鍵相互獨立,直接用I/O口線的構成單個按鍵電路,通過檢測輸入線的電平狀態(tài)就可以很容易的判斷出是哪個按鍵按下。本設計中的鍵盤界面電路如圖3.7所示。圖3.7鍵盤界面電路原理圖此鍵盤電路共2個按鍵,分別與單片機的P3.2、P3.3,兩個按鍵分別為開始翻頁鍵K1和數(shù)據(jù)存儲鍵K2組成。當按下K1時,LCD液晶顯示器顯示不同的工程量;按下K2鍵,數(shù)據(jù)暫停與上位機進行數(shù)據(jù)通信,開始進行數(shù)據(jù)存儲[10]。3.4通信模塊的設計本課題的通信模塊采用標準RS232串行通信標準進行與上位機的數(shù)據(jù)通訊,RS-323C標準是美國EIA(電子工業(yè)聯(lián)合會)與BELL等公司一起開發(fā)的1969年公布的通信協(xié)議。它適合于數(shù)據(jù)傳輸速率在0~20000b/s范圍內(nèi)的通信。這個標準對串行通信接口的有關問題,如信號線功能、電氣特性都作了明確規(guī)定。由于通行設備廠商都生產(chǎn)與RS-232C制式兼容的通信設備,因此,它作為一種標準,目前已在微機通信接口中廣泛采用。圖3.8MAX232芯片的引腳圖目前大多數(shù)計算機的RS-232C通信接口都使用了DB9連接器,由于RS-232規(guī)定的電平和一般微處理器的邏輯電平不一致,必須進行電平轉(zhuǎn)換,本課題采用MAX232芯片將TTL電平轉(zhuǎn)換成RS232標準串行通訊電信號[11]。MAX232是MAXIM公司生產(chǎn)的,包含兩路驅(qū)動器和接收器的RS232轉(zhuǎn)換芯片。MAX232符合所有的RS-232C技術標準;只需要單一+5V電源供電;功耗低,典型供電電流5mA;內(nèi)部集成2個RS-232C驅(qū)動器;高集成度,片外最低只需4個電容即可工作;芯片內(nèi)部有一個電壓轉(zhuǎn)換器,片載電荷泵具有升壓、電壓極性反轉(zhuǎn)能力,能夠產(chǎn)生+10V和-10V電壓V+、V-,將輸入的+5V電壓轉(zhuǎn)換為RS232接口所需的±10V電壓,尤其適用于沒有±12V的單電源系統(tǒng)?;谝陨咸攸c,本課題最終選用MAX232芯片進行電瓶的轉(zhuǎn)換,其引腳圖如圖3.8所示。圖3.8MAX232芯片的引腳圖第一部分是電荷泵電路。由1、2、3、4、5、6腳和4只電容構成。功能是產(chǎn)生+10v和-10v兩個電源,提供給RS-232串口電平的需要。第二部分是數(shù)據(jù)轉(zhuǎn)換通道。由7、8、9、10、11、12、13、14腳構成兩個數(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ù)從11引腳(T1IN)、10引腳(T2IN)輸入轉(zhuǎn)換成RS-232數(shù)據(jù)從14腳(T1OUT)、7腳(T2OUT)送到電腦DB9插頭;DB9插頭的RS-232數(shù)據(jù)從13引腳(R1IN)、8引腳(R2IN)輸入轉(zhuǎn)換成TTL/CMOS數(shù)據(jù)后從12引腳(R1OUT)、9引腳(R2OUT)輸出。第三部分是供電。15腳GND、16腳VCC(+5v)。本課題采用第一數(shù)據(jù)通道,TTL/CMOS電平的T1IN引腳應接STC12C5A60S2的串行發(fā)送引腳TXD,R1OUT接AT89C52的串行接收引腳RXD;與之對應,T1OUT、R1IN引腳接RS232電平。單片機與上位機進行串行數(shù)據(jù)通信的電路如圖3.9所示:圖3.9TTL電平轉(zhuǎn)RS232電平的串口模塊電路圖3.5數(shù)據(jù)存儲模塊的設計本課題要求預留數(shù)據(jù)存儲功能,既可把單片機所采集的溫度、壓力、流量等模擬量的數(shù)據(jù)以及泵的啟停狀態(tài)等開關量的數(shù)據(jù)進行存儲,要求可以寫入數(shù)據(jù)并可讀出數(shù)據(jù)。所以,就需要給單片機外加存儲器來存放所采集的數(shù)據(jù)量。本課題選用24C04存儲器,采用8引腳封裝形式,其中只用兩個引腳與單片機連接,分別是串行數(shù)據(jù)輸入/輸出端和串行時鐘端,其與均接高電平或低電平,具體與單片機的連接如圖3.10所示:圖3.10存儲器24C04與單片機的連接圖圖3.10存儲器24C04與單片機的連接圖3.6電源電路的設計1)5V電源電路本課題中的單片機及外圍電路的芯片均采用的是+5V直流電源供電,故設計了由220V電網(wǎng)電壓獲得5V直流電壓的電源變換電路。單相交流電須經(jīng)過電源變壓器、整流電路、濾波電路和穩(wěn)壓電路轉(zhuǎn)換成穩(wěn)定的直流電壓,具體電路圖如圖3.11所示:圖3.115V電源電路圖3.115V電源電路在上述電路圖中,220V的電網(wǎng)電壓經(jīng)降壓變壓器變成8V電壓,再進行整流和電容濾波,其中LM78XX為集成穩(wěn)壓器,此處應選用LM7805,在經(jīng)過電容濾波后得到直流5V電源。1)24V電源電路由于在本課題中壓力變送器及開關量的上電電路都需用到24V電源,故設計了從220V電網(wǎng)電壓得到24V電壓的變換電路。與5V電源獲取電路相似,電網(wǎng)電壓須經(jīng)過變壓器降壓、整流電路、濾波電路和集成穩(wěn)壓電路得到24V直流電壓,但集成穩(wěn)壓器應選用LM7824。具體電路圖如圖3.12所示:圖3.1224V電源電路圖3.1224V電源電路4軟件程序設計在完成系統(tǒng)的硬件電路后,下一步就要進行軟件程序的設計。本課題采用模塊化的程序設計,各模塊程序分別編寫及調(diào)試,這樣編程比較簡單且易于修改[14]。4.1主程序模塊設計本課題主程序的主要任務是上電后對系統(tǒng)進行初始化操作和構建系統(tǒng)整體的軟件框架,初始化時候包括對單片機的初始化和對各個串口的初始化操作,然后調(diào)用各模塊子程序。主程序流程圖如圖4.1所示。開始系統(tǒng)初始化調(diào)用溫度采集模塊子程序開始系統(tǒng)初始化調(diào)用溫度采集模塊子程序調(diào)用A/D轉(zhuǎn)換模塊子程序調(diào)用A/D轉(zhuǎn)換模塊子程序調(diào)用開關量輸入及輸出模塊子程序調(diào)用開關量輸入及輸出模塊子程序調(diào)用通信模塊子程序調(diào)用通信模塊子程序調(diào)用顯示模塊子程序存儲按鍵是否按下?調(diào)用存儲模塊子程序圖4.1主程序流程圖NNYY4.2溫度采集模塊設計根據(jù)設計要求,需要采集四路溫度,每路用一個DS18B20數(shù)字溫度傳感器采集當前溫度值,應用單片機的P2.3~P2.6口與數(shù)字溫度傳感器DS18B20連接,對每個DS18B20溫度傳感器進行編號,并把每個傳感器測出來的溫度信號送入單片機,交由單片機做出數(shù)據(jù)處理。溫度采集模塊設計流程圖如圖4.2所示。圖4.2圖4.2溫度采集模塊設計流程圖發(fā)跳過ROM命令初始化DS18B20入口讀取溫度到緩存區(qū)送入單片機處理溫度數(shù)據(jù)初始化DS18B20發(fā)跳過ROM命令等待轉(zhuǎn)換完成發(fā)溫度轉(zhuǎn)換命令結(jié)束4.3A/D轉(zhuǎn)換模塊設計本課題需要采集壓力、流量等模擬量,為了降低成本和簡化電路,最終采用自帶A/D轉(zhuǎn)換的單片機STC12C5A60S2。其A/D轉(zhuǎn)換通道的流程圖如圖4.3所示。將處理后的數(shù)據(jù)存儲到RAM指定位置將處理后的數(shù)據(jù)存儲到RAM指定位置返回N將數(shù)據(jù)存到單片機寄存器指定地址判斷轉(zhuǎn)換結(jié)束?主機發(fā)送指令讀取存儲器數(shù)據(jù)對數(shù)據(jù)進行平滑濾波Y初始化ADC啟動6通道序列轉(zhuǎn)換配置ADCPSSI寄存器入口使能ADC模塊ADC轉(zhuǎn)換圖4.3A/D轉(zhuǎn)換通道流程圖YY4.4顯示模塊設計本設計根據(jù)設計要求,需要顯示四路溫度、四路壓力、兩路流量,所以采用了LCD顯示模塊,這樣各數(shù)據(jù)參數(shù)可以實時的顯示,方便人員觀測和記錄。LCD顯示數(shù)據(jù)時總共分為兩部分:第一部分是通道的序號;第二部分是當前數(shù)據(jù)值[15]。LCD顯示模塊流程圖如圖4.4所示。LCD1602初始化LCD1602初始化入口圖4.4LCD顯示模塊流程圖圖3.2LCD顯示模塊流程圖液晶屏上顯示第二個畫面數(shù)據(jù)變換寫命令函數(shù)寫數(shù)據(jù)函數(shù)液晶屏上顯示第一個畫面按下翻頁鍵返回4.5通信模塊設計本文采用的是標準RS232串行通信標準與上位機進行數(shù)據(jù)通信,并通過MAX232芯片進行電平轉(zhuǎn)換,串行通信模塊程序流程圖如圖4.5所示。NY圖4.5串行通信模塊流程圖NY圖4.5串行通信模塊流程圖圖3.2LCD顯示模塊流程圖返回初始化串口打開串口上位機發(fā)送通信指令入口單片機應答?單片機發(fā)送數(shù)據(jù)數(shù)據(jù)發(fā)送完?4.6存儲模塊設計本設計采用24C04存儲器進行該模塊采集的數(shù)據(jù)存儲,可以寫入數(shù)據(jù),同時也可從存儲器中讀出數(shù)據(jù),其程序流程圖如圖4.6所示:24C04初始化24C04初始化入口圖4.6存儲模塊流程圖圖3.2LCD顯示模塊流程圖將數(shù)據(jù)存入相應地址返回是否讀取數(shù)據(jù)?YN將數(shù)據(jù)讀出到相應地址5硬件及軟件調(diào)試在進行硬件電路焊接前后,須對單片機以及外圍電路一些器件進行調(diào)試,以確定器件的完好以及焊接的正確性與否。當焊接完單片機最小系統(tǒng),LCD顯示以及DS18B20以后,便向單片機燒寫了溫度采集的程序,但是結(jié)果并沒有顯示溫度。后來,對硬件電路進行了仔細檢查,因為為了電路的美觀,LCD的引腳與單片機的鏈接并沒有直接用導線連接,而是自己焊接鏈接的,所以任何一處沒有焊接好都會出現(xiàn)無法正常顯示的問題。接下來對自己每一處的焊接做了仔細檢查,發(fā)現(xiàn)硬件電路并沒有問題,經(jīng)過查閱相關資料,終于找到了問題所在,因為STC12C5A60S2單片機的運行頻率比一般的51系列單片機的要高出12倍,所以在時序上出了問題,找出問題并作出修改之后便能成功的顯示溫度了,在這個階段初步完成了硬件電路的調(diào)試工作。軟件程序的調(diào)試可以說是整個設計的一個重點及難點,如何使編好的程序能夠成功的在硬件電路上發(fā)揮作用,并達到預期的效果是完成本課題的關鍵。本課題需采集的模擬量有溫度。壓力,流量,以及泵的啟停狀態(tài)等開關量。采集溫度用的是DS18B20,壓力變送器和電磁流量計輸出的電流信號變換成電壓信號送至單片機具有A/D轉(zhuǎn)換功能的P1口,對應在LCD上顯示變化范圍內(nèi)的工程量。由于本課題采用的模塊化的程序設計,所以我分別編寫各模塊的程序,在進行硬件電路調(diào)試時已經(jīng)調(diào)試出溫度采集及顯示的子程序。當我編寫完壓力和流量的程序并調(diào)試成功后,需將DS18B20的程序合并進來,并設定用按鍵進行翻頁顯示不同工程量。后來的程序調(diào)試并不是一兩次就能成功的,經(jīng)過反復修改,發(fā)現(xiàn)問題,改正問題,最終才能按照預期的要求顯示所采集的數(shù)據(jù)??傊?,按照本課題的要求焊接出實物并不難,難點在于軟件程序的調(diào)試,這是一個復雜的過程,需要不斷修改程序,燒寫程序,沒有耐心的話是不能完成這項工作的。最終基本完成了本課題的要求,達到了數(shù)據(jù)采集的目的。在本次歷時三個多月的設計中,自己一步一步的努力,通過查閱相關文獻資料,從起初的毫無頭緒到今天的基本完成讓我收獲了很多,不僅是大學四年課本知識的理解運用,更多的是自己拿到課題后如何去構思,如何以一個正確的心態(tài)去對待本次設計,然后努力完成課題的要求。雖然在做實物、調(diào)試程序過程中經(jīng)常出錯,如果沒有耐心或者消極面對這些問題,那么最終結(jié)果可想而知。正是因為自己常常告誡自己,以良好的心態(tài)面對問題、解決問題才能最終完成本次的課題。本課題數(shù)據(jù)采集模塊的正面展示圖如圖5.1所示:圖5.1數(shù)據(jù)采集模塊的正面展示圖本課題數(shù)據(jù)采集模塊的反面展示圖如圖5.2所示:圖5.2數(shù)據(jù)采集模塊的反面展示圖該數(shù)據(jù)采集模塊的溫度顯示圖如圖5.3所示:圖5.3數(shù)據(jù)采集模塊的溫度顯示圖該數(shù)據(jù)采集模塊的壓力和流量顯示圖如圖5.4所示:圖5.4數(shù)據(jù)采集模塊的壓力和流量顯示圖結(jié)論此課題主要對小區(qū)交換站供熱系統(tǒng)的數(shù)據(jù)采集模塊的設計進行了研究,整個設計過程包括模塊方案設計、硬件電路設計、軟件程序設計、做實物以及軟硬件的調(diào)試。數(shù)據(jù)采集模塊主要采集了溫度、壓力、流量等模擬量以及泵的啟停狀態(tài)等開關量,由于采集的模擬量較多,為簡化電路和降低成本,課題采用了自帶A/D轉(zhuǎn)換的單片機STC12C5A60S2,其運行速度是一般51系列單片機的12倍,也正是基于這個特點,在編程時時序問題成為了重點考慮的對象,但是經(jīng)過軟件調(diào)試,證明此單片機能夠滿足課題的要求,完成了預定的功能。此數(shù)據(jù)采集模塊采用了壓力變送器和電磁流量計分別采集壓力和流量信號,其輸出均為標準的電流,經(jīng)過變換電路轉(zhuǎn)換成標準電壓信號送入單片機。課題的實物直接輸入的是電壓信號,滑動電阻器調(diào)節(jié)輸入電壓的范圍,通過反復調(diào)試,能夠使工程量在規(guī)定范圍內(nèi)變化,證明此模塊的模擬量采集及顯示是可行的。此數(shù)據(jù)采集模塊在設計思路上比較簡單,難點在于程序的編寫及調(diào)試。課題采用了相對匯編語言比較簡單的C語言進行軟件程序設計,同時采用模塊化的結(jié)構進行程序編寫,這種方法不但易于編寫,而且各模塊的程序可以分別調(diào)試、修改,對于初學者來說比較易于掌握。在整個程序調(diào)試過程中,可以對單片機反復燒寫程序。經(jīng)過不斷修改,最終達到了數(shù)據(jù)在正常范圍內(nèi)顯示的功能,完成了數(shù)據(jù)的采集。經(jīng)過仿真調(diào)試,數(shù)據(jù)達到了采集和顯示的目的,證明此數(shù)據(jù)采集模塊的設計是可行的,能夠完成小區(qū)交換站供熱系統(tǒng)的數(shù)據(jù)監(jiān)測,但這對于實現(xiàn)換熱站智能無人值守和供暖中心對換熱站的運行參數(shù)進行集中顯示等重大課題提供了基礎研究和有力支持。但是由于時間方面的限制,預留的與上位機進行數(shù)據(jù)通信以及數(shù)據(jù)存儲等功能還不完善,尚需進行進一步的研究,以完備數(shù)據(jù)采集、顯示、通信、存儲一體化功能,并可在此基礎上進一步研究基于計算機及自動化技術的對換熱站的遠程監(jiān)控技術。致謝本課題的研究工作是在郭英軍老師的悉心指導和親切關懷下完成的。大學四年的讀書和學習生活即將劃上一個完整的句號,卻只是我的人生的一個逗號,我人生征程的開始。郭老師認真負責、學識淵博、在學業(yè)上給予了精心的指導,是我能夠順利的完成課題研究的根本保證。我非常感謝郭老師,敬佩郭老師,不僅是因為老師能夠為我解答了設計上的問題,更是因為老師對我的嚴格要求、認真負責的態(tài)度,使我受益匪淺,受益終生,他將是我今后學習和工作的楷模。老師在課題開題期間和論文寫作的過程中給予了我許多耐心的指導,郭老師總是以認真負責、一絲不茍的工作態(tài)度閱讀并修改文章中不足的地方,他優(yōu)良的作風和嚴謹治學的態(tài)度同樣深深影響著我。在此論文完成之時,特對恩師的辛勤培養(yǎng)致以崇高的敬意和衷心的感謝!同時感謝那些其他那些指點和無私幫助我的老師們,還有一起學習和工作過的同學等。感謝他們給我的無私的幫助和支持,使我得以順利完成學業(yè)。謝謝!謝謝參加本論文評審和答辯的所有老師!參考文獻1林舒宜,張炳偉.集中供熱智能無人值守換熱站自控系統(tǒng)的設計.自動化與儀表,2013(09):50~532原賀新,馬衛(wèi)華,劉海英.熱網(wǎng)計算機監(jiān)控系統(tǒng).煤力與熱力,2000(02):123~1253劉曉萍.基于ARM的換熱站數(shù)據(jù)采集與控制系統(tǒng)研究,[學位論文],哈爾濱:哈爾濱工業(yè)大學,20094王萌.供暖換熱站運行參數(shù)監(jiān)測裝置設計,[學位論文],太原:太原理工大學,20055M.Michael.SpaceScienceStudiesCometotheInternet.AviationWeek&SpaceTechnology,1988(6):59~666M.Panti,L.Penserini.AP2PApproachtoLandWarriorsCoordination,InternationalSymp.OnCollaborativeTechnologiesandSystemsinconjunctionwiththe2003WesternMultiConferences,Orlando,Florida,KhrwerAcendemicPress,2003(1):109~1177AndrewChatha.TheFoundaionforFieldControlSuterm.ControlEngineering,,may199437~398田亞娟.基于單片機的數(shù)據(jù)采集控制.工業(yè)科技,2004(4):61~699許強.基于8位單片機的數(shù)據(jù)采集系統(tǒng)的研究.湖南廣播電視大學學報,2005(1):57~5810朱本坤.基于PC機的數(shù)據(jù)采集及其通信系統(tǒng).鎮(zhèn)江高專學報,2004(1):32~3511楊鎮(zhèn)江.智能儀器與數(shù)據(jù)采集系統(tǒng)中的新器件及應用.西安:西安電子科技大學出版社,2001(3):52~6812謝自美.電子線路設計(第二版).漢:華中科技大學出版社,200013何立民.單片機應用技術選編[M].北京:北京航空航天大學出版社,199614劉和平.單片機原理及應用.重慶:重慶大學出版社,200215徐愛鈞.單片機高級語言C51應用程序設計.北京:電子工業(yè)出版社,2002附錄程序清單/*******************************頭文件**********************************/#include<STC12.H>#include<stdio.h>#include<string.h>#include<intrins.h>#include<LCD1602.h>#include<AD.h>#include<18b20.h>#include<absacc.h>***********************宏定義************************************/#defineucharunsignedchar#defineuintunsignedint#defineulongunsignedlongsbitkey=P3^3;sbitJP1=P1^6;sbitJP2=P1^7;sbitLED1=P3^4;sbitLED2=P3^5;ucharnum=0;voidandis(){key==1; if(key==0) {delay(600) ; if(key==0) {num++;} } if(num==2) {num=0;} switch(num) { case0:LCD_Write_Char(3,0,'');LCD_Write_Char(4,0,''); LCD_Write_Char(0,0,'L'); LCD_Write_Char(1,0,'1'); LCD_Write_Char(0,1,'L');LCD_Write_Char(1,1,'2'); LCD_Write_Char(2,0,':');LCD_Write_Char(2,1,':'); caiyangP1n(0);display0();delay(5); caiyangP1n(4);display4();delay(5); LCD_Write_Char(13,0,'M');LCD_Write_Char(14,0,'P'); LCD_Write_Char(15,0,'a');LCD_Write_Char(12,1,'m'); LCD_Write_Char(13,1,'3');LCD_Write_Char(14,1,'/'); LCD_Write_Char(15,1,'h');break; case1: temdis();LCD_Write_Char(7,0,'');LCD_Write_Char(8,0,''); LCD_Write_Char(9,0,'');LCD_Write_Char(10,0,''); LCD_Write_Char(11,0,'');LCD_Write_Char(12,0,''); LCD_Write_Char(13,0,'');LCD_Write_Char(14,0,''); LCD_Write_Char(15,0,'');LCD_Write_Char(0,1,''); LCD_Write_Char(1,1,'');LCD_Write_Char(2,1,''); LCD_Write_Char(3,1,'');LCD_Write_Char(4,1,''); LCD_Write_Char(5,1,'');LCD_Write_Char(6,1,''); LCD_Write_Char(7,1,'');LCD_Write_Char(8,1,''); LCD_Write_Char(9,1,'');LCD_Write_Char(10,1,''); LCD_Write_Char(11,1,'');LCD_Write_Char(12,1,''); LCD_Write_Char(13,1,'');LCD_Write_Char(14,1,''); LCD_Write_Char(15,1,'');break; }}/********************************************************/以下是對液晶模塊的操作程序/********************************************************/ #include"LCD1602.h"#include<STC12.H>sbitRS=P2^0;sbitRW=P2^1;sbitEN=P2^2;//定義端口#defineRS_CLRRS=0#defineRS_SETRS=1#defineRW_CLRRW=0#defineRW_SETRW=1#defineEN_CLREN=0#defineEN_SETEN=1#defineDataPortP0voidDelayMs(unsignedintt){ unsignedcharj;unsignedinti; for(i=t;i>0;i--) { for(j=220;j>0;j--); }} /*判忙函數(shù)*/bitLCD_Check_Busy(){ DataPort=0xFF; RS_CLR; RW_SET; EN_CLR; _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); EN_SET; return(bit)(DataPort&0x80);} /*寫入命令函數(shù)*/voidLCD_Write_Com(unsignedcharcom){ while(LCD_Check_Busy());//忙則等待 RS_CLR; RW_CLR; EN_SET; DataPort=com;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); EN_CLR;}/*寫入數(shù)據(jù)函數(shù)*/voidLCD_Write_Data(unsignedcharData){ while(LCD_Check_Busy());//忙則等待 RS_SET; RW_CLR; EN_SET; DataPort=Data; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); EN_CLR;}/*清屏函數(shù)*//*voidLCD_Clear(){ LCD_Write_Com(0x01); DelayMs(20);} *//*寫入字符串函數(shù)*/voidLCD_Write_String(unsignedcharx,unsignedchary,unsignedchar*s){ if(y==0) { LCD_Write_Com(0x80+x);//表示第一行 } else { LCD_Write_Com(0xC0+x);//表示第二行 } while(*s) { LCD_Write_Data(*s); s++; }}/*寫入字符函數(shù)*/voidLCD_Write_Char(unsignedcharx,unsignedchary,unsignedcharData){if(y==0) { LCD_Write_Com(0x80+x); }else { LCD_Write_Com(0xC0+x); }LCD_Write_Data(Data);}/*初始化函數(shù)*/voidLCD_Init(){LCD_Write_Com(0x38);/*顯示模式設置*/DelayMs(20);LCD_Write_Com(0x38);DelayMs(20);LCD_Write_Com(0x38);DelayMs(20);LCD_Write_Com(0x38);LCD_Write_Com(0x08);/*顯示關閉*/LCD_Write_Com(0x01);/*顯示清屏*/LCD_Write_Com(0x06);/*顯示光標移動設置*/DelayMs(20);LCD_Write_Com(0x0C);/*顯示開及光標設置*/}}/********************************************************/以下是溫度采集模塊操作程序/********************************************************/#include<STC12C5A60S2.H> //器件配置文件#include<intrins.h>#include<LCD1602.h> sbitDQ=P2^3;//定義通信端口//#defineBusy0x80//用于檢測LCM狀態(tài)字中的Busy標識#defineucharunsignedchar#defineuintunsignedintunsignedcharcodeASCII[15]={'0','1','2','3','4','5','6','7','8','9','.'};static uintshi=0,ge=0,xiao1=0,temp,c=0;//ds18b20延時函數(shù)voidDelay11(intnum){while(num--);}//ds18b20初始化函數(shù)voidInit_DS18B20(void){DQ=1;//DQ復位Delay11(8);//稍做延時DQ=0;//單片機將DQ拉低Delay11(80);//精確延時大于480usDQ=1;//拉高總線Delay11(14);Delay11(20);}//讀一個字節(jié)函數(shù)unsignedcharReadOneChar(void){unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i--){DQ=0;//給脈沖信號dat>>=1;DQ=1;//給脈沖信號if(DQ)dat|=0x80;Delay11(4);}return(dat);}//寫一個字節(jié)函數(shù)voidWriteOneChar(unsignedchardat){unsignedchari=0;for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;Delay11(5);DQ=1;dat>>=1;}}//讀取溫度函數(shù)unsignedintReadTemperature(void){unsignedchara=0;unsignedcharb=0;longunsignedinttvalue;//溫度值Init_DS18B20();WriteOneChar(0xCC);//跳過讀序號列號的操作WriteOneChar(0x44);//啟動溫度轉(zhuǎn)換Init_DS18B20();WriteOneChar(0xCC);//跳過讀序號列號的操作WriteOneChar(0xBE);//讀取溫度寄存器a=ReadOneChar();//讀低8位b=ReadOneChar();//讀高8位tvalue=b;tvalue<<=8;tvalue=tvalue|a;//判斷溫度正負if((b&0xf8)==0xf8){tvalue=0xffff-tvalue;tvalue+=1;c=1;}tvalue=tvalue*0.0625*10;//讀取的數(shù)據(jù)保留到個位return(tvalue);}/*****************************************************/voiddisp(temp) {shi=temp%1000/100;ge=temp%100/10;xiao1=temp%10; LCD_Write_Char(0,0,'T'); LCD_Write_Char(1,0,':'); if(c==1) LCD_Write_Char(2,0,'-'); elseLCD_Write_Char(2,0,'+');LCD_Write_Char(3,0,ASCII[shi]);LCD_Write_Char(4,0,ASCII[ge]);LCD_Write_Char(5,0,ASCII[10]);LCD_Write_Char(6,0,ASCII[xiao1]); }/*********************************************************/voidtemdis(){ CLK_DIV=0X04; temp=ReadTemperature(); disp(temp); c=0; }/********************************************************/以下是模擬量進行A/D轉(zhuǎn)換的操作程序/********************************************************/#include<STC12C5A60S2.H>#include<LCD1602.h>#defineuintunsignedint#defineucharunsignedcharunsignedinttemp1,sh1,ge1,n1,m1;unsignedcharad_result_data[10];//AD轉(zhuǎn)換高八位unsignedcharad_result_low2[10];//AD轉(zhuǎn)換低八位unsignedcharad_result_total[10];//AD轉(zhuǎn)換總十位unsignedcharad_average_result;//AD轉(zhuǎn)換十次的平均值unsignedcharAin,Vin;unsignedcharb,t,R;chartp=0;unsignedcharcodema1[6]={0xb5,0xe7,0xd1,0xb9,0xa1,0xc3};//電壓:unsignedcharcodema2[]={"."};ucharcodedisp1[]={"提示:按1鍵進入"};ucharcodedisp2[]={"功能選擇界面."};unsignedcharcodenum0[]={0xa3,0xb0};unsignedcharcodenum1[]={0xa3,0xb1};unsignedcharcodenum2[]={0xa3,0xb2};unsignedcharcodenum3[]={0xa3,0xb3};unsignedcharcodenum4[]={0xa3,0xb4};unsignedcharcodenum5[]={0xa3,0xb5};unsignedcharcodenum6[]={0xa3,0xb6};unsignedcharcodenum7[]={0xa3,0xb7};unsignedcharcodenum8[]={0xa3,0xb8};unsignedcharcodenum9[]={0xa3,0xb9};//模塊延時程序1msvoiddelay1ms(uintdelay1ms)//STC11F60XE,22.1184M,延時1ms{uinti,j;for(;delay1ms>0;delay1ms--)for(i=0;i<7;i++)for(j=0;j<210;j++);}voiddelay(uintdelay)//STC11F60XE,22.1184M,延時170us{uinti,j;for(;delay>0;delay--)for(i=0;i<124;i++);for(j=0;j<124;j++);}/*******************************************************AD轉(zhuǎn)換程序*******************************************************/voidAD_initiate()//初始化函數(shù){ES=0;TMOD=0x21;//定時計數(shù)器方式控制寄存器,"自動重裝,16位計數(shù)器".SCON=0x50;//串行控制寄存器,方便在串口助手那觀察TH1=0xfa;TL1=0xfa;TR1=1;}voidADC_Power_On()//AD轉(zhuǎn)換電{ADC_CONTR|=0x80;delay(5);//必要的延時}voidget_ad_result()//取AD結(jié)果函數(shù),它是十位AD轉(zhuǎn)換,每十次平均,最后取低八位作為AD采樣數(shù)據(jù){uinti,q=0;for(i=0;i<10;i++){tp=0;ADC_RES=0;//高八位數(shù)據(jù)清零,STC12C5A60S2AD數(shù)據(jù)寄存名與STC12C54××系列不同ADC_RESL=0;//低兩位清零ADC_CONTR|=0x08;//啟動AD轉(zhuǎn)換while(!tp)//判斷AD轉(zhuǎn)換是否完成{tp=0x10;tp&=ADC_CONTR;}ADC_CONTR&=0xe7;ad_average_result=ADC_RES;q=q+ad_average_result;}ad_average_result=q/10;//ad_average_result=ad_average_result*4*5000/1024;}/************************AD轉(zhuǎn)換結(jié)束***********************/voidsend_ad_result()//取AD結(jié)果函數(shù)發(fā)送到串口,方便調(diào)試{SBUF=n1;while(TI==0);TI=0;delay1ms(100);//SBUF=R>>4;}//電壓采樣程序voidcaiyangP10()//測電壓{P1M0|=0x01;//設P1_0為開漏模式如:P1_0=#00000000BP1M1|=0x01;ADC_CONTR=0xe0;//設置P1.0為輸入AD轉(zhuǎn)換口delay(2);get_ad_result();//取轉(zhuǎn)換數(shù)據(jù)Vin=ad_average_result;R=Vin;}voiddisplayP10(){floatad1;//unsignedinttemp1,sh1,ge1,n1,m1;//ucharcodedis2[]={0x01,0x02,0x00};//ad1=x*7.8125;//電壓修正uchari;ad1=Vin*3.9608;//具體線性參數(shù)由輸入電壓值調(diào)整,該值的測量范圍為0-10.00V,5V左右的測量比較準確,//兩端的最大誤差為70mv,其他一般在40mv以內(nèi)temp1=(int)ad1;sh1=temp1/1000;//十位ge1=(temp1%1000)/100;//個位n1=((temp1%1000)%100)/10;//小數(shù)點后一位m1=((temp1%1000)%100)%10;//小數(shù)點后二位*///write_cmd(0x01);/*write_cmd(0x30);//基本指令操作方式lcd_pos(0,0);for(i=0;i<6;i++)write_dat(ma1[i]);lcd_pos(0,3);disp_number(sh1);lcd_pos(0,4);disp_number(ge1);lcd_pos(0,5);for(i=0;i<2;i++)write_dat(ma2[i]); lcd_pos(0,6);disp_number(n1);lcd_pos(0,7);disp_number(m1); */lCD_write_String(5,0,ma2);LCD_Write_String(7,0,ma2);//LCD_Write_String(9,0,temp1);LCD_Write_Char(5,0,sh1);LCD_Write_Char(6,0,ge1);LCD_Write_Char(7,0,ma2) ;LCD_Write_Char(8,0,n1);//voidLCD_Write_Char(unsignedcharx,unsignedchary,unsignedcharData);/*lcd_pos(2,0);disp_hanzi(disp1);lcd_pos(3,0);disp_hanzi(disp2);*/}/********************************************************/以下是與上位機進行數(shù)據(jù)通信模塊的操作程序/********************************************************/#include"reg51.h"#include<absacc.h>#include<math.h>#defineucharunsignedchar#defineuintunsignedintucharcodeshuju[]={'a','b','c'};ucharfhsj;#defineDataPortP0 //LCD1602數(shù)據(jù)端口sbitRS=P2^7; //LCD讀sbitRW=P2^6;sbitE=P2^5; //LCD寫uintbai=0,shi=0,ge=0,xiao1=0,xiao2=0,temp;ucharc=0;ucharcodetable3[]={'0','1','2','3','4','5','6','7','8','9','.'};//lcd1602延時函數(shù)voiddelayms(uintxms){uinti,j;for(i=xms;i>0;i--)for(j=850;j>0;j--);}//寫命令函數(shù)voidlcd_wmc(uchardat){RS=0;RW=0;E=1;DataPort=dat;delayms(5);E=0;}//寫數(shù)據(jù)函數(shù)voidlcd_wmd(uchardat){RS=1;RW=0;E=1;DataPort=dat;delayms(5);E=0;}//lcd1602初始化函數(shù)voidlcd_init(){ lcd_wmc(0x38);/*顯示模式設置*/;lcd_wmc(0x08);/*顯示關閉*/lcd_wmc(0x06);/*顯示光標移動設置*/lcd_wmc(0x0c);/*顯示開及光標設置*/lcd_wmc(0x01);}/*//顯示字符串函數(shù)voidzi_fu_chuan(unsignedcharx,unsignedchary,unsignedchar*s){lcd_wmc(0x01); if(y==0) { lcd_wmc(0x80+x);//表示第一行 } else { lcd_wmc(0xC0+x);//表示第二行 } while(*s) { lcd_wmd(*s); s++; }}*///顯示數(shù)字函數(shù)函數(shù)voidlcd_write_char(ucharx,uchary,uchardat1){ if(y==0) { lcd_wmc(0x80+x);//表示第一行 } else { lcd_wmc(0xC0+x);//表示第二行 }lcd_wmd(dat1);}voidInit_Com(void){TMOD=0x20;//定時器工作方式2,初值自動裝入PCON=0x00;//波特率不增倍SCON=0x40;//串行工作方式設定TH1=0xFd;//定時器初值高位TL1=0xFd;//定時器初值低位TR1=1;//啟動定時器}//毫秒級延時函數(shù)voiddelay(unsignedintx){unsignedchari;while(x--){for(i=0;i<120;i++);}}//字符發(fā)送函數(shù)voidputchar(unsignedchardata1){SBUF=data1;//將待發(fā)送的字符送入發(fā)送緩沖器while(TI==0);//等待發(fā)送完成TI=0;//發(fā)送中斷標志請0}unsignedcharReceive(void){unsignedchardat;while(RI==0)//只要接收中斷標志位RI沒有被置“1”;//等待,直至接收完畢(RI=1)RI=0;//為了接收下一幀數(shù)據(jù),需將RI清0dat=SBUF;//將接收緩沖器中的數(shù)據(jù)存于datreturndat;}/********************************************************/以下是與上位機進行數(shù)據(jù)通信模塊的操作程序/********************************************************/#include<STC12C5A60S2.H> //器件配置文件#include<intrins.h>串口初始化程序/********************************************************/#include"reg51.h"#include<absacc.h>#include<math.h>#defineucharunsignedchar#defineuintunsignedintucharcodeshuju[]={'a','b','c'};ucharfhsj;TMOD=0x20;//定時器工作方式2,初值自動裝入PCON=0x00;//波特率不增倍SCON=0x40;//串行工作方式設定TH1=0xFd;//定時器初值高位TL1=0xFd;//定時器初值低位TR1=1;//啟動定時器}//毫秒級延時函數(shù)voiddelay(unsignedintx){unsignedchari;while(x--){for(i=0;i<120;i++);}}//字符發(fā)送函數(shù)voidputchar(unsignedchardata1){SBUF=data1;//將待發(fā)送的字符送入發(fā)送緩沖器while(TI==0);//等待發(fā)送完成TI=0;//發(fā)送中斷標志請0}unsignedcharReceive(void){unsignedchardat;while(RI==0)//只要接收中斷標志位RI沒有被置“1”;//等待,直至接收完畢(RI=1)RI=0;//為了接收下一幀數(shù)據(jù),需將RI清0dat=SBUF;//將接收緩沖器中的數(shù)據(jù)存于datreturndat;}/********************************************************/以下是數(shù)據(jù)存儲電路的操作程序/********************************************************/#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#defineAddWr0xa0#defineAddRd0xa1sbitSDA=P2^1;sbitSCL=P2^0;voidmDelay(ucharj){uinti;for(;j>0;j--){for(i=0;i<125;i--){;}}}//開始信號voidiic_start(void){//EA=0;SDA=1;SCL=1;delayNOP();SDA=0;delayNOP();SCL=0;}//停止信號voidiic_stop(void){SDA=0;SCL=1;delayNOP();SDA=1;delayNOP();}voidiic_ack(void){SDA=0;delayNOP();SCL=1;delayNOP

溫馨提示

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

評論

0/150

提交評論