液位測量廣泛應(yīng)用于工業(yè)、經(jīng)濟(jì)、生活等領(lǐng)域。本設(shè)計(jì)以水箱供水為模型,用于對(duì)水箱液位信號(hào)進(jìn)行測量監(jiān)控記錄。
基于單片機(jī)的液位測量裝置具有測量準(zhǔn)確、重復(fù)性好、功耗低、使用壽命長的特點(diǎn),是廣泛采用的技術(shù)。在深入學(xué)習(xí)科學(xué)發(fā)展觀的同時(shí),電子設(shè)備的設(shè)計(jì)也需融入可持續(xù)發(fā)展的設(shè)計(jì)理念。故此,在基于單片機(jī)的液位測量裝置基礎(chǔ)上,擴(kuò)展實(shí)時(shí)監(jiān)控、數(shù)據(jù)采集、計(jì)算機(jī)串行通信等功能,從而能夠通過科學(xué)的方法將液位測量與統(tǒng)計(jì)科學(xué)結(jié)合,合理調(diào)度水資源,降低能源消耗。
本文從系統(tǒng)方案選擇與論證,硬件電路設(shè)計(jì),系統(tǒng)軟件與上位機(jī)軟件設(shè)計(jì)等幾個(gè)方面介紹了基于單片機(jī)的液位測量監(jiān)控系統(tǒng)的設(shè)計(jì)過程,最終實(shí)現(xiàn)了液位的實(shí)時(shí)測量與監(jiān)控。最后,本文總結(jié)了設(shè)計(jì)過程中出現(xiàn)的問題及解決方法,簡要敘述了所獲數(shù)據(jù)的處理方法,引出了進(jìn)一步設(shè)計(jì)開發(fā)的思路。
上世紀(jì)40年代,電子計(jì)算機(jī)的誕生,標(biāo)志著人類電子技術(shù)進(jìn)入了一個(gè)新的階段。1976年單片機(jī)的推出為電子電路設(shè)計(jì)提供了新的思路,也促進(jìn)了模擬電路向數(shù)字電路發(fā)展的歷程。它在一片芯片上集成了完整的計(jì)算機(jī)系統(tǒng)。從它的發(fā)展來看,低功耗CMOS化、微型單片化、主流與多品種共存的發(fā)展趨勢更進(jìn)一步促使了單片機(jī)在各個(gè)行業(yè)的應(yīng)用。這些應(yīng)用,很大一方面體現(xiàn)在工業(yè)控制中。在工業(yè)上,使用單片機(jī)可以構(gòu)成形式多樣的控制系統(tǒng)和數(shù)據(jù)采集系統(tǒng)。
單片機(jī)應(yīng)用發(fā)展迅速而廣泛。在過程控制中,單片機(jī)既可作為主計(jì)算機(jī),又可作為分布式計(jì)算機(jī)控制系統(tǒng)中的前端機(jī),完成模擬量的采集和開關(guān)量的輸入、處理和控制計(jì)算,然后輸出控制信號(hào)。單片機(jī)廣泛用于儀器儀表中,與不同類型的傳感器相結(jié)合,實(shí)現(xiàn)諸如電壓、功率、頻率、濕度、流量、速度、厚度、壓力、溫度等物理量的測量;在家用電器設(shè)備中,單片機(jī)已廣泛用于電視機(jī)、錄音機(jī)、電冰箱、電飯鍋、微波爐、洗衣、高級(jí)電子玩具、家用防盜報(bào)警等各種家電設(shè)備中。在計(jì)算機(jī)網(wǎng)絡(luò)和通信、醫(yī)用設(shè)備、工商、金融、科研、教育、國防、航空航天等領(lǐng)域都有著十分廣泛的應(yīng)用。
工程應(yīng)用中液位的測量常用方法主要有超聲波、激光紅外測距、機(jī)械浮子、壓力傳感器測距等幾種。這些測量方式對(duì)一般液位的測量來說各有各的優(yōu)點(diǎn),可根據(jù)不同的應(yīng)用場合和要求進(jìn)行選擇。比如,常見的液位控制系統(tǒng)多采用浮標(biāo)、電極等,這種控制形式結(jié)構(gòu)簡單成本低廉,但是控制精度不高,不能進(jìn)行數(shù)值顯示;另外容易引起誤操作,與上位機(jī)進(jìn)行信息交互比較困難。
隨著科技的發(fā)展,液位測量技術(shù)趨于智能化、微型化、可視化。本設(shè)計(jì)思想是用單片機(jī)做下位機(jī),PC機(jī)做上位機(jī),單片機(jī)和PC機(jī)相結(jié)合對(duì)水箱液位進(jìn)行測量和監(jiān)控。該設(shè)計(jì)要求具有一定的智能化,可操作性和穩(wěn)定性好。
在工農(nóng)業(yè)生產(chǎn)中,常常需要測量液體液位。隨著國家工業(yè)的迅速發(fā)展,液位測量技術(shù)被廣泛應(yīng)用到石油、化工、醫(yī)藥、食品等各行各業(yè)中。低溫液體(液氧、液氮、液氬、液化天然氣及液體二氧化碳等)得到廣泛的應(yīng)用,作為貯存低溫液體的容器要保證能承受其載荷;在發(fā)電廠、煉鋼廠中,保持正常的鍋爐汽包水位、除氧器水位、汽輪機(jī)凝氣器水位、高、低壓加熱器水位等,是設(shè)備安全運(yùn)行的保證;在教學(xué)與科學(xué)研究中,也經(jīng)常碰到需要進(jìn)行液位控制的實(shí)驗(yàn)裝置。
人工檢尺法可用于測量油罐液位,其歷史十分悠久。它利用浸入式刻度鋼皮尺測量液位,這種方法具有測量簡單、可靠性高、直觀、成本低的優(yōu)點(diǎn),但人為讀數(shù)誤差大、無法實(shí)現(xiàn)自動(dòng)檢測和操作。
常見的有電阻法、光電法、測重法、電容法、浮標(biāo)法及聲光電的反射回波法等。無論怎樣,這些方法的關(guān)鍵是利用液位傳感器將液位的相對(duì)位移量轉(zhuǎn)換成為電壓、電流、阻抗等便于進(jìn)行電處理的物理量。限于篇幅,下面僅簡單介紹電容測量法的基本原理。
本方法所使用的電容通常由兩塊圓柱形極板或一個(gè)探極與罐壁構(gòu)成。當(dāng)液位不同時(shí),電容器的介電常數(shù)就不同,故電容量也不同。在此基礎(chǔ)上可以把電容量轉(zhuǎn)化為電壓、相移、頻率、脈寬等物理量,再進(jìn)行測量。
電容式液位測量裝置通常結(jié)構(gòu)簡單、靈敏度高、穩(wěn)定性好、動(dòng)態(tài)響應(yīng)快,適合于惡劣的工作環(huán)境,生產(chǎn)成本也不高;但電容液位測量器需要考慮溫度補(bǔ)償,且介質(zhì)的成分、水分、溫度、密度等不確定變化因素直接影響測量結(jié)果的準(zhǔn)確性,另外檢測電路比較復(fù)雜,尤其是檢測微小電容量的變化。
非接觸式測量法包括超聲波法、調(diào)制型光學(xué)法、微波法等。其特點(diǎn)是測量手段并不采用浮子之類的固態(tài)物,而是利用聲、光、射線、磁場等的能量。液位傳感器不和被測介質(zhì)接觸,不受被測介質(zhì)影響,也不影響被測介質(zhì),故適用范圍廣泛。特別是接觸式測量裝置不能適用的特殊場合,如高粘度、強(qiáng)腐蝕性、污染性強(qiáng),易結(jié)晶的介質(zhì)。下面簡單介紹超聲波法和微波法的測量原理。
超聲波法:換能裝置將電功率脈沖轉(zhuǎn)換為超聲波,射向液面,經(jīng)液面反射后再由換能器將該超聲波轉(zhuǎn)換為電信號(hào),超聲波法可用于多液面的測量。
超聲波是機(jī)械波,傳播衰減小,界面反射信號(hào)強(qiáng),且發(fā)射和接收電路簡單,因而應(yīng)用較為廣泛;但超聲波的傳播速度受介質(zhì)的密度、濃度、溫度、壓力等因素影響,其測量精度往往較低。
微波法:微波通過天線輻射出去,經(jīng)液面反射后被天線接收,然后由二次電路計(jì)算發(fā)射信號(hào)與接收信號(hào)的時(shí)間差得出液位。
微波速度受傳播介質(zhì)、溫度、壓力、液體介電常數(shù)的影響很小,但液體界面的波動(dòng)、液體表面的泡沫、液體介質(zhì)的介電常數(shù)對(duì)微波反射信號(hào)強(qiáng)弱有很大影響。當(dāng)壓力超過規(guī)定數(shù)值時(shí),壓力對(duì)液位測量精度將產(chǎn)生顯著影響。對(duì)波導(dǎo)管的銹蝕、彎曲和傾斜都會(huì)影響測量精度。
光纖液位檢測是近年來出現(xiàn)的一種新技術(shù)。根據(jù)光導(dǎo)纖維中光在不同介質(zhì)中傳輸特性的改變對(duì)液位進(jìn)行測量。
光纖液位測量有以下優(yōu)點(diǎn):精度高、靈敏度好、抗電磁干擾、耐腐蝕、電絕緣性好、檢測現(xiàn)場無電、光路有抗擾性以及便于與計(jì)算機(jī)連接,便于與光纖傳輸系統(tǒng)組成網(wǎng)絡(luò)等。
目前,市面上進(jìn)行液位測量的儀表種類繁多,但是同時(shí)具有測量、監(jiān)控、數(shù)據(jù)記錄及處理的液位測量裝置并不多。在某些工業(yè)控制系統(tǒng)中,數(shù)據(jù)的測量這一基本功能已不能滿足現(xiàn)代工業(yè)的要求,往往需要對(duì)大批數(shù)據(jù)進(jìn)行記錄,對(duì)其進(jìn)行后期處理分析,實(shí)現(xiàn)差錯(cuò)控制、工藝改善、資源優(yōu)化等一系列工作。為了獲得大批量的數(shù)據(jù),得到可靠的分析資料,往往需要長期、多網(wǎng)點(diǎn)的監(jiān)控記錄。在液位測量這一領(lǐng)域中,如江河湖海、城市用水等方面,大量數(shù)據(jù)長時(shí)間,多網(wǎng)點(diǎn)的采集記錄分析具有普遍的意義。液位的變化分析,有助于人們進(jìn)一步對(duì)自然環(huán)境、天氣變化甚至是災(zāi)害預(yù)警提供可靠的支持。
本設(shè)計(jì)以水箱供水為模型,鑒于單片機(jī)液位測量裝置的測量準(zhǔn)確、重復(fù)性能好、功耗低、使用壽命長等特點(diǎn),設(shè)計(jì)以單片機(jī)為基礎(chǔ)的液位測量監(jiān)控記錄系統(tǒng)。具有實(shí)時(shí)液位測量監(jiān)控?cái)?shù)據(jù)處理等功能。
本設(shè)計(jì)以水箱供水為模型,鑒于單片機(jī)液位測量裝置的測量準(zhǔn)確、重復(fù)性能好、功耗低、使用壽命長等特點(diǎn),設(shè)計(jì)以單片機(jī)為基礎(chǔ)的液位測量監(jiān)控記錄系統(tǒng)。它具有實(shí)時(shí)測量監(jiān)控水箱液位高度并顯示的功能,并根據(jù)實(shí)時(shí)水量與設(shè)置的上、下液位參數(shù)的比較,啟動(dòng)電機(jī)供水或停止水泵。在啟動(dòng)電機(jī)與停止水泵時(shí),實(shí)時(shí)記錄時(shí)間點(diǎn)與電機(jī)狀態(tài)。液位測量高度≤5米,測量精度10%,AC220V供電。
可通過上位機(jī)軟件,可與監(jiān)控記錄系統(tǒng)進(jìn)行通信,能夠從PC機(jī)獲取當(dāng)前液位高度、電機(jī)狀態(tài)、設(shè)備系統(tǒng)時(shí)間、上下液位高度等數(shù)據(jù),并可根據(jù)需要改變系統(tǒng)默認(rèn)的參數(shù)。同時(shí)可以獲取設(shè)備運(yùn)行時(shí)記錄的數(shù)據(jù),并能夠?qū)?shù)據(jù)保存。能夠根據(jù)一定的算法,計(jì)算分析單位時(shí)間水箱消耗水量,繪制圖形,通過計(jì)算分析的結(jié)果,可以進(jìn)行區(qū)域用水統(tǒng)籌,降低能源的消耗。
根據(jù)系統(tǒng)的設(shè)計(jì)要求,采用單片機(jī)為主控芯片,通過單片機(jī)數(shù)據(jù)地址總線及I/O端口,擴(kuò)展數(shù)據(jù)存儲(chǔ)模塊、A/D轉(zhuǎn)換模塊、顯示模塊、時(shí)間模塊、串口通信模塊以及A/D轉(zhuǎn)換、電機(jī)控制等外圍電路,從而實(shí)現(xiàn)系統(tǒng)所需的設(shè)計(jì)功能。系統(tǒng)總體方案框圖如圖2-1:
單片機(jī)作為主控模塊,使得在對(duì)單片機(jī)選型上有了較大的空間。單片機(jī)在30多年的發(fā)展歷程中,形成了多公司、多系列、多型號(hào)“百家爭鳴”的局面。因而,選擇一個(gè)合適的單片機(jī)有時(shí)真的不太容易,要考慮的方面太多。大致總結(jié)出以下幾點(diǎn):
2) 單片機(jī)的增強(qiáng)功能。例如看門狗、雙指針、雙串口、RTC(實(shí)時(shí)時(shí)鐘)、EEPROM、擴(kuò)展RAM、CAN接口、I2C接口、SPI接口、USB接口。
根據(jù)以上因素:系統(tǒng)的實(shí)時(shí)性要求不高,因而運(yùn)算速度無需很快,且系統(tǒng)規(guī)模不大,采用分時(shí)復(fù)用的方式使用總線,對(duì)I/O口的數(shù)量可以要求進(jìn)一步降低。使用4路8位I/O接口即可滿足設(shè)計(jì)要求;系統(tǒng)中需要擴(kuò)展外部存儲(chǔ)器對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),數(shù)據(jù)存儲(chǔ)量為32KB已滿足要求,因此采用16位或準(zhǔn)16位地址總線的單片機(jī)即可滿足設(shè)計(jì)需要;由于是實(shí)驗(yàn)階段,采用DIP(雙列直插)封裝的芯片便于實(shí)驗(yàn),暫不考慮實(shí)際工業(yè)控制中的對(duì)外界環(huán)境的具體要求;系統(tǒng)采用AC220V供電,且對(duì)功耗沒有具體要求,使用DC5V為芯片供電,便于系統(tǒng)外圍電路的設(shè)計(jì);芯片支持ISP可節(jié)省仿真器的投入。
AT89S52是一種低功耗、高性能CMOS工藝的8位微控制器,具有8K在線系統(tǒng)可編程Flash存儲(chǔ)器。使用Atmel公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器,使得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é)電模式?臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。
鍵盤在單片機(jī)應(yīng)用系統(tǒng)中是一個(gè)很關(guān)鍵的部件,它能實(shí)現(xiàn)向單片機(jī)輸入數(shù)據(jù)、發(fā)送命令等功能,是人工干預(yù)單片機(jī)系統(tǒng)的主要手段?紤]到本設(shè)計(jì)實(shí)際需要的按鍵較少,故采用獨(dú)立式鍵盤接口電路即可。
顯示器是計(jì)算機(jī)的主要輸出設(shè)備,在簡單的工業(yè)控制系統(tǒng)中,常用的顯示器有數(shù)碼管顯示器(LED),液晶顯示器(LCD)等,該系統(tǒng)僅需顯示液位高度,即數(shù)字量,采用LED顯示器已能滿足系統(tǒng)要求。
系統(tǒng)中,要求測量范圍≤5m,測量精度為10%,假設(shè)測量范圍為5m,在10%精度的要求下,其測量的有效值為5*10%=0.5m。因而采用2位LED顯示器便能滿足設(shè)計(jì)要求。
在單片機(jī)應(yīng)用系統(tǒng)中,LED顯示器的現(xiàn)實(shí)方法有兩種:靜態(tài)顯示法和動(dòng)態(tài)顯示法。靜態(tài)顯示法的優(yōu)點(diǎn)是顯示程序十分簡單,顯示亮度大,由于CPU不必經(jīng)常掃描顯示器,所以節(jié)約了CPU的工作時(shí)間。但靜態(tài)顯示也有其缺點(diǎn),主要是占用I/O口資源較多,硬件成本較高。所以靜態(tài)顯示法常用在顯示器數(shù)目較少的應(yīng)用系統(tǒng)中。為了解決靜態(tài)顯示占用I/O口資源的缺點(diǎn),在軟件上采用壓縮BCD碼輸出顯示數(shù)據(jù),硬件上使用一個(gè)8位鎖存器74LS273與兩個(gè)BCD數(shù)碼顯示譯碼驅(qū)動(dòng)芯片74LS47連接,減少對(duì)系統(tǒng)資源的占用時(shí)間。由于74LS47譯碼為共陽極數(shù)碼管的碼表,因而選用8段(帶小數(shù)點(diǎn))共陽極LED用于數(shù)據(jù)顯示。高位顯示米單位,低位顯示分米單位,且高位小數(shù)點(diǎn)常亮。單片機(jī)使用1位I/O口控制數(shù)據(jù)的鎖存。
使用AT89S52內(nèi)部256字節(jié)的數(shù)據(jù)存儲(chǔ)器記錄數(shù)據(jù)是遠(yuǎn)遠(yuǎn)不夠的,因而需要擴(kuò)展數(shù)據(jù)存儲(chǔ)器進(jìn)行數(shù)據(jù)存儲(chǔ)。
RAM是存儲(chǔ)單元的內(nèi)容可按需隨意取出或存入,且存取的速度與存儲(chǔ)單元的位置無關(guān)的存儲(chǔ)器。這種存儲(chǔ)器在斷電時(shí)將丟失其存儲(chǔ)內(nèi)容,故主要用于存儲(chǔ)短時(shí)間使用的程序。
閃存則是一種不揮發(fā)性(Non-Volatile)內(nèi)存,在沒有電流供應(yīng)的條件下也能夠長久地保持?jǐn)?shù)據(jù),其存儲(chǔ)特性相當(dāng)于硬盤,這項(xiàng)特性正是閃存得以成為各類便攜型數(shù)字設(shè)備的存儲(chǔ)介質(zhì)的基礎(chǔ)。
NAND閃存的存儲(chǔ)單元?jiǎng)t采用串行結(jié)構(gòu),存儲(chǔ)單元的讀寫是以頁和塊為單位來進(jìn)行(一頁包含若干字節(jié),若干頁則組成儲(chǔ)存塊,NAND的存儲(chǔ)塊大小為8到32KB),這種結(jié)構(gòu)最大的優(yōu)點(diǎn)在于容量可以做得很大,超過512MB容量的NAND產(chǎn)品相當(dāng)普遍, NAND閃存的成本較低,有利于大規(guī)模普及。
NAND閃存的缺點(diǎn)在于讀速度較慢,它的I/O端口只有8個(gè),比NOR要少多了。這區(qū)區(qū)8個(gè)I/O端口只能以信號(hào)輪流傳送的方式完成數(shù)據(jù)的傳送,速度要比NOR閃存的并行傳輸模式慢得多。再加上NAND閃存的邏輯為電子盤模塊結(jié)構(gòu),內(nèi)部不存在專門的存儲(chǔ)控制器,一旦出現(xiàn)數(shù)據(jù)壞塊將無法修,可靠性較NOR閃存要差。
NOR的特點(diǎn)是芯片內(nèi)執(zhí)行(XIP, eXecute In Place),這樣應(yīng)用程序可以直接在flash閃存內(nèi)運(yùn)行,不必再把代碼讀到系統(tǒng)RAM中。NOR的傳輸效率很高,在1~4MB的小容量時(shí)具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的性能。
NAND結(jié)構(gòu)能提供極高的單元密度,可以達(dá)到高存儲(chǔ)密度,并且寫入和擦除的速度也很快。應(yīng)用NAND的困難在于FLASH的管理和需要特殊的。
根據(jù)設(shè)計(jì)要求,記錄某一記錄點(diǎn)(電機(jī)狀態(tài)改變時(shí)刻)的狀態(tài)與時(shí)間需要6字節(jié)數(shù)據(jù),即年(2000-2099年)、月(1-12月)、日(1-31日)、時(shí)(0-23時(shí))、分(0-59分)、狀態(tài)(0或1)這些數(shù)據(jù),如果系統(tǒng)長時(shí)間的工作,將會(huì)有大批量的數(shù)據(jù)產(chǎn)生,假若數(shù)據(jù)存儲(chǔ)空間不夠大,將會(huì)產(chǎn)生數(shù)據(jù)的覆蓋,從而降低了對(duì)數(shù)據(jù)分析的準(zhǔn)確性。因此選用32K字節(jié)的數(shù)據(jù)存儲(chǔ)器,可以記錄大于5000項(xiàng)記錄點(diǎn)數(shù)據(jù),考慮到水箱上水與耗水的頻繁程度不高,5000項(xiàng)數(shù)據(jù)已基本滿足后期數(shù)據(jù)處理的需求。在實(shí)際應(yīng)用中,系統(tǒng)設(shè)計(jì)在不掉電的工作環(huán)境下;軟件上,上位機(jī)軟件對(duì)數(shù)據(jù)提取后即可保存在PC機(jī)中,5000項(xiàng)數(shù)據(jù)進(jìn)行時(shí)間上的緩沖是充足的。為節(jié)省CPU的工作時(shí)間,且由于RAM存儲(chǔ)速度快、使用方便等特點(diǎn),從而可以忽略了RAM掉電數(shù)據(jù)丟失的缺點(diǎn)。
通過單片機(jī)的定時(shí)器,可以設(shè)計(jì)時(shí)間功能,然而單片機(jī)自身的產(chǎn)生時(shí)間數(shù)據(jù)大大占用了系統(tǒng)的資源,降低了工作效率,甚至影響了其他功能的實(shí)現(xiàn),因此在本設(shè)計(jì)方案中,采用了外部芯片提供時(shí)間信號(hào),用以系統(tǒng)記錄時(shí)間信息。
DS1302是DALLAS公司推出的涓流充電時(shí)鐘芯片,內(nèi)含有一個(gè)實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)靜態(tài)RAM,通過簡單的串行接口與單片機(jī)進(jìn)行通信。實(shí)時(shí)時(shí)鐘/日歷電路提供秒、分、時(shí)、日期、日、月、年的信息,每月的天數(shù)和閏年的天數(shù)可自動(dòng)調(diào)整,時(shí)鐘操作可通過AM/PM指示決定采用24或12小時(shí)格式。DS1302與單片機(jī)之間能簡單地采用同步串行的方式進(jìn)行通信,僅需用到三個(gè)口線(1) RES(復(fù)位),(2) I/O(數(shù)據(jù)線),(3) SCLK(串行時(shí)鐘)。時(shí)鐘/RAM的讀、寫數(shù)據(jù)以一個(gè)字節(jié)或多達(dá)31個(gè)字節(jié)的字符組方式通信。DS1302工作時(shí)功耗很低,保持?jǐn)?shù)據(jù)和時(shí)鐘信息時(shí)功率小于1mW。
DS1302是由DS1202改進(jìn)而來,增加了以下的特性雙電源管腳用于主電源和備份電源供應(yīng),Vcc1為可編程涓流充電電源,附加七個(gè)字節(jié)存儲(chǔ)器。它廣泛應(yīng)用于電話、傳真、便攜式儀器以及電池供電的儀器儀表等產(chǎn)品領(lǐng)域。下面將主要的性能指標(biāo)作一綜合:
A/D器件和芯片是實(shí)現(xiàn)單片機(jī)數(shù)據(jù)采集的常用外圍器件。A/D轉(zhuǎn)換器的品種繁多、性能各異,在設(shè)計(jì)數(shù)據(jù)采集系統(tǒng)時(shí),首先碰到的就是如何選擇合適的A/D轉(zhuǎn)換器以滿足系統(tǒng)設(shè)計(jì)要求的問題。選擇A/D轉(zhuǎn)換器件需要考慮器件本身的品質(zhì)和應(yīng)用的場合要求;旧希梢愿鶕(jù)以下幾個(gè)方面的指標(biāo)選擇一個(gè)A/D器件。
A/D轉(zhuǎn)換器位數(shù)的確定,應(yīng)該從數(shù)據(jù)采集系統(tǒng)的靜態(tài)精度和動(dòng)態(tài)平滑性這兩個(gè)方面進(jìn)行考慮。從靜態(tài)精度方面來說,要考慮輸入信號(hào)的原始誤差傳遞到輸出所產(chǎn)生的誤差,它是模擬信號(hào)數(shù)字化時(shí)產(chǎn)生誤差的主要部分。量化誤差與A/D轉(zhuǎn)換器位數(shù)有關(guān)。一般把8位以下的A/D轉(zhuǎn)換器歸為低分辨率A/D轉(zhuǎn)換器,9~12位的稱為中分辨率轉(zhuǎn)換器,13位以上的稱為高分辨率轉(zhuǎn)換器。10位以下的A/D芯片誤差較大,11位以上對(duì)減小誤差并無太大貢獻(xiàn),但對(duì)A/D轉(zhuǎn)換器的要求卻提得過高。因此,取10位或11位是合適的。由于模擬信號(hào)先經(jīng)過測量裝置,再經(jīng)A/D轉(zhuǎn)換器轉(zhuǎn)換后才進(jìn)行處理,因此,總的誤差是由測量誤差和量化誤差共同構(gòu)成的。A/D轉(zhuǎn)換器的精度應(yīng)與測量裝置的精度相匹配。也就是說,一方面要求量化誤差在總誤差中所占的比重要小,使它不顯著地?cái)U(kuò)大測量誤差;另一方面必須根據(jù)目前測量裝置的精度水平,對(duì)A/D轉(zhuǎn)換器的位數(shù)提出恰當(dāng)?shù)囊蟆?/div>
目前,大多數(shù)測量裝置的精度值不小于0.1%~0.5%,故A/D轉(zhuǎn)換器的精度取0.05% ~ 0.1%即可,相應(yīng)的二進(jìn)制碼為10~11位,加上符號(hào)位,即為11~12位。當(dāng)有特殊的應(yīng)用時(shí),A/D轉(zhuǎn)換器要求更多的位數(shù),這時(shí)往往可采用雙精度的轉(zhuǎn)換方案。
2) A/D轉(zhuǎn)換器的轉(zhuǎn)換速率
A/D轉(zhuǎn)換器從啟動(dòng)轉(zhuǎn)換到轉(zhuǎn)換結(jié)束,輸出穩(wěn)定的數(shù)字量,需要一定的轉(zhuǎn)換時(shí)間。轉(zhuǎn)換時(shí)間的倒數(shù)就是每秒鐘能完成的轉(zhuǎn)換次數(shù),稱為轉(zhuǎn)換速率。
確定A/D轉(zhuǎn)換器的轉(zhuǎn)換速率時(shí),應(yīng)考慮系統(tǒng)的采樣速率。例如,如果用轉(zhuǎn)換時(shí)間為100us的A/D轉(zhuǎn)換器,則其轉(zhuǎn)換速率為10KHz。根據(jù)采樣定理和實(shí)際需要,一個(gè)周期的波形需采10個(gè)樣點(diǎn),那么這樣的A/D轉(zhuǎn)換器最高也只有處理頻率為1KHz的模擬信號(hào)。把轉(zhuǎn)換時(shí)間減小,信號(hào)頻率可提高。對(duì)一般的單片機(jī)而言,要在采樣時(shí)間內(nèi)完成A/D轉(zhuǎn)換以外的工作,如讀數(shù)據(jù)、再啟動(dòng)、存數(shù)據(jù)、循環(huán)計(jì)數(shù)等已經(jīng)比較困難了。
3) 采樣/保持器
采集直流和變化非常緩慢的模擬信號(hào)時(shí)可不用采樣保持器。對(duì)于其他模擬信號(hào)一般都要加采樣保持器。如果信號(hào)頻率不高,A/D轉(zhuǎn)換器的轉(zhuǎn)換時(shí)間短,即采樣高速A/D時(shí),也可不用采樣/保持器。
4) A/D轉(zhuǎn)換器量程
A/D轉(zhuǎn)換時(shí)需要的是雙極性的,有時(shí)是單極性的。輸入信號(hào)最小值有的從零開始,也有從非零開始的。有的轉(zhuǎn)換器提供了不同量程的引腳,只有正確使用,才能保證轉(zhuǎn)換精度。在使用中,影響A/D轉(zhuǎn)換器量程的因素有:量程變換和雙極性偏置;雙基準(zhǔn)電壓;A/D轉(zhuǎn)換器內(nèi)部比較器輸入端的正確使用。
5) 滿刻度誤差
滿度輸出時(shí)對(duì)應(yīng)的輸入信號(hào)與理想輸入信號(hào)值之差。
6) 線性度
實(shí)際轉(zhuǎn)換器的轉(zhuǎn)移函數(shù)與理想直線的最大偏移。
ADC0804是單路8位逐次比較型雙極性輸入A/D轉(zhuǎn)換器,轉(zhuǎn)換時(shí)間小于

。量化間隔:

(2-1)
絕對(duì)量化誤差:

(2-2)
相對(duì)量化誤差:

(2-3)
在液位傳感器誤差與參考電壓誤差不大的情況下,ADC0804是完全滿足設(shè)計(jì)誤差要求的。
2.3.7 通信模塊設(shè)計(jì)方案
AT89S52單片機(jī)內(nèi)部有一個(gè)全雙工異步串行I/O接口,占用P3.0和P3.1兩個(gè)引腳。利用該接口,可實(shí)現(xiàn)系統(tǒng)與上位機(jī)的通信。
不同設(shè)備間串口通信的過程中,需要采用相同的的接口標(biāo)準(zhǔn)才能通信。
典型的串行通訊標(biāo)準(zhǔn)是RS232和RS485,它們定義了電壓,阻抗等,但不對(duì)軟件協(xié)議給予定義。
RS-232C標(biāo)準(zhǔn)(協(xié)議)的全稱是EIA-RS-232C標(biāo)準(zhǔn),其中EIA(Electronic Industry Association)代表美國電子工業(yè)協(xié)會(huì),RS(EcommededStandard)代表推薦標(biāo)準(zhǔn),232是標(biāo)識(shí)號(hào),C代表RS232的最新一次修改(1969),在這之前,有RS232B、RS232A。。它規(guī)定連接電纜和機(jī)械、電氣特性、信號(hào)功能及傳送過程。
區(qū)別于RS232,RS485的特性包括:
1) RS-485的電氣特性:邏輯“1”以兩線間的電壓差為+(2~6)V表示;邏輯“0”以兩線間的電壓差為-(2~6)V表示。接口信號(hào)電平比RS-232-C降低了,就不易損壞接口電路的芯片,且該電平與TTL電平兼容,可方便與TTL電路連接。
2) RS-485的數(shù)據(jù)最高傳輸速率為10Mbps。
3) RS-485接口是采用平衡驅(qū)動(dòng)器和差分接收器的組合,抗共模干擾能力增強(qiáng),即抗噪聲干擾性好。
4) RS-485接口的最大傳輸距離標(biāo)準(zhǔn)值為4000英尺,實(shí)際上可達(dá)3000米,另外RS-232-C接口在總線上只允許連接1個(gè)收發(fā)器,即單站能力。而RS-485接口在總線上是允許連接多達(dá)128個(gè)收發(fā)器。即具有多站能力,這樣用戶可以利用單一的RS-485接口方便地建立起設(shè)備網(wǎng)絡(luò)。
因RS-485接口具有良好的抗噪聲干擾性,長的傳輸距離和多站能力等上述優(yōu)點(diǎn)就使其成為首選的串行接口。
PC機(jī)作為上位機(jī),一般情況下帶有RS-232C通信接口,鑒于RS-485接口的優(yōu)點(diǎn)與系統(tǒng)實(shí)際工作環(huán)境的需要,系統(tǒng)采用RS-485接口標(biāo)準(zhǔn),使用RS-232/RS-485轉(zhuǎn)換器與PC機(jī)連接進(jìn)行通信。
MAX485接口芯片是Maxim公司的一種RS-485芯片。采用單一電源+5V工作,額定電流為300μA,采用半雙工通訊方式。它完成將TTL電平轉(zhuǎn)換為RS-485電平的功能。
2.3.8 電機(jī)控制模塊設(shè)計(jì)方案
由于設(shè)計(jì)中沒有規(guī)定水泵電機(jī)的參數(shù)規(guī)格,而且不同型號(hào)的水泵參數(shù)不盡相同,電氣參數(shù)的不同使得在電路上的設(shè)計(jì)差異較大,因此在此僅作理論演示。
選用繼電器作為電機(jī)控制的元件。
繼電器是一種電子控制器件,它具有控制系統(tǒng)(又稱輸入回路)和被控制系統(tǒng)(又稱輸出回路),通常應(yīng)用于自動(dòng)控制電路中,它實(shí)際上是用較小的電流去控制較大電流的一種“自動(dòng)開關(guān)”。故在電路中起著自動(dòng)調(diào)節(jié)、安全保護(hù)、轉(zhuǎn)換電路等作用。
繼電器主要產(chǎn)品技術(shù)參數(shù):
1) 額定工作電壓。是指繼電器正常工作時(shí)線圈所需要的電壓。根據(jù)繼電器的型號(hào)不同,可以是交流電壓,也可以是直流電壓。
2) 直流電阻。是指繼電器中線圈的直流電阻,可以通過萬能表測量。
3) 吸合電流。是指繼電器能夠產(chǎn)生吸合動(dòng)作的最小電流。在正常使用時(shí),給定的電流必須略大于吸合電流,這樣繼電器才能穩(wěn)定地工作。而對(duì)于線圈所加的工作電壓,一般不要超過額定工作電壓的1.5倍,否則會(huì)產(chǎn)生較大的電流而把線圈燒毀。
4) 釋放電流。是指繼電器產(chǎn)生釋放動(dòng)作的最大電流。當(dāng)繼電器吸合狀態(tài)的電流減小到一定程度時(shí),繼電器就會(huì)恢復(fù)到未通電的釋放狀態(tài)。這時(shí)的電流遠(yuǎn)遠(yuǎn)小于吸合電流。
5) 觸點(diǎn)切換電壓和電流。是指繼電器允許加載的電壓和電流。它決定了繼電器能控制電壓和電流的大小,使用時(shí)不能超過此值,否則很容易損壞繼電器的觸點(diǎn)。
根據(jù)以上的參數(shù),結(jié)合設(shè)計(jì)的演示性,選用額定工作電壓120VAC/24VDC,工作電流3A,控制電壓5VDC的小型繼電器。
第3章 硬件電路設(shè)計(jì)
3.1 AT89S52硬件設(shè)計(jì)
AT89S52引腳定義及功能介紹如圖3-1。
P0口:P0口是一個(gè)8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電平。對(duì)P0端口寫“1”時(shí),引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0具有內(nèi)部上拉電阻。在FLASH編程時(shí),P0口也用來接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn)時(shí),需要外部上拉電阻。
P1口:P1口是一個(gè)具有內(nèi)部上拉電阻的8位雙向I/O口,P1輸出緩沖器能驅(qū)動(dòng)4個(gè)TTL邏輯電平。對(duì)P1端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0和P1.2分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(P1.0/T2)和定時(shí)器/計(jì)數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體如下所示:
- 在FLASH編程和校驗(yàn)時(shí),P1口接收低8位地址字節(jié)。
- 引腳號(hào)第二功能:
P1.0/T2 (定時(shí)器/計(jì)數(shù)器T2的外部計(jì)數(shù)輸入),時(shí)鐘輸出
P1.1/T2EX (定時(shí)器/計(jì)數(shù)器T2的捕捉/重載觸發(fā)信號(hào)和方向控制)
P1.5 MOSI (在系統(tǒng)編程用)
P1.6 MISO (在系統(tǒng)編程用)
P1.7 SCK (在系統(tǒng)編程用)
P2口:P2口是一個(gè)具有內(nèi)部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅(qū)動(dòng)4個(gè)TTL邏輯電平。對(duì)P2端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲(chǔ)器或用16位地址讀取外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX @DPTR)時(shí),P2口送出高八位地址。在這種應(yīng)用中,P2口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用8位地址(如MOVX @RI)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口輸出P2鎖存器的內(nèi)容。在FLASH編程和校驗(yàn)時(shí),P2口也接收高8位地址字節(jié)和一些控制信號(hào)。
P3口:P3口是一個(gè)具有內(nèi)部上拉電阻的8位雙向I/O口,P3輸出緩沖器能驅(qū)動(dòng)4個(gè)TTL邏輯電平。對(duì)P3端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。P3口亦作為AT89S52特殊功能(第二功能)使用,如下表所示。
表3-1 端口引腳第二功能
| |
| |
| |
| |
| |
| TO(定時(shí)/計(jì)數(shù)器0) |
| T1(定時(shí)/計(jì)數(shù)器1) |
| WR(外部數(shù)據(jù)存儲(chǔ)器寫選通) |
| RD(外部數(shù)據(jù)存儲(chǔ)器讀選通) |
此外,P3口還接收一些用于FLASH閃存編程和程序校驗(yàn)的控制信號(hào)。
RST——復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。
ALE/PROG——當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)ALE脈沖。對(duì)FLASH存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對(duì)特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE禁止位無效。
PSEN——程序儲(chǔ)存允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89S52由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸出兩個(gè)脈沖,在此期間,當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器,將跳過兩次PSEN信號(hào)。
EA/VPP——外部訪問允許,欲使CPU僅訪問外部程序存儲(chǔ)器(地址為0000H~FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器的指令。FLASH存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。
XTAL1:振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。
XTAL2:振蕩器反相放大器的輸出端。
為了便于接下來的說明,單片機(jī)各管腳網(wǎng)絡(luò)標(biāo)號(hào)定義如圖3-1。
要使單片機(jī)按照設(shè)計(jì)要求正常工作,完整單片機(jī)最基本的工作要求,考慮到系統(tǒng)無需精確地定時(shí)功能,且為了方便串口通信波特率的計(jì)算,采用11.0592MHz的晶振提供系統(tǒng)時(shí)鐘。并附加復(fù)位電路,組成單片機(jī)最小系統(tǒng)。根據(jù)電路設(shè)計(jì)規(guī)范和AT89S52芯片手冊,設(shè)計(jì)時(shí)鐘電路與復(fù)位電路如圖3-2:
圖3-2 復(fù)位電路及時(shí)鐘電路
圖中網(wǎng)絡(luò)標(biāo)號(hào)RST連接單片機(jī)RST引腳,具有上電復(fù)位與手動(dòng)復(fù)位的功能;XTAL1與XTAL2連接單片機(jī)XTAL1和XTAL2引腳,且并聯(lián)兩個(gè)30pF匹配電容使晶振起振。
由于單片機(jī)P0口作普通I/O口時(shí)不能輸出高電平,因此需接上拉電阻,實(shí)際電路中,使用8*10KΩ電阻作為上拉電阻。
3.2 按鍵設(shè)計(jì)
鍵盤在單片機(jī)應(yīng)用系統(tǒng)中是一個(gè)很關(guān)鍵的部件,它能實(shí)現(xiàn)向單片機(jī)系統(tǒng)輸入數(shù)據(jù)、發(fā)送命令等功能,是人工干預(yù)單片機(jī)的主要手段?紤]到本設(shè)計(jì)實(shí)際需要的按鍵較少,故采用獨(dú)立式鍵盤接口電路。它是將每個(gè)獨(dú)立按鍵按一對(duì)一的方式直接接到單片機(jī)的I/O口上,通過程序掃描查詢方式實(shí)現(xiàn)與單片機(jī)系統(tǒng)交互的。在程序查詢方式下,通過I/O端口讀入按鍵狀態(tài),當(dāng)有按鍵按下時(shí),相應(yīng)的I/O端口變?yōu)榈碗娖剑幢话聪碌陌存I在上拉電阻作用下為高電平,這樣通過讀I/O口的狀態(tài)判斷是否有按鍵按下。系統(tǒng)按鍵電路如圖3-3所示。
下圖中,S2~S5便是控制顯示用的按鍵。其作用就是通過按動(dòng)它們實(shí)現(xiàn)對(duì)高低警戒液位的設(shè)置。具體來說,S3、S4分別實(shí)現(xiàn)數(shù)字的增一與減一,S2、S5則作為高低警戒液位的模式選擇和確認(rèn)鍵。
圖3-3 系統(tǒng)按鍵電路
3.3 顯示單元硬件設(shè)計(jì)
在顯示單元上,使用了74LS273帶公共時(shí)鐘復(fù)位八位觸發(fā)器與74LS47共陽極BCD顯示譯碼驅(qū)動(dòng)芯片。兩個(gè)芯片的管腳圖如圖3-4:
74LS273與74LS47引腳功能說明:
74LS273:1腳是復(fù)位CLR,低電平有效,當(dāng)1腳是低電平時(shí),輸出腳2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)全部輸出0,即全部復(fù)位;
當(dāng)1腳為高電平時(shí),11(CLK)腳是鎖存控制端,并且是上升沿觸發(fā)鎖存,當(dāng)11腳有一個(gè)上升沿,立即鎖存輸入腳3、4、7、8、13、14、17、18的電平狀態(tài),并且立即呈現(xiàn)在在輸出腳2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)上。
74LS47上BI/ROB,LI,RBI引腳為控制引腳,主要用于測試和脈沖控制,均為低電平有效,設(shè)計(jì)上不適用此項(xiàng)功能,因此均接高電平。A0~A3是BCD輸入,分解74LS273輸出的高、低四位。a~g用于共陽極數(shù)碼管的相應(yīng)管腳的連接。
為了保護(hù)LED數(shù)碼管,在74LS47與LED之間添加限流電阻,以滿足數(shù)碼管的工作需要。
根據(jù)以上的設(shè)計(jì)思路,設(shè)計(jì)電路圖如圖3-5:
3.4 存儲(chǔ)單元硬件設(shè)計(jì)
存儲(chǔ)模塊的硬件設(shè)計(jì)比較簡單,由于AT89S52單片機(jī)為數(shù)據(jù)線與低8位地址線復(fù)用,需要使用地址鎖存芯片74LS373。上文中已敘述,使用32KRAM作為存儲(chǔ)芯片,因此選用與51系列兼容的62256隨機(jī)數(shù)據(jù)存儲(chǔ)器。
該模塊中使用的兩個(gè)芯片管腳功如圖3-6:
在62256中,A0~A14管腳為地址總線,共15位,尋址范圍可達(dá)到32kB;I/O0~I/O7為8位三態(tài)雙向數(shù)據(jù)接口;Vcc,Vss為電源和地;CS是片選接口,低電平有效;OE/WE分別是讀選通和寫選通數(shù)據(jù)輸入輸入線,低電平有效。
圖3-7 存儲(chǔ)的單元電路
74LS373引腳位置和功能與74LS273差異不大,區(qū)別在于其1腳是輸出使能(OE),是低電平有效,當(dāng)1腳是高電平時(shí),不管輸入3、4、7、8、13、14、17、18如何,也不管11腳(鎖存控制端,G)如何,輸出2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)全部呈現(xiàn)高阻狀態(tài)(或者叫浮空狀態(tài));當(dāng)1腳是低電平時(shí),只要11腳(鎖存控制端,G)上出現(xiàn)一個(gè)下降沿,輸出2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)立即呈現(xiàn)輸入腳3、4、7、8、13、14、17、18的狀態(tài)。74LS273也可以作為地址鎖存器來用,作鎖存器時(shí),對(duì)273來說,1(CLR)腳必須接高電平,ALE信號(hào)經(jīng)過反相后接11腳(因?yàn)閱纹瑱C(jī)的ALE信號(hào)是以下降沿方式出現(xiàn))對(duì)373來說,1腳接低電平,保證使能,11腳直接接單片機(jī)的ALE信號(hào)。
按照常規(guī)的連接方法設(shè)計(jì)電路圖3-7如示。
3.5 時(shí)間單元硬件設(shè)計(jì)
DS1302因其較小的體積,占用I/O口資源少等特點(diǎn),是常用的時(shí)間芯片。此次設(shè)計(jì)采用DIP-8封裝,管腳功能如圖3-8:
圖3-8 DS1302引腳圖

其中Vcc1為后備電源,Vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中電壓較大者供電。當(dāng)Vcc2大于Vcc1+0.2V時(shí),Vcc2供電,當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。X1和X2是振蕩源接口,外接32.768kHz晶振。RST是復(fù)位/片選線,通過把RST輸入驅(qū)動(dòng)置高電平來啟動(dòng)所有的數(shù)據(jù)傳輸。RST輸入有兩種功能:首先RST接通控制邏輯,允許地址/命令序列送入移位寄存存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果傳送過程中RST置為低電平,則會(huì)終止此次傳輸,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc≥2.5V之前,RST必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端。SCLK始終是輸入端,用來輸入串行時(shí)鐘信號(hào)。根據(jù)DS1302的特點(diǎn),設(shè)計(jì)電路如圖3-9:
圖3-9 時(shí)間單元電路
在實(shí)際應(yīng)用中,起控制、輸入輸出的三個(gè)端口上拉較弱,容因產(chǎn)生信號(hào)串?dāng)_,因此加上了上拉電阻與單片機(jī)P1口相連,加強(qiáng)信號(hào)的穩(wěn)定性;為了保證時(shí)鐘的可靠性,在Vcc1上使用了CR2032紐扣電池作為備用電源,輸出電壓為3V,從而保證了系統(tǒng)掉電狀態(tài)下,時(shí)鐘能夠繼續(xù)保持運(yùn)行。
3.6 A/D轉(zhuǎn)換單元硬件設(shè)計(jì)
A/D轉(zhuǎn)換模塊是系統(tǒng)中較為重要的一部分,由于涉及到模擬部分,A/D轉(zhuǎn)換器的結(jié)構(gòu)較為復(fù)雜。
以下是ADC0804管腳及功能的介紹:
/CS 芯片選擇信號(hào)。
/RD 外部讀取轉(zhuǎn)換結(jié)果的控制輸出信號(hào)。/RD為高電平時(shí),DB0~DB7處于高阻抗:/RD為低電平時(shí),數(shù)據(jù)才會(huì)輸出。
/WR 用來啟動(dòng)轉(zhuǎn)換的控制輸入,相當(dāng)于ADC的轉(zhuǎn)換開始(/CS=0時(shí)),當(dāng)/WR由高電平變?yōu)榈碗娖綍r(shí),轉(zhuǎn)換器被清除;當(dāng)/WR回到高電平時(shí),轉(zhuǎn)換正式開始。
CLK IN,CLK R 時(shí)鐘輸入或接振蕩元件(R,C)頻率約限制在100kHZ~1460kHZ,如果使用RC電路則其振蕩頻率為1/(1.1RC)。
/INTR 中斷請求信號(hào)輸出,低地平動(dòng)作。
VIN(+) VIN(-) 差動(dòng)模擬電壓輸入。輸入單端正電壓時(shí),VIN(-)接地;而差動(dòng)輸入時(shí),直接加入VIN(+) VIN(-)。
AGND,DGND 模擬信號(hào)以及數(shù)字信號(hào)的接地。
VREF 輔助參考電壓。
DB0~DB7 8位的數(shù)字輸出。
VCC 電源供應(yīng)以及作為電路的參考電壓。
設(shè)計(jì)滿偏電壓為5V,則VREF輔助參考電壓為5V/2=2.5V,在10%的誤差范圍內(nèi),無需過分苛刻參考電壓的電壓源,由于系統(tǒng)中DC5V供電,采用兩只相同阻值電阻分壓,便能近似得到2.5V的參考電壓。
系統(tǒng)中使用10K電阻與150pF電容組成RC振蕩電路,根據(jù)技術(shù)手冊計(jì)算公式:

(3-1)
其振蕩頻率約為606kHz,滿足芯片要求。
另外,以阻抗型液位傳感器為模型,液位傳感器阻值變化與液位的高度是成正比的,因此需要將電阻值轉(zhuǎn)換為電壓值匹配A/D轉(zhuǎn)換器。常用的阻抗-電壓轉(zhuǎn)換法如歐姆法。由于被測阻抗兩端電壓正比于被測電阻,可把被測阻抗轉(zhuǎn)換為電壓測量。即

(3-2)
式中,

是轉(zhuǎn)化電壓,

恒定電流,

為被測電阻,

為比例系數(shù)。因此,液位高度的變化同樣正比于輸入電壓,故而A/D轉(zhuǎn)換器輸出的數(shù)據(jù)正比于液位高度。為了簡化設(shè)計(jì)調(diào)試過程,使用系統(tǒng)內(nèi)部5V電壓作為模擬輸入,VIN(-)直接接地,通過接入傳感器分壓將阻抗轉(zhuǎn)換為電壓信號(hào),接入電位器可實(shí)現(xiàn)模擬輸入。
根據(jù)以上參數(shù)分析,設(shè)計(jì)電路如圖3-11:
圖3-11 A/D轉(zhuǎn)換單元電路圖
3.7 通信單元硬件設(shè)計(jì)
MAX485僅有8個(gè)管腳,電路設(shè)計(jì)比較簡單。
RO引腳接到單片機(jī)串口接收引腳RXD(P3.0),DI引腳接到單片機(jī)串口發(fā)送引腳TXD(P3.1)。由于MAX485為半雙工通信方式,不能同時(shí)發(fā)送和接收數(shù)據(jù),只能通過控制RE和DE引腳的狀態(tài)來進(jìn)行發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的轉(zhuǎn)換。為了節(jié)省單片機(jī)I/O口資源,將RE和DE引腳連在一起,輸入低電平時(shí),MAX485處于接收狀態(tài);輸入高電平時(shí),其處于發(fā)送數(shù)據(jù)狀態(tài)。定義RE和DE連接在一起的網(wǎng)絡(luò)標(biāo)號(hào)為E,接入單片機(jī)P1口,用于發(fā)送與接收的轉(zhuǎn)換。A,B端為發(fā)送接收差分信號(hào)端,一般需在A,B端之間加匹配電阻,匹配電阻為120Ω。
硬件電路如圖3-13:
圖3-13 串行通信模塊電路圖
3.8 其他外圍電路的設(shè)計(jì)
繼電器電路設(shè)計(jì)。由于使用單片機(jī)I/O口的驅(qū)動(dòng)電流較弱,不滿足繼電器吸合電流參數(shù)的要求,所以需使用三極管驅(qū)動(dòng)繼電器吸合。設(shè)計(jì)電路如圖3-14。
為了防止電源尖峰脈沖引發(fā)的噪聲干擾以及高頻信號(hào)線間的耦合干擾,在電源入口處及芯片頂端或底端,接入去耦電容,以增強(qiáng)系統(tǒng)的穩(wěn)定性。
電源指示燈設(shè)計(jì)如圖3-15。
圖3-14 繼電器部分電路圖
圖3-15 電源指示燈電路圖
第4章系統(tǒng)軟件設(shè)計(jì)
4.1 系統(tǒng)軟件
4.1.1 系統(tǒng)軟件編譯開發(fā)環(huán)境
8051系類單片機(jī)共擁有111條系統(tǒng)指令,可實(shí)現(xiàn)51種基本操作。然而匯編語言指令卻有程序的可讀性低,程序開發(fā)人員的開發(fā)時(shí)間長與開發(fā)難度大,程序移植性差等缺點(diǎn)。
C語言是一種編譯型程序設(shè)計(jì)語言。它兼顧了多種高級(jí)語言的特點(diǎn),并具備匯編語言的功能。用C語言來編寫目標(biāo)系統(tǒng)軟件,會(huì)大大縮短開發(fā)周期,增加軟件的可讀性,便于改進(jìn)和擴(kuò)充。用C語言進(jìn)行51系列單片機(jī)程序設(shè)計(jì)是單片機(jī)開發(fā)與應(yīng)用的必然趨勢。
KEIL C51開發(fā)工具套件可用于匯編C語言程序、匯編源程序,鏈接和定位目標(biāo)文件和庫,創(chuàng)建HEX文件以及調(diào)試目標(biāo)程序。
本設(shè)計(jì)使用KEIL C51 μVision3為開發(fā)編譯環(huán)境,使用C語言編寫程序,實(shí)現(xiàn)各模塊功能設(shè)計(jì)。
4.1.2 系統(tǒng)主程序流程圖
系統(tǒng)主程序的功能主要是完成對(duì)單片機(jī)的初始化,設(shè)置警戒液位的上下限,實(shí)時(shí)顯示液位值以及鍵盤掃描等工作。主程序流程圖如圖4-1所示。
4.1.3 系統(tǒng)初始化
該模塊在系統(tǒng)上電開機(jī)時(shí)將系統(tǒng)端口、數(shù)據(jù)存儲(chǔ)區(qū)、標(biāo)志位、指針、地址等賦予有含義的值。具體分為以下幾個(gè)模塊列表描述。
表4-1 初始化參數(shù)及含義
| | | |
| | | A/D轉(zhuǎn)換芯片數(shù)據(jù)讀入控制,初始為不讀入 |
| | A/D轉(zhuǎn)換芯片轉(zhuǎn)換控制,初始為停止 |
| | |
| | |
| | |
| | | 單片機(jī)片內(nèi)定時(shí)/計(jì)數(shù)器工作在方式二 |
| | |
| | |
| |
| | |
| | |
| | |
| | | 初始化系統(tǒng)時(shí)間為2011年1月1日 0時(shí)0分0秒星期六 其中sec,min,hr,date,mon,day,year 依次為秒、分、時(shí)、日、月、星期、年 |
| |
| |
| |
| |
| |
| |
| | | 數(shù)據(jù)存儲(chǔ)狀態(tài)標(biāo)志字節(jié)指針 |
| | 數(shù)據(jù)存儲(chǔ)區(qū)指針 |
| | |
| | |
初始化過程中,調(diào)用A/D轉(zhuǎn)換模塊獲得首次液位數(shù)據(jù),同時(shí)將其顯示,完成初始化工作 |
圖4-1 主程序流程圖
4.1.4 顯示與A/D轉(zhuǎn)換的數(shù)據(jù)處理
系統(tǒng)中,顯示輸出的要求為壓縮BCD碼,而A/D轉(zhuǎn)換輸入的數(shù)據(jù)是8位16進(jìn)制碼,因此在實(shí)現(xiàn)顯示之前需要編碼的轉(zhuǎn)換。對(duì)8位A/D轉(zhuǎn)換器而言,其十六進(jìn)制、相對(duì)滿偏電壓比率、相對(duì)電壓幅值的關(guān)系對(duì)應(yīng)如表4-2:
表4-2 A/D轉(zhuǎn)換幅值數(shù)據(jù)關(guān)系對(duì)照表
綜上,電壓幅值與液位高度在數(shù)值上是相等的。為了通過LED直觀顯示液位高度,進(jìn)行轉(zhuǎn)換的思路如下:
設(shè)輸入8位二進(jìn)制數(shù)據(jù)為

,

的商即為以分米為單位的液位高度數(shù)據(jù),余數(shù)為以厘米為單位的數(shù)據(jù),由于顯示位數(shù)僅為2位,最低位為分米,固使用“二舍三入”的辦法保留分米單位的整數(shù)倍數(shù)據(jù)

。為了將這個(gè)數(shù)據(jù)轉(zhuǎn)換為為壓縮BCD碼,再將

,得到的商左移四位(相當(dāng)于乘以16)為壓縮BCD碼高四位,余數(shù)為壓縮BCD碼低四位,二者相加,就是最終的結(jié)果。
顯示轉(zhuǎn)換部分程序簡略如下:
uchar dis_transform(uchar num)
{
uchar ac, quotient, play, mid ;
ac = num%5;
quotient = (num-ac)/5;
if(ac>2)
quotient++;
ac=quotient%10;
mid=(quotient-ac)/10;
play=ac+mid*16;
return play;
}
4.1.5 按鍵部分軟件設(shè)計(jì)
由于使用的按鍵較少,所以本文采用了獨(dú)立式鍵盤,即每個(gè)按鍵單獨(dú)占用一根口線。在程序查詢方式下,通過I/O端口讀入按鍵狀態(tài),當(dāng)有按鍵按下時(shí),相應(yīng)的端口變?yōu)榈碗娖,這樣通過讀入I/O口狀態(tài)判斷是否有按鍵按下。查詢式鍵盤的程序流程圖如下:
下面給出鍵盤掃描的主程序,其分支程序省略。
void judge_key(void)
{uchar Key_value=0;
Key_value=P3&0x3c; /*讀取鍵值*/
switch(Key_value)
{
case 0x38:delay(30000); /*調(diào)用延時(shí)子程序*/
if(Key_value==(P3&0x3c)) /*進(jìn)行判斷按鍵是否為干擾*/
{manage_key2();break;} /*調(diào)用子函數(shù)*/
else break;
……
case 0x1c:delay(30000);
if(Key_value==(P3&0x3c))
{manage_key5();break;}
else break;
default:break;
}
}
4.1.6 顯示模塊的軟件設(shè)計(jì)
由于使用了靜態(tài)鎖存顯示,需要對(duì)顯示數(shù)據(jù)進(jìn)行處理后進(jìn)行鎖存控制。硬件設(shè)計(jì)中使用了74LS273鎖存數(shù)據(jù)。它的特點(diǎn)是在ALE輸入信號(hào)的下降沿到來時(shí)鎖存信號(hào),因此首先置控制引腳高電平,延遲幾個(gè)時(shí)鐘周期待信號(hào)穩(wěn)定,P0口輸出處理后的數(shù)據(jù),同樣延遲幾個(gè)時(shí)鐘周期待信號(hào)穩(wěn)定,控制引腳置低電平,數(shù)據(jù)鎖存,顯示輸出。
液位顯示部分程序簡略如下:
display()
{
DIS=0;
_nop_();
_nop_();
_nop_();
P0=dis_transform(prelq);
_nop_();
_nop_();
_nop_();
DIS=1;
}
4.1.7 A/D轉(zhuǎn)換模塊軟件設(shè)計(jì)
A/D轉(zhuǎn)換的控制變量有兩個(gè),即adWR與adRD;上文中已說明了它的功能,故不再重復(fù)。該模塊分為兩個(gè)階段,第一階段是為A/D轉(zhuǎn)換啟動(dòng)控制,通過adWR復(fù)位→延遲→置位完成。第二階段是數(shù)據(jù)的提取過程,由于P0口做輸入時(shí)的特性,首先軟件上將P0口寄存器置為0xFF,延遲適當(dāng)時(shí)間后adRD復(fù)位,輸出A/D轉(zhuǎn)換結(jié)果,隨之通過P0口讀入數(shù)據(jù),還原adRD為高,該階段結(jié)束。兩個(gè)階段中可加如適當(dāng)?shù)难舆t,以滿足ADC0804 100ns的轉(zhuǎn)換時(shí)間。
4.1.8 電機(jī)控制模塊軟件設(shè)計(jì)
本設(shè)計(jì)采用單片機(jī)主控芯片控制繼電器外圍電路,用于驅(qū)動(dòng)電機(jī)的啟動(dòng)與關(guān)停。其程序流程圖如圖4-3所示。以下是液位檢測與電機(jī)控制部分源程序代碼:
check_lq()
{
ad_start();
_nop_();
_nop_();
_nop_();
ad_read();
if(prelq>=uplq && key==1)
{
RELAY=1;
key=0;
makemark(1);
}
else if(prelq<=downlq && key==0)
{
RELAY=0;
key=1;
makemark(0);
}
}
4.1.9 通信協(xié)議及通信模塊軟件設(shè)計(jì)
1) 通信協(xié)議
為了使PC上位機(jī)與設(shè)備實(shí)現(xiàn)有意義的通信,設(shè)計(jì)了簡單的通信協(xié)議。
通信波特率設(shè)計(jì)為4800bps,過高的波特率在沒有檢糾錯(cuò)方式的情況下易發(fā)生數(shù)據(jù)的丟失,過低的波特率會(huì)使傳輸變慢;8位有效數(shù)據(jù)位;無奇偶校驗(yàn)位;1位停止位。傳送以字節(jié)為單位,發(fā)送命令與數(shù)據(jù)。通信協(xié)議命令控制字如表4-3。
軟件設(shè)計(jì)上,系統(tǒng)以查詢的方式檢測上位機(jī)的命令控制字,并及時(shí)進(jìn)入各響應(yīng)函數(shù)予以響應(yīng)。通信檢測流程如圖4-4所示。
表4-3 通信協(xié)議
| | | |
| | | |
| | | 響應(yīng)寫時(shí)間指令,發(fā)送7字節(jié)時(shí)間數(shù)據(jù) |
| | | 響應(yīng)度時(shí)間指令,接收7字節(jié)時(shí)間數(shù)據(jù) |
| | | 響應(yīng)讀當(dāng)前液位指令,發(fā)送1字節(jié)液位數(shù)據(jù) |
| | | 響應(yīng)讀記錄數(shù)據(jù)指令,發(fā)送2字節(jié)數(shù)據(jù)量及相應(yīng)數(shù)據(jù) |
| | | 響應(yīng)讀液位上下限指令,發(fā)送2字節(jié)液位上下限數(shù)據(jù) |
| | | 響應(yīng)設(shè)置液位上下限指令,接收2字節(jié)液位上下限數(shù)據(jù) |
| 讀當(dāng)前液位及電機(jī)狀態(tài) | | 響應(yīng)讀當(dāng)前液位及電機(jī)狀態(tài)指令,發(fā)送2字節(jié)液位數(shù)據(jù)及電機(jī)狀態(tài) |
圖4-4 通信檢測流程圖
2)通信模塊的控制
該模塊在控制上設(shè)計(jì)兩個(gè)函數(shù),一個(gè)是發(fā)送函數(shù),另一個(gè)是接收函數(shù)。由于采用半雙工的通信方式,需要控制變量E的置位與復(fù)位轉(zhuǎn)換發(fā)送與接收的狀態(tài)。
發(fā)送的過程:置E為1,使系統(tǒng)處于發(fā)送數(shù)據(jù)狀態(tài);將數(shù)據(jù)寫入串行通信緩沖區(qū)SBUF;
等待,直到發(fā)送完畢,將E清0,返回接收狀態(tài)。
接收過程:清零E,使系統(tǒng)處于接收狀態(tài);等待,直到接收完畢,讀串行通信緩沖區(qū)SBUF;繼續(xù)保持接收狀態(tài)。
這兩個(gè)子程序在其他函數(shù)需要進(jìn)行串口通信時(shí)調(diào)用即可實(shí)現(xiàn)與上位機(jī)的串行通信。
4.1.10 時(shí)間模塊軟件設(shè)計(jì)
DS1302內(nèi)部寄存器的定義直接影響著軟件的設(shè)計(jì),大概可分為時(shí)間控制寄存器和內(nèi)部RAM寄存器。其中:
- CH: 時(shí)鐘停止位寄存器2的第7位12/24小時(shí)標(biāo)志
CH=0 振蕩器工作允許bit7=1,12小時(shí)模式
CH=1 振蕩器停止bit7=0,24小時(shí)模式
- WP: 寫保護(hù)位寄存器2的第5位:AM/PM定義
WP=0 寄存器數(shù)據(jù)能夠?qū)懭?AP=1 下午模式
WP=1 寄存器數(shù)據(jù)不能寫入 AP=0 上午模式
TCS=1010 使能涓流充電 DS=01 選擇一個(gè)二極管
TCS=其它 禁止涓流充電 DS=10 選擇兩個(gè)二極管
DS=00 或11, 即使TCS=1010, 充電功能也被禁止
表4-4 RS狀態(tài)標(biāo)志及含義
由于DS1302數(shù)據(jù)傳輸方式為串行移位輸入輸出。地址、數(shù)據(jù)的寫操作流程是相同的。地址沒有讀操作。無論是讀還是寫,二者結(jié)構(gòu)類似。讀寫的核心是產(chǎn)生SCLK移位信號(hào)與移位,讀操作是將數(shù)據(jù)從DS1302的I/O口移入單片機(jī),寫操作是將數(shù)據(jù)從單片機(jī)移入DS1302時(shí)鐘芯片。我們最終處理的對(duì)象是時(shí)間數(shù)據(jù)或狀態(tài)數(shù)據(jù),在獲取數(shù)據(jù)時(shí),首先寫入地址,然后讀取數(shù)據(jù);寫入數(shù)據(jù)時(shí),先寫入地址,再輸出數(shù)據(jù)。完成時(shí)間的模塊軟件的設(shè)計(jì)。DS1302讀寫程序如下:
ds_read()
{
uchar j;
iodat=0x00;
for(j=8;j>0;j--)
{
iodat=iodat>>1;
odat7=IO_DATA;
_nop_();
SCLK=1;
_nop_();
SCLK=0;
}
}
ds_write(uchar ad)
{
uchar i;
ddat=ad;
for(i=8;i>0;i--)
{
IO_DATA=ddat0;
_nop_();
SCLK=1;
_nop_();
ddat=ddat>>1;
SCLK=0;
}
}
51系列單片機(jī)中有片外存儲(chǔ)器讀寫的指令MOVX,無需用戶復(fù)雜的控制、輸入出處操作,故不再陳述。
4.2 上位機(jī)軟件設(shè)計(jì)
4.2.1 上位機(jī)軟件開發(fā)編譯環(huán)境
VC++是Microsoft(微軟)開發(fā)的在Windows平臺(tái)下構(gòu)建32位應(yīng)用程序的強(qiáng)大而又復(fù)雜的可視化開發(fā)平臺(tái),它是世界上使用最多的開發(fā)工具之一。VC++的應(yīng)用非常廣泛,從桌面應(yīng)用程序到服務(wù)器端軟件,從系統(tǒng)軟件到應(yīng)用軟件,從單擊程序到分布式應(yīng)用程序,從圖形圖像處理到游戲的開發(fā),VC++無處不在。
目前,在VC++發(fā)展歷程下已有了產(chǎn)生了多個(gè)版本。版本的更新帶來了更美觀的操作界面,更人性化的操作方式,增強(qiáng)了某些模塊的功能。同時(shí),面向不同開發(fā)對(duì)象推出了多項(xiàng)產(chǎn)品。VC++6.0是Microsoft早期推出的產(chǎn)品,但是其以界面簡潔、占用資源少、操作方便、相關(guān)資料豐富等優(yōu)點(diǎn),仍為廣大程序開發(fā)人員使用。
本系統(tǒng)上位機(jī)軟件使用VC++ 6.0開發(fā)Windows平臺(tái)下的應(yīng)用軟件。
上位機(jī)軟件設(shè)計(jì)要求:
上位機(jī)軟件是操作人員與設(shè)計(jì)系統(tǒng)交互的一個(gè)平臺(tái)。系統(tǒng)的大多數(shù)輔助功能通過上位機(jī)軟件與系統(tǒng)設(shè)備通信控制完成。上位機(jī)軟件在已有的系統(tǒng)軟硬件基礎(chǔ)上有較大的開發(fā)空間,強(qiáng)大功能的上位機(jī)軟件是整個(gè)系統(tǒng)不可缺少的一部分。因此,此次設(shè)計(jì)的上位機(jī)軟件具有如下功能:
- 能夠與系統(tǒng)設(shè)備進(jìn)行建立通信連接。
- 能夠?qū)崟r(shí)監(jiān)控系統(tǒng)設(shè)備獲取的液位、電機(jī)狀態(tài)等參數(shù)。
- 能夠獲取系統(tǒng)設(shè)備當(dāng)前液位、系統(tǒng)時(shí)間、高低液位警戒線等參數(shù)。
- 能夠設(shè)置系統(tǒng)設(shè)備液位、系統(tǒng)時(shí)間、高低液位警戒線等參數(shù)。
- 能夠讀取系統(tǒng)設(shè)備記錄的數(shù)據(jù)。
- 能夠?qū)σ呀?jīng)獲取的數(shù)據(jù)進(jìn)行顯示、保存、數(shù)據(jù)處理(包括數(shù)值分析及繪圖)。
4.2.2 上位機(jī)軟件的界面設(shè)計(jì)
直觀、人性的界面設(shè)計(jì)能夠?yàn)檐浖褂谜邘砗芏嗟姆奖,同時(shí)也能夠?yàn)槠淞粝律羁痰挠∠。界面的設(shè)計(jì)與軟件的功能息息相關(guān),具有良好的層次結(jié)構(gòu),使軟件使用者更容易上手。
在滿足上文上位機(jī)軟件的要求下,設(shè)計(jì)了一個(gè)主窗口,四頁標(biāo)簽子窗口的設(shè)計(jì)。主窗口與各個(gè)標(biāo)簽頁的子窗口的相關(guān)功能見表4-5:
表4-5 界面功能描述
| | |
| | |
| 啟動(dòng)按鈕按下后用以顯示實(shí)時(shí)液位。 |
| 啟動(dòng)按鈕按下后用以顯示實(shí)時(shí)電機(jī)開啟/關(guān)閉狀態(tài)。 |
| 啟動(dòng)實(shí)時(shí)監(jiān)控,初始時(shí)不可用,待串口打開成功且聯(lián)機(jī)成功后變?yōu)榭捎脿顟B(tài)。 |
標(biāo)簽一(串口聯(lián)機(jī)) | | |
| 在串口號(hào)選擇后,使用此按鈕串口硬件建立連接;在串口打開時(shí),該按鈕顯示為 關(guān)閉串口,用來斷開串口的連接。 |
| 該按鈕初始時(shí)不可用,在打開串口后為可用狀態(tài),用來與系統(tǒng)設(shè)備進(jìn)行連接,并顯示聯(lián)機(jī)狀態(tài)。 |
標(biāo)簽二(時(shí)間選項(xiàng)) | | 該按鈕初始時(shí)不可用,在打開串口且聯(lián)機(jī)成功后變?yōu)榭捎谩S脕碜x取系統(tǒng)設(shè)備時(shí)間并顯示。 |
| 該按鈕初始時(shí)不可用,在打開串口且聯(lián)機(jī)成功后為可用狀態(tài)。用來向系統(tǒng)設(shè)備寫入PC機(jī)當(dāng)前時(shí)間。 |
| 該按鈕初始時(shí)不可用,在打開串口且聯(lián)機(jī)成功后為可用。用來向系統(tǒng)寫入日期時(shí)間系列組合框選定時(shí)間。 |
| 選定時(shí)間日期,用以設(shè)定指定時(shí)間按鈕時(shí)間的寫入。設(shè)定范圍為2000年1月1日0時(shí)0分至2099年12月31日23時(shí)59分之間。 |
| | 該按鈕初始時(shí)不可用,在打開串口且聯(lián)機(jī)成功后為可用狀態(tài)。讀取系統(tǒng)設(shè)備當(dāng)前液位及顯示。 |
| 該按鈕初始時(shí)不可用,在打開串口且聯(lián)機(jī)成功后為可用狀態(tài)。讀取系統(tǒng)設(shè)備當(dāng)前高低液位警戒線及顯示。 |
| 該按鈕初始時(shí)不可用,在打開串口且聯(lián)機(jī)成功后為可用狀態(tài)。設(shè)置系統(tǒng)設(shè)備高低液位警戒線,設(shè)置數(shù)據(jù)由上下液位滑塊提供。 |
| 確定上液位參數(shù),設(shè)置范圍:大于當(dāng)前下液位滑塊參數(shù)值,小于5米。 |
| 確定下液位參數(shù),設(shè)置范圍:小于當(dāng)前上液位滑塊參數(shù),大于0米。 |
標(biāo)簽四(數(shù)據(jù)選項(xiàng)) | | 該按鈕初始時(shí)不可用,在打開串口且聯(lián)機(jī)成功后為可用狀態(tài)。讀取系統(tǒng)設(shè)備記錄數(shù)據(jù)。完成后顯示接收記錄數(shù)據(jù)項(xiàng)目數(shù)。 |
| 保存接收數(shù)據(jù)為文本文件,默認(rèn)文件名為Rec**.txt。(**為數(shù)字,可自行增加) |
| 變更文件保存路徑,默認(rèn)路徑為C:\COMDATA\ |
| |
| |
| |
界面設(shè)計(jì)效果如圖4-5所示。
圖4-5 上位機(jī)軟件界面效果圖
4.2.3 上位機(jī)串口通信功能的實(shí)現(xiàn)
在VC++中,最基本的串口操作是使用Windows API(Application Programming Interface)完成的。Windows 這個(gè)多作業(yè)系統(tǒng)除了協(xié)調(diào)應(yīng)用程序的執(zhí)行、分配內(nèi)存、管理資源之外,它同時(shí)也是一個(gè)很大的服務(wù)中心,調(diào)用這個(gè)服務(wù)中心的各種服務(wù)(每一種服務(wù)就是一個(gè)函數(shù)),可以幫應(yīng)用程式達(dá)到開啟視窗、描繪圖形、使用周邊設(shè)備等目的,由于這些函數(shù)服務(wù)的對(duì)象是應(yīng)用程序(Application),簡稱API。通過使用API函數(shù)控制實(shí)現(xiàn)串口通信要復(fù)雜一些,但是可以進(jìn)行深層次的使用。
微軟沒有為串口操作提供相應(yīng)直接的MFC(Microsoft Foundation Classes)類。然而微軟提供了串口編程控件MSComm(Microsoft Communications Control)。MSComm是微軟公司提供的簡化Windows下串行通信編程的ActiveX控件,為應(yīng)用程序提供了通過串行口收發(fā)數(shù)據(jù)的簡便方法。MSComm控件在編程時(shí)比較方便,程序員不必去花時(shí)間了解較為復(fù)雜的API函數(shù)。它提供一系列標(biāo)準(zhǔn)通信命令的使用接口,利用它可以建立與串口的連接,并可以通過串口連接到其他通信設(shè)備,發(fā)送命令,交換數(shù)據(jù)以及監(jiān)視和響應(yīng)串行連接中發(fā)生的事件和錯(cuò)誤。
在本設(shè)計(jì)中,便使用了MSComm控件進(jìn)行串口編程。
下面就程序中使用的MSComm控件的主要屬性作以說明。
功能:設(shè)置并返回端口號(hào)
說明:串口號(hào)設(shè)置返回范圍從1到16。
功能:在MSComm控件設(shè)置CommEvent屬性為ComEvRecevie并產(chǎn)生OnComm事件之前,設(shè)置并返回要接受的字符數(shù)。
說明:接收緩沖區(qū)接收到指定字符時(shí)差生OnComm事件。當(dāng)指定字符設(shè)置為零,不產(chǎn)生OnComm事件。
功能:設(shè)置返回波特率、奇偶校驗(yàn)、數(shù)據(jù)位、停止位參數(shù)。
說明:設(shè)置時(shí)以字符串常量或字符串指針傳遞參數(shù)。格式為“BBB,P,D,S”
BBBB為波特率,P為奇偶校驗(yàn),D為數(shù)據(jù)位數(shù),S為停止位數(shù)。
功能:從接受區(qū)內(nèi)讀取數(shù)據(jù)。
說明:返回?cái)?shù)據(jù)類型為VARIANT型變量,該屬性在串口沒有打開時(shí)不能用,在運(yùn)行時(shí)只讀。
當(dāng)InputMode屬性為0時(shí),變量中含有String型數(shù)據(jù);
當(dāng)InputMode屬性為1時(shí),變量中含有Byte型數(shù)據(jù);
功能:想緩沖區(qū)寫數(shù)據(jù),發(fā)送緩沖區(qū)當(dāng)前數(shù)據(jù)。
說明:寫入緩沖區(qū)變量類型為VARIANT。發(fā)送二進(jìn)制數(shù)據(jù)時(shí),將Byte型數(shù)據(jù)放入VARIANT型變量中。
功能:打開或關(guān)閉串口,或者返回串口開、關(guān)狀態(tài)
說明:傳入?yún)?shù)為BOOL行,為TRUE時(shí),打開串口;為FALSE時(shí)關(guān)閉串口。
串口的使用需要初始化,一般初始化需要以下幾個(gè)步驟:
- 選擇串口號(hào)
- 選擇輸入方式
- 設(shè)置輸入輸出緩沖區(qū)大小
- 設(shè)置波特率、奇偶校驗(yàn)、數(shù)據(jù)位數(shù)、停止位數(shù)參數(shù)
- 打開串口
- 設(shè)置接收緩沖區(qū)接收多少數(shù)據(jù)響應(yīng)OnComm事件
- 設(shè)置當(dāng)前接受區(qū)長度
- 先預(yù)讀緩沖區(qū)以清除殘留數(shù)據(jù)
在串口初始化完成根據(jù)設(shè)置響應(yīng)OnComm事件,在OnComm事件處理函數(shù)中對(duì)數(shù)據(jù)進(jìn)行相應(yīng)的處理。
在此次上位機(jī)軟件中OnComm事件處理的思路是這樣的:由于采用的是主從式通信方式,在某個(gè)功能按鈕按下后,上位機(jī)使用SetOutPut函數(shù)發(fā)送指令,等待系統(tǒng)設(shè)備的響應(yīng),待接收到設(shè)備響應(yīng)時(shí),響應(yīng)OnComm事件,根據(jù)返回的指令設(shè)置下一次響應(yīng)OnComm事件的字符數(shù)或發(fā)送相應(yīng)的數(shù)據(jù)。這樣設(shè)計(jì)的優(yōu)點(diǎn)是結(jié)合系統(tǒng)軟件的設(shè)計(jì),在沒有奇偶校驗(yàn)等差錯(cuò)控制的情況下,盡量保證發(fā)送、接收數(shù)據(jù)的完整性。避免因系統(tǒng)在數(shù)據(jù)處理時(shí)的數(shù)據(jù)丟失。經(jīng)實(shí)踐證明,這樣的辦法是可行的。
4.2.4 上位機(jī)軟件中的數(shù)據(jù)處理
由于MFC下的編程設(shè)計(jì)許多不同的類,不同類中的成員變量與成員函數(shù)參數(shù)的類型不盡相同,因此在實(shí)現(xiàn)某些參數(shù)傳遞的過程中不免需要參數(shù)類型的轉(zhuǎn)換。這也是此次上位機(jī)軟件設(shè)計(jì)的難點(diǎn)之一。
在軟件的編寫過程中設(shè)計(jì)了以下幾個(gè)類或參數(shù)類型:
CString類:CString是一種很有用的數(shù)據(jù)類型。它們很大程度上簡化了MFC中的許多操作,使得MFC在做字符串操作的時(shí)候方便了很多。在軟件中,CString主要用來可視化輸出。
Byte類型:Byte是字節(jié)類型,由于通信過程中有大量的二進(jìn)制數(shù)據(jù)傳輸,因此Byte類型是必不可少的。
VARIANT類型:使用MSComm控件,在發(fā)送和接收數(shù)據(jù)時(shí),都要用到VARIANT數(shù)據(jù)類型,VARIANT實(shí)際上是一種共用體,它由各種類型的的數(shù)據(jù)成員構(gòu)成。
Byte轉(zhuǎn)CString:CString中保存的是字符的ASKII碼,如果直接將Byte強(qiáng)制轉(zhuǎn)換為CString是不行的,因?yàn)锽yte保存的是二進(jìn)制數(shù)據(jù)。強(qiáng)制轉(zhuǎn)換的結(jié)果在顯示時(shí)將出現(xiàn)亂碼。因此需要自行構(gòu)造轉(zhuǎn)換函數(shù)。由于設(shè)備系統(tǒng)軟件中處理傳輸?shù)臄?shù)據(jù)為壓縮BCD碼,因此,采用移位+48地方法將Byte轉(zhuǎn)換為CString。
Byte轉(zhuǎn)VARIANT:Byte不能直接轉(zhuǎn)換為VARIANT以字符串形式發(fā)送數(shù)據(jù)。這里引入CbyteArray類與COleVariant類間接進(jìn)行轉(zhuǎn)換,首先使用CbyteArry的成員函數(shù)Add()將Byte依次連接成CbyteArray字符串,使用ColeVariant類將CbyteArray強(qiáng)制轉(zhuǎn)換為VARIANT,進(jìn)行串行發(fā)送。
VARIANT轉(zhuǎn)Byte:同樣,二者之間不能直接轉(zhuǎn)換,需要引入COleSafeArray類間接進(jìn)行轉(zhuǎn)換,F(xiàn)將VARIANT強(qiáng)制轉(zhuǎn)換為COleSafeArray,再使用COleSafeArray的GetElement成員函數(shù)將數(shù)據(jù)轉(zhuǎn)換為Byte類型。這種轉(zhuǎn)換在接收數(shù)據(jù)時(shí)出現(xiàn)。
解決了類型的轉(zhuǎn)換問題,在發(fā)送、接收、數(shù)據(jù)顯示、數(shù)據(jù)運(yùn)算等方面便可根據(jù)需要使用相應(yīng)的數(shù)據(jù)類型了。
結(jié)論與展望
此次歷時(shí)一學(xué)期的設(shè)計(jì)研究工作,我受益匪淺。查閱了大量的中英文資料,做了許多驗(yàn)證性試驗(yàn),為最終設(shè)計(jì)的完成打下了堅(jiān)實(shí)的基礎(chǔ)。設(shè)計(jì)研究的過程也是一個(gè)學(xué)習(xí)的過程,其中使用的許多知識(shí)、技術(shù)是大學(xué)中未涉及的,這就需要在短時(shí)間內(nèi)將這些知識(shí)、技術(shù)學(xué)以致用。在這里,我將此次設(shè)計(jì)中值得注意的地方加以總結(jié)。
以單片機(jī)為基礎(chǔ)的應(yīng)用系統(tǒng)的開發(fā)是一個(gè)有序的過程,同時(shí)也是一個(gè)經(jīng)驗(yàn)積累的過程。一個(gè)有豐富開發(fā)經(jīng)驗(yàn)的開發(fā)人員在硬件方案討論,電路設(shè)計(jì),軟件設(shè)計(jì)及調(diào)試的過程中能夠合理有效的開展各個(gè)階段的工作,減少錯(cuò)誤的發(fā)生,縮短研發(fā)周期。因此,多看、多做能夠積累工程人員的經(jīng)驗(yàn),提高技能,在產(chǎn)品研發(fā)的過程中能夠有所突破,有所創(chuàng)新。
電子技術(shù)應(yīng)用廣,設(shè)計(jì)領(lǐng)域多。在熟悉本職的技術(shù)工作外,開發(fā)設(shè)計(jì)人員還需對(duì)其他各個(gè)行業(yè)有所了解,這樣才能使產(chǎn)品的功能更貼近實(shí)際,更合理,更行之有效。
技術(shù)的革新日新月異,為了保證開發(fā)產(chǎn)品成本更低、性能更強(qiáng),開發(fā)更容易,周期更短,電子電路設(shè)計(jì)開發(fā)人員需要不斷地學(xué)習(xí)掌握新技術(shù),與時(shí)俱進(jìn)。
液位測量監(jiān)控系統(tǒng)的設(shè)計(jì)的基本功能的實(shí)現(xiàn),說明設(shè)計(jì)思路的可行性。然而,在本次設(shè)計(jì)中仍有許多不足。
由于時(shí)間和精力有限,在上位機(jī)軟件設(shè)計(jì)上,未對(duì)數(shù)據(jù)處理模塊進(jìn)行進(jìn)一步的實(shí)現(xiàn)與討論。由于專業(yè)知識(shí)有限,在此僅提出自己一些淺薄的看法。
先假設(shè)已有5項(xiàng)接收的數(shù)據(jù),如:

設(shè)水箱上下液位間容積為V,水泵單位時(shí)間供水量恒定為m。設(shè)5項(xiàng)數(shù)據(jù)相鄰兩項(xiàng)間間隔時(shí)間為

,

,

,

,第一項(xiàng)至第五項(xiàng)總時(shí)間為T。m,V為已知量,t1~t4以及T可通過獲得的數(shù)據(jù)計(jì)算得到。設(shè)某段時(shí)間內(nèi)平均耗水量為

,

水泵啟動(dòng)期間時(shí)平均耗水量為

,

水泵停止期間平均耗水量為

。
通過記錄的數(shù)據(jù),經(jīng)過計(jì)算,便可獲得單位時(shí)間內(nèi)平均耗水量。大量的數(shù)據(jù),結(jié)合相應(yīng)的理論算法,重中可以提取出有價(jià)值的分析與推測。
與此同時(shí),根據(jù)以上舉例數(shù)據(jù)使用Matlab繪制圖形(這個(gè)工作使用VC++編程繪制亦可以完整)如圖5-1:

圖5-1 Matlab繪制圖形
通過圖形,我們可以觀察直線的斜率,直觀的觀察出某一時(shí)間段耗水的快慢程度。
當(dāng)然,這僅僅是一個(gè)十分簡單的舉例,計(jì)算、繪圖方法不一定科學(xué)有效,僅起啟發(fā)思維的作用。
在復(fù)雜的計(jì)算分析中,僅在水泵狀態(tài)變化時(shí)記錄數(shù)據(jù)往往是不夠的,一項(xiàng)數(shù)據(jù)的內(nèi)容也不夠豐富。我們可在系統(tǒng)程序中,多增加若干個(gè)數(shù)據(jù)記錄點(diǎn)記錄數(shù)據(jù)。同時(shí)可增加實(shí)時(shí)高低液位間容積數(shù)據(jù)等內(nèi)容,完善數(shù)據(jù)結(jié)構(gòu)。
盡管系統(tǒng)設(shè)計(jì)在始終工作地情況下,沒有考慮現(xiàn)實(shí)中萬一掉電的數(shù)據(jù)保護(hù)問題,解決這個(gè)方法可以擴(kuò)展大容量FLASH存儲(chǔ)器,即使掉電,已經(jīng)保存的數(shù)據(jù)也不會(huì)丟失。
本設(shè)計(jì)中沒有加入系統(tǒng)冗余設(shè)計(jì),結(jié)合實(shí)際情況,可增加看門狗電路,或使用單片機(jī)內(nèi)部看門狗,防止程序跑飛。
人多水少,水資源時(shí)空分布不均,水土資源與經(jīng)濟(jì)社會(huì)發(fā)展布局不相匹配,是我國的基本水情。宏觀上講,通過對(duì)液位變化的分析,統(tǒng)計(jì)某一地區(qū)用水量,對(duì)水資源的統(tǒng)籌調(diào)配是有意義的。微觀上說,根據(jù)統(tǒng)計(jì)出數(shù)據(jù)計(jì)算某一水箱在一定得統(tǒng)計(jì)規(guī)律中最佳的高低警戒線位置,從而減少水泵啟動(dòng)次數(shù),降低能源消耗,延長水泵受用壽命。
在“十二五”期間,水利政策正在進(jìn)一步完善,水利基礎(chǔ)建設(shè)正在逐步走向現(xiàn)代化。在我黨科學(xué)發(fā)展觀的指導(dǎo)下,新型、環(huán)保、具有可持續(xù)發(fā)展設(shè)計(jì)思想的設(shè)備儀器正逐步被人們重視。
致 謝
本文檔是在高文根老師的悉心指導(dǎo)下完成的。導(dǎo)師淵博的專業(yè)知識(shí),嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,精益求精的工作作風(fēng),誨人不倦的高尚師德,嚴(yán)以律己、寬以待人的崇高風(fēng)范,樸實(shí)無華、平易近人的人格魅力對(duì)我影響深遠(yuǎn)。本文檔從選題到完成,每一步都是在導(dǎo)師的指導(dǎo)下完成的,傾注了導(dǎo)師大量的心血。在此,謹(jǐn)向?qū)煴硎境绺叩木匆夂椭孕牡母兄x!本文檔的順利完成,離不開各位老師、同學(xué)和朋友的關(guān)心和幫助。在此表示深深的感謝!
作者:
2011 年 06 月 15 日
參考文獻(xiàn)
[1]張毅剛,彭喜元,董繼成.單片機(jī)原理及應(yīng)用[M].北京:高等教育出版社,2003.
[2]李書旗,沈金榮.液位測量傳感器系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)測量與控制,2009,17(11):2131-2133.
[3]鄭偉建,夏揚(yáng),夏晴.自抗擾控制器在液位控制中的研究[J].計(jì)算機(jī)仿真,2009,26(10):190-193.
[4]鐘曉強(qiáng).基于單片機(jī)實(shí)現(xiàn)的液位控制器設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2009,32(2):51-53.
[5]蔡黎.一種基于單片機(jī)的水位控制系統(tǒng)設(shè)計(jì)[J].儀器儀表用戶,2007,14(4):44-45.
[6]陳霞,白小軍.基于單片機(jī)的液位監(jiān)控系統(tǒng)[J].武漢理工大學(xué)學(xué)報(bào),2007,29(3):3-5.
[7]陳新昌,王萬章,李祥付.單片機(jī)在水位控制中的應(yīng)用[J].中國科技信息,2006,(24):89-90,94.
[8]蘇曉龍,王香婷.基于RS-485總線的數(shù)據(jù)采集系統(tǒng)[J].儀表技術(shù)與傳感器,2007,(12).
[9]張寶偉.基于Lab VIEW的液位監(jiān)控系統(tǒng)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2007.
[10]張鳳蘭.液位測量與監(jiān)控系統(tǒng)設(shè)計(jì)[D].北京:北方工業(yè)大學(xué),2010.
[11]任開春,涂亞慶.20余種液位測量方法分析[J].工業(yè)儀表與自動(dòng)化裝置,2003,(5):12-16.
[12]柳軍,等.基于AVR單片機(jī)的液面測量監(jiān)控系統(tǒng)的設(shè)計(jì)[J].中國醫(yī)療設(shè)備,2009,24(12):27-30.
[13]丁希順.單片微型計(jì)算機(jī)液位測量系統(tǒng)設(shè)計(jì)[J].安陽師范學(xué)院學(xué)報(bào),2005(2):71-73.
[14]老虎工作室編著.電路設(shè)計(jì)與制版:Protel 99SE入門與提高[M].北京:人民郵電出版社,2007.
[15]彭軍.傳感器與檢測技術(shù)[M].西安:西安電子科技大學(xué)出版社,2003.
[16]余永權(quán).單片機(jī)在控制系統(tǒng)中應(yīng)用[M].北京:電子工業(yè)出版社,2003.
[17]劉鯤,孫春亮.單片機(jī)C語言入門[M].北京:人民郵電出版社,2008.
[18]姚振東,朱勇.電容傳感器在液位測量中的應(yīng)用[J].傳感器世界,2000,(9):4-7.
[19] Maurice Wilkes. Progress in Computers [J]. IEEE Trans on PE, Feb 2004,Vol.3(NO.6):470-472.
[20] Jae Hyeong Seo, Cang Ho Choi. A new simplified Space-Vector PWM Method for Three-level-Inverters [J].IEEE Trans on PE, July 2001,Vol.16(NO.4):545-550.
附 錄A系統(tǒng)電路原理圖
附 錄 B外文文獻(xiàn)及譯文
Progress in Computers
Prestige Lecture delivered to IEE, Cambridge, on 5 February 2004
Maurice Wilkes
Computer Laboratory
University of Cambridge
The first stored program computers began to work around 1950. The one we built in Cambridge, the EDSAC was first used in the summer of 1949.
These early experimental computers were built by people like myself with varying backgrounds. We all had extensive experience in electronic engineering and were confident that that experience would stand us in good stead. This proved true, although we had some new things to learn. The most important of these was that transients must be treated correctly; what would cause a harmless flash on the screen of a television set could lead to a serious error in a computer.
As far as computing circuits were concerned, we found ourselves with an embarass de richess. For example, we could use vacuum tube diodes for gates as we did in the EDSAC or pentodes with control signals on both grids, a system widely used elsewhere. This sort of choice persisted and the term families of logic came into use. Those who have worked in the computer field will remember TTL, ECL and CMOS. Of these, CMOS has now become dominant.
In those early years, the IEE was still dominated by power engineering and we had to fight a number of major battles in order to get radio engineering along with the rapidly developing subject of electronics.dubbed in the IEE light current electrical engineering.properly recognised as an activity in its own right. I remember that we had some difficulty in organising a conference because the power engineers’ ways of doing things were not our ways. A minor source of irritation was that all IEE published papers were expected to start with a lengthy statement of earlier practice, something difficult to do when there was no earlier practice
Consolidation in the 1960s
By the late 50s or early 1960s, the heroic pioneering stage was over and the computer field was starting up in real earnest. The number of computers in the world had increased and they were much more reliable than the very early ones . To those years we can ascribe the first steps in high level languages and the first operating systems. Experimental time-sharing was beginning, and ultimately computer graphics was to come along.
Above all, transistors began to replace vacuum tubes. This change presented a formidable challenge to the engineers of the day. They had to forget what they knew about circuits and start again. It can only be said that they measured up superbly well to the challenge and that the change could not have gone more smoothly.
Soon it was found possible to put more than one transistor on the same bit of silicon, and this was the beginning of integrated circuits. As time went on, a sufficient level of integration was reached for one chip to accommodate enough transistors for a small number of gates or flip flops. This led to a range of chips known as the 7400 series. The gates and flip flops were independent of one another and each had its own pins. They could be connected by off-chip wiring to make a computer or anything else.
These chips made a new kind of computer possible. It was called a minicomputer. It was something less that a mainframe, but still very powerful, and much more affordable. Instead of having one expensive mainframe for the whole organisation, a business or a university was able to have a minicomputer for each major department.
Before long minicomputers began to spread and become more powerful. The world was hungry for computing power and it had been very frustrating for industry not to be able to supply it on the scale required and at a reasonable cost. Minicomputers transformed the situation.
The single-chip computer
At each shrinkage the number of chips was reduced and there were fewer wires going from one chip to another. This led to an additional increment in overall speed, since the transmission of signals from one chip to another takes a long time.
Eventually, shrinkage proceeded to the point at which the whole processor except for the caches could be put on one chip. This enabled a workstation to be built that out-performed the fastest minicomputer of the day, and the result was to kill the minicomputer stone dead. As we all know, this had severe consequences for the computer industry and for the people working in it.
From the above time the high density CMOS silicon chip was Cock of the Roost. Shrinkage went on until millions of transistors could be put on a single chip and the speed went up in proportion.
Processor designers began to experiment with new architectural features designed to give extra speed. One very successful experiment concerned methods for predicting the way program branches would go. It was a surprise to me how successful this was. It led to a significant speeding up of program execution and other forms of prediction followed
Equally surprising is what it has been found possible to put on a single chip computer by way of advanced features. For example, features that had been developed for the IBM Model 91.the giant computer at the top of the System 360 range.are now to be found on microcomputers
Murphy’s Law remained in a state of suspension. No longer did it make sense to build experimental computers out of chips with a small scale of integration, such as that provided by the 7400 series. People who wanted to do hardware research at the circuit level had no option but to design chips and seek for ways to get them made. For a time, this was possible, if not easy
Unfortunately, there has since been a dramatic increase in the cost of making chips, mainly because of the increased cost of making masks for lithography, a photographic process used in the manufacture of chips. It has, in consequence, again become very difficult to finance the making of research chips, and this is a currently cause for some concern.
The Semiconductor Road Map
The extensive research and development work underlying the above advances has been made possible by a remarkable cooperative effort on the part of the international semiconductor industry.
At one time US monopoly laws would probably have made it illegal for US companies to participate in such an effort. However about 1980 significant and far reaching changes took place in the laws. The concept of pre-competitive research was introduced. Companies can now collaborate at the pre-competitive stage and later go on to develop products of their own in the regular competitive manner.
The agent by which the pre-competitive research in the semi-conductor industry is managed is known as the Semiconductor Industry Association (SIA). This has been active as a US organisation since 1992 and it became international in 1998. Membership is open to any organisation that can contribute to the research effort.
Every two years SIA produces a new version of a document known as the International Technological Roadmap for Semiconductors (ITRS), with an update in the intermediate years. The first volume bearing the title ‘Roadmap’ was issued in 1994 but two reports, written in 1992 and distributed in 1993, are regarded as the true beginning of the series.
Successive roadmaps aim at providing the best available industrial consensus on the way that the industry should move forward. They set out in great detail.over a 15 year horizon. the targets that must be achieved if the number of components on a chip is to be doubled every eighteen months.that is, if Moore’s law is to be maintained.-and if the cost per chip is to fall.
In the case of some items, the way ahead is clear. In others, manufacturing problems are foreseen and solutions to them are known, although not yet fully worked out; these areas are coloured yellow in the tables. Areas for which problems are foreseen, but for which no manufacturable solutions are known, are coloured red. Red areas are referred to as Red Brick Walls.
The targets set out in the Roadmaps have proved realistic as well as challenging, and the progress of the industry as a whole has followed the Roadmaps closely. This is a remarkable achievement and it may be said that the merits of cooperation and competition have been combined in an admirable manner.
It is to be noted that the major strategic decisions affecting the progress of the industry have been taken at the pre-competitive level in relative openness, rather than behind closed doors. These include the progression to larger wafers.
By 1995, I had begun to wonder exactly what would happen when the inevitable point was reached at which it became impossible to make transistors any smaller. My enquiries led me to visit ARPA headquarters in Washington DC, where I was given a copy of the recently produced Roadmap for 1994. This made it plain that serious problems would arise when a feature size of 100 nm was reached, an event projected to happen in 2007, with 70 nm following in 2010. The year for which the coming of 100 nm (or rather 90 nm) was projected was in later Roadmaps moved forward to 2004 and in the event the industry got there a little sooner.
I presented the above information from the 1994 Roadmap, along with such other information that I could obtain, in a lecture to the IEE in London, entitled The CMOS end-point and related topics in Computing and delivered on 8 February 1996.
The idea that I then had was that the end would be a direct consequence of the number of electrons available to represent a one being reduced from thousands to a few hundred. At this point statistical fluctuations would become troublesome, and thereafter the circuits would either fail to work, or if they did work would not be any faster. In fact the physical limitations that are now beginning to make themselves felt do not arise through shortage of electrons, but because the insulating layers on the chip have become so thin that leakage due to quantum mechanical tunnelling has become troublesome.
There are many problems facing the chip manufacturer other than those that arise from fundamental physics, especially problems with lithography. In an update to the 2001 Roadmap published in 2002, it was stated that the continuation of progress at present rate will be at risk as we approach 2005 when the roadmap projects that progress will stall without research break-throughs in most technical areas “. This was the most specific statement about the Red Brick Wall, that had so far come from the SIA and it was a strong one. The 2003 Roadmap reinforces this statement by showing many areas marked red, indicating the existence of problems for which no manufacturable solutions are known.
It is satisfactory to report that, so far, timely solutions have been found to all the problems encountered. The Roadmap is a remarkable document and, for all its frankness about the problems looming above, it radiates immense confidence. Prevailing opinion reflects that confidence and there is a general expectation that, by one means or another, shrinkage will continue, perhaps down to 45 nm or even less.
However, costs will rise steeply and at an increasing rate. It is cost that will ultimately be seen as the reason for calling a halt. The exact point at which an industrial consensus is reached that the escalating costs can no longer be met will depend on the general economic climate as well as on the financial strength of the semiconductor industry itself.。
Insulating layers in the most advanced chips are now approaching a thickness equal to that of 5 atoms. Beyond finding better insulating materials, and that cannot take us very far, there is nothing we can do about this. We may also expect to face problems with on-chip wiring as wire cross sections get smaller. These will concern heat dissipation and atom migration. The above problems are very fundamental. If we cannot make wires and insulators, we cannot make a computer, whatever improvements there may be in the CMOS process or improvements in semiconductor materials. It is no good hoping that some new process or material might restart the merry-go-round of the density of transistors doubling every eighteen months.
I said above that there is a general expectation that shrinkage would continue by one means or another to 45 nm or even less. What I had in mind was that at some point further scaling of CMOS as we know it will become impracticable, and the industry will need to look beyond it.
Since 2001 the Roadmap has had a section entitled emerging research devices on non-conventional forms of CMOS and the like. Vigorous and opportunist exploitation of these possibilities will undoubtedly take us a useful way further along the road, but the Roadmap rightly distinguishes such progress from the traditional scaling of conventional CMOS that we have been used to.
Advances in Memory Technology
Unconventional CMOS could revolutionalize memory technology. Up to now, we have relied on DRAMs for main memory. Unfortunately, these are only increasing in speed marginally as shrinkage continues, whereas processor chips and their associated cache memory continue to double in speed every two years. The result is a growing gap in speed between the processor and the main memory. This is the memory gap and is a current source of anxiety. A breakthrough in memory technology, possibly using some form of unconventional CMOS, could lead to a major advance in overall performance on problems with large memory requirements, that is, problems which fail to fit into the cache.
Perhaps this, rather than attaining marginally higher basis processor speed will be the ultimate role for non-conventional CMOS.
Shortage of Electrons
Although shortage of electrons has not so far appeared as an obvious limitation, in the long term it may become so. Perhaps this is where the exploitation of non-conventional CMOS will lead us. However, some interesting work has been done.notably by Haroon Amed and his team working in the Cavendish Laboratory.on the direct development of structures in which a single electron more or less makes the difference between a zero and a one. However very little progress has been made towards practical devices that could lead to the construction of a computer. Even with exceptionally good luck, many tens of years must inevitably elapse before a working computer based on single electron effects can be contemplated.
微機(jī)發(fā)展簡史
IEEE的文檔 劍橋大學(xué),2004/2/5
莫里斯 威爾克斯
計(jì)算機(jī)實(shí)驗(yàn)室
劍橋大學(xué)
第一臺(tái)存儲(chǔ)程序的計(jì)算開始出現(xiàn)于1950前后,它就是1949年夏天在劍橋大學(xué),我們創(chuàng)造的延遲存儲(chǔ)自動(dòng)電子計(jì)算機(jī)(EDSAC)。
最初實(shí)驗(yàn)用的計(jì)算機(jī)是由象我一樣有著廣博知識(shí)的人構(gòu)造的。我們在電子工程方面都有著豐富的經(jīng)驗(yàn),并且我們深信這些經(jīng)驗(yàn)對(duì)我們大有裨益。后來,被證明是正確的,盡管我們也要學(xué)習(xí)很多新東西。最重要的是瞬態(tài)一定要小心應(yīng)付,雖然它只會(huì)在電視機(jī)的熒幕上一起一個(gè)無害的閃光,但是在計(jì)算機(jī)上這將導(dǎo)致一系列的錯(cuò)誤。
在電路的設(shè)計(jì)過程中,我們經(jīng)常陷入兩難的境地。舉例來說,我可以使用真空二級(jí)管做為門電路,就象在EDSAC中一樣,或者在兩個(gè)柵格之間用帶控制信號(hào)的五級(jí)管,這被廣泛用于其他系統(tǒng)設(shè)計(jì),這類的選擇一直在持續(xù)著直到邏輯門電路開始應(yīng)用。在計(jì)算機(jī)領(lǐng)域工作的人都應(yīng)該記得TTL,ECL和CMOS,到目前為止,CMOS已經(jīng)占據(jù)了主導(dǎo)地位。
在最初的幾年,IEE(電子工程師協(xié)會(huì))仍然由動(dòng)力工程占據(jù)主導(dǎo)地位。為了讓IEE 認(rèn)識(shí)到無線工程和快速發(fā)展的電子工程并行發(fā)展是它自己的一項(xiàng)權(quán)利,我們不得不面對(duì)一些障礙。由于動(dòng)力工程師們做事的方式與我們不同,我們也遇到了許多困難。讓人有些憤怒的是,所有的IEE出版的文檔都被期望以冗長的早期研究的陳述開頭,無非是些在早期階段由于沒有太多經(jīng)驗(yàn)而遇到的困難之類的陳述。
60年代的鞏固階段
60年代初,個(gè)人英雄時(shí)代結(jié)束了,計(jì)算機(jī)真正引起了重視。世界上的計(jì)算機(jī)數(shù)量已經(jīng)增加了許多,并且性能比以前更加可靠。這些我認(rèn)為歸因與高級(jí)語言的起步和第一個(gè)操作系統(tǒng)的誕生。分時(shí)系統(tǒng)開始起步,并且計(jì)算機(jī)圖形學(xué)隨之而來。
綜上所述,晶體管開始代替正空管。這個(gè)變化對(duì)當(dāng)時(shí)的工程師們是個(gè)不可回避的挑戰(zhàn)。他們必須忘記他們熟悉的電路重新開始。只能說他們鼓起勇氣接受了挑戰(zhàn),盡管這個(gè)轉(zhuǎn)變并不會(huì)一帆風(fēng)順。
小規(guī)模集成電路和小型機(jī)
很快,在一個(gè)硅片上可以放不止一個(gè)晶體管,由此集成電路誕生了。隨著時(shí)間的推移,一個(gè)片子能夠容納的最大數(shù)量的晶體管或稍微少些的邏輯門和翻轉(zhuǎn)門集成度達(dá)到了一個(gè)最大限度。由此出現(xiàn)了我們所知道7400系列微機(jī)。每個(gè)門電路或翻轉(zhuǎn)電路是相互獨(dú)立的并且有自己的引腳。他們可通過導(dǎo)線連接在一起,作成一個(gè)計(jì)算機(jī)或其他的東西。
這些芯片為制造一種新的計(jì)算機(jī)提供了可能。它被稱為小型機(jī)。他比大型機(jī)稍遜,但功能強(qiáng)大,并且更能讓人負(fù)擔(dān)的起。一個(gè)商業(yè)部門或大學(xué)有能力擁有一臺(tái)小型機(jī)而不是得到一臺(tái)大型組織所需昂貴的大型機(jī)。
隨著微機(jī)的開始流行并且功能的完善,世界急切獲得它的計(jì)算能力但總是由于工業(yè)上不能規(guī)模供應(yīng)和它可觀的價(jià)格而受到挫折。微機(jī)的出現(xiàn)解決了這個(gè)局面。
單片機(jī)
芯片每次的縮小,芯片數(shù)量將減少;并且芯片間的導(dǎo)線也隨之減少。這導(dǎo)致了整體速度的下降,因?yàn)樾盘?hào)在各個(gè)芯片間的傳輸時(shí)間變長了。
漸漸地,芯片的收縮到只剩下處理器部分,緩存都被放在了一個(gè)單獨(dú)的片子上。這使得工作站被建成擁有當(dāng)代小型機(jī)一樣的性能,結(jié)果搬倒了小型機(jī)絕對(duì)的基石。正如我們所知道的,這對(duì)于計(jì)算機(jī)工業(yè)和從事計(jì)算機(jī)事業(yè)的人產(chǎn)生了深遠(yuǎn)的影響
自從上述時(shí)代的開始,高密度CMOS硅芯片成為主導(dǎo)。隨著芯片的縮小技術(shù)的發(fā)展,數(shù)百萬的晶體管可以放在一個(gè)單獨(dú)的片子上,相應(yīng)的速度也成比例的增加。
為了得到額外的速度。處理器設(shè)計(jì)者開始對(duì)新的體系構(gòu)架進(jìn)行實(shí)驗(yàn)。一次成功的實(shí)驗(yàn)都預(yù)言了一種新的編程方式的分支的誕生。我對(duì)此取得的成功感到非常驚奇。它導(dǎo)致了程序執(zhí)行速度的增加并且其相應(yīng)的框架。
同樣令人驚奇的是,通過更高級(jí)的特性建立一種單片機(jī)是有可能的。例如,為IBM Model 91開發(fā)的新特性,現(xiàn)在在單片機(jī)上也出現(xiàn)了。
Murphy定律仍然在中止的狀態(tài)。它不再適用于使用小規(guī)模集成芯片設(shè)計(jì)實(shí)驗(yàn)用的計(jì)算機(jī),例如7400系列。想在電路級(jí)上做硬件研究的人們沒有別的選擇除了設(shè)計(jì)芯片并且找到實(shí)現(xiàn)它的辦法。一段時(shí)間內(nèi),這樣是可能的,但是并不容易。
不幸的是,制造芯片的花費(fèi)有了戲劇性的增長,主要原因是制造芯片過程中電路印刷版制作成本的增加。因此,為制作芯片技術(shù)追加資金變的十分困難,這是當(dāng)前引起人們關(guān)注的原因。
半導(dǎo)體前景規(guī)劃
對(duì)于以上提到的各個(gè)方面,在部分國際半導(dǎo)體工業(yè)部門的精誠合作下,廣泛的研究與開發(fā)工作是可行的。
在以前美國反壟斷法禁止這種行為。但是在1980年,該法律發(fā)生了很大變化。預(yù)競爭概念被引進(jìn)了該法律。各個(gè)公司現(xiàn)在可以在預(yù)言競爭階段展開合作,然后在規(guī)則允許的情況下繼續(xù)開發(fā)各自的產(chǎn)品。
在半導(dǎo)體工業(yè)中,預(yù)競爭研究的管理機(jī)構(gòu)是半導(dǎo)體工業(yè)協(xié)會(huì)。1972年作為美國國內(nèi)的組織,1998年成為一個(gè)世界性的組織。任何一個(gè)研究組織都可加入該協(xié)會(huì)。
每兩年,SIA修訂一次ITRS(國際半導(dǎo)體科學(xué)規(guī)劃),并且逐年更新。1994年在第一卷中引入了“前景規(guī)劃”一詞,該卷由兩個(gè)文檔組成,先于1992年,在1993年提交。它被認(rèn)為是該規(guī)劃的真正開始。
為了推動(dòng)半導(dǎo)體工業(yè)的向前發(fā)展,后續(xù)的規(guī)劃提供最好的可利用的工業(yè)標(biāo)準(zhǔn)。它們對(duì)于15年內(nèi)的發(fā)展做出了詳細(xì)的規(guī)劃。要達(dá)到的目標(biāo)是每18個(gè)月晶體管的集成度增加一倍,同時(shí)每塊芯片的價(jià)格下降一半,即Moore定律。
對(duì)于某些方面,前面的道路是清楚的。在另一方面,制造業(yè)的問題是可以預(yù)見的并且解決的辦法也是可以知道的,盡管不是所有的問題都能夠解決。這樣的領(lǐng)域在表格中由藍(lán)色表示,同時(shí)沒有解決辦法的,加以紅色。紅色區(qū)域往往稱為紅色磚墻。
規(guī)劃建立的目標(biāo)是現(xiàn)實(shí)的,同時(shí)也是充滿挑戰(zhàn)的。半導(dǎo)體工業(yè)整體上的進(jìn)步于該規(guī)劃密不可分。這是個(gè)令人驚訝的成就,它可以說是合作和競爭共同的價(jià)值。
值得注意的是,促進(jìn)半導(dǎo)體工業(yè)向前發(fā)展的主要的戰(zhàn)略決策是相對(duì)開放的預(yù)競爭機(jī)制,而不是閉關(guān)鎖國。這也包括大規(guī)模圓晶片取得進(jìn)展的原因。
1995年前,我開始感覺到,如果達(dá)到了不可能使得晶體管體積更小的臨界點(diǎn)時(shí),將發(fā)生什么。懷著這樣的疑惑,我訪問了位于華盛頓的ARPA(美國國防部)指揮總部,在那,我看到1994年規(guī)劃的復(fù)本。我恍然大悟,當(dāng)圓晶片尺寸在2007年達(dá)到100納米時(shí),將出現(xiàn)嚴(yán)重的問題,在2010年達(dá)到70納米時(shí)也如此。在隨后的2004年的規(guī)劃中,當(dāng)圓晶片尺寸達(dá)到100納米時(shí),也做了相應(yīng)的規(guī)劃。不久半導(dǎo)體工業(yè)將發(fā)展到那一步。
從1994年的規(guī)劃中我引用了以上的信息,還有就是一篇提交到IEE的項(xiàng)目為CMOS終結(jié)點(diǎn)的文檔和在1996年2月8號(hào)的Computing上討論的一些項(xiàng)目。
我現(xiàn)在的想法是,最終的結(jié)果是表示一個(gè)存在可用的電子數(shù)目從數(shù)千減少到數(shù)百。在這樣的情況下,統(tǒng)計(jì)波動(dòng)將成為問題。最后,電路或者不再工作,或者達(dá)到了速度的極限。事實(shí)上,物理限制將開始讓他們感覺到不能突破電子最終的不足,原因是芯片上絕緣層越來越薄,以致量子理論中隧道效應(yīng)引起了麻煩,導(dǎo)致了滲漏。
相對(duì)基礎(chǔ)物理學(xué),芯片制造者面對(duì)的問題要多出許多,尤其是電路印刷術(shù)遇到的困難。2001年更新2002年出版的規(guī)劃中,陳述了這樣一種情況,照目前的發(fā)展速度,如果在2005年前在關(guān)鍵技術(shù)領(lǐng)域沒有取得大的突破的話,半導(dǎo)體業(yè)將停止不前。這是對(duì)“紅色磚墻”最準(zhǔn)確的描述。到目前為止是SIA遇到的最麻煩的問題。2003年的規(guī)劃書強(qiáng)調(diào)了這一點(diǎn),通過在許多地方加上了紅色,指示在這些領(lǐng)域仍存在人們沒有解決的制造方法問題。
到目前為止,可以很滿意的報(bào)道,所遇到的問題到及時(shí)找到了解決之道。規(guī)劃書是個(gè)非凡的文檔,并且它坦白了以上提到的問題,并表示出了無限的信心。主要的見解反映出了這種信心并且有一個(gè)大致的期望,通過某種方式,圓晶體將變的更小,也許到45納米或更小。
然而,花費(fèi)將以很大的速率增長。也許將成為半導(dǎo)體停滯不前的最終原因。對(duì)于逐步增加的花費(fèi)直到不能滿足,這個(gè)精確的工業(yè)上達(dá)到一致意見的平衡點(diǎn),依賴于經(jīng)濟(jì)的整體形勢和半導(dǎo)體工業(yè)自身的財(cái)政狀況。
最高級(jí)芯片的絕緣層厚度僅有5個(gè)原子的大小。除了找到更好的絕緣材料外,我們將寸步難行。對(duì)于此,我們沒有任何辦法。我們也不得不面對(duì)芯片的布線問題,線越來越細(xì)小了。還有散熱問題和原子遷移問題。這些問題是相當(dāng)基礎(chǔ)性的。如果我們不能制作導(dǎo)線和絕緣層,我們就不能制造一臺(tái)計(jì)算機(jī)。不論在CMOS加工工藝上和半導(dǎo)體材料上取得多么大的進(jìn)步。更別指望有什么新的工藝或材料可以使得半導(dǎo)體集成度每18個(gè)月翻一番的美好時(shí)光了。
我在上文中說到,圓晶體繼續(xù)縮小直到45納米或更小是個(gè)大致的期望。在我的頭腦中,從某點(diǎn)上來說,我們所知道的繼續(xù)縮小CMOS是不可行的,但工業(yè)上需要超越它。
2001年以來,規(guī)劃書中有一部分陳述了非傳統(tǒng)形式CMOS的新興研究設(shè)備。一些精力旺盛的人和一些投機(jī)者的探索無疑給了我們一些有益的途徑,并且規(guī)劃書明確分辨出了這些進(jìn)步,在那些我們曾經(jīng)使用的傳統(tǒng)CMOS方面。
內(nèi)存技術(shù)的進(jìn)步
非傳統(tǒng)的CMOS變革了存儲(chǔ)器技術(shù)。直到現(xiàn)在,我們?nèi)匀灰揽緿RAM作為主要的存儲(chǔ)體。不幸的是,隨著芯片的縮小,只有芯片外圍速度上的增長——處理器芯片和它相關(guān)的緩存速度每兩年增加一倍。這就是存儲(chǔ)器代溝并且是人們焦慮的根源。存儲(chǔ)技術(shù)的一個(gè)可能突破是,使用一種非傳統(tǒng)的CMOS管,在計(jì)算機(jī)整體性能上將導(dǎo)致一個(gè)很大的進(jìn)步,將解決大存儲(chǔ)器的需求,即緩存不能解決的問題。
也許這個(gè),而不是外圍電路達(dá)到基本處理器的速度將成為非傳統(tǒng)CMOS.的最終角色。
電子的不足
盡管目前為止,電子每表現(xiàn)出明顯的不足,然而從長遠(yuǎn)看來,它最終會(huì)不能滿足要求。也許這是我們開發(fā)非傳統(tǒng)CMOS管的原因。在Cavendish實(shí)驗(yàn)室里,Haroon Amed已經(jīng)作了很多有意義的工作,他們想通過一個(gè)單獨(dú)電子或多或少的表現(xiàn)出0和1的區(qū)別。然而對(duì)于構(gòu)造實(shí)用的計(jì)算機(jī)設(shè)備只取得了一點(diǎn)點(diǎn)進(jìn)展。也許由于偶然的好運(yùn)氣,數(shù)十年后一臺(tái)基于一個(gè)單獨(dú)電子的計(jì)算機(jī)也許是可以實(shí)現(xiàn)的。
以上圖文的Word格式文檔下載(內(nèi)容和本網(wǎng)頁上的一模一樣,方便大家保存):
基于單片機(jī)的液位控制系統(tǒng)設(shè)計(jì)-精品.doc
(1.02 MB, 下載次數(shù): 56)
2018-5-19 18:13 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5