久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10721|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于單片機的液位控制系統(tǒng)設(shè)計與實現(xiàn)論文

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:273739 發(fā)表于 2018-1-9 14:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
XX學(xué)院
單片機系統(tǒng)設(shè)計三級項目
設(shè)計說明書
(2011/2012學(xué)年第二學(xué)期)
      題    目 :基于單片機的水位檢測報警系統(tǒng)_
專業(yè)班級 :   XXXXXXXX            
學(xué)生姓名 :       XXX XX         
學(xué)    號:      XXXXX            
指導(dǎo)教師 :XXXXXXXXXXXXXXXXXXX     
           XXXXXXXXXXXXXXXXXX      
設(shè)計周數(shù) :    XXXXXXXXX           
設(shè)計成績 :                     
           XXXX年XX月XX日
XX學(xué)院
單片機系統(tǒng)設(shè)計  三級項目任務(wù)書
一、題目: 基于單片機基于單片機的水位檢測報警系統(tǒng)設(shè)計與實現(xiàn)  
二、參與項目班級:            XXXXXXXXXXXXXX                 
三、項目起止時間:         XXXXXXXXXXXXXXXXXXXXX               
四、原始數(shù)據(jù)及主要任務(wù):
    原始數(shù)據(jù):水位傳感器;51單片機;揚聲器。
主要任務(wù):⑴根據(jù)技術(shù)要求和現(xiàn)有開發(fā)環(huán)境,分析設(shè)計題目;⑵設(shè)計系統(tǒng)實現(xiàn)的方案;⑶設(shè)計并繪制電路原理圖;⑷畫出功能模塊的程序流程圖;⑸使用匯編語言(或C語言)編寫實現(xiàn)程序;⑹結(jié)合硬件調(diào)試、修改并完善程序;⑺編寫項目報告。
五、技術(shù)要求:
⑴利用單片機及揚聲器、水位傳感器等器件設(shè)計;
⑵將探測到的水位變化信號轉(zhuǎn)換為電壓信號,經(jīng)調(diào)理電路整形處理為TTL電平送入單片機;
⑶單片機對送入的信號進行數(shù)據(jù)處理,在LED或LCD上進行水位顯示,超出水位警戒線時發(fā)出報警提示。
學(xué)    生(簽字):                         系 主 任(簽字):              
指導(dǎo)教師(簽字):                         院 長 (簽字):               
目錄
1.項目設(shè)計要求與任務(wù)        3
2.項目設(shè)計正文        3
    2.1 課題背景及研究意義分析        3
    2.2 課題現(xiàn)狀        4
    2.3 設(shè)計思路及方案        4
        2.3.1 水位傳感方式的選擇        4
        2.3.2 水位傳感器的特點及應(yīng)用        5
    2.4系統(tǒng)的組成        6
        2.4.1系統(tǒng)工作原理        6
        2.4.2穩(wěn)壓電路        6
        2.4.3水位顯示電路        7
        2.4.4振蕩電路和復(fù)位電路        8
        2.4.5自動報警電路        8
3.水位檢測系統(tǒng)的整體電路仿真圖        9
3.1硬件連接實物圖        9
4. 各種水位下的仿真圖        10
    4.1 高水位狀態(tài)下仿真圖        10
4.2 低水位狀態(tài)下仿真圖        10
5. 通信單元硬件設(shè)計        11
6.上位機顯示單元        11
6.1上位機接受部分窗體控件        12
7. 項目設(shè)計總結(jié)        14
8. 參考文獻        15
附錄1        16
1設(shè)計要求與任務(wù)
設(shè)計要求:⑴利用單片機及揚聲器、水位傳感器等器件設(shè)計;⑵將探測到的水位變化信號轉(zhuǎn)換為電壓信號,經(jīng)調(diào)理電路整形處理為TTL電平送入單片機;⑶單片機對送入的信號進行數(shù)據(jù)處理,在LED或LCD上進行水位顯示,超出水位警戒線時發(fā)出報警提示。
原始數(shù)據(jù):水位傳感器;51單片機;揚聲器。
主要任務(wù):⑴根據(jù)技術(shù)要求和現(xiàn)有開發(fā)環(huán)境,分析設(shè)計題目;⑵設(shè)計系統(tǒng)實現(xiàn)的方案;⑶設(shè)計并繪制電路原理圖;⑷畫出功能模塊的程序流程圖;⑸使用匯編語言(或C語言)編寫實現(xiàn)程序;⑹結(jié)合硬件調(diào)試、修改并完善程序;⑺編寫項目報告。
2  項目設(shè)計正文
2.1 課題背景及研究意義分析:
在工農(nóng)業(yè)生產(chǎn)中,常常需要測量液體液位。隨著國家工業(yè)的迅速發(fā)展,液位測量技術(shù)被廣泛應(yīng)用到石油、化工、醫(yī)藥、食品等各行各業(yè)中。低溫液體(液氧、液氮、液氬、液化天然氣及液體二氧化碳等)得到廣泛的應(yīng)用,作為貯存低溫液體的容器要保證能承受其載荷;在發(fā)電廠、煉鋼廠中,保持正常的鍋爐汽包水位、除氧器水位、汽輪機凝氣器水位、高、低壓加熱器水位等,是設(shè)備安全運行的保證;在教學(xué)與科學(xué)研究中,也經(jīng)常碰到需要進行液位控制的實驗裝置。
本設(shè)計是利用STC89C52單片機設(shè)計一種水位控制系統(tǒng)。主要是基于單片機的硬件設(shè)計以及程序設(shè)計, 包括測量電路部分、鍵盤輸入控制部分、液位實時數(shù)顯輸出部分以及液位控制部分,還在此基礎(chǔ)上添加報警器。本設(shè)計只是概念性設(shè)計了電路部分,并不涉及具體的數(shù)值設(shè)定,經(jīng)過了實際應(yīng)用檢測。
該系統(tǒng)實現(xiàn)了水位監(jiān)測,水位控制,水位顯示,故障報警功能。在設(shè)計中主要采用了傳感技術(shù)、單片機技術(shù)、弱電控制強電技術(shù)、C語言編程等技術(shù)。本文還講述了水位控制系統(tǒng)工作的基本原理,介紹了電路接口原理圖,給出了相應(yīng)了設(shè)計流程圖和C語言程序。
本文主要是為了更多得了解單片機,掌握單片機的組成部分和控制原理,最終達到設(shè)計出“單片機水位控制系統(tǒng)的”的目的。實驗證明,單片機控制的水位控制系統(tǒng)的硬件電路簡單,軟件功能完善,控制系統(tǒng)可靠,充分發(fā)揮了單片機的性能,可以大大的提高單片機的開發(fā)效率。
2.2  課題現(xiàn)狀
目前,市面上進行液位測量的儀表種類繁多,但是同時具有測量、監(jiān)控、數(shù)據(jù)記錄及處理的液位測量裝置并不多。在某些工業(yè)控制系統(tǒng)中,數(shù)據(jù)的測量這一基本功能已不能滿足現(xiàn)代工業(yè)的要求,往往需要對大批數(shù)據(jù)進行記錄,對其進行后期處理分析,實現(xiàn)差錯控制、工藝改善、資源優(yōu)化等一系列工作。為了獲得大批量的數(shù)據(jù),得到可靠的分析資料,往往需要長期、多網(wǎng)點的監(jiān)控記錄。在液位測量這一領(lǐng)域中,如江河湖海、城市用水等方面,大量數(shù)據(jù)長時間,多網(wǎng)點的采集記錄分析具有普遍的意義。液位的變化分析,有助于人們進一步對自然環(huán)境、天氣變化甚至是災(zāi)害預(yù)警提供可靠的支持。
單片機是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨即存儲器RAM,只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器、計時器等功能集成到一塊硅片上構(gòu)成的一個小而完善的計算機系統(tǒng)。
中央處理器CPU是單片微型計算機指揮、執(zhí)行中心,由它讀程序并執(zhí)行指令。CPU功能,是以不同方式來執(zhí)行各種指令。有的指令涉及到各個寄存器之間的關(guān)系;有的指令涉及到單片機核心電路內(nèi)部各功能部件的關(guān)系;有的則與外部器件發(fā)生關(guān)系。總的來說CPU是通過復(fù)雜的時序電路來完成不同的指令功能的。
對于本設(shè)計單片機結(jié)構(gòu)簡單實用性強,功能齊全,技術(shù)先進,使實現(xiàn)這設(shè)計不難實現(xiàn)。同時,C語言是單片機的重要“組成”,如果能掌握好C語言編程,這將很大程度上提高了開發(fā)效率。
在設(shè)計過程中我們采用了軟硬件雙結(jié)合的方式,軟件設(shè)計的方法簡化了硬件的要求,為設(shè)計創(chuàng)造了條件。單片機采用的STC89C52的單片機。
2.3 設(shè)計思路及方案
2.3.1水位傳感方式的選擇
簡單的控制方式有浮標(biāo)式、電極式等,這些控制方式的優(yōu)點是結(jié)構(gòu)簡單,成本低廉。但有很多問題存在,比如是精度不高,不能進行數(shù)值顯示,另外很容易引起誤查,且只能單獨控制,與計算機進行通信連接比較難實現(xiàn),很難快速準(zhǔn)確傳輸信號,所以不利于水位信號的傳送。
2.3.2水位傳感器的特點及應(yīng)用
水位浮球開關(guān)特點:1小型浮球液位開關(guān)是一種結(jié)構(gòu)簡單,使用方便的液位控制零件,它設(shè)有復(fù)雜的電路,不會受到干擾,只要材質(zhì)選擇正確,任何性質(zhì)液體、壓力、溫度皆可使用。液體介質(zhì)性質(zhì)與浮球關(guān)系:2液體比重不同時,浮球的動作位置將會有所變動,一般SG比水小時,浮球浸在液體中部分將相對增多。3浮球開關(guān)產(chǎn)品參考比重以水(SG=1)所以使用時在選用浮球時須考慮液位的比重SG,一定大于浮球規(guī)格所標(biāo)示,否則,浮球開關(guān)無法浮動。4粘度高不會干涸的液體,一般應(yīng)選用外徑較大的不銹鋼浮球。5浮球開關(guān)是使用磁鐵來感應(yīng)磁簧開關(guān),因此被測液位應(yīng)無鐵屑,否則鐵屑粘在浮球上面浮球浮不起來會影響浮球隊開關(guān)的動作。用途:不銹鋼浮球液位開關(guān)專門用于各種中小型常壓和受壓儲液罐的液位檢測、信號遠傳、開關(guān)報警,可適用于各種衛(wèi)生、環(huán)保、有毒、帶濃酸堿腐蝕性強介液體使用。
     
圖1 水位浮球式傳感器及工作原理
浮子開關(guān)是利用開關(guān)上面磁性浮子隨液位升或降,使開關(guān)檢測管內(nèi)設(shè)定位置的干簧管芯片動作,發(fā)出接點開(關(guān))轉(zhuǎn)換信號。
動作原理:在密閉的非導(dǎo)磁性管內(nèi)安裝有一個或多個干簧管,然后將此管穿過一個或多個中空且內(nèi)部有環(huán)形磁鐵的浮球,液體的上升或下降將帶動浮球一起上下移動,從而使該非導(dǎo)磁性管內(nèi)的干簧管產(chǎn)生吸合或斷開的動作,從而輸出一個開關(guān)信號,也叫做無源觸點信號。
應(yīng)用范圍:
我們常見的浮子開關(guān)一般水箱里面控制水位,用水箱高液位或者低液位報警作用。還可以用在飲水機、空調(diào)、加濕器、霧化器、空壓機、凈水器、水箱、熱水爐、水池、油箱、油罐、壓力罐、一些有酸堿液體的大小型設(shè)備。
適用范圍廣、安裝形式多樣側(cè)裝、直裝、頂部和底部安裝、螺紋法蘭安裝達到多點液位報警效果。 
無源器件,性能穩(wěn)定可靠,安全方便,抗干擾能力強,結(jié)構(gòu)簡單,安裝方便,維護費用低。
2.4系統(tǒng)的組成
水位控制系統(tǒng)由電源電路、水位探測傳感電路、穩(wěn)壓電路、繼電器控制電機加水電路、水位顯示電路、單片機STC89C52組成。系統(tǒng)組成的方框圖如下:
圖2 系統(tǒng)組成方框圖
2.4.1系統(tǒng)工作原理
當(dāng)水箱里的水位在低水位的時候傳感器傳給穩(wěn)壓電路一個低電平,低電平通過穩(wěn)壓電路里的NPN三極管、電容、電阻轉(zhuǎn)換成高電平。單片機收到高電平,表示水箱里沒有水了需要系統(tǒng)開始運作,給水箱加水,這時單片機通知紅燈緩慢閃爍,蜂鳴器報警。水位達到高水位時傳感器同時傳送給單片機一個低電平,紅燈閃爍頻率加快,蜂鳴器報警頻率加快。
同理,水位從高水位下降時,水位離開高水位線時,高水位傳感器探頭與電源斷開,傳感器輸出高電平給單片機。當(dāng)水位下降到蓄水位時,紅燈閃爍變慢。2.4.2穩(wěn)壓電路
      
圖3 穩(wěn)壓電路圖
本電路的主要作用是使從傳感器輸入的電平能夠穩(wěn)定的輸入到單片機中,,是由三極管9013、兩個電阻、和一個無極性電容組成。
如果我們不使用此穩(wěn)壓電路也能實現(xiàn)我們的設(shè)計目的,但有時會產(chǎn)生水位誤判和不穩(wěn)定現(xiàn)象,所以我認(rèn)為此電路是不可缺少的。
2.4.3水位顯示電路
圖4 水位顯示電路圖
本電路采用不不同顏色的LED作為顯示裝置,有單片機P2.0、P2.3口控制進行水位顯示。紅燈閃爍緩慢代表水位在低水位。紅燈閃爍急促表示在高水位以上。
此電路采用的是共陽極的,所以只有單片機給發(fā)光二極管為低電平的時候才能是發(fā)光二極管點亮。R1, R4,為上拉電阻起限壓控流作用。
LED(Light Emitting Diode),發(fā)光二極管,是一種固態(tài)的半導(dǎo)體器件,它可以直接把電轉(zhuǎn)化為光。LED的心臟是一個半導(dǎo)體的晶片,晶片的一端附著LED燈株在一個支架上,一端是負(fù)極,另一端連接電源的正極,使整個晶片被環(huán)氧樹脂封裝起來。半導(dǎo)體晶片由兩部分組成,一部分是P型半導(dǎo)體,在它里面空穴占主導(dǎo)地位,另一端是N型半導(dǎo)體,在這邊主要是電子。但這兩種半導(dǎo)體連接起來的時候,它們之間就形成一個“P-N結(jié)”。當(dāng)電流通過導(dǎo)線作用于這個晶片的時候,電子就會被推向P區(qū),在P區(qū)里電子跟空穴復(fù)合,然后就會以光子的形式發(fā)出能量,這就是LED發(fā)光的原理。而光的波長決定光的顏色,是由形成P-N結(jié)材料決定的。
2.4.4振蕩電路和復(fù)位電路
圖5 振蕩電路和復(fù)位電路圖
振蕩電路和復(fù)位電路是單片機不可缺少的部分,是單片機的重要組成,它們集成在單片機里,對于單片機穩(wěn)定工作有至關(guān)重要的作用。并且可以延長它的使用壽命。
2.4.5自動報警電路
下列二種情況發(fā)生系統(tǒng)報警:
1當(dāng)水位達到上限極限水位時報警,水位到達上限極限水位時系統(tǒng)發(fā)出報警;
2當(dāng)水位達到下限極限水位時報警,水位到達下限極限水位時系統(tǒng)發(fā)出報警;
          圖6 自動報警電路的接線圖
3水位檢測系統(tǒng)的整體電路仿真圖
圖7 水位控制系統(tǒng)仿真圖
3.1實物圖
圖8 實物圖
4 各種水位情況下的仿真圖
4.1 高水位狀態(tài)
加水水到達在蓄水位時:高水位警示燈紅燈閃爍急促,蜂鳴器快頻率鳴叫。仿真圖如下所示:
圖9高水位仿真圖
4.2 低水位狀態(tài)
水位減少到低水位時:低水位警示紅燈閃爍,蜂鳴器低頻率鳴叫。仿真圖如下所示:
圖10 低水位仿真圖
5通信單元硬件設(shè)計
MAX485僅有8個管腳,電路設(shè)計比較簡單。
RO引腳接到單片機串口接收引腳RXD(P3.0),DI引腳接到單片機串口發(fā)送引腳TXD(P3.1)。由于MAX485為半雙工通信方式,不能同時發(fā)送和接收數(shù)據(jù),只能通過控制RE和DE引腳的狀態(tài)來進行發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的轉(zhuǎn)換。為了節(jié)省單片機I/O口資源,將RE和DE引腳連在一起,輸入低電平時,MAX485處于接收狀態(tài);輸入高電平時,其處于發(fā)送數(shù)據(jù)狀態(tài)。定義RE和DE連接在一起的網(wǎng)絡(luò)標(biāo)號為E,接入單片機P1口,用于發(fā)送與接收的轉(zhuǎn)換。A,B端為發(fā)送接收差分信號端,一般需在A,B端之間加匹配電阻,匹配電阻為120Ω。
硬件電路如圖3-13:
圖12 串行通信模塊電路圖
6上位機顯示單元
上位機編程與下位機結(jié)合對應(yīng),下位機發(fā)“0”代表當(dāng)前水位為高水位,下位機發(fā)“1” 代表當(dāng)前水位為低水位。
水位變化當(dāng)高水位發(fā)“0”時上位機接受到對應(yīng)ASCII碼為48,此時上位機顯示“警戒!當(dāng)前水位為高水位!”。
水位變化當(dāng)高水位發(fā)“1”時上位機接受到對應(yīng)ASCII碼為49,此時上位機顯示“警戒!當(dāng)前水位太低!”。
圖13 上位機程序代碼
6.1上位機接受部分控件窗體
圖14 水位檢測報警系統(tǒng)窗體
7設(shè)計總結(jié)
通過這次項目設(shè)計,上位機和下位機的編程中我對軟件開發(fā)有了進步的了解,把理論知識應(yīng)用于實驗中。也讓我重新熟悉了C語言和C#語言的相關(guān)內(nèi)容,加深了對C語言、C#語言知識的深化和用途的理解。在這次的項目設(shè)計過程中,我發(fā)現(xiàn)自己的基礎(chǔ)知識和應(yīng)用能力都很差。剛接過項目,按照設(shè)計步驟走的時候,在很多都卡住了,原理的知識忘記了很多,以至于在設(shè)計開始時必須得先復(fù)習(xí)一下相關(guān)的基礎(chǔ)知識。
在老師和同學(xué)的幫助下我順利的完成了這次項目設(shè)計,對于我來說,收獲最大的是方法和能力;那些分析和解決問題的能力。在整個項目設(shè)計的過程中,我發(fā)現(xiàn)我們學(xué)生在經(jīng)驗方面十分缺乏,空有理論知識,沒有理性的知識;有些東西可能與實際脫節(jié)。總體來說,我覺得像課程設(shè)計這種類型的作業(yè)對我們的幫助還是很大的,它需要我們將學(xué)過的相關(guān)知識系統(tǒng)地聯(lián)系起來,從中暴露出自身的不足,以待改進!
本次的項目設(shè)計,培養(yǎng)了我們綜合應(yīng)用設(shè)計項目及其他項目的理論知識和理論聯(lián)系實際,應(yīng)用生產(chǎn)實際知識解決工程實際問題的能力;在設(shè)計的過程中還培養(yǎng)出了我們的團隊精神,同學(xué)們共同協(xié)作,解決了許多個人無法解決的問題;在今后的學(xué)習(xí)過程中我們會更加努力和團結(jié)。
我決定認(rèn)真總結(jié)這次項目設(shè)計的經(jīng)驗,以及學(xué)習(xí)到的知識,來更加的充實自己的頭腦和完善自己的知識結(jié)構(gòu)。另外,我也在這次設(shè)計中看到了自己的許多不足之處,通過項目設(shè)計,發(fā)現(xiàn)自己在理論研究和實際工作能力等方面都得到了提高,同時在老師的指導(dǎo)和課題組同學(xué)的共同幫助下,及時總結(jié)研究成果,這些無疑會對我今后的工作和學(xué)習(xí)帶來很大的幫助。總之,這次的課程設(shè)計的順利完成使我受益匪淺。
要做好一個項目的設(shè)計,就必須做到:在設(shè)計程序之前,對所用單片機的內(nèi)部結(jié)構(gòu)有一個系統(tǒng)的了解,知道該單片機有哪些資源;要有一個清晰的思路和一個完整的軟件流程圖;在設(shè)計程序時,不能妄想一次將整個程序設(shè)計好,反復(fù)修改、不斷改進是程序設(shè)計的必經(jīng)之路;要養(yǎng)成注釋程序的好習(xí)慣,這樣為資料的保留和交流提供了方便;在設(shè)計中遇到的問題要記錄,以免下次遇到同樣的問題。
在這次的項目設(shè)計中,我真正的意識到,在以后的學(xué)習(xí)中,要理論聯(lián)系實際,把我們所學(xué)的理論知識用到實際當(dāng)中,學(xué)習(xí)單片機更是如此,程序只有在經(jīng)常寫與讀的過程中才能提高,這就是這次項目設(shè)計的最大收獲。
8 參考文獻
[1]王祁. 智能儀器設(shè)計基礎(chǔ)[M]. 北京:機械工業(yè)出版社,2009.
[2]張毅剛,彭喜元,董繼成.單片機原理及應(yīng)用[M].北京:高等教育出版社,2003.
[3]蔡黎.一種基于單片機的水位控制系統(tǒng)設(shè)計[J].儀器儀表用戶,2007,14(4):44-45.
[4]李書旗,沈金榮.液位測量傳感器系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機測量與控制,2009,17(11):2131-2133.
[5]王洪君.單片機原理及應(yīng)用[M]. 濟南:山東大學(xué)出版社,2009
[6]閻石. 數(shù)字電子技術(shù)基礎(chǔ)[M]. 北京:高等教育出版社,2006.
[7]劉得營,張志霞等.單片機原理及接口技術(shù)[M].中國水利水電出版社 2006.3-4
[8]劉剛 《單片機原理及應(yīng)用》 中國林業(yè)出版社
評    語
   
成    績
   
   
指導(dǎo)教師
(簽字)
   
            年    月    日
附錄1
上位機程序設(shè)計
水位檢測報警系統(tǒng)C#語言程序如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
using System.Threading;
namespace 水位檢測報警系統(tǒng)上位機控制
{
    public partial class Form1 : Form
    {
        SerialPort port;
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
           String[] PortNames = SerialPort.GetPortNames();
            comboBoxPort.Items.Clear();
            if (PortNames.Length > 0)
            {
                for (Int32 i = 0; i < PortNames.Length; i++)
                {
           comboBoxPort.Items.Add(PortNames);
                }
                comboBoxPort.SelectedIndex = 0;
                comboBoxBaudRate.SelectedIndex = 1;
                comboBoxData.SelectedIndex = 0;
                comboBoxStop.SelectedIndex = 1;
            }
            else
            {comboBoxPort.Text = "無串口"; }
            btnClosePort.Enabled = false;
        }
        public delegate void showInfo(string str);
        byte[] cmd = new byte[2];
        Thread t;
        private void btnOpenPort_Click(object sender, EventArgs e)
        {
            port = new SerialPort();
            port.PortName = comboBoxPort.SelectedItem.ToString();
            port.BaudRate = Convert.ToInt32(comboBoxBaudRate.SelectedItem);
            port.Parity = Parity.None;
            port.DataBits = Convert.ToInt16(comboBoxData.SelectedItem);
            port.StopBits = StopBits.One;
            if (port.IsOpen == false)
            {
                try
                {
                    port.Open();
                    t = new Thread(new ThreadStart(RecieveData));
                    t.Start();
                    listBox1.Items.Add("串口打開成功!");
                    btnClosePort.Enabled = true;
                    btnOpenPort.Enabled = false;
                    comboBoxBaudRate.Enabled = false;
                    comboBoxData.Enabled = false;
                    comboBoxPort.Enabled = false;
                    comboBoxStop.Enabled = false;
                }
                catch {
                    listBox1.Items.Add("串口打開失敗");
                }
            }
        }
        private void RecieveData()
        {
            while (true)
            {
                int str;
                float st;
                string info;
                str = port.ReadByte();
                switch (str)
                {
                    case 48:
                        info = "警戒!當(dāng)前水位為高水位!";
                        break;
                    case 49:
                        info = "警戒!當(dāng)前水位太低!";
                        break;
                    default:
                        info = "接收數(shù)據(jù)失敗,無法知道當(dāng)前水位!";
                        break;
                }
                showinfo(info);
            }
        }
        public void showinfo(string str)
        {
            if (listBox1.InvokeRequired)
            {
                showInfo d = new showInfo(showinfo);
                listBox1.Invoke(d, str);
            }
            else
            {
                listBox1.Items.Add(str);
                listBox1.SelectedIndex = listBox1.Items.Count - 1;
            }
        }
        private void btnClosePort_Click(object sender, EventArgs e)
        {
            if(t.IsAlive)
            {
                t.Abort();                     
            }
            try
            {
                port.Close();
                listBox1.Items.Add("串口關(guān)閉成功!");
                btnOpenPort.Enabled = true;
                comboBoxBaudRate.Enabled = true;
                comboBoxData.Enabled = true;
                comboBoxPort.Enabled = true;
                comboBoxStop.Enabled = true;
                btnClosePort.Enabled = false;
            }
            catch {
                listBox1.Items.Add("串口關(guān)閉失敗!");
            }
        }
        private void btnOpen_Click(object sender, EventArgs e)
        {
        }
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
        }
        private void comboBoxStop_SelectedIndexChanged(object sender, EventArgs e)
        {
        }
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (t.IsAlive)
            {
                t.Abort();
            }
            try
            {
                port.Close();
                listBox1.Items.Add("串口關(guān)閉成功!");
            }
            catch
            {
                listBox1.Items.Add("串口關(guān)閉失敗!");
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
        }
        }
    }


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚卅毛片| 成年人黄色小视频 | 天天综合干 | 欧美成人精品二区三区99精品 | 亚洲性视频 | 久久久人成影片一区二区三区 | 国产电影一区二区在线观看 | 国产精品久久a | h小视频| 精品国产一区久久 | avtt国产| 亚洲三区在线播放 | 在线成人av | 男女午夜激情视频 | 亚洲精品天堂 | 美女国产一区 | 可以免费看的毛片 | 精品亚洲一区二区三区四区五区 | 日韩一区二区视频 | 亚洲欧美aⅴ | 91中文在线观看 | 啪啪毛片 | 亚洲一区| 久久新| 精品久久一区 | 青青草国产在线观看 | 国产精品久久久久一区二区三区 | 中文字幕一区二区视频 | 精品一区二区三区在线观看 | 国产精品一区二区av | 精品视频国产 | 欧美极品在线视频 | 日韩成人在线观看 | www.国产| 91精品一区二区三区久久久久 | 看片天堂| 91网站在线观看视频 | 精品视频在线免费观看 | 日批免费看 | 欧美久久久久久 | 人人操日日干 |