基于單片機的MODBUS通信接口設計_第1頁
基于單片機的MODBUS通信接口設計_第2頁
基于單片機的MODBUS通信接口設計_第3頁
基于單片機的MODBUS通信接口設計_第4頁
基于單片機的MODBUS通信接口設計_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

實驗室開放實驗題目:基于DSP2407單片機的MODBUS通信接口設計院系名稱:專業(yè)班級:學生姓名:學號:指導教師:成績:成績:指導老師簽名:日期:目錄摘要…………………31緒論………………42設計方案…………42.1方案概述……………………52.2方案論證……………………52.3MODBUS協(xié)議…………………63硬件電路設計……………………73.1最小系統(tǒng)電路………………73.2單片機電源電路……………83.3報警控制電路………………93.4通訊電路……………………104總體設計方案……………………114.1主程序設計…………………114.2串口中斷處理設計…………124.3CRC計算及校驗設計………134.4數(shù)據(jù)幀處理模塊……………14心得體會……………16參考文獻……………17附錄一局部程序代碼………………18摘要在機械、化工、紡織等行業(yè),隨著生產(chǎn)規(guī)模的不斷擴大,以及對生產(chǎn)過程集中監(jiān)控的迫切要求,現(xiàn)場總線技術應運而生,并成為了當今測控領域研究的熱點之一。Modbus協(xié)議作為現(xiàn)場總線的一種,以其開發(fā)本錢低,簡單易用等諸多優(yōu)點己被工業(yè)領域廣泛接受。信號測量作為工業(yè)中重要的測量參數(shù)之一,本課題選擇了信號測量作為測量的對象,并設計了基于Modbus協(xié)議的信號測量測控節(jié)點。本設計采用TC1047A傳感器采集現(xiàn)場信號測量,由DSP320IF2407單片機進行AD轉換和Modbus協(xié)議通訊。通訊的物理層采用RS232接口,并增加了光電隔離、抗雷擊和短路保護等功能。最后實現(xiàn)了單個節(jié)點和PC機的Modbus協(xié)議通訊,并通過控制蜂鳴器和繼電器來模擬工業(yè)現(xiàn)場控制。本文分別從硬件和軟件上闡述了該信號測量測控節(jié)點的實現(xiàn)方法。[關鍵詞]信號測量測控Modbus協(xié)議RS232DSP320IF24071緒論隨著計算機技術和網(wǎng)絡技術的開展,工業(yè)參數(shù)的數(shù)字采集促進了現(xiàn)場總線技術的開展,目前現(xiàn)場總線已經(jīng)從當初的4-20mA電流信號升級為數(shù)字信號,開展成為全數(shù)字通訊,解決了現(xiàn)場信號遠距離高速傳送的問題,而且提高了抗干擾性能,增加了系統(tǒng)配置的靈活性,節(jié)省了硬件投資,是未來生產(chǎn)自動化和過程控制的開展方向。目前,較有影響的總線有:Modbus,CAN,LonWorks,Profibus等。采用RS485標準總線技術對現(xiàn)場數(shù)據(jù)進行采集、管理,相對于CAN,LonWorks,Profibus等現(xiàn)場總線系統(tǒng)而言,具有結構簡易、本錢低廉、硬軟件支持豐富、安裝方便,且與傳統(tǒng)的DCS兼容,與現(xiàn)場儀表接口簡單,系統(tǒng)實施容易等特點,因而RS485總線系統(tǒng)在一定時間內(nèi)仍是中小控制系統(tǒng)的主要形式。信號測量測控模塊作為一種重要的設備,在諸多工業(yè)生產(chǎn)過程中得到了廣泛應用。自70年代以來,由于工業(yè)過程控制的需要,特別是微電子技術和計算機技術的迅猛開展,國外信號測量測控開展迅速,并在智能化、自適應等方面取得顯著成果。在這方面,以口本、美國、德國、瑞典等國的技術領先,生產(chǎn)出了很多商品化的、性能優(yōu)異的信號測量測控器及儀器儀表,并在各行業(yè)廣泛應用。目前,國外信號測量測控系統(tǒng)及儀表正朝著高精度、智能化、小型化等方面快速開展。基于單片機的Modbus協(xié)議產(chǎn)品一般由單片機芯片為核心和外圍輔助邏輯元器件組成,它充分利用單片機的硬件資源和軟件資源,同時合理配置特定的功能元器件來實現(xiàn)產(chǎn)品的功用,外圍元器件一局部是用來實現(xiàn)通訊的串行接口元件,具有電平轉換的功能,這使得Modbus產(chǎn)品具有組成工業(yè)網(wǎng)絡的能力;另一局部是功能器件,如:數(shù)模轉化器、模數(shù)轉化器、LED顯示器等,能夠?qū)崿F(xiàn)很多的特定功能。由于產(chǎn)品的硬件構成比擬簡單,性能比擬穩(wěn)定,功能比擬強且造價比擬低成為該產(chǎn)品的主要特點,在國內(nèi)使用的Modbus產(chǎn)品大局部是國外產(chǎn)品,國內(nèi)很少有獨立的知識產(chǎn)權,這是Modbus產(chǎn)品在國內(nèi)的現(xiàn)狀。本設計實現(xiàn)了單節(jié)點與PC機的Modbus協(xié)議的通訊,通過單片機的功能模塊進行AD采集,數(shù)碼管顯示,蜂鳴器報警和繼電器控制,通過串口以RTU幀的格式和上位機通訊,實現(xiàn)節(jié)點上傳信號測量AD值和上位機控制節(jié)點的I/O的功能。2設計方案2.1方案概述本方案采用精密信號測量電壓轉換器TC1047作為采集現(xiàn)場環(huán)境信號測量的傳感器,單片機選用性價比擬高的DSP320IF2407。外部電壓基準源為REF3325作為2.5V電壓基準。8位撥碼開關用來設置Modbus協(xié)議節(jié)點的ID號。RS232通訊電路實現(xiàn)節(jié)點和PC的Modbus通訊,并在調(diào)試時作為ISP燒錄程序的接口。RS485電路實現(xiàn)節(jié)點與節(jié)點之間的Modbus通訊接口。由于節(jié)點是在工業(yè)現(xiàn)場進行遠距離布線,所以在設計RS485總線電路時特別增加了電路抗電磁干擾和防雷電等措施。數(shù)碼管電路用來顯示現(xiàn)場信號測量。在現(xiàn)場信號測量超過設定的閾值時,蜂鳴器進行報警,并且通過控制繼電器來控制閥門等現(xiàn)場的執(zhí)行器。單片機系統(tǒng)的具體框圖如圖2.1所示:圖2.1單片機系統(tǒng)框圖方案論證本設計中,通訊的物理層包括RS232電路和RS485電路兩局部。RS232主要是單節(jié)點與PC機的通訊,其通訊速率預設低于9600b/s,距離小于15米,適用于戶內(nèi)布線,電磁干擾較小,所以采用DB-9連接器及MAX232電壓轉換電路即可實現(xiàn)其穩(wěn)定工作。RS485電路適用于節(jié)點之間的通訊,其通訊速率預設低于1Mb/s,距離小于1000米,適用于戶外布線,這就存在雷擊、浪涌等電磁干擾,有時還會出現(xiàn)RS485信號線與電力線短路的情況,所以在設計RS485電路時,要求有抗雷擊、抗浪涌沖擊以及過壓保護等功能。在設計硬件電路時,本人查閱了相關技術文檔,并經(jīng)過論證,最后確定采用瞬變電壓抑制二極管、自恢復保險絲以及鉗位電路等來實現(xiàn)上述功能。具體電路見后面章節(jié)詳細介紹。由于本通訊采用了Modbus協(xié)議及CRC校驗,可以保證數(shù)據(jù)鏈路層和應用層數(shù)據(jù)傳輸?shù)目煽啃浴ODBUS協(xié)議2.31MODBUS概述Modbus是由Modicon〔現(xiàn)為施耐德電氣公司的一個品牌〕在1979年創(chuàng)造的,是全球第一個真正用于工業(yè)現(xiàn)場的總線協(xié)議。為更好地普及和推動Modbus在基于以太網(wǎng)上的分布式應用,目前施耐德公司已將Modbus協(xié)議的所有權移交給IDA〔InterfaceforDistributedAutomation,分布式自動化接口〕組織,并成立了Modbus-IDA組織,為Modbus今后的開展奠定了根底。在我國,Modbus已經(jīng)成為國家標準GB/T19582-2023。據(jù)不完全統(tǒng)計:截止到2007年,Modbus的節(jié)點安裝數(shù)量已經(jīng)超過了1000萬個。Modbus協(xié)議是應用于電子控制器上的一種通用語言。通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡〔例如以太網(wǎng)〕和其它設備之間可以通信。它已經(jīng)成為一通用工業(yè)標準。有了它,不同廠商生產(chǎn)的控制設備可以連成工業(yè)網(wǎng)絡,進行集中監(jiān)控。此協(xié)議定義了一個控制器能認識使用的消息結構,而不管它們是經(jīng)過何種網(wǎng)絡進行通信的。它描述了一控制器請求訪問其它設備的過程,如何回應來自其它設備的請求,以及怎樣偵測錯誤并記錄。它制定了消息域格局和內(nèi)容的公共格式。當在Modbus網(wǎng)絡上通信時,此協(xié)議決定了每個控制器須要知道它們的設備地址,識別按地址發(fā)來的消息,決定要產(chǎn)生何種行動。如果需要回應,控制器將生成反響信息并用Modbus協(xié)議發(fā)出。在其它網(wǎng)絡上,包含了Modbus協(xié)議的消息轉換為在此網(wǎng)絡上使用的幀或包結構。這種轉換也擴展了根據(jù)具體的網(wǎng)絡解決節(jié)地址、路由路徑及錯誤檢測的方法。Modbus具有以下幾個特點:〔1〕標準、開放,用戶可以免費、放心地使用Modbus協(xié)議,不需要交納許可證費,也不會侵犯知識產(chǎn)權。目前,支持Modbus的廠家超過400家,支持Modbus的產(chǎn)品超過600種。〔2〕Modbus可以支持多種電氣接口,如RS-232、RS-485等,還可以在各種介質(zhì)上傳送,如雙絞線、光纖、無線等。〔3〕Modbus的幀格式簡單、緊湊,通俗易懂。用戶使用容易,廠商開發(fā)簡單。2.32MODBUS通信協(xié)議控制器通信使用主—從技術,即僅一設備〔主設備〕能初始化傳輸〔查詢〕。其它設備〔從設備〕根據(jù)主設備查詢提供的數(shù)據(jù)作出相應反響。典型的主設備:主機和可編程儀表。典型的從設備:可編程控制器。主設備可單獨和從設備通信,也能以播送方式和所有從設備通信。如果單獨通信,從設備返回一消息作為回應,如果是以播送方式查詢的,那么不作任何回應。Modbus協(xié)議建立了主設備查詢的格式:設備〔或播送〕地址、功能代碼、所有要發(fā)送的數(shù)據(jù)、一錯誤檢測域。從設備回應消息也由Modbus協(xié)議構成,包括確認要行動的域、任何要返回的數(shù)據(jù)、和錯誤檢測域。如果在消息接收過程中發(fā)生錯誤,或從設備不能執(zhí)行其命令,從設備將建立錯誤消息并把它作為回應發(fā)送出去??刂破髂茉O置為兩種傳輸模式〔ASCII或RTU〕中的任何一種在標準的Modbus網(wǎng)絡通信。用戶選擇想要的模式,包括串口通信參數(shù)〔波特率、校驗方式等〕,在配置每個控制器的時候,在一個Modbus網(wǎng)絡上的所有設備都必須選擇相同的傳輸模式和串口參數(shù)。硬件電路設計3.1.最小系統(tǒng)電路DSP320IF2407系列單片機是宏晶科技生產(chǎn)的單時鐘的單片機,是高速、低功耗、超強抗干擾的新一代8051單片機,指令代碼完全兼容傳統(tǒng)8051。其內(nèi)部集成MAX810專用復位電路,2路PWM,8路高速10位AD轉換,工作電壓5.5V至3.3V,工作頻率范圍0至35MHz,通用I/O口44個,復位后為準雙向口/弱上拉,可設置成準雙向口/弱上拉,推挽/強上拉,僅為輸入/高阻,開漏每個I/O口驅(qū)動能力可到達20mA,但整個芯片最大不超過55mA,有看門狗功能,有8路10位精度ADC,轉換速度可達250K/S,內(nèi)部有60K字節(jié)的Flash程序存儲器。選用DSP320IF2407單片機完全可以滿足本設計需求。單片機最小系統(tǒng)如圖3.1所示:圖3.1單片機最小系統(tǒng)單片機電源電路為了給單片機系統(tǒng)提供穩(wěn)定可靠的電源,本設計采用國半公司的LM22680系列穩(wěn)壓器電路。LM22680提供了作為降壓開關穩(wěn)壓器應有的一切有源功能,具有優(yōu)良的線性與負載調(diào)節(jié)特性,可以驅(qū)動電流高達2A的負載。其通過使用一個低導通電阻的N溝道金屬氧化物半導體場效應管獲得超過90%的高效率,并提供了一種簡易的整體設計手段,可將使用的外部元器件減少到最低限度。開關時鐘頻率由內(nèi)部工作在500kHz固定頻率的振蕩器提供,也可以通過一個外部電阻進行調(diào)節(jié),或者與高達1MHz的外部時鐘同步,另外也可以設置讓多個穩(wěn)壓器自同步,工作在同一開關頻率。LM22680系列產(chǎn)品具有內(nèi)置熱關斷和限流功能,而且有一個使能控制輸入端,可使穩(wěn)壓器休眠至靜態(tài)電流為25微安的待機狀態(tài)。通過選擇適宜的外部軟啟動電容器可實現(xiàn)可調(diào)軟啟動特性。LM22680的其它主要特征如下:〔1〕寬廣的輸入電壓范圍:4.5V至42V〔2〕低等效串聯(lián)阻抗的陶瓷電容器即可穩(wěn)定工作〔3〕輸出電壓可調(diào),輸出低至1.285V〔4〕±1.5%反響參考精度〔5〕500kHz的開關頻率,且在200kHz至1MHz之間可調(diào)〔6〕工作結點信號測量范圍為-40°C至125°C對于LM22680_ADJ,輸出電壓應該直接連到FB引腳上,不需要電阻分壓器就可實現(xiàn)1.285V的輸出電壓,其它輸出電壓可以利用一個電阻分壓器實現(xiàn)。官方推薦電阻R1和R2之和的最大值不超過10kΩ,以保證高輸出電壓的精確度。在本電源電路中采用510Ω和1.5KΩ,輸出5.06V電壓。單片機系統(tǒng)電源電路如圖3.2所示:圖3.2單片機系統(tǒng)電源電路報警控制電路信號測量測控節(jié)點的設計不僅要對現(xiàn)場信號測量進行數(shù)據(jù)上傳,還要對現(xiàn)場進行簡單的報警和控制,如當信號測量到達預設的閾值時,蜂鳴器要進行報警,以提示現(xiàn)場人員,并通過控制繼電器,實現(xiàn)對現(xiàn)場的設備進行簡單的控制。蜂鳴器是一種采用直流電壓供電的電子訊響器,主要分為壓電式與電磁式兩種類型。壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。多諧振蕩器由晶體管或集成電路構成,當接通電源后,多諧振蕩器起振,輸出1.5kHZ至2.5kHZ的音頻信號,阻抗匹配器推動壓電蜂鳴片發(fā)聲。電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動膜片及外殼等組成,當接通電源后,振蕩器產(chǎn)生的音頻信號電流通過電磁線圈,使電磁線圈產(chǎn)生磁場。振動膜片在電磁線圈和磁鐵的相互作用下,周期性的振動發(fā)聲。本系統(tǒng)的設計采用電磁式蜂鳴器,通過DSP320IF2407單片機的I/O口進行控制,P1.3口具有PWM輸出功能,可以進行頻率的設置,從而讓蜂鳴器發(fā)出不同頻率的聲音,蜂鳴器報警電路如圖3.3所示:圖3.3蜂鳴器報警電路通訊電路為實現(xiàn)現(xiàn)場組網(wǎng)控制和方便上位機完成現(xiàn)場數(shù)據(jù)采集和各種控制任務,該設計提供了兩種通信接口:RS485接口和RS232接口。RS232主要用來實現(xiàn)一對一的通信方式,即信號測量測控節(jié)點和上位機的通訊,而RS485那么可用來完成節(jié)點組網(wǎng)通信。其中RS232通訊電路采用MAX232芯片,它是專門為電腦的RS232標準串口設計的單電源電平轉換芯片,使用+5v單電源供電。具體RS232通訊電路如圖3.4所示:圖3.4RS232通訊電路4總體設計方案4.1主程序設計基于Modbus信號測量測控節(jié)點的程序設計要實現(xiàn)五大功能:第一,主機和從機之間串口通訊功能;第二,要完成命令報文的解析和信息提取功能;第三,實現(xiàn)MODBUS協(xié)議規(guī)定的主要的讀、寫功能;第四,實現(xiàn)在通訊過程中循環(huán)冗余檢測功能;第五,單片機采集信號測量;第六,數(shù)碼管顯示信號測量功能。在信號測量檢測中,選用單片機ADC通道1,配置轉換精度為8位,速度為420個時鐘周期。由于信號測量的變化速率較慢,為了節(jié)約CPU資源,采用前后臺操作,在后臺中每隔100ms進行一次AD采集。在實際的調(diào)試當中發(fā)現(xiàn)單片機剛上電或復位時,AD剛開始采集的數(shù)值是錯誤的,在本設計中采取的方法是丟棄前50次采集的AD值,這樣可以保證第一次拿到的AD值是正確的,從而不會出現(xiàn)因復位而誤報的情況。并且結合熱敏電阻變化特性及實際環(huán)境信號測量變化的情況,本設計采用了5個隊列深度的均值濾波,以減小誤差。節(jié)點軟件設計的重點有:CRC校驗,MODBUS協(xié)議功能實現(xiàn),AD采集程序程序,串口初始化及中斷處理程序,定時器中斷處理程序,單片機執(zhí)行程序。軟件設計選用的編譯環(huán)境為經(jīng)典的KeiluVision2IDE。其中C語言具有豐富的庫函數(shù),具有程序編寫簡單,可讀性強,維護性好,也具有直接對硬件進行操作的特點,生成目標代碼的質(zhì)量高,且有較好的可移植性,所以選用C語言進行編程。圖4.1為主函數(shù)程序流程圖:圖4.1主函數(shù)程序流程圖4.2串口中斷處理設計單片機與外界通訊主要通過串口,無論是接收還是發(fā)送消息,都是經(jīng)過串口來實現(xiàn),在執(zhí)行通訊任務時必須進行串口的初始化,初始化程序設計主要是波特率的設計,在串行通信中,收發(fā)雙方的波特率必須一致。51單片機串口可有4種工作方式,在本設計中設定串口為工作方式1為8位異步收發(fā),波特率由T0的溢出率和SMOD的值共同確定。根據(jù)晶振頻率為11.0592MHz,波特率為4800b/s,SMOD為1時,定時器1的初值為F4H。串口中斷處理程序流程圖如下4.2所示:圖4.2串口中斷處理程序流程圖4.3CRC計算及校驗設計循環(huán)冗余校驗(CRC)域為兩個字節(jié),包含一個二進制16位值。附加在報文后面的CRC的值由發(fā)送設備計算。接收設備在接收報文時重新計算CRC的值,并將計算結果于實際接收到的CRC值相比擬。如果兩個值不相等,那么為錯誤。CRC的計算,開始對一個16位存放器預裝全1。然后將報文中的連續(xù)的8位子節(jié)對其進行后續(xù)的計算。只有字符中的8個數(shù)據(jù)位參與生成CRC的運算,起始位,停止位和校驗位不參與CRC計算。CRC的生成過程中,每個8位字符與存放器中的值異或。然后結果向最低有效位方向移動1位,而最高有效位位置充零。然后提取并檢查LSB:如果LSB為1,那么存放器中的值與一個固定的預置值異或;如果LSB為0,那么不進行異或操作。這個過程將重復直到執(zhí)行完8次移位。完成最后一次〔第8次〕移位及相關操作后,下一個8位字節(jié)與存放器的當前值異或,然后又同上面描述過的一樣重復8次。當所有報文中子節(jié)都運算之后得到的存放器中的最終值,就是CRC值。圖4.3為CRC計算及校驗程序流程圖:圖4.3CRC計算及校驗流程圖4.4數(shù)據(jù)幀處理模塊數(shù)據(jù)幀處理是整個系統(tǒng)的核心局部,在現(xiàn)場總線技術中有著至關重要的作用。所以要好好讀懂理解Modbus的各個功能對應的幀格式,理解其含義和本質(zhì),然后才能找到對應信息去對其相應的處理。根據(jù)ModBus協(xié)議,其ASCII模式數(shù)據(jù)幀格式如表4.4所示表4.4ASCII模式數(shù)據(jù)幀開始地址功能數(shù)據(jù)縱向冗余檢查結束1字符2字符2字符n字符2字符2字符編碼系統(tǒng):16進制,ASCII字符0-9,A-F起始符位“:〞,終止符為0X0D,0X0A;在數(shù)據(jù)幀處理過程中,首先判斷數(shù)據(jù)幀是否完整,然后判斷是不是發(fā)給本從機。對完整數(shù)據(jù)幀進行LRC校驗,LRC校驗正確的幀執(zhí)行下面的處理步驟,否那么丟棄該幀,并通知上位機重發(fā)數(shù)據(jù)。幀處理的前提除了LRC校驗正確,還需要確保地址位正確。在前提條件滿足的情況下才能提取功能位和數(shù)據(jù)位。根據(jù)功能位確保要執(zhí)行的功能。并執(zhí)行相關功能。在具體功能中提取實現(xiàn)功能所需的數(shù)據(jù)位。然后上位機對發(fā)回來的幀進行處理,判斷對應的處理是否正確。圖4.5為數(shù)據(jù)幀處理流程圖:圖4.5數(shù)據(jù)幀處理流程圖心得體會通過此次課程設計,我更進一步地熟悉了單片機的結構及掌握了單片機的工作原理和其具體的使用方法,了解了單片機程序設計與特點,同時也更加深入的掌握了52系列單片機的相關知識。并且我懂得了單片機程序設計的根本思路,增強了實踐動手能力。除此以外,我還深深地認識到嚴謹、認真的科學態(tài)度在科學實驗中發(fā)揮的重要作用。對于這次課設,我是把它當做一個工程來做,所以一開始就抱著很負責很嚴謹?shù)膽B(tài)度去面對。這也是我在大學以來第一次去用52單片機去調(diào)試一個關于串口的協(xié)議,也是算我親自寫的最長的程序了,所以很有感慨。將一個復雜的工程分成假設干個根本模塊進行分步設計和測試,最后將這些模塊連接起來是本實驗根本的設計思想。從老師剛布置這個題目,感覺這個好難啊,從來沒有接觸過啊,到自己親手去查資料,去寫成程序,去一步一步解決問題,去實現(xiàn)根本功能,去實現(xiàn)附加功能,感覺自己成長了不少。一個東西剛開始接觸可能會覺的有難度,但是自己親手認真去作,一個一個解決問題,到最后會發(fā)現(xiàn)其實這個大的難題也沒有什么。這次我學到的最多的不是單片機知識,不是Modbus協(xié)議,是這種過程,這種態(tài)度,這種方法,和這種感覺。同樣自己還有很多方面的缺乏有待于改善,所以,我要更加的努力去學習,更加靜下心去完善自己。參考文獻[1]張友德,趙志英,涂時亮.單片微型機原理、應用與實驗〔第五版〕.復旦大學出版社,2006.[2]朱大奇,鄔勤文,袁芳.單片機原理、應用與實驗.科學出版社,2023.[3]李朝青.單片機原理及接口技術.北京航空航天大學出版社,2005.[4]張鳳登.現(xiàn)場總線技術及應用.科學出版社,2023.[5]何立民.單片機應用技術選編[M].北京:北京航空大學出版社,1998.[6]常健生.檢測與轉換技術[M].北京:機械工業(yè)出版社,1997.[7]凌志浩.智能儀表原理與設計技術[M].上海:華東理工大學出版,2003.[8]譚浩強.C程序設計〔第三版〕[M].北京:清華大學出版社,2005.[9]康華光.電子技術根底(模擬局部)[M].北京:高等教育出版社,1987.附錄一局部程序代碼#include<DSP320IF2407.h>#include"crc16.h" #defineLedPortP0 //段選段P0#defineLedCtrlP2 //位選段P2#defineHIG_BJ210typedefstruct{ unsignedcharstate; unsignedcharbuf[15]; unsignedcharRecCunt;unsignedcharSendCunt; unsignedcharTimerCunt;}RECBUF;RECBUFRecBuf;//unsignedcharMAddr;//Modbus節(jié)點地址sbitJDQ=P2^1;sbitSPEAK=P2^0;//數(shù)碼管段碼顯示:0~f,不亮unsignedcharcodeLED_Disp[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0x11,0x63,0x61,0x71,0x91};unsignedcharLED_value;//數(shù)碼管顯示值unsignedcharDisBuff[4];unsignedcharAD1_Res;//AD1轉換結果unsignedcharAD_buf[5];//AD1轉換結果緩沖區(qū)unsignedcharAD_value;//濾波后的AD值unsignedcharold_AD_value;//上次的AD值unsignedcharT_value;//信號測量值unsignedcharBJnum;//報警次數(shù)unsignedcharPC_Ctrl;unsignedcharJD_Ctrl;unsignedcharmaxADvalue;//最大AD值unsignedcharminADvalue;//最小AD值unsignedcharnowstatus;//當前狀態(tài)unsignedcharoldstatus;//上次狀態(tài)unsignedinttimer05scount;unsignedchartimer05sok;unsignedinttimer005scount;unsignedchartimer005sok;unsignedinttimer001scount;unsignedchartimer001sok;/************************************功能:延時的函數(shù)************************************/voidmDelay(unsignedcharmtime){ for(;mtime>0;mtime--) { unsignedcharj=100; while(--j); } }voidcollect_ADvalue(){ if(ADC_CONTR&0x10) { ADC_CONTR=ADC_CONTR&0x80;//關AD啟動 mDelay(1); AD1_Res=ADC_RES;//讀通道1的AD值 mDelay(1); ADC_CONTR=0x81; mDelay(1); ADC_CONTR=ADC_CONTR|0x08;//開AD啟動 mDelay(1); }}/**********************************功能:均值濾波函數(shù)**********************************/voidlvbo(){ unsignedchari; unsignedintsum,temp; sum=0; AD_buf[4]=AD1_Res; for(i=0;i<5;i++) { AD_buf[i]=AD_buf[i+1]; } for(i=0;i<5;i++) sum+=AD_buf[i]; temp=sum/5; AD_value=(unsignedchar)temp; old_AD_value=AD_value; T_value=AD_value; }/**********************************功能:報警次數(shù)計算函數(shù)**********************************/voidbaojing(){ if((T_value<HIG_BJ)&&(oldstatus==0)) { BJnum++; nowstatus=1; } if((T_value>HIG_BJ)||(T_value==HIG_BJ)) nowstatus=0; if(T_value<HIG_BJ) { JDQ=0; SPEAK=0; JD_Ctrl=1; } if((T_value>HIG_BJ)&&(PC_Ctrl==0)) { JDQ=1; SPEAK=1; JD_Ctrl=0; } oldstatus=nowstatus;}功能:主函數(shù)*******************/voidmain(){unsignedcharj; j=0; EA=0; Timer_Init(); Serial_Init(); AD_Init(); EA=1; RecBuf.state=0x00; RecBuf.RecCunt=0; RecBuf.TimerCunt=0;MAddr=0x01; oldstatus=0; BJnum=0; PC_Ctrl=0; for(j=0;j<50;j++) { collect_ADvalue(); lvbo(); min_max_ADvalue(); } maxADvalue=0; minADvalue=255; while(1) { Modbus_Com(); Disp(); if(timer001sok==1) { collect_ADvalue(); timer001sok=0; } if(timer005sok==1) { lvbo(); min_max_ADvalue(); timer005sok=0; } if(timer05sok==1) { baojing(); LED_value=T_value; timer05sok=0; } } }/************************************功能:串口接收、發(fā)送完成中斷效勞函數(shù)************************************/vo

溫馨提示

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

評論

0/150

提交評論