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

正文內(nèi)容

基于max1452的壓力傳感器校準系統(tǒng)畢業(yè)設計(編輯修改稿)

2025-04-03 10:00 本頁面
 

【文章內(nèi)容簡介】 ( 8) A 接收器的同相輸入端和驅(qū)動器的同相輸出端。 第 14 頁 共 38頁 圖 RS485組網(wǎng)通信圖 圖 MAX490內(nèi)部結(jié)構(gòu)圖 C8051F410 單片機有一個全雙工的串行口,數(shù)據(jù)發(fā)送端 為 (TX),數(shù)據(jù)接收端為 (RX),它們分別與 MAX490 的驅(qū)動器輸入端 DI和接收器輸出端 RO相連。 RS485 應在總線電纜的開始和末端都并接電阻進行終端匹配,阻值為 120Ω。如圖 所示。 圖 單片機與 MAX490的接口電路 第 15 頁 共 38頁 整體的電路測 試圖 將各部分電路測試圖連接構(gòu)成整體的電路圖,如圖 。對整體的原理圖用 PROTEL99SE 做出測試電路的 PCB 圖,如圖 。 圖 校正電路原理圖 第 16 頁 共 38頁 圖 測試電路 PCB版 第 17 頁 共 38頁 3 軟件設計 軟件設計概述 硬件電路設計完成后,測試系統(tǒng)能否實現(xiàn)相應的功能還要依賴于軟件的實現(xiàn)。系統(tǒng)能否正??煽康墓ぷ?,除了硬件的合理設計外,與功能完善的軟件設計是分不開的。本課題所設計的軟件結(jié)合采用 51 單片機 C 語言完成系統(tǒng)的整個流程控制以及運算處理等工作。 單片機編程 軟件與硬件的有機結(jié)合就像人一樣。如果硬件是人的身體,那么軟件就相當于人的大腦,空有身體,頭腦中沒有知識或頭腦干脆有了疾病,則工作能力就會受到很大限制。因而編制正確、完善的程序,采用合理的算法是至關重要的。硬件電路設計完成后,系統(tǒng)的主要功能將依賴于系統(tǒng)軟件來實現(xiàn)。系統(tǒng)能否正??煽康墓ぷ?,自動化程度的高低,智能實施控制的能力大小,除了硬件的合理設計外,很大程度上取決于功能完善、算法先進的軟件設計。程序的編制過程需要不斷地修改、調(diào)試、完善,因此結(jié)構(gòu)化好,可讀性強的編程風格,有助于縮短開發(fā)周期 ,同時便于日后的維護和改進 [22]。 作為程序設計人員,要對軟件的編制特點有深刻的理解。單片機的程序設計有其自身的特點。首先,單片機系統(tǒng)的系統(tǒng)程序與應用程序密不可分,系統(tǒng)程序與應用程序必須在一起考慮;其次在單片機系統(tǒng)中,硬件與軟件緊密結(jié)合,軟件直接操作硬件,硬件電路的設計不具有通用性,必須根據(jù)具體的硬件設計相對應的軟件。硬件設計的優(yōu)劣直接影響到軟件設計的難易和質(zhì)量,軟件設計的水平又直接影響硬件功能的發(fā)揮。同時,很多時候軟件可以替代硬件的功能。單片機的應用一般都是在工業(yè)現(xiàn)場,其多數(shù)環(huán)境惡劣。因此,除了在硬件上 提高抗干擾能力外,軟件的抗干擾能力、容錯能力也必須強。 除了以上所述單片機編程的一些特點外,也同樣有一般軟件的共同特點。首先,應采用合理、正確的算法,以合理的資源耗費實現(xiàn)預定的功能。其次,軟件應具有模塊化,可讀性強,可維護性好的特征。 軟件的設計按如下步驟進行: 第 18 頁 共 38頁 ( 1)分析問題,明確所要解決問題的具體要求,編寫任務說明書; ( 2)根據(jù)具體要求,確定軟件應實現(xiàn)的功能; ( 3)根據(jù)各功能,確定功能模塊,并為每一模塊進行接口定義,即輸入、輸出定義。同時規(guī)劃監(jiān)控程序,確定監(jiān)控程序與各功能模塊之間的關系; ( 4)確定算法,根據(jù)不同的功能,選擇或設計不同的算法。算法正確與否,直接決定了程序的正確性和能否達到預期的目標; ( 5)確定數(shù)據(jù)類型、規(guī)劃數(shù)據(jù)結(jié)構(gòu); ( 6)分配內(nèi)存資源,列出 RAM 資源的詳細分配清單,作為編程依據(jù); ( 7)編程及調(diào)試,編制程序時,要根據(jù)算法,首先繪制出流程框圖,有時甚至需要繪制出多級框圖,逐步細化。編制完了還需要對程序進行調(diào)試。對 Flash 型C8051F410 單片機來說,有十分方便的開發(fā)調(diào)試環(huán)境,因為器件內(nèi)部有 JTAG 調(diào)試接口; ( 8)寫入程序,現(xiàn)場試運行。仿真運行正確的 程序就可以燒入 EEPROM,到現(xiàn)場試運行了。并不是可仿真運行的程序在現(xiàn)場都能運行或完全正確運行。 ( 9)根據(jù)現(xiàn)場運行狀況,修改硬件和軟件,使系統(tǒng)更完善,更可靠。 流程圖 根據(jù)以上介紹,畫流程圖和編寫 C語言程序。程序主流程圖如圖 。 如圖 運行開始時,先將各個寄存器進行必要的初始化,做好準備,將所用到的中斷初始化成可用狀態(tài),開始讀取數(shù)據(jù)(正,反行程的數(shù)據(jù)),發(fā)送數(shù)據(jù)進行對比和校準。 第 19 頁 共 38頁 圖 程序主流程圖 如圖 程序開始寫入,寫入標準的傳感器信息,選擇進行壓力校準或不進行,不進行壓力校準,則選擇我們設置的檢測點進行檢測,進行數(shù)據(jù)采集。選擇壓力校準,無論正反行程,都先設置檢測的檢測點,再進行數(shù)據(jù)的采集。如果數(shù)據(jù)符合設置的校準要求,則保存數(shù)據(jù),校準結(jié)束。如果不符合校準要求,則重復上述動作,重新設置壓力檢測點,再進行校準。重復以上流程,直至符合設計所要求達到的精度標準。 開始 初始化寄存器 打開中斷 讀取數(shù)據(jù) 串口發(fā)送 第 20 頁 共 38頁 Y N N N N Y N N Y 壓力傳感器校正流程圖 開始 寫入傳感器標準信息 初始化串口 選擇壓力校準 設置檢測點 正,反行程 設置檢測點 數(shù)據(jù)采集 數(shù)據(jù)采集 數(shù)據(jù)符合要求 校準完畢 保持數(shù)據(jù) 符合校準要求 保持數(shù)據(jù) 結(jié)束 第 21 頁 共 38頁 主要程序 include include include bit Receive_Flag。 unsigned char *Receive_Pointer。 bit SendOver。 unsigned char *Instruc_Pointer。 unsigned char data RECEIVED _at_ 0x22。 void COM1452()。 void Serial_Init()。 void Decide_1452(unsigned char *INSTRUC)。 void Send_message(unsigned char *message)。 extern void System_UARTO_Init()。 extern void Receive()。 extern void UARTO_Enable()。 ifndef _1452COM_VALUE define _1452COM_VALUE define CALIBRATION 0x00 define COLLECTION 0x20 define WATCH 0x10 define STRAIN 0x40 define PRESSURE 0x80 define TEMPRATURE 0x00 define VIBRATION 0xc0 endif unsigned char instruction[7]={0x86,0x16,0x39,0x08,0x59,0x18,0x59}。 第 22 頁 共 38頁 void main() { WDT_Disable()。 SYSCLK_Init()。 System_Port_Init()。 System_UART0_Init()。 UART0_Enable()。 while(1) { Decide_1452(Instruc_Pointer)。 } } void Decide_1452(unsigned char *INSTRUC) { Instruc_Pointer = instruction。 if((*Instruc_Pointer amp。 0x30) == CALIBRATION) // 判斷指令是否是校準 { if((*Instruc_Pointer amp。 0xc0) == STRAIN) { P20 = 1。 Serial_Init()。 COM1452()。 } if((*Instruc_Pointer amp。 0xc0) == PRESSURE) { P21 = 1。 Serial_Init()。 COM1452()。 第 23 頁 共 38頁 } } if( (*Instruc_Pointer amp。 0x30) == COLLECTION) // 判斷是否是指令集 { if((*Instruc_Pointer amp。 0xc0) == STRAIN) { } if((*Instruc_Pointer amp。 0xc0) == PRESSURE) { } if((*Instruc_Pointer amp。 0xc0) == TEMPRATURE) { } if((*Instruc_Pointer amp。 0xc0) == VIBRATION) { } } if((*Instruc_Pointer amp。 0x30) == WATCH) // 判斷指令是否是 WATCH { if( (*Instruc_Pointer amp。 0xc0) == STRAIN) { P20 = 1。 Serial_Init()。 COM1452()。 // UNLOCK0=1, STRAIN 通道可用 } if( (*Instruc_Pointer amp。 0xc0) == PRESSURE) { P21 = 1。
點擊復制文檔內(nèi)容
高考資料相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1