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

正文內(nèi)容

基于ds18b20的數(shù)字溫度計的設(shè)計與實現(xiàn)-資料下載頁

2024-12-04 01:00本頁面

【導(dǎo)讀】已經(jīng)成為一種比較成熟的技術(shù)。對于溫度的測量方法與裝置的研究就凸顯得非常重要。片機(jī)與溫度傳感器構(gòu)成的測溫系統(tǒng)可廣泛應(yīng)用于很多領(lǐng)域。DS18B20數(shù)字溫度傳感器是單總線器件,與51單片機(jī)組成一個測溫系統(tǒng),具有線路。簡單、體積小等特點,而且在一根通信線上,可以掛接很多這樣的測溫系統(tǒng),十分方便。

  

【正文】 電特性可以做成電池供電的手持電子溫度計。 DS18B20 溫度計還可以在高低溫報警、遠(yuǎn)距離多點測溫控制等方面進(jìn)行應(yīng)用開發(fā),但在實際設(shè)計中應(yīng)注意一下問題: ① DS18B20 工作時電流高達(dá) ,總線上掛接點數(shù)較多且同時進(jìn)行轉(zhuǎn)換時要考慮增加總線驅(qū)動,可用單片機(jī)端口在溫度轉(zhuǎn)換時導(dǎo)通一個 MOSFET 供電。 ② 連接 DS18B20 的總線電纜是有長度限制的,因此在用 DS18B20 進(jìn)行長距離測溫系統(tǒng)設(shè)計時要充分考慮總線分布電容和阻抗匹配等問題。 ③ 在 DS18B20 測溫程序設(shè)計中,向 DS18B20 發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待 DS18B20 的返回信號。一旦某個 DS18B20 接觸不好或短線,當(dāng)程序讀該DS18B20 時,將沒有返回信號,程序進(jìn)入死循環(huán)。這一點在進(jìn)行 DS18B20 硬件連接和軟件設(shè)計時要給予一定的重視。 30 致 謝 非常感謝彭昕昀老師在我大學(xué)的最 后學(xué)習(xí)階段 —— 畢業(yè)設(shè)計階段給自己的指導(dǎo),從最初的選題,到資料收集,到寫作、修改,到論文定稿,她給了我耐心的指導(dǎo)和無私的幫助,在此我向她表示我誠摯的謝意。同時,感謝所有任課老師和所有同學(xué)在這四年來給自己的幫助和關(guān)愛,是他們教會了我專業(yè)知識,教會了我如何學(xué)習(xí),教會了我如何做人。通過這一階段的努力,畢業(yè)論文終于完成了,這意味著大學(xué)生活即將結(jié)束。在大學(xué)階段,我在學(xué)習(xí)上和思想上都受益匪淺,這除了自身的努力外,與各位老師、同學(xué)和朋友的關(guān)系、支持和鼓勵是分不開的。最后,感謝各位專家的指導(dǎo)批評。 31 參考文獻(xiàn) [1] 網(wǎng) . 基于 DS18B20 數(shù) 字 溫 度 計 的 設(shè) 計 [J/OL]. [2] 百 度 網(wǎng) .STC89C52RC 單 片 機(jī) 用 戶 手 冊 [J/OL]. [3]胡漢才 .單片機(jī)原理及其接口技術(shù)(第 2版) [M].北京:清華大學(xué)出版社, 2021:4975. [4]樓然苗,胡佳文,李光飛,劉玉良,俞紅杰,李良兒 .單片機(jī)實驗與課程設(shè)計 [M].杭州:浙江大學(xué)出版社, 2021:127148 [5]劉雨剛,洪炳林,郝文慧 .基于 DS18B20的高精度礦用溫度計傳感器設(shè)計 [J].國外電子元器件, 2021( 12) :3537. [6]黃亞,張益維 .溫度傳感器 DS75LX與單片機(jī)的接口技術(shù) [J].國外電子元器件, 2021( 10) :4749. [7]胡雪海 .單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計 [M].北京:電子工業(yè)出版社, 2021:5975. [8]談根林,李慧文,汪慶寶,李禮賢 .微型計算機(jī)及其在測量中的應(yīng)用 [M].北京:計量出版社, 1983:89105. [9] 樓然苗,李光飛 .單片機(jī)課程設(shè)計指導(dǎo) [M].北京:北京航空航天大學(xué)出版社,2021:4655. [10]胡翔駿 .電路分析(第 2版) [M].北京:高等教育出版社, 2021:6880. 32 附錄 圖 電路原理圖 PCB 圖 33 圖 PCB圖 34 圖 數(shù)字溫度計的 實物圖 35 include include //_nop_()。延時函數(shù)用 define uchar unsigned char define uint unsigned int /*LCD 端口定義 */ define busy 0x80 sbit rs=P1^0。 sbit rw=P1^1。 sbit enable=P1^2。 sfr lcd=0x80。 sbit DQ =P1^3。 unsigned char data temp_data[2] = {0x00,0x00} 。 unsigned char data display[5] = {0x00,0x00,0x00,0x00,0x00} 。 unsigned char code ditab[16] = {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04, 0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09} 。///*小數(shù)位表,四舍五入 */ void delayms(uint i) { while(i) { uchar j。 for(j=0。j125。j++)。 } } /*查忙程序 */ void checkbusy(void) {lcd=0xff。 enable=0。 rw=1。 rs=0。 enable=1。 delayms(100)。 while(lcdamp。busy)。 enable=0。 } /*寫指令函數(shù) */ void write_instruction(uchar x) {checkbusy()。 enable=0。 rw=0。 rs=0。 lcd=x。 enable=1。 36 delayms(20)。 enable=0。 } /*寫單個數(shù)據(jù)的函數(shù) */ void write_data(uchar x) {checkbusy()。 enable=0。 rw=0。 rs=1。 enable=1。 lcd=x。 enable=0。 } /*清屏函數(shù) */ void cls(void) {write_instruction(0x01)。 } /*寫入正串字符串函數(shù) */ void write_string(uchar x,uchar *p) { write_instruction(x)。 while(*p!=0x00) {write_data(*p)。 delayms(100)。 p++。 if (x++==0x8f) {write_instruction(0xc0)。} } } /*初始化函數(shù) */ void initial1(void) {write_instruction(0x38)。 delayms(10)。 write_instruction(0x0e)。 delayms(10)。 write_instruction(0x06)。 delayms(10)。 cls()。 } void delay(unsigned int a) { while(a)。 /*每一次約 */ } unsigned char initial(void) { 37 DQ=1。 delay(8)。 DQ=0。 /*拉低 ,復(fù)位 */ delay(200)。 /*延時 584us*/ DQ=1。 /*釋放總路線 */ delay(5)。 /*等待 15us,*/ while(1) { if(DQ==0) /*存在 */ break。 } while(1) { if(DQ==1) /*當(dāng)總線回復(fù)高電平后 ,才跳出 子函數(shù) */ { return(0)。 break。 } } } void write(unsigned char a) /*從低位寫到高位 */ { unsigned int i,j。 for(i=0。i8。i++) { DQ=0。 /* 拉低產(chǎn)生寫間隙 */ j=aamp。0x01。 // DQ=j。 // /*15us 內(nèi)準(zhǔn)備數(shù)據(jù) */ delay(20)。/* 延時 75us,使數(shù)據(jù)被采用 */ DQ=1。 /**/ a=a1。 delay(1)。 } } unsigned char readonebit(void) { unsigned char onebit。 DQ=0。 /*拉低產(chǎn)生讀時間隙 */ delay(1)。 DQ=1。 /*延時 3US,拉高 */ onebit=DQ。/*讀得數(shù)據(jù) */ delay(20)。 DQ=1。 /*延時 60US,后拉高 */ return(onebit)。 38 } unsigned char readbyte(void) { unsigned int i,b,onebyte=0x00。 /*讀 onebyte(一字節(jié) )溫度數(shù)據(jù) */ for(i=0。i8。i++) { b=readonebit()。 onebyte=onebyte1|b7。 } return(onebyte)。 } /* 讀出溫度函數(shù) */ /*******************************************************************/ read_temp(void) { initial()。 write(0xcc)。 write(0xbe)。 temp_data[0]=readbyte()。 temp_data[1]=readbyte()。 initial()。 write(0xcc)。 write(0x44)。 } /* 數(shù)據(jù)轉(zhuǎn)換與溫度顯示 */ /*******************************************************************/ Disp_Temperature() { display[4]=temp_data[0]amp。0x0f 。 display[0]=ditab[display[4]]+0x30 。 //查表得小數(shù)位的值 display[4]=((temp_data[0]amp。0xf0)4)|((temp_data[1]amp。0x0f)4) 。 display[3]=display[4]/100+0x30 。 display[1]=display[4]%100 。 display[2]=display[1]/10+0x30 。 display[1]=display[1]%10+0x30 。 if(display[3]==0x30) //高位為 0,不顯示 { display[3]=0x20 。 if(display[2]==0x30) //次高位為 0,不顯示 39 display[2]=0x20 。 } write_string(0x80,TEMP:)。 write_data(display[3])。 write_data(display[2])。 write_data(display[1])。 write_data(.)。 write_data(display[0])。 } void main() { while(1) { read_temp()。 Disp_Temperature()。 } }
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1