版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
基于Java的串口通信設(shè)計(jì)摘要隨著計(jì)算機(jī)技術(shù)和通信技術(shù)的不斷發(fā)展與融合,一方面,計(jì)算機(jī)與其它終端設(shè)備的性能不斷提高,處理數(shù)據(jù)的速度不斷增大;另一方面,計(jì)算機(jī)和其它終端設(shè)備之間的通信速度要求越來越高,調(diào)制解調(diào)器處理信號(hào)的速度也越來越快。連接終端與調(diào)制解調(diào)器進(jìn)行串并數(shù)據(jù)格式轉(zhuǎn)換和信號(hào)控制的電路是串口通信接口電路。對(duì)于普通的串口通信電路,當(dāng)由于緩存數(shù)據(jù)的容量較小,就會(huì)導(dǎo)致在高速的通信系統(tǒng)下,接口電路頻繁向終端發(fā)送中斷請(qǐng)求,這樣就會(huì)降低終端設(shè)備處理器的工作效率,同時(shí)也降低整個(gè)通信系統(tǒng)的速度,不利于實(shí)現(xiàn)高速的通信。本論文所涉及的實(shí)驗(yàn),改進(jìn)了傳統(tǒng)的串口通信電路緩存容量小的缺點(diǎn)。結(jié)合自動(dòng)進(jìn)樣檢測(cè)系統(tǒng)的開發(fā)實(shí)踐,研究了一種基于Java串口通信的檢測(cè)系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)方法,并對(duì)系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)及系統(tǒng)實(shí)現(xiàn)中Java串口通信做了介紹。在計(jì)算機(jī)或終端設(shè)備與接口電路之間加入FIFO(先入先出)存儲(chǔ)器,用來緩存要存儲(chǔ)的數(shù)據(jù)。由于基于Java的邏輯器件設(shè)計(jì)的電路具有低功耗,高性能,設(shè)計(jì)方便,可擴(kuò)展,可重復(fù)等優(yōu)點(diǎn),本實(shí)驗(yàn)對(duì)整個(gè)電路的設(shè)計(jì)都采用Java可編程的方式。分別基于Java設(shè)計(jì)異步高速FIFO存儲(chǔ)器,串口通信接收與發(fā)送電路的各個(gè)模塊。再對(duì)整個(gè)電路進(jìn)行綜合與仿真,得到了較為理想的結(jié)果。關(guān)鍵詞:Java;串口通信設(shè)計(jì);存儲(chǔ)器;接口目錄3257第一章緒論 1308051.1研究背景及研究意義 123441.2國內(nèi)外研究現(xiàn)狀 229201.3論文主要內(nèi)容 36001第二章論文采用的主要相關(guān)技術(shù)和理論 5266652.1Zigbee技術(shù) 5204702.1.1技術(shù)說明 585412.1.2技術(shù)特點(diǎn) 537572.1.3應(yīng)用實(shí)例 6282542.2USB技術(shù) 7132762.2.1USB技術(shù)發(fā)展歷史 7254442.2.2軟件結(jié)構(gòu) 930012.2.3硬件結(jié)構(gòu) 1023382.2.4數(shù)據(jù)傳輸 1071972.3密鑰協(xié)商和加密算法 11138822.3.1密鑰協(xié)商 11206442.3.2加密算法 11249152.4已有方案分析 132402.4.1方案一 1363552.4.2方案二 13271142.4.3方案比較 1330100第三章系統(tǒng)總體設(shè)計(jì) 15149073.1系統(tǒng)的需求分析 15184393.2總體框架 1549433.2.1上位機(jī)程序 15316483.2.2下位機(jī)硬件結(jié)構(gòu) 16111663.3詳細(xì)方案設(shè)計(jì) 17190803.3.1硬件方案設(shè)計(jì) 17256143.3.2下位機(jī)軟件方案設(shè)計(jì) 20276143.3.3上位機(jī)軟件方案設(shè)計(jì) 21291073.4方案實(shí)現(xiàn)及驗(yàn)證 21309993.4.1安裝NetBeansIDE環(huán)境 2115873.4.2安裝RXTX串口包 22274463.4.3編寫上位機(jī)程序 23298443.4.4安裝IAR環(huán)境 27222633.5系統(tǒng)運(yùn)行結(jié)果 3432070第四章總結(jié)與展望 38926參考文獻(xiàn) 40第一章緒論1.1研究背景及研究意義自上個(gè)世紀(jì)四十年代第一臺(tái)計(jì)算機(jī)問世以來,計(jì)算機(jī)便以驚人的速度發(fā)展著,而且滲透到各行各業(yè)中,從各個(gè)角度影響著人們的生活。工業(yè)控制作為人們工業(yè)生產(chǎn)的重要組成部分,計(jì)算機(jī)的應(yīng)用自然也十分廣泛。然而,由于工業(yè)現(xiàn)場(chǎng)面臨的情況越來越多樣化、復(fù)雜化,人們需要一種可以界面更加自由、友好的軟件以應(yīng)對(duì)復(fù)雜多樣的工業(yè)現(xiàn)場(chǎng)。組態(tài)軟件便應(yīng)運(yùn)而生[1-3]。組態(tài)軟件是伴隨著DCS(DistributedControlSystem,集散控制系統(tǒng))[4]的出現(xiàn)走進(jìn)工業(yè)自動(dòng)化應(yīng)用領(lǐng)域的,并逐漸發(fā)展成為第三方獨(dú)立的自動(dòng)化應(yīng)用軟件,尤其是Windows操作系統(tǒng)的廣泛應(yīng)用,有力地推動(dòng)了基于個(gè)人計(jì)算機(jī)的組態(tài)軟件的發(fā)展和普及[5,6]。目前,大量的工業(yè)過程控制系統(tǒng)采用上位計(jì)算機(jī)加可編程程序控制器(SCADA-PLC)[7]的方案以實(shí)現(xiàn)分散控制和集中管理。其中,安裝了組態(tài)軟件的上位計(jì)算機(jī)主要完成數(shù)據(jù)通信、網(wǎng)絡(luò)管理、人機(jī)交互和數(shù)據(jù)處理的功能;數(shù)據(jù)采集和設(shè)備的控制一般有Java等完成。Java是計(jì)算機(jī)發(fā)展到一定程度的產(chǎn)物,是一種專門應(yīng)用在工業(yè)控制中的計(jì)算機(jī)。自從上個(gè)世紀(jì)70年代第一代Java在德國誕生以來,由于其靈活的構(gòu)成、很強(qiáng)的可擴(kuò)展性、以及簡單方便的使用方法,使得Java在工業(yè)控制中的應(yīng)用迅速的廣泛起來。串口通信是一種簡便的信號(hào)傳輸方式,普遍使用于PC機(jī)和很多工業(yè)設(shè)備當(dāng)中,其簡單的遠(yuǎn)距離傳輸使得其在工業(yè)生產(chǎn)當(dāng)中的應(yīng)用有很大優(yōu)勢(shì)。使用串口通信來做組態(tài)軟件的通信基礎(chǔ),用于上位機(jī)和下位機(jī)之間的通信是十分合適的[8]。目前,大部分用于工業(yè)自動(dòng)化控制的下位機(jī)設(shè)備都可以使用串口通信這樣一種簡單穩(wěn)定的通信方式,設(shè)計(jì)一種基于串口通信的組態(tài)軟件可以應(yīng)用廣泛且設(shè)計(jì)簡單,既提高了效率,又降低了成本。目前市面上其他的組態(tài)軟件如組態(tài)王KingView,WinCC等,已經(jīng)十分普及,但是普遍成本過高,且不能針對(duì)目標(biāo)客戶定制,但這恰是本產(chǎn)品的優(yōu)勢(shì)之一。在過程控制的實(shí)時(shí)檢測(cè)和監(jiān)控系統(tǒng)中,溫度的采集是很普遍的??焖倏煽康牟杉焦I(yè)現(xiàn)場(chǎng)中的高精度溫度數(shù)據(jù)可以為過程控制系統(tǒng)提供可靠的依據(jù)。而傳統(tǒng)的測(cè)溫方法多以熱電阻和熱電偶等為溫度敏感元件,但這些溫度傳感器構(gòu)成的測(cè)溫系統(tǒng)必須經(jīng)過A/D轉(zhuǎn)換環(huán)節(jié)獲得數(shù)字信號(hào)后才能與Java等微處理器接口,使得硬件電路結(jié)構(gòu)復(fù)雜,制作成本較高。而用美國DALLAS公司生產(chǎn)的DS18B20數(shù)字溫度傳感器集溫度測(cè)量和A/D轉(zhuǎn)換于一體,直接輸出數(shù)字量,硬件電路結(jié)構(gòu)簡單,與Java接口幾乎不需要外圍元件。廣泛使用于距離遠(yuǎn)、節(jié)點(diǎn)分布多的場(chǎng)合,具有較強(qiáng)的推廣應(yīng)用價(jià)值。本次設(shè)計(jì)的目的就是以數(shù)字傳感器DS18B20作為前端,采集溫度經(jīng)過單片機(jī)處理后,通過LCD1602液晶顯示器將溫度顯示出來,且采用串口通信,把溫度顯示在VB邊界的PC機(jī)界面上,實(shí)現(xiàn)與PC機(jī)的通信。新型數(shù)字化、網(wǎng)絡(luò)化傳感器在工程中的應(yīng)用具有極其重要的意義,這類傳感器是各種參量送入計(jì)算機(jī)系統(tǒng),進(jìn)行智能監(jiān)測(cè)、控制的最前端。隨著科技的發(fā)展,數(shù)字化、網(wǎng)絡(luò)化傳感器應(yīng)用日益廣泛,以其傳統(tǒng)方式不可比擬的優(yōu)勢(shì)漸漸成為技術(shù)的趨勢(shì)和主流。1.2國內(nèi)外研究現(xiàn)狀在數(shù)字通信應(yīng)用領(lǐng)域,RS-232、I2C和SPI是三種常用的串口通信總線接口。作為其中一種串行數(shù)據(jù)傳輸?shù)耐ㄐ艠?biāo)準(zhǔn),RS-232串行接口是1969年由美國EIA與BELL公司、Modem廠家及相關(guān)的計(jì)算機(jī)終端生產(chǎn)商聯(lián)合制定的一種典型的通信接口,它被廣泛應(yīng)用于監(jiān)視系統(tǒng)和控制系統(tǒng)設(shè)備中。它的使用非常方便,接口的設(shè)備驅(qū)動(dòng)程序由操作系統(tǒng)提供,只需在程序設(shè)計(jì)中將傳輸數(shù)據(jù)位、奇偶檢驗(yàn)位、停止位、傳輸波特率通過相關(guān)系統(tǒng)函數(shù)的調(diào)用就可以實(shí)現(xiàn)RS-232與外圍設(shè)備的通信。飛利浦和摩托羅拉兩家公司出于不同背景和市場(chǎng)需求制定的另外兩種標(biāo)準(zhǔn)通信協(xié)議I2C和SPI應(yīng)用也比較普遍。這兩個(gè)協(xié)議都非常適合集成電路,用于板載外設(shè)近距離之間的通信。Philips實(shí)驗(yàn)室為了盡可能的滿足節(jié)省微控制器的引腳和和邏輯芯片、使PCB板更簡單、降低成本的要求,于1982年研發(fā)出了一種I2C通信總線,只需兩根線就可實(shí)現(xiàn)自身設(shè)備與外圍設(shè)備的連接和通信,其初衷是為了提供一種簡便的方式將電視機(jī)內(nèi)的CPU和外圍芯片互聯(lián)起來?,F(xiàn)在I2C總線根據(jù)傳輸速度劃分共分為標(biāo)準(zhǔn)、快速和高速三種模式。標(biāo)準(zhǔn)模式的I2C總線出現(xiàn)于20世紀(jì)80年代,當(dāng)時(shí)它7位地址編碼,規(guī)定的最高傳輸速率為100kb/s。由于現(xiàn)代設(shè)備在功能和性能上的要求越來越高,I2C總線為了滿足現(xiàn)代設(shè)備的需求,它的地址位和速率的相關(guān)規(guī)范被不斷升級(jí),現(xiàn)在已有10位尋址模式,根據(jù)模式不同位速率可達(dá)400kb/s和3.4Mb/s(薛長斌,2010)。SPI總線是一種微控制器四線型的外部環(huán)形結(jié)構(gòu)總線。1979年由摩托羅拉公司開發(fā),并且將它集成在了他們公司第一支改自68000微處理器的微控制器芯片上。區(qū)別于I2C總線的標(biāo)準(zhǔn)規(guī)定不同,SPI總線只是作為一種事實(shí)上的標(biāo)準(zhǔn),抽象的描述設(shè)備間交互的實(shí)現(xiàn),芯片制造者和相關(guān)驅(qū)動(dòng)開發(fā)人員通過datasheets和applicationnotes溝通實(shí)現(xiàn)上的細(xì)節(jié)。SPI總線接口傳輸數(shù)據(jù)的速率大小與所選取的SPI硬件緊密相關(guān),例如Xicor公司生產(chǎn)的SPI串行器件傳輸速率能夠達(dá)到5Mbit/s(張文超等,2005;Agaretal.,2014)。利用創(chuàng)新USB系統(tǒng)實(shí)現(xiàn)通用的數(shù)據(jù)傳輸接口技術(shù),在國內(nèi)尚無先例,但國際上對(duì)于通用USB的探索卻沒有停止,只要抓住這一契機(jī),利用FPGA設(shè)計(jì)創(chuàng)新USB系統(tǒng),克服目前數(shù)據(jù)傳輸所存在的速率受限、幀長受限、同步復(fù)雜的缺點(diǎn),避免不同數(shù)據(jù)格式間的轉(zhuǎn)換,最終實(shí)現(xiàn)真正意義上的通用的串行總線。目前USB芯片技術(shù)受國外控制,國內(nèi)使用沒有自己的知識(shí)產(chǎn)權(quán),需要額外付費(fèi),增加應(yīng)用芯片成本。研制創(chuàng)新USB可獲得自主知識(shí)產(chǎn)權(quán),對(duì)推動(dòng)我國在該領(lǐng)域的技術(shù)發(fā)展具有積極的意義。在農(nóng)業(yè)生產(chǎn)過程中,為了提高農(nóng)業(yè)生產(chǎn)的技術(shù)含量,提高生產(chǎn)管理的現(xiàn)代化水平,有許多來自溫室的實(shí)時(shí)數(shù)據(jù)(如溫度、濕度、CO2、光照等)需要采集、記錄、處理及顯示以便及時(shí)掌握動(dòng)植物生長環(huán)境。隨著電子技術(shù)水平的不斷提高,溫室控制不斷向智能化方向發(fā)展。串口通信線路簡單,應(yīng)用靈活,方便、可靠,占用系統(tǒng)資源少,所以在溫室智能控制系統(tǒng)(GICS)中與下位機(jī)的通信方式選擇了RS232串口通信,結(jié)合數(shù)據(jù)庫的數(shù)據(jù)維護(hù)及統(tǒng)計(jì)等優(yōu)點(diǎn),根據(jù)實(shí)時(shí)數(shù)據(jù)庫和專家數(shù)據(jù)庫來反饋控制溫室環(huán)境,有利于動(dòng)植物科學(xué)生長,促進(jìn)農(nóng)業(yè)增產(chǎn)增收。最早的溫度計(jì)是在1593年由意大利科學(xué)家伽利略(1564~1642)發(fā)明的。后來又相繼出現(xiàn)華氏溫度計(jì)、列式溫度計(jì)、攝氏溫度計(jì),均用水銀和酒精等制作,現(xiàn)在英、美國家多用華氏溫度計(jì),德國多用列氏溫度計(jì),而世界科技界和工農(nóng)業(yè)生產(chǎn)中,以及我國、法國等大多數(shù)國家則多用攝氏溫度計(jì)。隨著科學(xué)技術(shù)的發(fā)展和現(xiàn)代工業(yè)技術(shù)的需要,測(cè)溫技術(shù)也在不斷地改進(jìn)和提高。由于測(cè)溫范圍變得越來越廣,根據(jù)不同的要求,又制造出不同的測(cè)溫儀器:氣體溫度計(jì)、電阻溫度計(jì)、溫差電偶溫度計(jì)、高溫溫度計(jì)等。而本設(shè)計(jì)研究的是數(shù)字溫度計(jì),它是通過一定的電路和溫度傳感器進(jìn)行測(cè)控,將溫度用數(shù)字準(zhǔn)確的顯示出來。數(shù)據(jù)顯示比較直觀而且測(cè)量精度也比較高,范圍也比較大。Java程序語言具有面向?qū)ο?、平臺(tái)無關(guān)、開放性、安全等特性,是一種理想的的編程語言。應(yīng)用JavaCommunicationAPI簡化了串口通信程序的開發(fā)。多線程技術(shù)能很好地解決各種邏輯并發(fā)性和物理并行性問題,改善系統(tǒng)的各項(xiàng)性能。本文結(jié)合多線程技術(shù)及數(shù)據(jù)庫技術(shù)開發(fā)出了基于Java串口通信的數(shù)據(jù)采控系統(tǒng)。1.3論文主要內(nèi)容論文共分為五章,主要研究內(nèi)容及章節(jié)安排如下:第一章對(duì)Java技術(shù)測(cè)溫系統(tǒng)做了概覽介紹,討論了課題研究的意義,國內(nèi)外研究的動(dòng)態(tài)。第二章首先簡述了論文應(yīng)用到的相關(guān)理論,介紹了系統(tǒng)的設(shè)計(jì)方案,接著對(duì)系統(tǒng)的硬件進(jìn)行選型。第三章首先介紹了系統(tǒng)的結(jié)構(gòu)框圖,接著詳細(xì)地介紹了系統(tǒng)的硬件設(shè)計(jì),最后給出了系統(tǒng)連接圖,并分析了系統(tǒng)的工作原理。第四章在軟件方面對(duì)整體和各模塊的程序進(jìn)行了設(shè)計(jì)。第五章總結(jié)了本文的設(shè)計(jì)特點(diǎn)和創(chuàng)新點(diǎn),并指出了今后待研究的問題。第二章論文采用的主要相關(guān)技術(shù)和理論2.1串口通信技術(shù)串口是計(jì)算機(jī)上一種非常通用設(shè)備通信的協(xié)議。大多數(shù)計(jì)算機(jī)包含兩個(gè)基于RS232的串口。串口同時(shí)也是儀器儀表設(shè)備通用的通信協(xié)議;很多GPIB兼容的設(shè)備也帶有RS-232口。同時(shí),串口通信協(xié)議也可以用于獲取遠(yuǎn)程采集設(shè)備的數(shù)據(jù)。串行接口是一種可以將接受來自CPU的并行數(shù)據(jù)字符轉(zhuǎn)換為連續(xù)的串行數(shù)據(jù)流發(fā)送出去,同時(shí)可將接受的串行數(shù)據(jù)流轉(zhuǎn)換為并行的數(shù)據(jù)字符供給CPU的器件。一般完成這種功能的電路,我們稱為串行接口電路。2.1.1基本原理串口通信(SerialCommunications)的概念非常簡單,串口按位(bit)發(fā)送和接收字節(jié)。盡管比按字節(jié)(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時(shí)用另一根線接收數(shù)據(jù)。它很簡單并且能夠?qū)崿F(xiàn)遠(yuǎn)距離通信。比如IEEE488定義并行通行狀態(tài)時(shí),規(guī)定設(shè)備線總長不得超過20米,并且任意兩個(gè)設(shè)備間的長度不得超過2米;而對(duì)于串口而言,長度可達(dá)1200米。典型地,串口用于ASCII碼字符的傳輸。通信使用3根線完成,分別是地線、發(fā)送、接收。由于串口通信是異步的,端口能夠在一根線上發(fā)送數(shù)據(jù)同時(shí)在另一根線上接收數(shù)據(jù)。其他線用于握手,但不是必須的。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗(yàn)。對(duì)于兩個(gè)進(jìn)行通信的端口,這些參數(shù)必須匹配。a,波特率:這是一個(gè)衡量符號(hào)傳輸速率的參數(shù)。指的是信號(hào)被調(diào)制以后在單位時(shí)間內(nèi)的變化,即單位時(shí)間內(nèi)載波參數(shù)變化的次數(shù),如每秒鐘傳送240個(gè)字符,而每個(gè)字符格式包含10位(1個(gè)起始位,1個(gè)停止位,8個(gè)數(shù)據(jù)位),這時(shí)的波特率為240Bd,比特率為10位*240個(gè)/秒=2400bps。一般調(diào)制速率大于波特率,比如曼徹斯特編碼)。通常電話線的波特率為14400,28800和36600。波特率可以遠(yuǎn)遠(yuǎn)大于這些值,但是波特率和距離成反比。高波特率常常用于放置的很近的儀器間的通信,典型的例子就是GPIB設(shè)備的通信。b,數(shù)據(jù)位:這是衡量通信中實(shí)際數(shù)據(jù)位的參數(shù)。當(dāng)計(jì)算機(jī)發(fā)送一個(gè)信息包,實(shí)際的數(shù)據(jù)往往不會(huì)是8位的,標(biāo)準(zhǔn)的值是6、7和8位。如何設(shè)置取決于你想傳送的信息。比如,標(biāo)準(zhǔn)的ASCII碼是0~127(7位)。擴(kuò)展的ASCII碼是0~255(8位)。如果數(shù)據(jù)使用簡單的文本(標(biāo)準(zhǔn)ASCII碼),那么每個(gè)數(shù)據(jù)包使用7位數(shù)據(jù)。每個(gè)包是指一個(gè)字節(jié),包括開始/停止位,數(shù)據(jù)位和奇偶校驗(yàn)位。由于實(shí)際數(shù)據(jù)位取決于通信協(xié)議的選取,術(shù)語"包"指任何通信的情況。c,停止位:用于表示單個(gè)包的最后一位。典型的值為1,1.5和2位。由于數(shù)據(jù)是在傳輸線上定時(shí)的,并且每一個(gè)設(shè)備有其自己的時(shí)鐘,很可能在通信中兩臺(tái)設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計(jì)算機(jī)校正時(shí)鐘同步的機(jī)會(huì)。適用于停止位的位數(shù)越多,不同時(shí)鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時(shí)也越慢。d,奇偶校驗(yàn)位:在串口通信中一種簡單的檢錯(cuò)方式。有四種檢錯(cuò)方式:偶、奇、高和低。當(dāng)然沒有校驗(yàn)位也是可以的。對(duì)于偶和奇校驗(yàn)的情況,串口會(huì)設(shè)置校驗(yàn)位(數(shù)據(jù)位后面的一位),用一個(gè)值確保傳輸?shù)臄?shù)據(jù)有偶個(gè)或者奇?zhèn)€邏輯高位。例如,如果數(shù)據(jù)是011,那么對(duì)于偶校驗(yàn),校驗(yàn)位為0,保證邏輯高的位數(shù)是偶數(shù)個(gè)。如果是奇校驗(yàn),校驗(yàn)位為1,這樣就有3個(gè)邏輯高位。高位和低位不真正的檢查數(shù)據(jù),簡單置位邏輯高或者邏輯低校驗(yàn)。這樣使得接收設(shè)備能夠知道一個(gè)位的狀態(tài),有機(jī)會(huì)判斷是否有噪聲干擾了通信或者是否傳輸和接收數(shù)據(jù)是否不同步。圖2.1串行通信2.1.2結(jié)構(gòu)特點(diǎn)串口通信是指外設(shè)和計(jì)算機(jī)間,通過數(shù)據(jù)信號(hào)線、地線、控制線等,按位進(jìn)行傳輸數(shù)據(jù)的一種通訊方式。這種通信方式使用的數(shù)據(jù)線少,在遠(yuǎn)距離通信中可以節(jié)約通信成本,但其傳輸速度比并行傳輸?shù)汀4谑怯?jì)算機(jī)上一種非常通用的設(shè)備通信協(xié)議。大多數(shù)計(jì)算機(jī)(不包括筆記本電腦)包含兩個(gè)基于RS-232的串口。串口同時(shí)也是儀器儀表設(shè)備通用的通信協(xié)議;很多GPIB兼容的設(shè)備也帶有RS-232口。同時(shí),串口通信協(xié)議也可以用于獲取遠(yuǎn)程采集設(shè)備的數(shù)據(jù)。RS-232(ANSI/EIA-232標(biāo)準(zhǔn))是IBM-PC及其兼容機(jī)上的串行連接標(biāo)準(zhǔn)??捎糜谠S多用途,比如連接鼠標(biāo)、打印機(jī)或者M(jìn)odem,同時(shí)也可以接工業(yè)儀器儀表。用于驅(qū)動(dòng)和連線的改進(jìn),實(shí)際應(yīng)用中RS-232的傳輸長度或者速度常常超過標(biāo)準(zhǔn)的值。RS-232只限于PC串口和設(shè)備間點(diǎn)對(duì)點(diǎn)的通信。RS-232串口通信最遠(yuǎn)距離是50英尺。圖2.2串口通信程序框圖2.2USB技術(shù)USB,是英文Universal
Serial
Bus(通用串行總線)的縮寫,是一個(gè)外部總線標(biāo)準(zhǔn),用于規(guī)范電腦與外部設(shè)備的連接和通訊。是應(yīng)用在PC領(lǐng)域的接口技術(shù)。USB接口支持設(shè)備的即插即用和熱插拔功能。USB是在1994年底由英特爾、康柏、IBM、Microsoft等多家公司聯(lián)合提出的。下一代USB接口將會(huì)有改動(dòng)方向,下一代的Type-C
USB接口,可支持正反兩面插,并且傳輸數(shù)據(jù)信號(hào)強(qiáng),但目前(2014年)生產(chǎn)商有限。截至2015年12月26日,國內(nèi)眾多廠商已經(jīng)大規(guī)模在自己生產(chǎn)的手機(jī)設(shè)備商使用基于該標(biāo)準(zhǔn)的數(shù)據(jù)線。2.2.1USB技術(shù)發(fā)展歷史從1994年11月11日發(fā)表了USBV0.7版本以后,USB版本經(jīng)歷了多年的發(fā)展,已經(jīng)發(fā)展為3.1版本,成為二十一世紀(jì)電腦中的標(biāo)準(zhǔn)擴(kuò)展接口。當(dāng)前(2016年)主板中主要是采用USB2.0和USB3.0接口,各USB版本間能很好的兼容。USB用一個(gè)4針(USB3.0標(biāo)準(zhǔn)為9針)插頭作為標(biāo)準(zhǔn)插頭,采用菊花鏈形式可以把所有的外設(shè)連接起來,最多可以連接127個(gè)外部設(shè)備,并且不會(huì)損失帶寬。USB需要主機(jī)硬件、操作系統(tǒng)和外設(shè)三個(gè)方面的支持才能工作。二十一世紀(jì)的主板一般都采用支持USB功能的控制芯片組,主板上也安裝有USB接口插座,而且除了背板的插座之外,主板上還預(yù)留有USB插針,可以通過連線接到機(jī)箱前面作為前置USB接口以方便使用(注意,在接線時(shí)要仔細(xì)閱讀主板說明書并按圖連接,千萬不可接錯(cuò)而使設(shè)備損壞)。而且USB接口還可以通過專門的USB連機(jī)線實(shí)現(xiàn)雙機(jī)互連,并可以通過Hub擴(kuò)展出更多的接口。USB具有傳輸速度快,使用方便,支持熱插拔,連接靈活,獨(dú)立供電等優(yōu)點(diǎn),可以連接鼠標(biāo)、鍵盤、打印機(jī)、掃描儀、攝像頭、充電器、閃存盤、MP3機(jī)、手機(jī)、數(shù)碼相機(jī)、移動(dòng)硬盤、外置光驅(qū)/軟驅(qū)、USB網(wǎng)卡、ADSLModem、CableModem等,幾乎所有的外部設(shè)備。理論上USB接口可用于連接多達(dá)127個(gè)外設(shè),如鼠標(biāo)、調(diào)制解調(diào)器和鍵盤等。USB自從1996年推出后,已成功替代串口和并口,并成為二十一世紀(jì)個(gè)人電腦和大量智能設(shè)備的必配的接口之一。表2.1USB發(fā)展歷史USB版本理論最大傳輸速率速率稱號(hào)最大輸出電流推出時(shí)間USB1.01.5Mbps(192KB/s)低速(Low-Speed)5V/500mA1996年1月USB1.112Mbps(1.5MB/s)全速(Full-Speed)5V/500mA1998年9月USB2.0480Mbps(60MB/s)高速(High-Speed)5V/500mA2000年4月USB3.05Gbps(500MB/s)超高速(Super-Speed)5V/900mA2008年11月/2013年12月USB3.1Gen210Gbps(1280MB/s)[1]超高速+(Super-speed+)20V/5A2013年12月圖2.1USB數(shù)據(jù)線2.2.2軟件結(jié)構(gòu)每個(gè)USB只有一個(gè)主機(jī),它包括以下幾層:總線接口USB總線接口處理電氣層與協(xié)議層的互連。從互連的角度來看,相似的總線接口由設(shè)備及主機(jī)同時(shí)給出,例如串行接口機(jī)(SIE)。USB總線接口由主控制器實(shí)現(xiàn)。USB系統(tǒng)用主控制器管理主機(jī)與USB設(shè)備間的數(shù)據(jù)傳輸。它與主控制器間的接口依賴于主控制器的硬件定義。同時(shí),USB系統(tǒng)也負(fù)責(zé)管理USB資源,例如帶寬和總線能量,這使客戶訪問USB成為可能。USB系統(tǒng)還有三個(gè)基本組件:主控制器驅(qū)動(dòng)程序(HCD)這可把不同主控制器設(shè)備映射到USB系統(tǒng)中。HCD與USB之間的接口叫HCDI,特定的HCDI由支持不同主控制器的操作系統(tǒng)定義,通用主控制器驅(qū)動(dòng)器(UHCD)處于軟結(jié)構(gòu)的最底層,由它來管理和控制主控制器。UHCD實(shí)現(xiàn)了與USB主控制器通信和控制USB主控制器,并且它對(duì)系統(tǒng)軟件的其他部分是隱蔽的。系統(tǒng)軟件中的最高層通過UHCD的軟件接口與主控制器通信。USB驅(qū)動(dòng)程序(USBD)它在UHCD驅(qū)動(dòng)器之上,它提供驅(qū)動(dòng)器級(jí)的接口,滿足現(xiàn)有設(shè)備驅(qū)動(dòng)器設(shè)計(jì)的要求。USBD以I/O請(qǐng)求包(IRPs)的形式提供數(shù)據(jù)傳輸架構(gòu),它由通過特定管道(Pipe)傳輸數(shù)據(jù)的需求組成。此外,USBD使客戶端出現(xiàn)設(shè)備的一個(gè)抽象,以便于抽象和管理。作為抽象的一部分,USBD擁有缺省的管道。通過它可以訪問所有的USB設(shè)備以進(jìn)行標(biāo)準(zhǔn)的USB控制。該缺省管道描述了一條USBD和USB設(shè)備間通信的邏輯通道。主機(jī)軟件在某些操作系統(tǒng)中,沒有提供USB系統(tǒng)軟件。這些軟件本來是用于向設(shè)備驅(qū)動(dòng)程序提供配置信息和裝載結(jié)構(gòu)的。在這些操作系統(tǒng)中,設(shè)備驅(qū)動(dòng)程序?qū)?yīng)用提供的接口而不是直接訪問USBDI(USB驅(qū)動(dòng)程序接口)結(jié)構(gòu)。USB客戶軟件它是位于軟件結(jié)構(gòu)的最高層,負(fù)責(zé)處理特定USB設(shè)備驅(qū)動(dòng)器。客戶程序?qū)用枋鏊兄苯幼饔糜谠O(shè)備的軟件入口。當(dāng)設(shè)備被系統(tǒng)檢測(cè)到后,這些客戶程序?qū)⒅苯幼饔糜谕鈬布?。這個(gè)共享的特性將USB系統(tǒng)軟件置于客戶和它的設(shè)備之間,這就要根據(jù)USBD在客戶端形成的設(shè)備映像由客戶程序?qū)λM(jìn)行處理。主機(jī)各層有以下功能:檢測(cè)連接和移去的USB設(shè)備。管理主機(jī)和USB設(shè)備間的數(shù)據(jù)流。連接USB狀態(tài)和活動(dòng)統(tǒng)計(jì)??刂浦骺刂破骱蚒SB設(shè)備間的電氣接口,包括限量能量供應(yīng)。HCD提供了主控制器的抽象和通過USB傳輸?shù)臄?shù)據(jù)的主控制器視角的一個(gè)抽象。USBD提供了USB設(shè)備的抽象和USBD客戶與USB功能間數(shù)據(jù)傳輸?shù)囊粋€(gè)抽象。USB系統(tǒng)促進(jìn)客戶和功能間的數(shù)據(jù)傳輸,并作為USB設(shè)備的規(guī)范接口的一個(gè)控制點(diǎn)。USB系統(tǒng)提供緩沖區(qū)管理能力并允許數(shù)據(jù)傳輸同步于客戶和功能的需求。2.2.3硬件結(jié)構(gòu)USB采用四線電纜,其中兩根是用來傳送數(shù)據(jù)的串行通道,另兩根為下游(Downstream)設(shè)備提供電源,對(duì)于任何已經(jīng)成功連接且相互識(shí)別的外設(shè),將以雙方設(shè)備均能夠支持的最高速率傳輸數(shù)據(jù)。USB總線會(huì)根據(jù)外設(shè)情況在所兼容的傳輸模式中自動(dòng)地由高速向低速動(dòng)態(tài)轉(zhuǎn)換且匹配鎖定在合適的速率。USB是基于令牌的總線。類似于令牌環(huán)網(wǎng)絡(luò)或FDDI基于令牌的總線。USB主控制器廣播令牌,總線上設(shè)備檢測(cè)令牌中的地址是否與自身相符,通過接收或發(fā)送數(shù)據(jù)給主機(jī)來響應(yīng)。USB通過支持懸掛/恢復(fù)操作來管理USB總線電源。USB系統(tǒng)采用級(jí)聯(lián)星型拓?fù)?,該拓?fù)溆扇齻€(gè)基本部分組成:主機(jī)(Host),集線器(Hub)和功能設(shè)備。主機(jī),也稱為根,根結(jié)或根Hub,它做在主板上或作為適配卡安裝在計(jì)算機(jī)上,主機(jī)包含有主控制器和根集線器(RootHub),控制著USB總線上的數(shù)據(jù)和控制信息的流動(dòng),每個(gè)USB系統(tǒng)只能有一個(gè)根集線器,它連接在主控制器上,一臺(tái)計(jì)算機(jī)可能有多個(gè)根集線器。集線器是USB結(jié)構(gòu)中的特定成分,它提供叫做端口(Port)的點(diǎn)將設(shè)備連接到USB總線上,同時(shí)檢測(cè)連接在總線上的設(shè)備,并為這些設(shè)備提供電源管理,負(fù)責(zé)總線的故障檢測(cè)和恢復(fù)。集線可為總線提供能源,亦可為自身提供能源(從外部得到電源)。功能設(shè)備通過端口與總線連接。USB同時(shí)可做Hub使用。2.2.4數(shù)據(jù)傳輸主控制器負(fù)責(zé)主機(jī)和USB設(shè)備間數(shù)據(jù)流的傳輸。這些傳輸數(shù)據(jù)被當(dāng)作連續(xù)的比特流。每個(gè)設(shè)備提供了一個(gè)或多個(gè)可以與客戶程序通信的接口,每個(gè)接口由0個(gè)或多個(gè)管道組成,它們分別獨(dú)立地在客戶程序和設(shè)備的特定終端間傳輸數(shù)據(jù)。USBD為主機(jī)軟件的現(xiàn)實(shí)需求建立了接口和管道,當(dāng)提出配置請(qǐng)求時(shí),主控制器根據(jù)主機(jī)軟件提供的參數(shù)提供服務(wù)。USB支持四種基本的數(shù)據(jù)傳輸模式:控制傳輸,等時(shí)傳輸,中斷傳輸及數(shù)據(jù)塊傳輸。每種傳輸模式應(yīng)用到具有相同名字的終端,則具有不同的性質(zhì)??刂苽鬏旑愋椭С滞庠O(shè)與主機(jī)之間的控制,狀態(tài),配置等信息的傳輸,為外設(shè)與主機(jī)之間提供一個(gè)控制通道。每種外設(shè)都支持控制傳輸類型,這樣主機(jī)與外設(shè)之間就可以傳送配置和命令/狀態(tài)信息。等時(shí)(lsochronous)傳輸類型(或稱同步傳輸)支持有周期性,有限的時(shí)延和帶寬且數(shù)據(jù)傳輸速率不變的外設(shè)與主機(jī)間的數(shù)據(jù)傳輸。該類型無差錯(cuò)校驗(yàn),故不能保證正確的數(shù)據(jù)傳輸,支持像計(jì)算機(jī)-電話集成系統(tǒng)(CTI)和音頻系統(tǒng)與主機(jī)的數(shù)據(jù)傳輸。中斷傳輸類型支持像游戲手柄,鼠標(biāo)和鍵盤等輸入設(shè)備,這些設(shè)備與主機(jī)間數(shù)據(jù)傳輸量小,無周期性,但對(duì)響應(yīng)時(shí)間敏感,要求馬上響應(yīng)。數(shù)據(jù)塊(Bulk)傳輸類型支持打印機(jī),掃描儀,數(shù)碼相機(jī)等外設(shè),這些外設(shè)與主機(jī)間傳輸?shù)臄?shù)據(jù)量大,USB在滿足帶寬的情況下才進(jìn)行該類型的數(shù)據(jù)傳輸。USB采用分塊帶寬分配方案,若外設(shè)超過當(dāng)前帶寬分配或潛在的要求,則不能進(jìn)入該設(shè)備。同步和中斷傳輸類型的終端保留帶寬,并保證數(shù)據(jù)按一定的速率傳送。集中和控制終端按可用的最佳帶寬來傳輸傳輸數(shù)據(jù)。2.3密鑰協(xié)商和加密算法2.3.1密鑰協(xié)商密鑰協(xié)商:兩個(gè)或多個(gè)實(shí)體協(xié)商,共同建立會(huì)話密鑰,任何一個(gè)參與者均對(duì)結(jié)果產(chǎn)生影響,不需要任何可信的第三方(TTP)。密鑰協(xié)商協(xié)議:會(huì)話密鑰由每個(gè)協(xié)議參與者分別產(chǎn)生的參數(shù)通過一定的計(jì)算得出。常見的密鑰協(xié)商協(xié)議,如IKE。密鑰協(xié)商協(xié)議的生成方式:可分為證書型和無證書型。證書型是指在會(huì)話密鑰的產(chǎn)生過程中,由一個(gè)可信的證書中心(CA)給參與密鑰協(xié)商的各方各分發(fā)一個(gè)證書,此證書中含有此方的公鑰,ID及其他信息。證書型密鑰協(xié)商協(xié)議的優(yōu)點(diǎn)是提供認(rèn)證,目前PKI(公鑰密碼體制)廣泛部署,比較成熟,應(yīng)用面廣,且由PKG管理公私鑰對(duì)有利于統(tǒng)一管理,缺點(diǎn)是計(jì)算代價(jià)大,需要一個(gè)可信的CA,同時(shí)證書還需要維護(hù)。無證書型是指各方在進(jìn)行會(huì)話密鑰的協(xié)商過程中不需要證書的參與,這是目前密鑰協(xié)商協(xié)議的主流種類,優(yōu)點(diǎn)是不需要CA的參與,減少了計(jì)算量,尤其是在低耗環(huán)境下應(yīng)用的更多,同時(shí)安全性也不比證書型弱。幾乎沒有明顯的缺點(diǎn),只是設(shè)計(jì)一個(gè)安全的更加低耗的無證書密鑰協(xié)商方案不是很容易。2.3.2加密算法數(shù)據(jù)加密的基本過程就是對(duì)原來為明文的文件或數(shù)據(jù)按某種算法進(jìn)行處理,使其成為不可讀的一段代碼,通常稱為“密文”,使其只能在輸入相應(yīng)的密鑰之后才能顯示出本來內(nèi)容,通過這樣的途徑來達(dá)到保護(hù)數(shù)據(jù)不被非法人竊取、閱讀的目的。
該過程的逆過程為解密,即將該編碼信息轉(zhuǎn)化為其原來數(shù)據(jù)的過程。加密技術(shù)通常分為兩大類:"對(duì)稱式"和"非對(duì)稱式"。折疊對(duì)稱式加密技術(shù)對(duì)稱式加密就是加密和解密使用同一個(gè)密鑰,通常稱之為"SessionKey"這種加密技術(shù)在當(dāng)今被廣泛采用,如美國政府所采用的DES加密標(biāo)準(zhǔn)就是一種典型的"對(duì)稱式"加密法,它的SessionKey長度為56bits。折疊非對(duì)稱式加密技術(shù)非對(duì)稱式加密就是加密和解密所使用的不是同一個(gè)密鑰,通常有兩個(gè)密鑰,稱為"公鑰"和"私鑰",它們兩個(gè)必需配對(duì)使用,否則不能打開加密文件。這里的"公鑰"是指可以對(duì)外公布的,"私鑰"則不能,只能由持有人一個(gè)人知道。它的優(yōu)越性就在這里,因?yàn)閷?duì)稱式的加密方法如果是在網(wǎng)絡(luò)上傳輸加密文件就很難不把密鑰告訴對(duì)方,不管用什么方法都有可能被別竊聽到。而非對(duì)稱式的加密方法有兩個(gè)密鑰,且其中的"公鑰"是可以公開的,也就不怕別人知道,收件人解密時(shí)只要用自己的私鑰即可以,這樣就很好地避免了密鑰的傳輸安全性問題。折疊算法一個(gè)加密系統(tǒng)S可以用數(shù)學(xué)符號(hào)描述如下:S={P,C,K,E,D}其中P--明文空間,表示全體可能出現(xiàn)的明文集合,C--密文空間,表示全體可能出現(xiàn)的密文集合,K--密鑰空間,密鑰是加密算法中的可變參數(shù),E--加密算法,由一些公式、法則或程序構(gòu)成,D--解密算法,它是E的逆。當(dāng)給定密鑰k?K時(shí),各符號(hào)之間有如下關(guān)系:C=Ek(P),對(duì)明文P加密后得到密文CP=Dk(C)=Dk(Ek(P)),對(duì)密文C解密后得明文P如用E-1表示E的逆,D-1表示D的逆,則有:Ek=Dk-1且Dk=Ek-1因此,加密設(shè)計(jì)主要是確定E,D,K。RSA是Rivest、Shamir和Adleman提出來的基于數(shù)論非對(duì)稱性(公開鑰)加密算法。大整數(shù)的素因子難分解是RSA算法的基礎(chǔ)。RSA在國外早已進(jìn)入實(shí)用階段,已研制出多種高速的RSA的專用芯片。盡管RSA的許多特性并不十分理想,但迫于信息安全的實(shí)際需要,許多重要的信息系統(tǒng)還是采用RSA作為基礎(chǔ)加密機(jī)制。從RSA提出不久,我國有關(guān)部門就一直對(duì)它進(jìn)行研究。從應(yīng)用的角度看,軟件實(shí)現(xiàn)的RSA已經(jīng)開始用于計(jì)算機(jī)網(wǎng)絡(luò)加密,用來完成密鑰分配、數(shù)字簽名等功能。除了RSA之外,還有DES(數(shù)據(jù)加密標(biāo)準(zhǔn))。盡管DES公開了其加密算法并曾被美國列為"標(biāo)準(zhǔn)",但很快被廢棄。加密技術(shù)又回歸到"算法保密"的傳統(tǒng)上。2.4已有方案分析該系統(tǒng)主要由溫度測(cè)量和數(shù)據(jù)采集兩部分電路組成,實(shí)現(xiàn)的方法有很多種,下面將列出兩種在日常生活中和工農(nóng)業(yè)生產(chǎn)中經(jīng)常用到的實(shí)現(xiàn)方案。2.4.1方案一采用熱電偶溫差電路測(cè)量溫度,溫度檢測(cè)部分可以使用低溫?zé)崤迹瑹犭娕加蓛蓚€(gè)焊接在一起的異金屬導(dǎo)線所組成,熱電偶產(chǎn)生的熱電勢(shì)由兩種金屬的接觸電勢(shì)和單一導(dǎo)體的溫差電勢(shì)組成。通過將參考結(jié)點(diǎn)保持在已知溫度并測(cè)量該電壓,便可推斷出檢測(cè)結(jié)點(diǎn)的溫度。數(shù)據(jù)采集部分則使用帶有A/D通道的單片機(jī),在將隨被測(cè)溫度變化的電壓或電流采集過來,進(jìn)行A/D轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測(cè)溫度顯示出來。熱電偶的優(yōu)點(diǎn)是工作溫度范圍非常寬,且體積小,但是它們也存在著輸出電壓小,容易遭受來自導(dǎo)線環(huán)路的噪聲影響以及漂移較高的缺點(diǎn),并且這種設(shè)計(jì)需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。2.4.2方案二采用數(shù)字溫度芯片DS18B20測(cè)量溫度,輸出信號(hào)全數(shù)字化。便于單片機(jī)處理及控制,省去傳統(tǒng)的測(cè)溫方法的很多外圍電路。DS18B20的最大優(yōu)點(diǎn)是之一是采用了單總線的數(shù)據(jù)傳輸,由數(shù)字溫度計(jì)DS18B20和微控制器AT89S52構(gòu)成的溫度測(cè)量裝置,它直接輸出溫度的數(shù)字信號(hào),可直接與計(jì)算機(jī)連接。這樣,測(cè)溫系統(tǒng)的結(jié)構(gòu)就比較簡單,體積也不大。采用Java控制,軟件編程的自由度大,可通過編程實(shí)現(xiàn)各種各樣的算術(shù)算法和邏輯控制,且體積小,硬件實(shí)現(xiàn)簡單,安裝方便。2.4.3方案比較從以上兩種方案,很容易看出方案一的測(cè)溫裝置可測(cè)溫度范圍寬、體積小,但是線性誤差較大,外圍電路復(fù)雜。而方案二的測(cè)溫裝置電路簡單、精確度較高、實(shí)現(xiàn)方便、軟件設(shè)計(jì)也比較簡單,故本次設(shè)計(jì)采用方案二。本系統(tǒng)利用AT89S52芯片控制溫度傳感器DS18B20進(jìn)行實(shí)時(shí)溫度檢測(cè)并顯示,能夠?qū)崿F(xiàn)快速測(cè)量環(huán)境溫度,獲得的溫度可以通過MAX232芯片與PC機(jī)的RS-232接口進(jìn)行串口通信,方便采集和整理溫度數(shù)據(jù)。
第三章系統(tǒng)總體設(shè)計(jì)3.1系統(tǒng)的需求分析1.利用Java設(shè)計(jì)一個(gè)上位機(jī)程序2.實(shí)現(xiàn)串口通信功能3.和MSP430或其他開發(fā)板進(jìn)行通信,能夠驅(qū)動(dòng)蜂鳴器,啟動(dòng)18B20和5110的顯示4.Java上位機(jī)程序可對(duì)MSP430開發(fā)板發(fā)送指令并顯示在5110顯示屏上3.2總體框架主要分為三個(gè)部分來詳細(xì)論述系統(tǒng)的軟硬件結(jié)構(gòu)。首先是上位機(jī)程序,然后是下位機(jī)硬件結(jié)構(gòu),最后是下位機(jī)程序結(jié)構(gòu)。利用Java設(shè)計(jì)一個(gè)上位機(jī)程序?qū)崿F(xiàn)串口通信功能和MSP430或其他開發(fā)板進(jìn)行通信,能夠驅(qū)動(dòng)蜂鳴器,啟動(dòng)18B20和5110的顯示Java上位機(jī)程序可對(duì)MSP430開發(fā)板發(fā)送指令并顯示在5110顯示屏上3.2.1上位機(jī)程序上位機(jī)程序使用java語言進(jìn)行編寫。為了便于用戶操作,提供了swingUI開發(fā)的界面提供圖形化的操作。程序主要負(fù)責(zé)搜尋管理上位機(jī)的串口,并在用戶選定了指定的串口以后,正確配置串口通訊參數(shù),與下位機(jī)通訊并同時(shí)接受來自下位機(jī)的狀態(tài)反饋。MSP430G255MSP430G255單片機(jī)電源5110LED液晶顯示板232接口DS18B20溫度探頭蜂鳴器硬件結(jié)構(gòu)示意圖圖3.1系統(tǒng)硬件模塊示意圖3.2.2下位機(jī)硬件結(jié)構(gòu) 下位機(jī)的硬件結(jié)構(gòu)框架如圖3.2,利用MSP430作為MCU的處理能力,驅(qū)動(dòng)5110LCD的顯示、蜂鳴器的顯示、驅(qū)動(dòng)DS18B20的工作,同時(shí)處理來自上位機(jī)的指令。串口中斷串口中斷下位機(jī)軟件結(jié)構(gòu)示意圖接受串口數(shù)據(jù)并存入隊(duì)列程序開始初始化外設(shè)刷新屏幕顯示讀取溫度信息檢查串口數(shù)據(jù)是否有數(shù)據(jù)顯示數(shù)據(jù)輸出蜂鳴音有無數(shù)據(jù)圖3.2系統(tǒng)軟件模塊示意圖3.3詳細(xì)方案設(shè)計(jì)3.3.1硬件方案設(shè)計(jì)總體設(shè)計(jì)思路系統(tǒng)的核心是一款MSP430G255的MCU,利用MCU的功能,完成系統(tǒng)功能。MSP430G255IPM是TI公司設(shè)計(jì)生產(chǎn)的一款超低功耗的16位單片機(jī)。具有低電壓、超低功耗;快速蘇醒;具有片內(nèi)比較器等特點(diǎn)。LCD接口 NOKIA5110液晶板的核心是飛利浦在1999年推出的一款名為PCD8544的48×84點(diǎn)矩陣LCD控制/驅(qū)動(dòng)IC。一般應(yīng)用時(shí),需要連接8個(gè)針腳,分別是:1-RST針腳,功能是重啟IC;2-CE針腳,功能是激活I(lǐng)C,類似于片選信號(hào);3-DC針腳,用于標(biāo)明輸入的是數(shù)據(jù)還是命令;4-DIN針腳,功能是串行數(shù)據(jù)輸入;5-CLK針腳,功能是外部時(shí)鐘源;6-Vcc針腳,電源引腳,標(biāo)稱3.3V供電;7-BL針腳,功能是LED屏幕背光;8-GND針腳,電源地。 本文把LCD的功能引腳和MSP430G255的通用引腳P6相連,具體對(duì)應(yīng)如下表所示:表3.1LCD顯示屏和MCU引腳對(duì)應(yīng)表序號(hào)LCD屏幕引腳MCU引腳備注1RSTP6.02CEP6.13DCP6.24DINP6.35CLKP6.46VCC3.3V7BLP6.58GNDGNDDS18B20接口電路DS18B20是常用的數(shù)字溫度傳感器,具有體積小,硬件開銷低,抗干擾能力強(qiáng),精度高的特點(diǎn)。DS18B20數(shù)字溫度傳感器接線方便,封裝成后可應(yīng)用于多種場(chǎng)合,如管道式,螺紋式,磁鐵吸附式,不銹鋼封裝式,型號(hào)多種多樣,有LTM8877,LTM8874等等。主要根據(jù)應(yīng)用場(chǎng)合的不同而改變其外觀。封裝后的DS18B20可用于電纜溝測(cè)溫,高爐水循環(huán)測(cè)溫,鍋爐測(cè)溫,機(jī)房測(cè)溫,農(nóng)業(yè)大棚測(cè)溫,潔凈室測(cè)溫,彈藥庫測(cè)溫等各種非極限溫度場(chǎng)合。耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測(cè)溫和控制領(lǐng)域。DS18B20采用單總線的接口方式與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊。單總線具有經(jīng)濟(jì)性好,抗干擾能力強(qiáng),適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度測(cè)量,使用方便等優(yōu)點(diǎn),使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測(cè)量系統(tǒng)的構(gòu)建引入全新概念。 在單總線模式下,DS18B20只需要三根連線即可,分別為電源,信號(hào),地線。其中電源和地線直接同電源相連,信號(hào)線連接MCU的P1.7口。串口接口電路 MSP430本身具有UART異步串口,可以方便的收發(fā)數(shù)據(jù)。但要和上位機(jī)通訊,必須符合RS232的規(guī)定。UART和RS232主要的區(qū)別在于電平,MSP430的UART接口輸出的電平最高只有3.3V,遠(yuǎn)遠(yuǎn)達(dá)不到RS232的要求。同時(shí)如果直接連接,RS232的高電平也會(huì)操作MSP430端口的耐壓極限,造成器件損壞。 這里使用MAX232芯片來解決這一問題,通過MAX232的匹配,我們可以使用MSP430的UART模塊來操作串口,收發(fā)數(shù)據(jù)。系統(tǒng)電源設(shè)計(jì) 系統(tǒng)電源采用雙電源冗余接口,可以使用5V的外接電源輸入,同時(shí)可以使用USB接口為系統(tǒng)供電。目前系統(tǒng)耗電較低,完全可以單獨(dú)使用USB系統(tǒng)進(jìn)行供電。蜂鳴器設(shè)計(jì) 考慮蜂鳴器采用CMOS驅(qū)動(dòng),要得到頻率不同的聲音信號(hào),還需要單片機(jī)輸出頻率不同的脈沖來驅(qū)動(dòng)。這里蜂鳴器直接連接到單片機(jī)的UART模塊的TX腳,利用UART輸出的信號(hào)來替代脈沖信號(hào),驅(qū)動(dòng)蜂鳴器。時(shí)鐘源設(shè)計(jì) MCU內(nèi)部帶有時(shí)鐘源,但是外部時(shí)鐘源更加準(zhǔn)確,所以采用外部時(shí)鐘源 外部8M的無源晶振采用兩個(gè)22pF的陶瓷電容耦合后連接到單片機(jī)對(duì)應(yīng)引腳。3.3.2下位機(jī)軟件方案設(shè)計(jì) 首先我們討論本文中下位機(jī)主體程序的結(jié)構(gòu)。本文沒有在MSP430上使用操作系統(tǒng),這也意味著我們的程序是順序運(yùn)行的。在這個(gè)模式下,最有效的手段就是通過循環(huán)實(shí)現(xiàn)多種任務(wù)的協(xié)同處理。本文的下位機(jī)主要的工作就是通過循環(huán)來完成,配合中斷的輔助,完成既定功能。LCD顯示模塊 通過查閱PCD8544的數(shù)據(jù)手冊(cè)可以得知,LCD顯示主要通過修改PCD8544內(nèi)部的數(shù)據(jù)寄存器實(shí)現(xiàn),但是直接修改數(shù)據(jù)寄存器來完成顯示功能不便于處理顯示中的需求,所以我們換一種實(shí)現(xiàn)方式,在單片機(jī)內(nèi)部規(guī)劃出一個(gè)和液晶顯示區(qū)域?qū)?yīng)的二位數(shù)組,數(shù)組內(nèi)的內(nèi)容就是對(duì)應(yīng)位置液晶屏需要顯示的值。 48×84點(diǎn)矩陣LCD在加載8*6的點(diǎn)陣字庫以后,可以顯示6×16的一個(gè)字符增列。第一排數(shù)據(jù)我們規(guī)劃用來顯示溫度值,所以我們用于顯示串口數(shù)據(jù)內(nèi)容的二位數(shù)組大小就是5*16.。 程序周期性的讀取二位數(shù)組的內(nèi)容,并且把他們完整的投射到LED液晶屏上。而每次我們需要修改顯示內(nèi)容時(shí),則通過封裝好的函數(shù)修改二位數(shù)組的內(nèi)容即可。UART通訊模塊 UART接收串口數(shù)據(jù)通過中斷完成,和主程序循環(huán)無關(guān)。MSP430是獨(dú)立中斷,并且本文只使用了UART終端,所以并不需要考慮終端嵌套的問題。終端處理的要求是盡量快,并且最好避免函數(shù)調(diào)用。在這個(gè)原則的指導(dǎo)下,本文設(shè)計(jì)使用一個(gè)隊(duì)列來存儲(chǔ)收到的數(shù)據(jù)。針對(duì)隊(duì)列溢出這種極端的情況,本文作了簡單的處理,丟棄原隊(duì)列中的全部內(nèi)容,存儲(chǔ)最新收到的數(shù)據(jù)。DS18B20驅(qū)動(dòng)模塊 DS18B20的驅(qū)動(dòng)只需要一個(gè)IO就能完成,并且其通訊速率較慢,可以通過程序中順序控制時(shí)序來完成。蜂鳴器驅(qū)動(dòng)模塊蜂鳴器需要一個(gè)脈沖隊(duì)列來驅(qū)動(dòng)發(fā)聲。MSP430可以使用PWM模塊來驅(qū)動(dòng),也可以在軟件中模擬輸出方波來驅(qū)動(dòng)。本文采用UART輸出的信號(hào)來代替方波驅(qū)動(dòng)。例如輸出0x55是,就是一串占空比50%的方波信號(hào)。利用這一點(diǎn),可以使蜂鳴器發(fā)出多種不同的聲音。3.3.3上位機(jī)軟件方案設(shè)計(jì)考慮到兼容性,使用java可以跨平臺(tái)的獲得最大的兼容性,使得我們的編碼工作以最小投入獲得最大收益。同時(shí)考慮操作方便,我們還是要求圖形界面。綜合考慮,java中隊(duì)圖形界面支持最好的IDE環(huán)境就是NetBeansIDE下的swing。本文既是利用swing編寫的圖形界面的上位機(jī)程序。在上位機(jī)程序中,我們使用了開源的RXTX,該項(xiàng)目提供了Windows,Linux,MacosX,Solaris操作系統(tǒng)下的兼容m串口通訊包API的實(shí)現(xiàn),為其他研發(fā)人員在此類系統(tǒng)下研發(fā)串口應(yīng)用提供了相當(dāng)?shù)姆奖恪3绦蛑挥幸粋€(gè)頁面,按鈕采用事件驅(qū)動(dòng)。串口接收則采用多線程驅(qū)動(dòng)。額外創(chuàng)建的線程不停的掃描串口,一旦接收到串口數(shù)據(jù),則通知主界面修改顯示內(nèi)容。3.4方案實(shí)現(xiàn)及驗(yàn)證3.4.1安裝NetBeansIDE環(huán)境 首先安裝NetBeansIDE環(huán)境。NetBeans可以從java網(wǎng)站免費(fèi)獲取,也可以免費(fèi)使用。按照軟件提示一步一步安裝好以后即可。 需要安裝JavaSE開發(fā)工具包(JDK)7Update10(或更高版本)或JDK8才能安裝NetBeansIDE。您可以從以下網(wǎng)址下載JDK7和JDK8的最新更新:/technetwork/java/javase/downloads。PHP和C/C++NetBeans包僅要求安裝并運(yùn)行Java運(yùn)行時(shí)環(huán)境(JRE)7或8。如果您打算使用某項(xiàng)Java功能,則需要JDK7或8。 NetBeansIDE下載頁上提供了多種安裝程序,您可以下載其中的任何一種,每種安裝程序都包含基本IDE和一些附加工具。以下是可供選擇的安裝程序下載選項(xiàng):JavaSE。支持所有標(biāo)準(zhǔn)的JavaSE開發(fā)功能以及NetBeans平臺(tái)開發(fā)和JavaFX2.2SDK(或更高版本)或JavaFX8SDK。JavaEE。提供了用于開發(fā)JavaSE和JavaEE應(yīng)用程序的工具,并且支持NetBeans平臺(tái)開發(fā)和JavaFX2.2SDK(或更高版本)或JavaFX8SDK。此下載選項(xiàng)還包括GlassFishServerOpenSourceEdition4.1.1和ApacheTomcat8.0.27軟件。HTML5/JavaScript。提供用于開發(fā)HTML5/Javascript的工具。包含Java運(yùn)行時(shí)環(huán)境,并且不需要單獨(dú)的Java安裝。PHP。提供了PHP5.x開發(fā)工具,并且支持Zend和Symfony框架。包含Java運(yùn)行時(shí)環(huán)境,并且不需要單獨(dú)的Java安裝。C/C++。支持使用C、C++、Qt、Fortran和匯編語言進(jìn)行開發(fā)。包含Java運(yùn)行時(shí)環(huán)境,并且不需要單獨(dú)的Java安裝。全部。這是完整下載選項(xiàng),其中包含NetBeansIDE的所有可用運(yùn)行時(shí)和技術(shù)。3.4.2安裝RXTX串口包 RXTXcomm是一款開源的針對(duì)串口操作的java包,RXTX是個(gè)提供串口和并口通信的開源java類庫,由該項(xiàng)目發(fā)布的文檔均遵循LGPL協(xié)議。該項(xiàng)目的主頁位于/jarvi/rxtx/index.html。RXTX項(xiàng)目提供了Windows,Linux,MacosX,Solaris操作系統(tǒng)下的兼容m串口通訊包API的實(shí)現(xiàn),為其他研發(fā)人員在此類系統(tǒng)下研發(fā)串口應(yīng)用提供了相當(dāng)?shù)姆奖?。針?duì)x86體系結(jié)構(gòu)的Linux操作系統(tǒng)平臺(tái),RXTX的部署包括下面幾個(gè)文檔:*RXTXcomm.jarRXTX自己的實(shí)現(xiàn)*librxtxSerial.so由調(diào)用的底層串口庫文檔*librxtxParallel.so由RXTXcomm.jar調(diào)用的底層并口庫文檔驅(qū)動(dòng)的類配置文檔,內(nèi)容是Driver=gnu.io.RXTXCommDriver這里僅介紹如何在window系統(tǒng)下進(jìn)行安裝。在Netbeans界面中,在左邊得項(xiàng)目欄中右鍵點(diǎn)擊項(xiàng)目名-->屬性-->庫,點(diǎn)擊“添加JAR/文件夾”按鈕,選擇RXTXcomm.jar文件。接下來只需要確認(rèn):importgnu.io.*;是一個(gè)有效語句就可以了。 如果這時(shí)候運(yùn)行,會(huì)得到運(yùn)行時(shí)錯(cuò)誤,因?yàn)閞xtxSerial.DLL庫沒辦法找到。我需要右鍵點(diǎn)擊項(xiàng)目名-->屬性-->運(yùn)行,在界面總添加VM參數(shù):-Djava.library.path="C:/where-ever-you-stuck-rxtxSerial.DLL-file;%PATH%例如:-Djava.library.path="C:/rxtx-2.1-7-bins-r2/Windows/i368-mingw32/;%PATH%"當(dāng)然你也可以復(fù)制那個(gè)目錄下的所有dll文件到C:/Windows/System32/中,JAVA會(huì)自動(dòng)找到它們的。注意。你不能在64bit的JRE中使用32bitDLL文件,不然你將會(huì)得到類似下文的錯(cuò)誤:Can'tloadIA32-bit.dllonaAMD64-bitplatformthrownwhileloadinggnu.io.RXTXCommDriver解決這個(gè)問題的方式就是安裝32bitJDK,并在Netbeans中添加新平臺(tái)(工具-->JAVA平臺(tái)-->添加平臺(tái))并且將項(xiàng)目設(shè)置切換到新的平臺(tái),然后就可以輸入"importgnu.io.*",確認(rèn)是否有效了。3.4.3編寫上位機(jī)程序 在成功安裝RXTX之后,就開始使用NetBeansIDE新建工程,并使用圖形化界面直接編輯窗口。本文中的串口主要有四個(gè)元素:下拉菜單 在計(jì)算機(jī)應(yīng)用中,下拉式選單是選單的一種表現(xiàn)形式。具體表現(xiàn)為:當(dāng)用戶選中一個(gè)選項(xiàng)后,該選單會(huì)向下延伸出具有其他選項(xiàng)的另一個(gè)選單。下拉式選單通常應(yīng)用于把一些具有相同分類的功能放在同一個(gè)下拉式選單中,并把這個(gè)下拉式選單置于主選單的一個(gè)選項(xiàng)下。下拉菜單內(nèi)的項(xiàng)目可以據(jù)需要設(shè)置為多選或單選,可以用來替代一組復(fù)選框(設(shè)置為多選)或單選框(設(shè)置為單選)。這樣比復(fù)選框組或單選框組的占用位置小,但不如它們直觀。 本文使用下拉菜單來顯示當(dāng)前計(jì)算機(jī)所有的串口。所以在程序啟動(dòng)時(shí),就要掃描所有當(dāng)前計(jì)算機(jī)所有存在的串口,并且加入下拉菜單://列出所有可以使用的串口publicvoidlistPort(){CommPortIdentifiercpid;Enumerationen=CommPortIdentifier.getPortIdentifiers();jComboBox1.removeAllItems();AddTextOut("nowtolistallPortofthisPC:"+en+"\r\n");while(en.hasMoreElements()){cpid=(CommPortIdentifier)en.nextElement();if(cpid.getPortType()==CommPortIdentifier.PORT_SERIAL){AddTextOut("FindCom:"+cpid.getName()+","+cpid.getCurrentOwner()+"\r\n");jComboBox1.addItem(cpid.getName());}}}打開按鈕 一旦用戶從下來菜單選擇一個(gè)串口之后,接下來的動(dòng)作就是打開串口。打開串口意味著一系列的操作,首先是找到并且打開指定的串口;打開成功之后,這個(gè)按鈕便不能夠再被操作;最后,還要建立并啟動(dòng)一個(gè)線程,這個(gè)線程不停的掃描打開的串口,接受串口數(shù)據(jù)并且在界面上顯示。privateSerialPortserialPort;privatevoidopenPort(StringPortName){CommPortIdentifiercpid;Enumerationen=CommPortIdentifier.getPortIdentifiers();//listallPortofthisPCwhile(en.hasMoreElements()){cpid=(CommPortIdentifier)en.nextElement();if(cpid.getPortType()==CommPortIdentifier.PORT_SERIAL){//AddTextOut("發(fā)現(xiàn)串口:"+cpid.getName()+","+cpid.getCurrentOwner());if(cpid.getName()==PortName){try{serialPort=(SerialPort)cpid.open("UART",500);//log("實(shí)例SerialPort成功!");}catch(PortInUseExceptione){serialPort=null;}if(null!=serialPort){//成功打開串口//jTextArea2.setText("成功打開串口:"+cpid.getName());jButton1.setText("OpenedCom:"+cpid.getName());jButton1.setEnabled(false);jButton2.setEnabled(true);try{//設(shè)置一下串口的波特率等參數(shù)serialPort.setSerialPortParams(9600,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);}catch(UnsupportedCommOperationExceptione){AddTextOut("ConfigError\r\n");}//開設(shè)新線程,接受串口數(shù)據(jù)finalThreadComRcvThread=newThread(newRunnable(){publicvoidrun(){InputStreamin=null;byte[]bytes=null;while(true){try{in=null;in=serialPort.getInputStream();intbufflenth=in.available();//獲取buffer里的數(shù)據(jù)長度if(bufflenth>0){bytes=newbyte[bufflenth];//初始化byte數(shù)組為buffer中數(shù)據(jù)的長度in.read(bytes);AddTextOut(newString(bytes));}else{Thread.sleep(1000);}}catch(Exceptione){}finally{try{if(in!=null){in.close();in=null;}}catch(IOExceptione){//thrownewSerialPortInputStreamCloseFailure();}}}}});ComRcvThread.start();}}}}}文本顯示區(qū)域 文本顯示區(qū)域是程序界面中最大的一塊區(qū)域,也是用戶關(guān)注的重點(diǎn)。任何一string結(jié)構(gòu)的數(shù)據(jù)內(nèi)容都可以被顯示在這個(gè)區(qū)域,在串口打開之前,他負(fù)責(zé)顯示一些程序的狀態(tài);在串口打開之后,這個(gè)區(qū)域就被用來專門顯示打開窗口的收發(fā)內(nèi)容。本文對(duì)這個(gè)區(qū)域的顯示作了簡單的封裝:privatevoidAddTextOut(StringMessage2display){Stringo_content=jTextArea2.getText();o_content+=Message2display;//o_content+="\r\n";jTextArea2.setText(o_content);}文本輸入?yún)^(qū)域這個(gè)區(qū)域被用來輸入要先串口發(fā)送的數(shù)據(jù)內(nèi)容。發(fā)送按鈕點(diǎn)擊【發(fā)送按鈕】之后,文本輸入?yún)^(qū)域的數(shù)據(jù)內(nèi)容就被發(fā)送給打開的串口。同時(shí)清空文本輸入?yún)^(qū)域,等待新的數(shù)據(jù)。privatevoidcommitContent(){if(null!=serialPort){OutputStreamout=null;try{out=serialPort.getOutputStream();out.write(jTextField1.getText().getBytes());out.flush();}catch(IOExceptione){}finally{AddTextOut("\r\n[SEND]:"+jTextField1.getText()+"\r\n");jTextField1.setText(null);try{if(out!=null){out.close();out=null;}}catch(IOExceptione){}}}}3.4.4安裝IAR環(huán)境IAREW430軟件為收費(fèi)軟件,不過IAR公司提供4K/8K的限制版,可以無限期使用,或者30天全功能版,用戶可以根據(jù)需要自行下載,編寫下位機(jī)程序。3.4.5編寫下位機(jī)程序下位機(jī)程序分為幾個(gè)部分:串口操作 首先是初始化串口UART模塊。MAX232不需要額外的初始化操作,只需要正確配置MSP430上的UART模塊即可正常工作://*****************************************************************//MSP430串口初始化//*****************************************************************voidUART_Init(){U0CTL|=SWRST;//復(fù)位SWRSTU0CTL|=CHAR;//8位數(shù)據(jù)模式U0TCTL|=SSEL1;//SMCLK為串口時(shí)鐘U0BR1=baud_h;//BRCLK=8MHZ,Baud=BRCLK/NU0BR0=baud_l;//N=UBR+(UxMCTL)/8U0MCTL=0x00;//微調(diào)寄存器為0,波特率9600bpsME1|=UTXE0;//UART1發(fā)送使能ME1|=URXE0;//UART1接收使能U0CTL&=~SWRST;IE1|=URXIE0;//接收中斷使能位P3SEL|=BIT4;//設(shè)置IO口為普通I/O模式P3DIR|=BIT4;//設(shè)置IO口方向?yàn)檩敵鯬3SEL|=BIT5;}這里需要注意的是MSP430上的IO口都有方向寄存器,需要正確配置。接下來處理UART的接收功能//*************************************************************************//處理來自串口0的接收中斷//*************************************************************************ucharRCVBUF[32];ucharRCVPTR=0;#pragmavector=UART0RX_VECTOR__interruptvoidUART0_RX_ISR(void){//uchardata=0;RCVBUF[RCVPTR++]=U0RXBUF;//接收到的數(shù)據(jù)存起來//Send_Byte(data);//將接收到的數(shù)據(jù)再發(fā)送出去RCVPTR=RCVPTR%(sizeof(RCVBUF)/sizeof(RCVBUF[0]));} 上面的代碼的工作邏輯很簡單,首先建立一個(gè)32個(gè)字長的隊(duì)列,每次收到串口數(shù)據(jù)后,我們都會(huì)進(jìn)入中斷,此時(shí)把接收到的數(shù)據(jù)放入隊(duì)列即可。同時(shí)注意處理隊(duì)列溢出的情況。對(duì)于發(fā)送,我們簡單對(duì)發(fā)送過程進(jìn)行封裝://*************************************************************************//串口0發(fā)送數(shù)據(jù)函數(shù)//*************************************************************************voidSend_Byte(uchardata){while((IFG1&UTXIFG0)==0);//發(fā)送寄存器空的時(shí)候發(fā)送數(shù)據(jù)U0TXBUF=data;} 最后是處理,我們?cè)谥餮h(huán)進(jìn)行處理,并在處理結(jié)束后清理串口接收緩存數(shù)據(jù)的隊(duì)列。//RCVCMDfromCOMif(RCVPTR>0){處理數(shù)據(jù)RCVBUF[RCVPTR]=0;ScreenPrint(RCVBUF);RCVPTR=0;}LCD液晶屏操作首先還是初始化工作:voidLCD_init(void){P6DIR=0xff;//P3DIR=0xff;P6OUT=0xff;//P3OUT=0xff;lcd_write_byte(0x21,0);//初始化Lcd,功能設(shè)定使用擴(kuò)充指令lcd_write_byte(0xd0,0);//設(shè)定液晶偏置電壓lcd_write_byte(0x20,0);//使用基本指令lcd_write_byte(0x0C,0);//設(shè)定顯示模式,正常顯示}此外我們封裝一些對(duì)LCD的操作函數(shù)voidlcd_write_byte(unsignedchartemp,unsignedcharmingmin){unsignedchari;CSL;if(mingmin==1)DCH;if(mingmin==0)DCL; for(i=0;i<8;i++){if(temp&0x80)DINH;if((temp&0x80)==0)DINL;CLKL;CLKH;temp=temp<<1;}}voidlcd_set_xy(unsignedcharX,unsignedcharY){lcd_write_byte(0x40|Y,0);//columnlcd_write_byte(0x80|X,0);//row}voidLCD_clear(void) //清屏{unsignedchart,k;lcd_set_xy(0,0);for(t=0;t<6;t++){for(k=0;k<84;k++){lcd_write_byte(0x00,1);}}} 最后我們建立一個(gè)數(shù)組,并且將數(shù)組內(nèi)容和LCD屏幕內(nèi)容對(duì)應(yīng),并且寫出維護(hù)對(duì)應(yīng)的函數(shù),要求周期性執(zhí)行這個(gè)函數(shù):unsignedcharScreenPix[14*5];unsignedcharCursor=0;voidScreen_work(void){chari;lcd_set_xy(0,1);for(i=0;i<sizeof(ScreenPix)/sizeof(ScreenPix[0]);i++){LCD_write_char(ScreenPix[i]);}}此外,本文還準(zhǔn)備了兩個(gè)函數(shù)用于顯示內(nèi)容,一個(gè)是清空屏幕,一個(gè)是在屏幕已有的現(xiàn)實(shí)基礎(chǔ)上添加一個(gè)字符串顯示:voidScreenCl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024房地產(chǎn)銷售代理合同銷售目標(biāo)及分成
- 2025年度物聯(lián)網(wǎng)平臺(tái)IT技術(shù)支持外包協(xié)議2篇
- 中小企業(yè)債權(quán)融資協(xié)議:2025年度3篇
- 2024年道路工程碎石供應(yīng)運(yùn)輸合同
- 二零二五年度全國婚姻家庭法律咨詢與情感咨詢服務(wù)合同范本3篇
- 二零二五年廢棄物資源化利用土石方合同3篇
- 2025版文化展覽場(chǎng)地承包合同范本3篇
- 2024年鋼筋施工班組勞動(dòng)協(xié)議范本
- 關(guān)于自愿放棄繳納社保承諾書范文(6篇)
- 2025版管井降水施工安全與環(huán)境保護(hù)協(xié)議2篇
- 空調(diào)系統(tǒng)維保記錄表格模板
- QC小組活動(dòng)管理制度
- 市區(qū)自備井排查整治工作實(shí)施方案
- 8位半萬用表大比拼
- 品牌管理部績效考核指標(biāo)
- 瀝青路面施工監(jiān)理工作細(xì)則
- 物業(yè)設(shè)備設(shè)施系統(tǒng)介紹(詳細(xì)).ppt
- 公司走賬合同范本
- 獲獎(jiǎng)一等獎(jiǎng)QC課題PPT課件
- 人教版小學(xué)三年級(jí)數(shù)學(xué)上冊(cè)判斷題(共3頁)
- 國際項(xiàng)目管理手冊(cè)The Project Manager’s Manual
評(píng)論
0/150
提交評(píng)論