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

正文內(nèi)容

基于at89s51單片機的數(shù)字溫度計的設(shè)計學(xué)士學(xué)位論文-資料下載頁

2025-07-02 09:40本頁面

【導(dǎo)讀】下的硬件連接,軟件編程以及各模塊系統(tǒng)流程進行了研究。該系統(tǒng)可以方便的實?,F(xiàn)溫度采集和顯示,并可根據(jù)需要任意設(shè)定上限報警溫度,它使用起來相當(dāng)方便,他主系統(tǒng)的輔助擴展。關(guān)鍵詞:AT89S51單片機;溫度檢測;DS18B20。

  

【正文】 ****************************** 名稱 : enable(uchar del) * 功能 : 1602 命令函數(shù) * 輸入 : 輸入的命令值 * 輸出 : 無 ***********************************************************************/ void enable(uchar del) { dis_data = del。 RS = 0。 RW = 0。 E = 0。 delay_1602()。 E = 1。 delay_1602()。 } /*********************************************************************名稱 : write(uchar del) * 功能 : 1602 寫數(shù)據(jù)函數(shù) * 輸入 : 需要寫入 1602 的數(shù)據(jù) 基于 AT89S51 單片機的數(shù)字溫度計的設(shè)計 作者:王露 第 22 頁 共 28 頁 * 輸出 : 無 ***********************************************************************/ void write(uchar del) { dis_data = del。 RS = 1。 RW = 0。 E = 0。 delay_1602()。 E = 1。 delay_1602()。 } /********************************************************************* 名稱 : L1602_init() * 功能 : 1602 初始化,請參考 1602 的資料 * 輸入 : 無 * 輸出 : 無 ***********************************************************************/ void L1602_init(void) { enable(0x01)。 enable(0x38)。 enable(0x0c)。 enable(0x06)。 enable(0xd0)。 } /**************************************************************** 基于 AT89S51 單片機的數(shù)字溫度計的設(shè)計 作者:王露 第 23 頁 共 28 頁 ***** 名稱 : L1602_char(uchar hang,uchar lie,char sign) * 功能 : 改變液晶中某位的值,如果要讓第一行,第五個字符顯示 b ,調(diào)用該函數(shù)如下 L1602_char(1,5,39。b39。) * 輸入 : 行,列,需要輸入 1602 的數(shù)據(jù) * 輸出 : 無 ***********************************************************************/ void L1602_char(uchar hang,uchar lie,char sign) { uchar a。 if(hang == 1) a = 0x80。 if(hang == 2) a = 0xc0。 a = a + lie 1。 enable(a)。 write(sign)。 } /********************************************************************* 名稱 : L1602_string(uchar hang,uchar lie,uchar *p) * 功能 : 改變液晶中某位的值,如果要讓第一行,第五個字符開始顯示 ab cd ef ,調(diào)用該函數(shù)如下 L1602_string(1,5,ab cd ef。) * 輸入 : 行,列,需要輸入 1602 的數(shù)據(jù) * 輸出 : 無 ***********************************************************************/ void L1602_string(uchar hang,uchar lie,uchar *p) { uchar a。 if(hang == 1) a = 0x80。 if(hang == 2) a = 0xc0。 a = a + lie 1。 enable(a)。 while(1) 基于 AT89S51 單片機的數(shù)字溫度計的設(shè)計 作者:王露 第 24 頁 共 28 頁 { if(*p == 39。\039。) break。 write(*p)。 p++。 } } include include define uint unsigned int define uchar unsigned char /*****18B20 接口 **********/ sbit DQ=P3^3。 uint temp_out。 /*************精確延時函數(shù) *****************/ void delay_us(unsigned char i) { while(i)。 } /*****************DS18B20******************/ void Init_Ds18b20(void) //DS18B20 初始化 send reset and initialization mand { DQ = 1。 //DQ 復(fù)位 ,不要也可行 delay_us(1)。 //稍做延時 DQ = 0。 //單片機拉低總線 delay_us(250)。 //精確延時,維持至少 480us DQ = 1。 //釋放總線,即拉高了總線 delay_us(100)。 //此處延時有足夠 ,確保能讓 DS18B20 發(fā)出存在 基于 AT89S51 單片機的數(shù)字溫度計的設(shè)計 作者:王露 第 25 頁 共 28 頁 脈沖。 } uchar Read_One_Byte() //讀取一個字節(jié)的數(shù)據(jù) read a byte date //讀數(shù)據(jù)時 ,數(shù)據(jù)以字節(jié)的最低有效位先從總線移出 { uchar i = 0。 uchar dat = 0。 for(i=8。i0。i) { DQ = 0。 //將總線拉低,要在 1us 之后釋放總線 //單片機要在此下降沿后的 15us 內(nèi)讀數(shù)據(jù)才會有效。 _nop_()。 //至少維持了 1us,表示讀時序開始 dat = 1。 //讓從總線上讀到的位數(shù)據(jù),依次從高位移動到低位。 DQ = 1。 //釋放總線,此后 DS18B20 會控制總線 ,把數(shù)據(jù)傳輸?shù)娇偩€上 _nop_()。 _nop_()。 if(DQ==1) //控制器進行采樣 dat |= 0x80。 //若總線為 1,即 DQ 為 1,那就把 dat 的最高位置 1。若為 0,則不進行處理 ,保持為 0 delay_us(35)。 //此延時不能少,確保讀時序的長度 60us。 } return (dat)。 } void Write_One_Byte(uchar dat) { uchar i = 0。 for(i=8。i0。i) 基于 AT89S51 單片機的數(shù)字溫度計的設(shè)計 作者:王露 第 26 頁 共 28 頁 { DQ = 0。 //拉低總線 _nop_()。 //至少維持了 1us,表示寫時序 (包括寫 0 時序或?qū)?1 時序 )開始 DQ = datamp。0x01。 //從字節(jié)的最低位開始傳輸 //指令 dat 的最低位 賦予給總線 ,必須在拉低總線后的//15us 內(nèi)因為 15us 后 DS18B20 會對總線采樣。 delay_us(12)。 //必須讓寫時序持續(xù)至少 60us DQ = 1。 //寫完后 ,必須釋放總線 , dat = 1。 // delay_us(1)。 } } char Get_Tmp() //獲取溫度 get the temperature { float tt。 char temp_1。 uchar a,b。 Init_Ds18b20()。 //初始化 Write_One_Byte(0xcc)。 //忽略 ROM 指令 Write_One_Byte(0x44)。 //溫度轉(zhuǎn)換指令 Init_Ds18b20()。 //初始化 Write_One_Byte(0xcc)。 //忽略 ROM 指令 Write_One_Byte(0xbe)。 //讀暫存器指令 a = Read_One_Byte()。 //讀取到的第一個字節(jié)為溫度 LSB b = Read_One_Byte()。 //讀取到的第一個字節(jié)為溫度 MSB temp_out = b。 //先把高八位有效數(shù)據(jù)賦于 temp temp_out = 8。 //把以上 8 位數(shù)據(jù)從 temp 低八位 基于 AT89S51 單片機的數(shù)字溫度計的設(shè)計 作者:王露 第 27 頁 共 28 頁 移到高八位 temp_out = temp_out|a。 //兩字節(jié)合成一個整型變量 temp_1 = temp_out 4。 //得到真實十進制溫度值 return temp_1。
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1