freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機的水土流失監(jiān)測系統(tǒng)軟件設計(編輯修改稿)

2025-07-17 12:43 本頁面
 

【文章內(nèi)容簡介】 樹型體系結構有以下三種層次: (1)目標。它處于樹型體系結構的最高層。用戶定義想要建立的應用程序的不同目標系統(tǒng)版本。對于簡單的應用程序,可能只需要兩種版本:調(diào)試版(Debug)和發(fā)布版(Release)。 (2)組。組處于樹型體系結構的中間層。它的作用是將一個或多個相關的源程序集合在一起。一個組可以惟一地屬于某個目標,也可以分屬于多個目標。每一種目標包含一個或多個組。 (3)源程序。源程序處于樹型體系結構的最低層。一般地,每一個源程序可以惟一地屬于一個組,也可以屬于多個組。但是屬于多個組的源程序由于連接時可能出錯,因而這種做法是不推薦的。當用戶以項目管理模式進行開發(fā)時,總有一個選定的當前目標。在項目窗口中只有作為當前目標成員的組以及它們所包含的文件才是可見的。也只有這些文件將生成代碼,并通過連接,形成代碼輸出。 在IAR Embedded Workbench中可以方便地進入高級語言交互式調(diào)試器CSPY,CSPY的工作方式有三種: (1)模擬方式(Simulation)。在這種方式下,目標系統(tǒng)的工作過程由調(diào)試主機以軟件模擬的方式來實現(xiàn),用戶可以通過各種不同的窗口來觀察調(diào)試程序的運行過程,即在目標硬件系統(tǒng)產(chǎn)生之前,驗證程序的設計思想和程序結構。 (2)仿真方式(Emulation)。在這種方式下,目標硬件系統(tǒng)通過JTAG接口與調(diào)試主機連接起來,使整個調(diào)試過程在目標硬件系統(tǒng)的真實運行下進行,不僅可以驗證程序的設計思想和程序結構,還可以實際判斷目標系統(tǒng)的硬件設計,調(diào)試完成后產(chǎn)生的程序代碼可以在最終的目標系統(tǒng)上運行。 (3)RomMonitor方式。這種方式是采用調(diào)試主機通過RS232接口聯(lián)機的方法進行調(diào)試,并要求將調(diào)試程序暫時存入RAM中。這種方式使用較少。 第三章 水土流失監(jiān)測系統(tǒng)程序設計 根據(jù)功能的監(jiān)控系統(tǒng)設計的水土流失,可以將軟件系統(tǒng)的功能分為以下幾個模塊: (1)主控制程序模塊 (2)按鍵中斷控制程序模塊 (3)定時器控制程序模塊 (4)傳感器控制程序模塊 (5)DSC1302模塊 (6)液晶顯示模塊 (7)鍵盤控制模塊1 .監(jiān)控程序模塊 傳 感 器 獨立鍵盤 電源 MSP430 單片機 時鐘顯示 液晶顯示 圖一 水土流失監(jiān)測系統(tǒng)設計框圖 MSP430具有很豐富的程序中斷源設計,在程序的設計過程中可以任意的調(diào)用,使用方式比較的靈活。如果系統(tǒng)處于空閑的狀態(tài)時通過對中斷的調(diào)用,可以迅速的進入工作模式,時間只需要5us。主要特性:(1) 五種省電模式,快速從省電模式喚醒;(2) 低電壓供電:;耗電電流:(掉電工作模式:;待機模式:);(3) 具有16位的RISC結構的CPU和外圍的設備和存儲器的鏈接是通過總線鏈接的;(4) 三個時鐘信號對應了三個時鐘的模塊:ACLK、MCLK、SMCLK。(5) 多達64KB尋址空間,包括ROM、RAM、Flash。(6) 只有三種指令的格式,并且其全部都為正交結構;(7) 共有七種尋址方式,這樣可以進行字或者字節(jié)尋址(8) 具有多達16個中斷源(如定時器、串行口、PPWDT等),多級優(yōu)先級,可以實現(xiàn)中斷嵌套。(9) 串行通信接口USART可設置為同步(SPI)、異步(UART)或模式,發(fā)送與接收有各自的中斷入口地址;(10) 定時器有基本定時器、定時器A、定時器B和看門狗定時器,能實現(xiàn)事件定時、計數(shù)、PWM等功能;(11) 具有16位看門狗功能;(12) 內(nèi)部包含了A/D轉換器和D/A轉換器;(13) 在單片機上就集成LCD驅動器、硬件乘法器、比較器、DMA控制器及Scan IF模塊等,方便使用。 響應中斷 MSP430初始化 開始 液晶顯示初始化 中斷 顯示初始化 CPU關閉,進入休眠模式等待中斷 Y 圖二 主程序設計流程圖 主程序所要實現(xiàn)的動能是對單片機以及外圍設備的控制,在上電以后對單片機以及外圍設備首先運行的程序,然后它實現(xiàn)的主要功能是對與外圍設備與單片機連接的各個原件端口的進行初始化。由于MSP430具有低功耗的特點,要實現(xiàn)這個功能就要使單片機的CPU在沒有任務的時候進入休眠狀態(tài)以保持低功耗,當有執(zhí)行操作就必須通過中斷來實現(xiàn)對CPU的喚醒,所以在主程序的控制中酒必須加入各種中斷的定義,并在運行過程中開啟中斷和休眠模式。如前面所了解到的關于MSP430系列單片機的看門狗定時功能,在單片機的初始過程中看門狗會在系統(tǒng)出現(xiàn)錯誤或者看門狗溢出時將系統(tǒng)重啟,因此要將看門狗定時器在這個過程中關閉,同時也要將鍵盤,顯示器,傳感器,日歷/時鐘等相連的連接端口也要進行初始化并且設置其輸入/輸出形式,然后再初始化定時器功能。 開始 關閉看門狗傳感器、液晶、按鍵端口初始化 定時器A。B初始化 返回1 按鍵中斷程序設計流程圖、B程序設計MSP430內(nèi)部具有很多的定時器功能,例如看門狗WDT、基本定時器、定時器A、定時器B和八位的定時器/計數(shù)器等。定時器的作用是實現(xiàn)程序的延遲、脈寬的測量、頻率的測量、定時控制和信號檢測的和發(fā)生等,除此外定時器A還具有一個功能那就是用作可編程波特率發(fā)生器,在具有多種任務的系統(tǒng)中也可以用來做一個中斷的信號實現(xiàn)對任務的停止。但是看門狗WDT定時器只是完成對MSP430內(nèi)部定時系統(tǒng)和檢測系統(tǒng)完成的一種模塊,當程序發(fā)生故障時能使受控系統(tǒng)重新啟動,也可以作為一般內(nèi)部定時器使用??撮T狗的主要特點如下:(1) 需要一個命令才能對其一定的操作;(2) 包含定時器和看門狗兩種模式;(3) WDT是一個16位計數(shù)器;(4) 有8種可選的定時時間。 我們可以通過WDTCLT寄存器中的TMSEL和HOLD位來控制WDT的看門狗模式或者定時器模式或低功耗模式。 (1)定時器模式 當TMSET=1是選擇定時器模式。在系統(tǒng)當中設定好了中斷的條件后,看門狗WDT將會按照當初設定的定時時間實現(xiàn)周期性的不斷地產(chǎn)生中斷信號,在定時器響應了中斷以后就會將存儲器中的中斷標志位清零。在定時形式下要注重定時期間的改變應伴隨計數(shù)器的清零工作,而且要在相同的命令下實行。 (2)低功耗模式 看門狗模該系統(tǒng)不需要看門狗,你可以設置保持= 1關閉定時器,它可以減少功率消耗模式。 (3) 當看門狗定時器控制寄存器tmsel = 0指WDT工作,這種工作模式的看門狗,在這種操作模式,如果在看門狗到達定時的時間或者加入了一句錯誤的指令那么這樣就會觸發(fā)PUC信號,那么看門狗的兩個寄存器WDTCNT和WDTCTL里面的所有的內(nèi)容將會被全部的清除,這樣看門狗模式就會被自動的打開然后近入到看門狗模式。為了是一整條程序順利的進行下去,在這個過程中就必須周期性的使用看門狗的初始化程序不停地對看門狗的寄存器進行清零,防止計時的溢出。 TI公司推出的所有的MSP430系列的FLASH型的單片機都會含有定時器A和定時器B,定時器A是由一個16位的定時器和多路捕獲/比較通道組成的,其中的各個通道都可以對其進行單獨的控制,這樣我們就能可以有多路的選擇余地。由于在本系統(tǒng)中定時器A和定時器B要分別完成兩個不同的控制。按照實際的需要,就是電路里傳感器的要求,當現(xiàn)實某一路的傳感器數(shù)據(jù)時時間就要繼續(xù)計時而傳感器則要進行停止的要求所以根據(jù)返回鍵的要求對操作進行終止,然后返回到此前的中斷處,繼續(xù)進行傳感器數(shù)據(jù)的循環(huán)顯示,通過程序來使用計時器A來控制傳感器數(shù)據(jù)的轉換和顯示,計時器B來進行對時間的顯示,每一秒鐘進行一次中斷并且將其通過線路顯示出來。4. 傳感器程序設計1) .溫度傳感器 對所有的用單總線控制的ROM操作來說,它的開始都需要一個對所有東西的初始化的清零程序,由此開始進行其他的控制。而初始化的意思就是作為控制系統(tǒng)的單片機系統(tǒng)通過電位把總線的所有接口拉低一段時間這樣保證所有的管腳管口都表現(xiàn)為低電平,然后大概保持480us,之后就再把所有的電平拉到高位,隨后判斷接口的電平如果表現(xiàn)為‘1’則表示沒有器件在位,相反如果表現(xiàn)為‘0’則有器件在位。當有器件在位的時候通過系統(tǒng)加一個延遲,然后再進行下面的操作指令,由于這個過程中有按鍵的選擇所以需要一個,所以在系統(tǒng)設計中要加一個響應按鍵中斷的程序,對所選的按鍵值判斷和處理。unsigned char ow_reset(uint n) { unsigned char presence。 P4DIR=0xff。 //SET TO OUTPUT P4OUT=0xff。 P4OUT=0x00。 //pull dQ line low _NOP()。 _NOP()。 delay(100)。 // leave it low for 600us P4OUT=0xff。 // allow line to return high P4DIR=0x00。 //SET TO INPUT while(P4IN!=0)。 while(P4IN==0) { presence =0。 // get presence signal return(presence)。 // presence signal returned } } // 0=presence,1 = no part這是對溫度傳感器的初始化程序 DS18B20的還具有很多針對溫度的變換的指令,例如可以完成對溫度的讀取和溫度的轉換,還可以對指令進行匹配序列號等操作指令,但是這些指令的操作都是針對都是DS18B20的寄存器的操作所進行的,并且這些針對溫度傳感器的控制都基本上是對其內(nèi)部的寄存器的操作,而且這些操作都是都是通過溫度傳感器的讀/寫操作進行的,DS18B20的每一條指令都是八個字節(jié)但是DS18B20是一個單總線的傳感器,所以每一次的指令的發(fā)送都是一次性的進行八次的發(fā)送,所以用程序編寫傳感器的發(fā)送或者接受數(shù)據(jù)時要用循環(huán)語句進行數(shù)據(jù)的八次循環(huán),加上每次必須對數(shù)據(jù)的‘0’或者‘1’進行判斷操作。uchar DS18B20_ReadByte(uint n) //讀取ds18b20的一個字節(jié){ uchar u。 uchar q P4DIR=0xff。 //SET TO OUTPUT Switch(n) { case 0: for(q=0。q8。q++) { u=u1。 P4OUT amp。=~BIT0。 _NOP()。_NOP()。 P4OUT |=BIT0。 P4DIR amp。=~BIT0。 //SET TO INPUT _NOP()。_NOP()。 if((P4INamp。0x08)==0x08) u=u|0x80。 else u=uamp。0x7f。 delay(20)。 P4DIR |=BIT0。 //SET TO OUTPUT P4OUT |=BIT0。 } break。 } return u。 }這是對DS18B20溫度傳感器的一個讀字節(jié)的程序。 與讀取數(shù)據(jù)一樣當對傳感器寫入一個數(shù)據(jù)時也需要對它進行‘0’和‘1’的判斷,在這個過程中要注意延遲時間的長短問題。void DS18B20_WriteByte (uint n,uchar wr) //寫入一個字節(jié){ uchar i。 P4DIR=0xff。 //SET TO OUTPUT switch (n) { case 0: for (i=0。i8。i++) { P4OUT amp。=~BIT0。 _NOP()。 if(wramp。0x01) P4OUT |=BIT0。 else P4OUT amp。=~BIT0。 delay(2)。 //delay 45 uS //5 _NOP()。 _NOP()。 P4OUT |=BIT0。 wr = 1。 }break。 } }
點擊復制文檔內(nèi)容
高考資料相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1