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

正文內(nèi)容

基于rs485的遠程采集與控制系統(tǒng)的設(shè)計畢業(yè)設(shè)計論文169302075-資料下載頁

2025-06-19 15:58本頁面
  

【正文】 5 所示。各引腳功能如下:? DIN ,串行二進制數(shù)輸入端。? SCLK ,串行時鐘輸入端。? CS ,芯片選擇,低有效。? DOUT ,用于級聯(lián)的串行數(shù)據(jù)輸出。? GND ,模擬地。? REFIN ,基準(zhǔn)電壓輸入端。? OUT ,DAC 模擬電壓輸出端。? VDD ,正電源電壓端。 TLC5615推薦工作條件? VDD ,~ ,通常取5V ;? 高電平輸入電壓: ;? 低電平輸入電壓, ;? 基準(zhǔn)輸入電壓: 2V~ (VDD 2) , ;? 負載電阻:不得小于2kΩ。 TLC5615的時序TLC5615 工作時序如圖3. 11所示。可以看出,只有當(dāng)片選CS 為低電平時, 串行輸入數(shù)據(jù)才能被移入16 位移位寄存器。當(dāng)CS 為低電平時,在每一個SCL K 時鐘的上升沿將DIN 的一位數(shù)據(jù)移入16位移寄存器。注意, 二進制最高有效位被導(dǎo)前移入。接著,CS 的上升將16 位移位寄存器的10 位有效數(shù)據(jù)鎖存于10 位DAC 寄存器, 供DAC 電路進行轉(zhuǎn)換。 當(dāng)片選CS 為高電平時,串行輸入數(shù)據(jù)不能被移入16 位移位寄存器。注意, CS 的上升和下降都必須發(fā)生在SCL K 為低電平期間。從圖中可以看出,最大串行時鐘速率為:f( sclk ) max =1/ tw ( CH ) + tw( CS )≈14MHz TLC5615 工作時序如圖 TLC5615的兩種工作方式從圖39可以看出, 16位移位寄存器分為高4位虛擬位、低2位填充位以及10位有效位。在單片TLC561工作時, 只需要向16位移位寄存器按先后輸入10位有效位和低2位填充位, 2位填充位數(shù)據(jù)任意,這是第一種方式,即12位數(shù)據(jù)序列。第二種方式為級聯(lián)方式, 即16位數(shù)據(jù)序列, 可以將本片的DOUT接到下一片的DIN, 需要向16位移位寄存器按先后輸入高4位虛擬位、10位有效位和低2位填充位, 由于增加了高4位虛擬位, 所以需要16個時鐘脈沖。無論工作在哪一種方式,輸出電壓為:VOU = VREFIN N / 1024其中, VREFIN是參考電壓, N 為輸入的二進制數(shù)。 DA電路 : 兩路DA轉(zhuǎn)換電路及兩路穩(wěn)壓電路 其中電壓源VCC(最大5V)經(jīng)過電阻的分壓后變?yōu)閂CC的基準(zhǔn)電壓,DD4為保護二極管。由于系統(tǒng)要求能提供最大10V的輸出反饋,而單片機最大只能輸出5V電壓,因此穩(wěn)壓電路中用到LM358運放。LM358里面包括有兩個高增益、獨立的、內(nèi)部頻率補償?shù)碾p運放,適用于電壓范圍很寬的單電源,而且也適用于雙電源工作方式,它的應(yīng)用范圍包括傳感放大器、直流增益模塊和其他所有可用單電源供電的使用運放的地方使用。從INN1+輸入的最大5V的信號Vi1經(jīng)過2倍放大后從OUT1輸出(此時輸出最大為10V),OUT1腳與INT2+相連在此段經(jīng)過1:1放大,最終從OUT2輸出最大10V的信號。 3路AD轉(zhuǎn)換電路 : 3路AD轉(zhuǎn)換電路由于STC12C5410AD 帶有 8 路 10 位高速 A/D 轉(zhuǎn)換器,因此不再另用AD轉(zhuǎn)換芯片,直接用單片機的PP1P12采集3路節(jié)點信號。AD轉(zhuǎn)換電路同樣用到了LM358雙運算放大器,兩組信號分別送入U8處理,剩下的一組送入U9處理,最后經(jīng)過電阻的分壓把輸出電壓降為原電壓的一半,在送入單片機處理。 本章小結(jié)本章設(shè)計了以STC12C5410AD單片機為核心的基于RS485通信的遠程數(shù)據(jù)采集與控制器,根據(jù)系統(tǒng)要求確立了3路數(shù)據(jù)采集電路、2路數(shù)據(jù)反饋電路、2路繼電器控制電路。并且在不通過RS485總線的情況下系統(tǒng)也能進行2路繼電器開關(guān)控制、反饋2路本地模擬控制量和采集3路本地節(jié)點信號的工作。 4 基于RS485通信遠程采集與控制器的軟件設(shè)計本章主要介紹主機和從機的軟件設(shè)計,整個系統(tǒng)軟件采用模塊化和結(jié)構(gòu)化設(shè)計方法。本章從軟件的角度論述遠程采集與控制器系統(tǒng)的實現(xiàn),論述的內(nèi)容包括軟件系統(tǒng)的通信協(xié)議、整體設(shè)計與實現(xiàn)、系統(tǒng)的初始化、RS485總線程序、繼電器控制程序、DA輸出控制程序、AD采集程序的設(shè)計。 通信協(xié)議的設(shè)計 對于任何涉及數(shù)據(jù)接收和發(fā)送的系統(tǒng),通信協(xié)議的設(shè)計都是軟件設(shè)計的前提和關(guān)鍵。對于協(xié)議設(shè)計而言,最重要的就是數(shù)據(jù)幀結(jié)構(gòu)的設(shè)計。除了數(shù)據(jù)幀結(jié)構(gòu)的定義外,整個系統(tǒng)的通信還需要遵守下面的規(guī)則: (1)主機主導(dǎo)整個通信過程。由主機判斷從機是否按下發(fā)送準(zhǔn)備好按鍵,從機發(fā)送準(zhǔn)備好信號后,主機要求這些從機提交其相對應(yīng)設(shè)備的狀態(tài)信息。 (2)主機在發(fā)送完準(zhǔn)備好命令后,進入接收狀態(tài)。 (3)主機接收到從機的返回命令幀后,發(fā)送“等待接收”指令,進入接收狀態(tài)。 (4)從機復(fù)位后,將等待主機發(fā)送指令,并根據(jù)具體的指令內(nèi)容做出應(yīng)答。 本系統(tǒng)的數(shù)據(jù)傳輸有以下特點: (1) AD采樣部分,采用10位ADC,DA輸出部分,采用10位DAC。(2)數(shù)據(jù)統(tǒng)一使用9600波特率,若傳輸距離超過200米,可考慮降低波特率。(3)接收數(shù)據(jù)幀:一共15字節(jié),包括起始字節(jié)、結(jié)束字節(jié)、地址、兩路DAC輸出數(shù)據(jù)等。: 基于RS485總線的遠程采集與控制系統(tǒng)接收幀格式表 數(shù)據(jù)位置(第n字節(jié))01234567功能起始字節(jié)地址發(fā)送控制1路DA輸出值高2位1路DA輸出值低8位2路DA輸出值高2位2路DA輸出值低8位預(yù)留空間數(shù)據(jù)位置(第n字節(jié))89101112功能預(yù)留字節(jié)預(yù)留字節(jié)預(yù)留字節(jié)繼電器控制結(jié)束字節(jié) 預(yù)留字節(jié)表示為以后功能擴展準(zhǔn)備的空間,為無效數(shù)據(jù)。(4)發(fā)送數(shù)據(jù)幀:模塊將測得的數(shù)據(jù)發(fā)送給主機,3~7字節(jié)是發(fā)送當(dāng)前該模塊的輸出值,以供主機讀取。數(shù)據(jù)的詳細格式,: 基于RS485總線的遠程采集與控制系統(tǒng)發(fā)送幀格式表 數(shù)據(jù)位置01234567功能起始字節(jié)固定0Xaa地址起始字節(jié)固定0X001路DA輸出值高2位1路DA輸出值低8位2路DA輸出值高2位2路DA輸出值低8位1路ADC測量值高2位數(shù)據(jù)位置89 10 11 12 13 14 15功能1路ADC測量值低8位2路ADC測量值高2位2路ADC測量值低8位3路ADC測量值高2位3路ADC測量值低8位1個或多個按鍵按下的鍵值結(jié)束字節(jié)固定0X55 起始字節(jié)定義為“0xaa”,結(jié)束字節(jié)定義為“0x55”當(dāng)起始字節(jié)跟結(jié)束字節(jié)有誤時,從機都收不到數(shù)據(jù)。地址字節(jié)實際上存放的是從機對應(yīng)的設(shè)備號,此設(shè)備號在一開始就由撥碼開關(guān)組S3予以設(shè)置。由于只用了一個字節(jié)作為地址位,因此地址范圍為0~255。當(dāng)從機數(shù)量大于256臺時,可考慮用幾個字節(jié)作為地址位(雖然RS485通信允許的最大從機數(shù)為32臺,但使用特殊的RS485收發(fā)器芯片可突破此限制,比如,本設(shè)計采用的MAX485芯片,最大從機數(shù)可達到256臺)。在工作時,每一個設(shè)備都按規(guī)定設(shè)置好,一般不會改動,改動時重新設(shè)置開關(guān)即可得到,但要注意設(shè)置時應(yīng)該避免地址重復(fù)。主從機通信時,主機先判斷S3開關(guān)是否按下,按下說明主機已準(zhǔn)備好發(fā)送數(shù)據(jù),這時主機才開始接向從機發(fā)送數(shù)據(jù)。從機發(fā)來的數(shù)據(jù)幀中前2字節(jié)分別為起始字節(jié),從機地址(即發(fā)送數(shù)據(jù)給哪臺從機)。由于DAC輸出數(shù)據(jù)為10位,而一字節(jié)只有8位,為此DAC輸出的高八位與低2位分開存放,從機接收時再去相應(yīng)位去取出還原。 主機發(fā)送數(shù)據(jù)程序語句如下: send[3]=DAC1/0xff。 // send[3]存放DAC1高8位 send[4]=DAC1%0xff。 // send[4]存放DAC1低2位 send[5]=DAC2/0xff。 // send[5]存放DAC2高8位 send[6]=DAC2%0xff。 // send[6]存放DAC2低2位 從機接收數(shù)據(jù)程序語句如下: DAC1 = Data_buf[3]*4+Data_buf[4]。// 取Data_buf[3]作為DAC1的高8位,Data_buf[4] 作為DAC1的低2位 DAC2 = Data_buf[5]*4+Data_buf[6]。 // 取Data_buf[5]作為DAC1的高8位,Data_buf[6] 作為DAC1的低2位 主程序流程 主機主程序流程主機端軟件主要是進行通信接口部分和數(shù)據(jù)采集和控制部分的設(shè)計。主機一邊偵察從機是否有數(shù)據(jù)發(fā)送過來,一邊向從機發(fā)送控制命令。每按下一次S3按鍵主機就像從機發(fā)送一次控制命令。當(dāng)沒有按鍵按下時,主機一直偵察從機是否有數(shù)據(jù)發(fā)送過來。只有S3按鍵按下,并且RS485總線為發(fā)送狀態(tài)時主機才向從機發(fā)送控制命令,因此整個數(shù)據(jù)發(fā)送階段分為了準(zhǔn)備發(fā)送階段和發(fā)送階段。只有總線為發(fā)送狀態(tài)時主機才向從機發(fā)送數(shù)據(jù),因此從機發(fā)送過來的數(shù)據(jù)應(yīng)先存放在臨時數(shù)據(jù)存放區(qū),判斷RS485總線為發(fā)送狀態(tài)時才送到從機進行數(shù)據(jù)處理。從機發(fā)過來的數(shù)據(jù)也是先放在臨時數(shù)據(jù)存放區(qū),判斷滿足通信協(xié)議后才接收。主要的流程是:首先對相關(guān)參數(shù)及函數(shù)的設(shè)定,設(shè)置各個緩沖區(qū)。一開始RS485總線設(shè)置為接收模式,進行系統(tǒng)初始化,設(shè)置串行中斷為高優(yōu)先級,然后進入死循環(huán)。判斷準(zhǔn)備發(fā)送按鍵是否按下,再發(fā)送數(shù)據(jù),數(shù)據(jù)發(fā)送后判斷總線是否為準(zhǔn)備接收狀態(tài),最后接收數(shù)據(jù)。: 主機系統(tǒng)主程序流程圖主要的程序代碼如下:void main (){ uchar i。 uchar Data_buf[Rcv_Lenth]。 //存放從從機接收的數(shù)據(jù) uchar JiDian1=0,JiDian2=0。 //繼電器開 uint AIN1=55, AIN2=66, AIN3=77, DAC1=128, DAC2=255。 i=0。 RS485_Rcv_Mode()。 System_Init()。 //系統(tǒng)初始化 PS=1。//PSH=1。// 優(yōu)先級設(shè)置 LED1=0。 LED2=0。 RS485_Rcv_Mode()。 while (1) { if(S3==0) { send[0] = 0xaa。 //起始字節(jié) send[1] = 0x2b。 //地址 send[2] = 0xff。 //起始字節(jié) /*DAC輸出控制,由于DAC輸出數(shù)據(jù)為10位,而一字節(jié)只有8位,為此DAC輸出的高八位與低2位分開存放,從機接收時再去相應(yīng)位去取出還原*/ DAC1+=20。 DAC2+=40。 if(DAC1=1023)DAC1=1023。 if(DAC2=1023)DAC2=1023。 send[3]=DAC1/0xff。// send[3]存放DAC1高8位 send[4]=DAC1%0xff。// send[4]存放DAC1低2位 send[5]=DAC2/0xff。 send[6]=DAC2%0xff。 // 繼電器輸出 if(JiDian1==0) JiDian1 = 1。 else JiDian1 = 0。 send[11] = 14|JiDian1。 //起始字節(jié) // RS485發(fā)送數(shù)據(jù) send[12] = 0x55。 //結(jié)束字節(jié) RS485_Send_Flag=1。 delay_ms(150)。 // 按鍵去抖 } // 發(fā)送數(shù)據(jù)出去 if(RS485_Send_Flag) { if(Rflag==0) { Max485_send_data(send)。 RS485_Send_Flag=0。 } } if(Rflag == 1) { delay_ms(13)。 for(i=0。iRcv_Lenth。i++) { Data_buf[i]=receive[i]。 } Rnum=0。 Rflag = 0。 if((Data_buf[0] == 0xaa) amp。amp。 (Data_buf[14] == 0x55))//若滿足通信協(xié)議 { LED2=~LED2。 /*判斷從機編號 if(Data_buf[1]==1) { DAC1 = Data_buf[3]*4+Data_buf[4]。 DAC2 = Data_buf[5]*4+Data_buf[6]。 AIN1 = Data_buf[7]*4+Data_buf[8]。 AIN2 = Data_buf[9]*4+Data_buf[10]。 AIN3 = Data_buf[11]*4+Data_buf[12]。 } else if(Data_buf[1]==2) { DAC1 = Data_buf[3]*4+Data_buf[4]。 DAC2 = Data_buf[5]*4+Data_buf[6]。 AIN1 = Data_buf[7]*4+Data_buf[8]。 AIN2 = Data_buf[9]*4+Data_buf[10]。 AIN3 = Data_buf[11
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1