<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 采用多單片機的液位監控儀設計與實(shí)現

采用多單片機的液位監控儀設計與實(shí)現

作者: 時(shí)間:2016-09-08 來(lái)源:網(wǎng)絡(luò ) 收藏

  采用設計液位監控儀是很通用的做法。如果要測量的液位有很多路(16路以上),每路要求能滾動(dòng)顯示1年內每班、每日、每月的輸入輸出總量(1日3班),正?;蛞馔馔k姅祿粊G失,人機交互能力要強(要設置適當數量的按鍵及采用LCD顯示),并且每路液位要求對應2路控制輸出信號(液罐液體輸入控制和輸出控制),配置微型打印機端口,設置聲音報警,所有這些無(wú)疑需要很多的端口來(lái)支持,單憑一個(gè)是辦不到的,需要擴展端口。在此設計中,筆者認為采用專(zhuān)用擴展芯片有較多的弊端,權衡利弊,選擇了用來(lái)代替專(zhuān)用I/O接口芯片的方法。

本文引用地址:http://dyxdggzs.com/article/201609/296748.htm

  1 專(zhuān)用 I/O芯片與單片機用作I/O芯片的對比

 ?、賹?zhuān)用I/O接口芯片的I/O口數量不比單片機多(筆者采用單片機型號為89C52);

 ?、趯?zhuān)用I/O接口芯片使用不靈活,幾種使用方式已被芯片設計者設定,不能超出此范圍變化,而單片機則受限制較小,使用起來(lái)較靈活;

 ?、蹖?zhuān)用I/O接口芯片獨立性差、智能性差,無(wú)論是接收輸入信號還是輸出控制信號,I/O專(zhuān)用芯片對信號的輸入輸出增色不能做出決定,必須要由單片機來(lái)做決定,僅起接力或過(guò)渡信號作用,沒(méi)有監控能力,不能獨立處理問(wèn)題,而單片機則不然,可采用多種方式靈活處理問(wèn)題;

 ?、苁褂肐/O擴展專(zhuān)用芯片就必須要熟悉它,工程技術(shù)人員一般對單片機的熟悉程度要比對它強很多,相比之下,使用它要浪費時(shí)間,再一個(gè)I/O擴展專(zhuān)用芯片的價(jià)格均要比單片機高,從成本核算上考慮不經(jīng)濟;

 ?、輰?zhuān)用I/O芯片實(shí)時(shí)性差,由于I/O擴展專(zhuān)用芯片僅起收發(fā)信號的作用,本身沒(méi)有加工處理信號的能力,這樣信號經(jīng)過(guò)它來(lái)回的傳遞勢必造成延遲,因而會(huì )出現實(shí)時(shí)性差的問(wèn)題;

 ?、奘褂脝纹瑱C作I/O接口,便于軟硬件設計模塊化,分工清晰,給設計、調試、維護帶來(lái)極大方便;

 ?、呤褂脝纹瑱C作I/O接口加強了對接口的監管力度,減輕了主單片機的負擔。

  2 硬件結構及分工

  硬件設計共分如下幾部分:?jiǎn)纹瑱C;A/D轉換部分;控制信號輸出部分;非易失性存儲器(作RAM擴展);按鍵部分;顯示部分;打印I/O端口部分;模擬開(kāi)關(guān)部分。硬件結構框圖如圖1所示。

  

 

  硬件設計中:

 ?、賳纹瑱C選用89C52,其特點(diǎn)是片內含有8KB ROM,不需片外擴展ROM;

 ?、贏(yíng)/D轉換器選用MC14433,其特點(diǎn)是轉換精度高,抗干擾能力強,每秒可轉換20次左右,因為液位變化不是很快,所以可滿(mǎn)足監測液位變化的需要;

 ?、劭刂菩盘栞敵霾捎脝纹瑱C控制74LS373鎖存器的方式,這樣可通過(guò)增減鎖存器個(gè)數的方式來(lái)增減控制輸出端口數量;

 ?、芤蛎柯芬竽軡L動(dòng)顯示1年內每班、每日、每月的輸入輸出量總量(1日3班),正?;蛞馔馔k姅祿粊G失,所以采用了AT29LV040A(512KB)的閃速存儲器(也可采用FRAM),因89C52最多可外擴展64KB的RAM,為了保證有足夠的存儲空間可將AT29LV040A的A16、A17和A18地址線(xiàn)與1#單片機的某個(gè)端口連接,這樣通過(guò)控制這3個(gè)地址線(xiàn)的變化就可達到使用AT29LV040A的512KB空間的目的。

 ?、莅存I部分采用常規的非編碼鍵盤(pán)方式即可;

 ?、逓榱颂岣呷藱C的交互能力,顯示部分采用了GXM12864SL大屏幕LCD,這樣屏幕上可顯示自編的漢字、數字、等式及簡(jiǎn)單的圖案;

 ?、叽蛴/O端口,可根據要求進(jìn)行相應的連接配置即可;

 ?、嗄M開(kāi)關(guān)選用多片CD4051,它們與單片機配合,用于選擇多路液位模擬量中的1路液位的模擬量,然后進(jìn)行A/D轉換。

  由于選用了3個(gè)單片機,有效地解決了I/O端口不夠用的問(wèn)題,也使得在設計上簡(jiǎn)化了許多,只要按照常規的連接芯片方式即可,省去了很多的過(guò)渡芯片,如74LS244、74LS245、74LS73等,也使得軟件設計變得簡(jiǎn)單容易。因硬件連接變得簡(jiǎn)單而且均為常規連接,所以本文沒(méi)有提供詳細的線(xiàn)路連接圖。3個(gè)單片機之間的數據交換采用了串行口通信方式,如圖1所示。本設計中,3個(gè)單片機采用同時(shí)復位,當然也可采用分開(kāi)復位方式,但按鍵要增加,此種情況視要求而定。

  3 軟件結構設計

  由于3個(gè)單片機同時(shí)復位,所以復位后3個(gè)單片機是處于并行工作狀態(tài)的。1#單片機的主要工作是將所有路液位模擬量轉換成數字量保存起來(lái)。它可根據鍵盤(pán)命令或系統默認格式將采集加工后的結果傳送給2#單片機顯示及3#單片機輸出控制,也可根據命令只監測指定的某1路或某幾路的液位變化。2#單片機的主要工作是讀入鍵盤(pán)命令,加工處理后,向1#和3#發(fā)布命令,然后根據反饋結果在LCD上顯示出來(lái)。也可根據1#單片要同采集到的數據,不斷更新其顯示內容。LCD顯示方式可多種多樣,可循環(huán)顯示指定的某幾路液位,或固定顯示某1路液位,或循環(huán)顯示某1個(gè)月的每天或某天的每班輸入輸出量等。每1路液體的比重、計算修正值、液位上下限高度設定等都可通過(guò)鍵盤(pán)輸入并保存起來(lái)。也可通過(guò)鍵盤(pán)設定密碼,防止別人或誤操作破壞設定內容,鍵入方式應設計成無(wú)須看說(shuō)明書(shū),只要按照LCD顯示上的提示進(jìn)行選擇即可。3#單片機的主要工作是根據鍵盤(pán)命令或1#單片機及時(shí)采集到的數據,發(fā)出控制信號或打印輸出結果,打印輸出格式可根據鍵盤(pán)命令進(jìn)行選擇。3個(gè)單片機的工作流程框圖分別如圖2、圖3和圖4所示。

  

 

  

 

  3個(gè)單片機之間通過(guò)串行口,除傳送正常的數據、命令外,3者之間還要進(jìn)行互相監督(這是I/O擴展芯片很難做到的)。

 ?、傧嗷ブg傳送信息后一定要進(jìn)行印證,也就是發(fā)送者要及時(shí)收到接收者的回執;

 ?、?者之間定時(shí)互訪(fǎng),確保相安無(wú)事;

 ?、勖看紊想姀臀怀詸z外,還要互檢。

  互相監督的目的是為提高整個(gè)系統的性能,為系統維護提供方便。1#和3#單片機上都配有2個(gè)發(fā)送二極管,用于監測指示另外兩個(gè)單片機工作是否正常。2#單片機本身有LCD顯示,無(wú)需發(fā)光二極管。串行通信中斷服務(wù)程序、發(fā)送程序流程圖及定時(shí)互訪(fǎng)程序流程圖等因比較簡(jiǎn)單沒(méi)有給出。

  4 調試

  在一個(gè)系統中,使用多個(gè)單片機對整個(gè)系統調試確實(shí)會(huì )帶來(lái)一些不便。系統中有多少個(gè)單片機最好就有多少個(gè)單片機開(kāi)發(fā)裝置,這對調試是有極大幫助的,因為在調試中可隨時(shí)查看每個(gè)單片機的狀態(tài),但實(shí)際當中往往不會(huì )有多個(gè),只有1個(gè)。

  每個(gè)單片機的程序基本上是由兩部分組成的,一部分是與其它單片機沒(méi)有任何聯(lián)系的獨立部分,另一部分是單片機之間相互通信聯(lián)系的部分(這部分程序量較小)。調試時(shí)先把單片機各自獨立部分調試出來(lái),這部分對單片機應用人員來(lái)說(shuō)不會(huì )有問(wèn)題。然后調試單片機相互之間的串行通信程序,先把相互之間的簡(jiǎn)單通信建立起來(lái),相互之間能識別傳遞數據后,再逐步把完整的程序一步一步添加進(jìn)去。在設計、編制程序時(shí)要想到如何調試,這樣在編制程序時(shí)就會(huì )有意識地程序分成有效的塊,調試時(shí)就可以一塊一塊地調試。多單片機調試方法較多,此是一孔之見(jiàn)。

  結語(yǔ)

  在一個(gè)液位監控系統中采用多個(gè)單片機是一種嘗試,但它確實(shí)簡(jiǎn)化了系統設計,便于分工和多人投入協(xié)作,也便于產(chǎn)品改進(jìn)更新。其最顯著(zhù)的效果是縮短了產(chǎn)品的設計、調試和生產(chǎn)的周期。



關(guān)鍵詞: 單片機 I/O

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>