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

正文內(nèi)容

基于labview的溫度采集系統(tǒng)(文件)

 

【正文】 制量與PWM占空比的關(guān)系。 方案設(shè)計(jì)與選擇上位機(jī)的串口通信流程圖如下: 開始串口初始化串口是否打開?講讀到的數(shù)據(jù)轉(zhuǎn)換后送至顯示控件Y圖51 上位機(jī)串口通信流程圖 上位機(jī)各模塊設(shè)計(jì)如圖 圖52 基本的串口通信流程由于串口發(fā)送和接受的數(shù)據(jù)都是字符串的形式。只要在LabVIEW中后面板的“編程”下面的“字符串”子面板中找到“十進(jìn)制字符串至數(shù)值轉(zhuǎn)換”這個(gè)子VI就完全可以輕松地實(shí)現(xiàn)這個(gè)功能。方法如前,在相應(yīng)的路徑下找到“數(shù)值至十進(jìn)制字符串轉(zhuǎn)換”,放在程序中相應(yīng)的位置即可。在本次設(shè)計(jì)的過(guò)程中,我發(fā)現(xiàn)很多的問(wèn)題,看似很簡(jiǎn)單的電路,要?jiǎng)邮职阉o設(shè)計(jì)出來(lái),也是一件不太簡(jiǎn)單事,主要原因是我們沒(méi)有經(jīng)常動(dòng)手設(shè)計(jì)過(guò)電路,還有資料的查找也是一大難題,因?yàn)槭诸^的資源有限,這就要求我們?cè)谝院蟮膶W(xué)習(xí)中,應(yīng)該注意到這一點(diǎn),更重要的是我們要學(xué)會(huì)把從書本中學(xué)到的知識(shí)和實(shí)際的電路聯(lián)系起來(lái),這不論是對(duì)我們以后的就業(yè)還是學(xué)習(xí),都會(huì)起到很大的促進(jìn)和幫助,我相信,通過(guò)這次的設(shè)計(jì),在以后的工作和學(xué)習(xí)中我會(huì)更加努力。(3)用LabVIEW編寫了一串口通信程序,并可以將上位機(jī)發(fā)送上來(lái)的溫度數(shù)據(jù)送往顯示控件顯示。他嚴(yán)肅的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,精益求精的工作作風(fēng),深深地感染和激勵(lì)著我。思考了許久,寫下這一段謝詞。在整個(gè)的設(shè)計(jì)中,各位老師、同學(xué)積極的幫助我查資料和提供有利于論文寫作的建議和意見。 現(xiàn)在即將揮別我的學(xué)校、老師、同學(xué),還有我四年的大學(xué)生活,雖然依依不舍,但是對(duì)未來(lái)的路,我充滿了信心。 unsigned char f_to_p。 unsigned char tmp=0。 //端口初始化 pwm_init()。 //波特率9600 初始化串口 while (1) { for(k=0。 //啟動(dòng)一次轉(zhuǎn)換 longdelay()。 //當(dāng)溫度為125oC時(shí)的i值 //i=0xff5e。 //正85度 if(iamp。0xff00)8)。 asm(clc)。 //有進(jìn)位,則溫度高字節(jié)加1 } i=Temp_H。 //取整數(shù)帶小數(shù)點(diǎn)后兩位 t[0]=middle/10000+0x30。 //value_1[3]為小數(shù)點(diǎn)存放單元 t[4]=(middle%100)/10+0x30。j=5。 middle=(int)(temp*100)。 t[3]=0x2e。 for(j=0。 } } Uart_Transmit(0x24)。 a=UDR0x30。 //根據(jù)PID輸出的控制調(diào)節(jié)占空比 } }DS18B20函數(shù)include include define DQ_IN DDRA amp。 /*中斷標(biāo)志緩存*//*DS18B20復(fù)位函數(shù)*/unsigned char ds1820_reset(void) { unsigned char i。 DQ_CLR。 DQ_SET。 delayUs(255)。 0x80) { /*恢復(fù)中斷狀態(tài)*/ SEI()。 unsigned char value = 0。 i != 0。 delayUs(2)。 NOP()。 delayUs(4)。 /*延時(shí)60uS*/ delayUs(35)。}/*DS18B20字節(jié)寫入函數(shù)*/void ds1820_write_byte(unsigned char value) { unsigned char i。 i != 0。 /*延時(shí)4uS*/ NOP()。 NOP()。 /*延時(shí)80uS*/ DQ_SET。 }}/*啟動(dòng)ds1820轉(zhuǎn)換*/void ds1820_start(void) { ds1820_reset()。 unsigned char buf[9]。 /*讀取溫度*/ for (i = 0。 i = 8。 PORTA=0x80。 /*8位數(shù)據(jù)*/ UBRRH = 0x00。 /* 等待發(fā)送緩沖器為空*/ UDR = i。 /* 獲取并返回?cái)?shù)據(jù)*/}PWM函數(shù)include include define OCR OCR1Aint OcrReg = 1024。 ICR1 = Icr1Reg。 //delayUs(4)。 //delayUs(64)。 //delayUs(34)。 // **********************************************************************/void delayUs(unsigned int temp){ while(temp)。i)delayUs(255)。for(i=4761。 //delayUs(100)。 //delayUs(255)。 //delayUs(16)。}延時(shí)函數(shù)includeinclude/**********************************************************************functionName: void delayUs(BYTE temp)description :延時(shí)函數(shù) 晶振頻率:delayUs(1)。 //PWM的計(jì)數(shù)頂部值 Icr1Reg = 2047void pwm_init(void){ //比較匹配時(shí)清零,計(jì)數(shù)到最大時(shí)置位OC1A TCCR1A |= (1COM1A1)|(1WGM11)。 (1RXC)))。 /*9600*/}/*數(shù)據(jù)發(fā)送,查詢方式*/void Uart_Transmit(unsigned char i) { while (!(UCSRA amp。 UCSRB = 0x18。 return i。 i++) { buf[i] = ds1820_read_byte()。 ds1820_write_byte(0xCC)。 /*勿略地址*/ ds1820_write_byte(0x44)。 } if (flag amp。 0x01) { DQ_SET。 NOP()。 DQ_CLR。 /*中斷保護(hù)*/ CLI()。 0x80) { /*恢復(fù)中斷狀態(tài)*/ SEI()。 if (DQ_R) { value|=0x80。 DQ_SET。 NOP()。 DQ_OUT。 /*中斷保護(hù)*/ CLI()。 } else { return 0x01。 delayUs(128)。 delayUs(100)。 /*延時(shí)500uS(480960)*/ delayUs(255)。 /*中斷保護(hù)*/ CLI()。= ~(1 PA7) /*置低電平*/define DQ_SET PORTA |= (1 PA7) /*置高電平*/define DQ_R PINA amp。 c+=b。l=4。j++) { Uart_Transmit(t[j])。 t[5]=(middle%10)+0x30。 t[1]=(middle%10000)/1000+0x30。 } Uart_Transmit(0x0d)。 Uart_Transmit(0x2d)。 t[2]=(middle%1000)/100+0x30。 //低8位放回i中 temp=(float)(i*)。 //溫度低字節(jié)加1 if((SREGamp。 //負(fù)溫度。0x00ff)。 // //i=0x0191。 i = ds1820_read_temp()。k++) { ds1820_reset()。port_1820()。 Temp_L = 0。 //用于暫存讀回的16位溫度值 unsigned char t[6]。 //溫度高位,低位,復(fù)位成功標(biāo)志//主函數(shù)void main(void){ float temp,a,b,c=0。最后要感謝的就是我的父母、朋友,對(duì)于他們我更是有千言萬(wàn)語(yǔ),還是匯聚成一句話:感謝你們一直都伴隨著我。兩年多來(lái),老師不僅在學(xué)業(yè)上給我們以精心指導(dǎo),同時(shí)還在思想、生活上給我們以無(wú)微不至的關(guān)懷,在此謹(jǐn)向老師致以誠(chéng)摯的謝意和崇高的敬意。(5)設(shè)計(jì)了下位機(jī)的功率控制方案。由于本人的知識(shí)有限,文中有錯(cuò)誤和疏漏的地方,敬請(qǐng)各位老師指正!本設(shè)計(jì)主要成果如下:(1)實(shí)現(xiàn)了用AVR通過(guò)DS18B20測(cè)量周圍環(huán)境的溫度并將其通過(guò)串口發(fā)送到上位機(jī)。圖54 數(shù)值至十進(jìn)制數(shù)字符串轉(zhuǎn)換 PID控制部分設(shè)計(jì)針對(duì)于本系統(tǒng)設(shè)計(jì),在該VI的輸入端給入PID的3個(gè)參數(shù)值(PIDgains),系統(tǒng)反饋值(process variable),實(shí)際期望值(setpoint)以及微分時(shí)間(dt),便能得到需要的輸出值(output)。圖53 十進(jìn)制數(shù)字符串至數(shù)值轉(zhuǎn)換子VI在上位機(jī)往下位機(jī)發(fā)送數(shù)據(jù)時(shí),則需將PID控制算法或者模糊控制算法計(jì)算得的數(shù)值型數(shù)據(jù)轉(zhuǎn)換成串口通信中的字符串。所以在將采集到的數(shù)據(jù)送往顯示控件之前,必須將串口發(fā)送上來(lái)的采集數(shù)據(jù)轉(zhuǎn)換成顯示控件可以接受的數(shù)值型數(shù)據(jù)。開始復(fù)位延時(shí)復(fù)位成功?寫ROM命令0xCC(跳過(guò)ROM匹配)寫ROM命令0x44(啟動(dòng)溫度轉(zhuǎn)換)復(fù)位延時(shí)復(fù)位成功?寫ROM命令0xCC寫ROM命令0xBE(發(fā)送溫度命令)讀RAM中的0、1字節(jié)結(jié)束NYNY 圖46 DS18B20操作流程開始串口初始化i=0i=9發(fā)送數(shù)據(jù)i++接受數(shù)據(jù)YN圖47 串口通信流程圖5 基于PC的上位機(jī)編程設(shè)計(jì) 對(duì)于上位機(jī)的設(shè)計(jì),本設(shè)計(jì)選擇和下位機(jī)一樣,采取分模塊設(shè)計(jì)的思想。圖47為串口通信流程圖:Atmega16有16種PWM模式,在本設(shè)計(jì)中我們選用模式15——快速PWM。初始化的最后一步是設(shè)置通信的波特率。如圖46為 DS18B20相關(guān)程序設(shè)計(jì)流程。如執(zhí)行溫度轉(zhuǎn)換指令則控制器(單片機(jī))必須等待18B20執(zhí)行其指令,一般轉(zhuǎn)換時(shí)間為500uS。(4)控制器發(fā)送存儲(chǔ)器操作指令:在ROM指令發(fā)送給18B20之后,緊接著(不間斷)就是發(fā)送存儲(chǔ)器操作指令了。 (3)控制器發(fā)送ROM指令:雙方打完了招呼之后最要將進(jìn)行交流了,ROM指令共有5條,每一個(gè)工作周期只能發(fā)一條,ROM指令分別是讀ROM數(shù)據(jù)、指定匹配芯片、跳躍ROM、芯片搜索、報(bào)警芯片搜索。當(dāng)18B20接到此復(fù)位信號(hào)后則會(huì)在15~60uS后回發(fā)一個(gè)芯片的存在脈沖。第8個(gè)字節(jié)為計(jì)數(shù)寄存器,是為了讓用戶得到更高的溫度分辨率而設(shè)計(jì)的,同樣也是內(nèi)部溫度轉(zhuǎn)換、計(jì)算的暫存單元。 RAM 數(shù)據(jù)暫存器,用于內(nèi)部計(jì)算和數(shù)據(jù)存取,數(shù)據(jù)在掉電后丟失,DS18B20共9個(gè)字節(jié)RAM,每個(gè)字節(jié)為8位。在講解其工作流程之前
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1