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

正文內(nèi)容

單片機(jī)課程設(shè)計(jì)論文-基于51的溫度報(bào)警器(編輯修改稿)

2024-12-22 23:59 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 點(diǎn),只要將電壓家在陽極和陰極之間相應(yīng)的筆畫就會(huì)發(fā)光。 8 個(gè)發(fā)光二極管的陽極并聯(lián)在一起, 8 個(gè)陰極分開,因此成為共陽八段數(shù)碼管。 課程設(shè)計(jì)說明書 9 其如圖 7: A B C D E F G DP1 2 3 4 5 6 7 8 圖 7晶體管顯示電路 報(bào)警電路 由兩個(gè)發(fā)光二極管組成和一個(gè)喇叭組成,分別是高溫報(bào)警和低溫報(bào)警,當(dāng)高溫超過 110 或低溫低于 50 時(shí),對(duì)應(yīng)的二極管閃爍,同時(shí)喇叭發(fā)出警報(bào)。 如圖 8 和圖 9: D1高溫報(bào)警D2低溫報(bào)警R32 2 0R42 2 0 圖 8二極管報(bào)警電路 L S 1S O UN D E R 圖 9喇叭報(bào)警電路 課程設(shè)計(jì)說明書 10 4 程序設(shè)計(jì) 程序流程圖 程序流程圖如圖 10 所示: 圖 10 程序流程圖 N 跳過讀序列號(hào)的操作 Y N Y 讀溫度命令 將溫度高、低位讀出 處理數(shù)據(jù)到百、十、個(gè)、小數(shù)位,并在數(shù)碼管上顯示 超出限制? 喇叭響和二級(jí)管閃爍 初始化 DS18B20 開始 初始化 DS18B20 應(yīng)答脈沖? 跳過讀序列號(hào)的操作 發(fā)出溫度轉(zhuǎn)換的命令 等待溫度轉(zhuǎn)換完成 課程設(shè)計(jì)說明書 11 初始化子程序 使用 DS18B20 時(shí),單片機(jī)先向 DS18B20 送出復(fù)位信號(hào),單片機(jī)將數(shù)據(jù)拉低并保持 480~960μs;再釋放數(shù)據(jù) 線,由上拉電阻拉高 15~60μs;然后再由 DS18B20 發(fā)出低電平 60~240μs,就完成了復(fù)位操作。 通過 init_ds18b20()函數(shù)來實(shí)現(xiàn) 18B20 的初始化 char init_ds18b20() { uchar status。 dq = 1。delay(8)。//高電平 dq = 0。delay(90)。 dq = 1。delay(8)。//高電平 status = dq。 delay(100)。 dq = 1。高電平 return status。 } 讀子程序 讀數(shù)據(jù)之前,單片機(jī)先將數(shù)據(jù) 線拉低,再釋放。 DS18B20 在數(shù)據(jù)線從高電平跳低后 15μ s 內(nèi)將數(shù)據(jù)送到數(shù)據(jù)線上。單片機(jī)在 15μ s 后讀數(shù)據(jù)線。 通過 read_temperature()函數(shù)讀取溫度值到 DS18B20 void read_temperature() { if( init_ds18b20() ==1) ds18b20_is_ok = 0。//DS18B20故障 else { writeonebyte(0xcc)。//跳過序列號(hào) writeonebyte(0x44)。//啟動(dòng)溫度轉(zhuǎn) 換 init_ds18b20()。//DS18B20初始化 writeonebyte(0xcc)。//跳過序列號(hào) writeonebyte(0xbe)。//讀取溫度寄存器 temp_value[0] = readonebyte()。//溫度低 8位 temp_value[1] = readonebyte()。//溫度高 8位 課程設(shè)計(jì)說明書 12 alarm_temp_hl[0] = readonebyte()。//報(bào)警溫度 DH alarm_temp_hl[1] = readonebyte()。//報(bào)警溫度 DL ds18b20_is_ok = 1。//DS18B20正常工作 } } 寫子程序 在單片機(jī)對(duì) DS18B20 寫數(shù)據(jù)時(shí),應(yīng)先將數(shù)據(jù)線拉低 1μ s 以上,再寫入數(shù)據(jù) (寫1 為高,寫 0 為低 )。待單片機(jī)寫入的數(shù)據(jù)變化 15~60μ s 后, DS18B20 將對(duì)數(shù)據(jù)線采樣。單片機(jī)寫入數(shù)據(jù)到 DS18B20 的保持時(shí)間為 60~120μ s。通過 writeonebyte()函數(shù)寫入 8 位字節(jié)。 void writeonebyte(uchar dat) { uchar i。 for(i = 0。i 8。i++) {dq = 0。dq = dat amp。 0x01。delay(5)。 dq = 1。dat =1。 } } 通過 set_alarm_temp_value()函數(shù)中的實(shí)現(xiàn)數(shù)據(jù)的讀入 void set_alarm_temp_value() { init_ds18b20()。初始化 DS18B20 writeonebyte(0xcc)。 //跳過序列號(hào) writeonebyte(0x4e)。//將設(shè)定的溫度報(bào)警值寫入 DS18B20 writeonebyte(alarm_temp_hl[0])。 //寫入 TH writeonebyte(alarm_temp_hl[1])。 //寫入 TL writeonebyte(0x7f)。//12位精度 init_ds18b20()。 //初始化 DS18B20 writeonebyte(0xcc)。 //跳過序列號(hào) writeonebyte(0x48)。 //溫度報(bào)警值存入 DS18B20 } 數(shù)據(jù)處理子程序 課程設(shè)計(jì)說明書 13 先判斷溫度高 8 位,如果 CY 為 1,則將高、低 8 八位求 補(bǔ);對(duì)高、低 8 位的數(shù)據(jù)按權(quán)整合稱一個(gè)整數(shù),判斷是否在 50~110℃之間,超出范圍則置報(bào)警燈為亮;將該數(shù)按百、十、個(gè)位分別存入相應(yīng)的存儲(chǔ)單元。流程圖如圖 11 所示: 圖 11 數(shù)據(jù)處理流程圖 通過子函數(shù) display_temperature()中的 uchar ng = 0 , np = 0。 char signed_current_temp。 if ( ( temp_value[1] amp。 0xf8) == 0xf8 )//如果是負(fù)數(shù)則取反加 1 {temp_value[1] = ~temp_value[1]。 temp_value[0] =~temp_value[0] + 1。 if ( temp_value[0] == 0x00 ) temp_value[1]++。正數(shù)顯示溫度值加 1 ng = 1。np = 0xfd。//默認(rèn)負(fù)號(hào)顯示在左邊第 2排 } display_digit[0] = df_table[temp_value[0] amp。 0x0f ]。//查表得到溫度小數(shù)部分 currentt = ((temp_value[0] amp。 0xf0)4) | ((temp_value[1] amp。 0x07)4)。//獲取溫度整數(shù)部分 signed_current_temp = ng? currentt :currentt。//有符號(hào)數(shù)當(dāng)前溫度值 Y Y N 符號(hào)為正? 求補(bǔ)碼 N 高、低 8 位整合成為一個(gè)整數(shù)存入 A中 50~110 之間? 報(bào)警 分別存入百、十、個(gè)、小數(shù)位 取溫度值 課程設(shè)計(jì)說明書 14 hi_alarm = signed_current_temp = alarm_temp_hl[0] ? 1 : 0。//高溫報(bào)警設(shè)置 lo_alarm = signed_current_temp = alarm_temp_hl[1] ? 1: 0。//低溫報(bào)警設(shè)置 // 將整數(shù)部分 分解為三位待顯示數(shù)字 display_digit[3] = currentt /100。//百位 display_digit[2] = currentt % 100 /10。//十位 display_digit[1] = currentt % 10。//個(gè)位 if (display_digit[3] == 0 ) { display_digit[3] = 10。//高位是零則不顯示 np = 0xfb。//調(diào)整負(fù)號(hào)位置 if( display_digit[2] == 0) { display_digit[2] =10。//高位是零則不顯示 np = 0xf7。//調(diào)整負(fù)號(hào)位置 } 語句實(shí)現(xiàn)溫度數(shù)據(jù)處理,如果 溫度數(shù)據(jù)是正,則直接分別顯示百、十、個(gè)位,如果最高位是零,則最高位不顯示。如果溫度是負(fù),則取反后再顯示。 顯示子程序 將百、十、個(gè)、小數(shù)位的數(shù)據(jù)查表,送到對(duì)應(yīng)的數(shù)碼管顯示,程序流程圖如 12所示: 課程設(shè)計(jì)說明書 15 圖 12 顯示程序流程圖 通過子函書中 display_temperature()中的 for (i = 0。i 30。i ++) { P0 = 0x39。P2 = 0x7f。 delay(t)。P2 = 0xff。//顯示 C
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1