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

正文內(nèi)容

課程設計-基于89c51單片機的數(shù)字溫度計設計(編輯修改稿)

2025-07-13 08:05 本頁面
 

【文章內(nèi)容簡介】 序 DQ=datamp。0x01。 //利用與運算取出要寫的某位二進制數(shù)據(jù) , //并將其送到數(shù)據(jù)線上等待 DS18B20 采樣 for(time=0。time10。time++) 。//延時約 20us, DS18B20 在拉低后的約 15~60us 期間從數(shù)據(jù)線上采樣 單片機原理及系統(tǒng)課程設計報告 13 DQ=1。 //釋放數(shù)據(jù)線 for(time=0。time1。time++)。//延時 2us,兩個寫時 序間需要 1us 的恢復期 dat=1。 //將 dat 中的各二進制位數(shù)據(jù)右移 1 位 } for(time=0。time4。time++)。 //稍作延時 ,給硬件一點反應時間 } void display_error(void) //顯示沒有檢測到 DS18B20 的函數(shù) { unsigned char i。 WriteAddress(0x00)。 //寫顯示地址,將在第 1 行第 1 列開始顯示 i = 0。 //從第一個字符開始顯示 while(Error[i] != 39。\039。) //只要沒有寫到結(jié)束標志,就繼續(xù)寫 { WriteData(Error[i])。 //將字符常量寫入 LCD i++。 //指向下一個字符 delaynms(100)。 //延時 100ms 較長時間 } while(1) //進入死循環(huán),等待查明原因 。 } void display_explain(void) //顯示說明函數(shù) { unsigned char i。 WriteAddress(0x00)。 //寫顯示地址,將在第 1 行第 1 列開始顯示 i = 0。 //從第一個字符開始顯示 while(Str[i] != 39。\039。) //只要沒有寫到結(jié)束標志,就繼續(xù)寫 { WriteData(Str[i])。 //將字符常量寫入 LCD i++。 //指向下一個字符 delaynms(100)。 } } void display_symbol(void) //顯示溫度符號 { unsigned char i。 WriteAddress(0x40)。 //寫顯示地址,將在第 2 行第 1 列開始顯示 i = 0。 //從第一個字符開始顯示 while(Temp[i] != 39。\039。) //只要沒有寫到結(jié)束標志,就繼續(xù)寫 { 單片機原理及系統(tǒng)課程設計報告 14 WriteData(Temp[i])。 //將字符常量寫入 LCD i++。 //指向下一個字符 delaynms(50)。 //延時 50ms 給硬件一點反應時間 } } void display_dot(void) //顯示溫度的小數(shù)點 { WriteAddress(0x49)。 //寫顯示地址,將在第 2 行第 10 列開始顯示 WriteData(39。.39。)。 //將小數(shù)點的字符常量寫入 LCD delaynms(50)。 //延時 50ms 給硬件一點反應時間 } void display_minus()。 (void) { WriteAddress(0x45)。 //寫顯示地址,將在第 2 行第 10 列開始顯示 WriteData(39。39。)。 //將小數(shù)點的字符常量寫入 LCD delaynms(50)。 //延 時 50ms 給硬件一點反應時間 } void display_cent(void) //顯示溫度的單位 函數(shù) { unsigned char i。 WriteAddress(0x4c)。 //寫顯示地址在第 2 行第 13 列 i = 0。 //從第一個字符開始顯示 while(Cent[i] != 39。\039。) //只要沒有寫到結(jié)束標志,就繼續(xù)寫 { WriteData(Cent[i])。 //將字符常量寫入 LCD i++。 //指向下一個字符 delaynms(50)。 //延時 50ms 給硬件一點反應時間 } } void display_temp1(unsigned char x) //整數(shù)輸出部分 { unsigned char j,k,l。 //j,k,l 分別儲存溫度的百位、十位和個位 j=x/100。 //取百位 k=(x%100)/10。 //取十位 l=x%10。 //取個位 WriteAddress(0x46)。 //寫顯示地址 ,將在第 2 行第 7 列開始顯示 單片機原理及系統(tǒng)課程設計報告 15 WriteData(digit[j])。 //將百位數(shù)字的字符常量寫入 LCD WriteData(digit[k])。 //將十位數(shù)字的字符常量寫入 LCD WriteData(digit[l])。 //將個位數(shù)字的字符常量寫入 LCD delaynms(50)。 //延時 50ms 給硬件 一點反應時間 } void display_temp2(unsigned char x) //顯示小數(shù)部分函數(shù) { unsigned char m,n。 m=x/10。 n=x%10。 WriteAddress(0x4a)。 //寫顯示地址 ,將在第 2 行第 11 列開始顯示 WriteData(digit[m])。 //將小數(shù)部分的第一位數(shù)字字符常量寫入 LCD WriteData(digit[n])。 delaynms(50)。 //延時 50ms 給硬件一點反應時間 } void ReadyReadTemp(void) //讀溫度準備 函數(shù) { Init_DS18B20()。 //將 DS18B20 初始化 WriteOneChar(0xCC)。 // 跳過讀序號列號的操作 WriteOneChar(0x44)。 // 啟動溫度轉(zhuǎn)換 for(time=0。time100。time++)。 //溫度轉(zhuǎn)換需要一點時間 Init_DS18B20()。 //將 DS18B20 初始化 WriteOneChar(0xCC)。 //跳過讀序號列號的操作 WriteOneChar(0xBE)。 //讀取溫度寄存器 ,前兩個分別是溫度低位和高位 } void main(void) { unsigned char TL。 //儲存暫存器的溫度低位 unsigned char TH。 //儲存暫存器的溫度高位 unsigned char TN。 //儲存溫度的整數(shù)部分 unsigned char TD。 //儲存溫度的小數(shù)部分 LcdInitiate()。 //將液晶初始化 程序包含顯示模式的設置 delaynms(5)。 //延時 5ms 給硬件一點反應時間 if(Init_DS18B20()==1) display_error()。 display_explain()。 display_symbol()。 //顯示溫度說明 單片機原理及系統(tǒng)課程設計報告 16 display_dot()。 //顯示溫度的小數(shù)點 display_cent()。 //顯 示溫度的單位 while(1) //不斷檢測并顯示溫度 { ReadyReadTemp()。 //讀溫度準備 包括傳感器初始化和 寫入讀溫和溫度轉(zhuǎn)換命令 TL=ReadOneChar()。 //先讀的是溫度值低位 TH=ReadOneChar()。 //接著讀的是溫度值高位 if(THamp。0xf8==0x00) //如果讀的溫度是 零上溫度 { TN=TH*16+TL/16。 //實際溫度值 為 (TH*256+TL)/16 //這樣得出的是溫度的整數(shù)部分 ,小數(shù)部分被 舍去 TD=(TL%16)*100/16。 //計算溫度的小數(shù)部分取整, //這樣得到的是溫度小數(shù)部分的兩位數(shù)字 di
點擊復制文檔內(nèi)容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1