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

正文內(nèi)容

基于ds18b20的測(cè)溫系統(tǒng)設(shè)計(jì)畢業(yè)論文-資料下載頁(yè)

2024-10-20 15:25本頁(yè)面

【導(dǎo)讀】片機(jī)STC89C52進(jìn)行溫度控制,以1602液晶為顯示器件。詳細(xì)描述了利用DS18B20開(kāi)發(fā)。DS18B20與STC89C52結(jié)合實(shí)現(xiàn)最簡(jiǎn)溫度檢測(cè)系統(tǒng),具有硬件電路簡(jiǎn)單,控溫精。的各種場(chǎng)合,有廣泛的應(yīng)用前景。

  

【正文】 on (unsigned char dictate) { while(BusyTest()==1)。 //如果忙就等待 RS=0。 //根據(jù)規(guī)定, RS 和 R/W 同時(shí)為低電平時(shí),可以寫(xiě)入指令 RW=0。 E=0。 //E 置低電平 (根據(jù)表 86,寫(xiě)指令時(shí), E 為高脈沖, // 就是讓 E 從 0到 1發(fā)生正跳變,所以應(yīng)先置 0 _nop_()。 _nop_()。 //空操作兩個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 P0=dictate。 //將數(shù)據(jù)送入 P0口,即寫(xiě)入指令或地址 _nop_()。 _nop_()。 _nop_()。 _nop_()。 //空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 E=1。 //E 置高電平 _nop_()。 _nop_()。 _nop_()。 _nop_()。 //空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 E=0。 //當(dāng) E 由高電平跳變成低電平時(shí),液晶模塊開(kāi)始執(zhí)行命令 } /***************************************************** 函數(shù)功能:指定字符顯示的實(shí)際地址 入口參數(shù): x ***************************************************/ void WriteAddress(unsigned char x) 24 { WriteInstruction(x|0x80)。 //顯示位置的確定方法規(guī)定為 80H+地址碼 x } /***************************************************** 函數(shù)功能:將數(shù)據(jù) (字符的標(biāo)準(zhǔn) ASCII 碼 )寫(xiě)入液晶模塊 入口參數(shù): y(為字符常量 ) ***************************************************/ void WriteData(unsigned char y) { while(BusyTest()==1)。 RS=1。 //RS 為高電平, RW 為低電平時(shí),可以寫(xiě)入數(shù)據(jù) RW=0。 E=0。 //E 置低電平 (根據(jù)表 86,寫(xiě)指令時(shí), E為高脈沖, // 就是讓 E 從 0到 1發(fā)生正跳變,所以應(yīng)先置 0 P0=y。 //將數(shù)據(jù)送入 P0 口,即將數(shù)據(jù)寫(xiě)入液晶模塊 _nop_()。 _nop_()。 _nop_()。 _nop_()。 //空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 E=1。 //E 置高電平 _nop_()。 _nop_()。 _nop_()。 _nop_()。 //空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間 E=0。 //當(dāng) E由高電平跳變成低電平時(shí),液晶模塊開(kāi)始執(zhí)行命令 } /***************************************************** 函數(shù)功能:對(duì) LCD 的顯示模式進(jìn)行初始化設(shè)置 ***************************************************/ void LcdInitiate(void) { delaynms(15)。 //延時(shí) 15ms,首次寫(xiě)指令時(shí)應(yīng)給 LCD 一段較長(zhǎng)的反應(yīng)時(shí)間 WriteInstruction(0x38)。 //顯示模式設(shè)置: 16 2 顯示, 5 7點(diǎn)陣, 8位數(shù)據(jù)接口 delaynms(5)。 //延時(shí) 5ms ,給硬件一點(diǎn)反應(yīng)時(shí)間 WriteInstruction(0x38)。 delaynms(5)。 //延時(shí) 5ms ,給硬件一點(diǎn)反應(yīng)時(shí)間 WriteInstruction(0x38)。 //連續(xù)三次,確保初始化成功 delaynms(5)。 //延時(shí) 5ms ,給硬件一點(diǎn)反應(yīng)時(shí)間 WriteInstruction(0x0c)。 //顯示模式設(shè)置:顯示開(kāi),無(wú)光標(biāo),光標(biāo)不閃爍 delaynms(5)。 //延時(shí) 5ms ,給硬件一點(diǎn)反應(yīng)時(shí)間 WriteInstruction(0x06)。 //顯示模式設(shè)置:光標(biāo)右移,字符不移 delaynms(5)。 //延時(shí) 5ms ,給硬件一點(diǎn)反應(yīng)時(shí)間 WriteInstruction(0x01)。 //清屏幕指令,將以前的顯示內(nèi)容清除 25 delaynms(5)。 //延時(shí) 5ms ,給硬件一點(diǎn)反應(yīng)時(shí)間 } /************************************************************************ 以下是 DS18B20 的操作程序 ************************************************************************/ sbit DQ=P3^3。 unsigned char time。 //設(shè)置全局變量,專門(mén)用于嚴(yán)格延時(shí) /***************************************************** 函數(shù)功能:將 DS18B20 傳感器初始化,讀取應(yīng)答信號(hào) 出口參數(shù): flag ***************************************************/ bit Init_DS18B20(void) { bit flag。 //儲(chǔ)存 DS18B20 是否存在的標(biāo)志, flag=0,表示存在; flag=1,表示不存在 DQ = 1。 //先將數(shù)據(jù)線拉高 for(time=0。time2。time++)。 //略微延時(shí)約 6微秒 DQ = 0。 //再將數(shù)據(jù)線從高拉低,要求保持 480~960us for(time=0。time200。time++)。 //略微延時(shí)約 600 微秒 //以向 DS18B20 發(fā)出一持續(xù) 480~960us 的低電平復(fù)位脈沖 DQ = 1。 //釋放數(shù)據(jù)線(將數(shù)據(jù)線拉高) for(time=0。time10。time++)。 //延時(shí)約 30us(釋放總線后需等待 15~60us 讓DS18B20 輸出存在脈沖) flag=DQ。 //讓單片機(jī)檢測(cè)是否輸出了存在脈沖( DQ=0 表示存在) for(time=0。time200。time++)。 //延時(shí)足夠長(zhǎng)時(shí)間,等待存在脈沖輸出完畢 return (flag)。 //返回檢測(cè)成功標(biāo)志 } /***************************************************** 函數(shù)功能:從 DS18B20 讀取一個(gè)字節(jié)數(shù)據(jù) 出口參數(shù): dat ***************************************************/ unsigned char ReadOneChar(void) { unsigned char i=0。 unsigned char dat。 //儲(chǔ)存讀出的一個(gè)字節(jié)數(shù)據(jù) for (i=0。i8。i++) { DQ =1。 // 先將數(shù)據(jù)線拉高 _nop_()。 //等待一個(gè)機(jī)器周期 DQ = 0。 //單片機(jī)從 DS18B20 讀書(shū)據(jù)時(shí) ,將數(shù)據(jù)線從高拉低即啟動(dòng)讀時(shí)序 _nop_()。 //等待一個(gè)機(jī)器周期 DQ = 1。 //將數(shù)據(jù)線 人為 拉高 ,為單片機(jī)檢測(cè) DS18B20 的輸出電平作準(zhǔn)備 for(time=0。time2。time++)。 //延時(shí)約 6us,使主機(jī)在 15us 內(nèi)采樣 26 dat=1。 if(DQ==1) dat|=0x80。 //如果讀到的數(shù)據(jù)是 1,則將 1存入 dat else dat|=0x00。//如果讀到的數(shù)據(jù)是 0,則將 0存入 dat //將單片機(jī)檢測(cè)到的電平信號(hào) DQ 存入 r[i] for(time=0。time8。time++)。 //延時(shí) 3us,兩個(gè)讀時(shí)序之間必須有大于 1us 的恢復(fù)期 } return(dat)。 //返回讀出的十六進(jìn)制數(shù)據(jù) } /***************************************************** 函數(shù)功能:向 DS18B20 寫(xiě)入一個(gè)字節(jié)數(shù)據(jù) 入口參數(shù): dat ***************************************************/ WriteOneChar(unsigned char dat) { unsigned char i=0。 for (i=0。 i8。 i++) { DQ =1。 // 先將數(shù)據(jù)線拉高 _nop_()。 //等待一個(gè)機(jī)器周期 DQ=0。 //將數(shù)據(jù)線從高拉低時(shí)即啟動(dòng)寫(xiě)時(shí)序 DQ=datamp。0x01。 //利用與運(yùn)算取出要寫(xiě)的某位二進(jìn)制數(shù)據(jù) , //并將其送到數(shù)據(jù)線上等待 DS18B20 采樣 for(time=0。time10。time++) 。//延時(shí)約 30us, DS18B20 在拉低后的約15~60us 期間從數(shù)據(jù)線上采樣 DQ=1。 //釋放數(shù)據(jù)線 for(time=0。time1。time++) 。//延時(shí) 3us,兩個(gè)寫(xiě)時(shí)序間至少需要 1us 的恢復(fù)期 dat=1。 //將 dat 中的各二進(jìn)制位數(shù)據(jù)右移 1 位 } for(time=0。time4。time++) 。 //稍作延時(shí) ,給硬件一點(diǎn)反應(yīng)時(shí)間 } /***************************************************** 函數(shù)功能:做好讀溫度的準(zhǔn)備 ***************************************************/ void ReadyReadTemp(void) { Init_DS18B20()。 //將 DS18B20 初始化 WriteOneChar(0xCC)。 // 跳過(guò)讀序號(hào)列號(hào)的操作 WriteOneChar(0x44)。 // 啟動(dòng)溫度轉(zhuǎn)換 delaynms(200)。 //轉(zhuǎn)換一 次需要延時(shí)一段時(shí)間 27 Init_DS18B20()。 //將 DS18B20 初始化 WriteOneChar(0xCC)。 //跳過(guò)讀序號(hào)列號(hào)的操作 WriteOneChar(0xBE)。 //讀取溫度寄存器 ,前兩個(gè)分別是溫度的低位和高位 } /****************************************************************************** 以下是與溫度有關(guān)的顯示設(shè)置 ******************************************************************************/ /***************************************************** 函數(shù)功能:顯示沒(méi)有檢測(cè)到 DS18B20 ***************************************************/ void display_error(void) { unsigned char i。 WriteAddress(0x00)。 //寫(xiě)顯示地址,將在第 1行第 1列開(kāi)始顯示 i = 0。 //從第一個(gè)字符開(kāi)始顯示 while(Error[i]
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1