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

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于51的溫度報(bào)警器設(shè)計(jì)--資料下載頁

2024-12-02 17:30本頁面

【導(dǎo)讀】單片機(jī)作為一種微控制器,由于具有體積小,質(zhì)量輕,功耗低,價(jià)格便宜,難在某個(gè)領(lǐng)域看不到單片機(jī)的痕跡。在智能儀表領(lǐng)域,由于單片機(jī)的上述優(yōu)點(diǎn),用單片機(jī)作為控制平臺,結(jié)合不同類型的傳感器,可以很容易地對溫度,濕度,流量等物理量進(jìn)行檢測。下限設(shè)置,用液晶進(jìn)行溫度顯示,并且在超出溫度設(shè)定范圍后發(fā)聲報(bào)警。定,以適應(yīng)對溫度有檢測需求的不同應(yīng)用場合。增強(qiáng)了該設(shè)計(jì)的應(yīng)用性。的,在選用時(shí)要多加比較,從而做出最合理的設(shè)計(jì)。方案一:非數(shù)字型溫度傳感器pt100,精度高,穩(wěn)定性好,測量范圍大;方案二:數(shù)字型溫度傳感器DS18B20,體積小,精度高,抗干擾能力強(qiáng),所以本設(shè)計(jì)采用DS18B20作為溫度檢測模塊。示0至9十個(gè)數(shù)字和小數(shù)點(diǎn),價(jià)格便宜。本課題設(shè)計(jì)的溫度報(bào)警器是在滿足基本功能的基礎(chǔ)上,盡可能的簡化電路,增加人機(jī)交互性。在溫度傳感器選擇時(shí),為了避免大量的硬件設(shè)計(jì),增加成本,

  

【正文】 移動(dòng) 25 write_(0x02)。 //清 DDRAM 位址歸位 write_(0x82)。 //將第一行顯示位置設(shè)為第 3 個(gè)漢字位 for(num=0。num8。num++) //在第一行顯示漢字“溫度顯示” { write_date(table[num])。 } } void lcd_display() //lcd 顯示函數(shù) { write_(0x92)。 //設(shè)定溫度值顯示的位置 write_date(0x30+a[0])。//顯示溫度十位數(shù)值 write_date(0x30+a[1])。//顯示溫 度個(gè)位數(shù)值 write_date(0x2e)。 //顯示小數(shù)點(diǎn) write_date(0x30+a[2])。//顯示溫度十分位數(shù)值 write_date(0xA1)。 /*lcd 顯示溫度值符號 */ write_date(0xE6)。 } int DS18B20_init(void) { int t。 DS_H。 delay_us(50)。 _nop_()。//_nop_()。是單周期指令 ,實(shí)現(xiàn)短時(shí)間延時(shí) _nop_()。 DS_L。 DS_0。 //主器件拉低 delay_us(500)。 //最少 480us DS_H。 //電阻上拉 delay_us(60)。 //等待 15~60us if(P06==0) t=1。 //判斷存在脈沖, DS18B20 是否拉低 else t=0。 26 delay_us(480)。 //最小 480us return(t)。 //若 DS18B20 復(fù)位,返回值 t=1 } void DS18B20_w(uchar date) { DS_L。 //主器件拉低開始 DS_0。 delay_us(3)。 //最少延時(shí) 1us if(date) DS_H。 //電阻上拉,寫 1 else { DS_L。 //主器件拉低,寫 0 DS_0。 } delay_us(80)。 //寫時(shí)隙必須至少持續(xù) 60μ s DS_H。 delay_us(60)。 //大于 1us 延時(shí)即可 } uchar DS18B20_r(void) { char date。 DS_L。 //主器件拉低開始 DS_0。 delay_us(3)。 //延時(shí)大于 1us DS_H。 //IO 口設(shè)為輸出, DS18B20 拉低,則讀出 0;電阻上拉拉高, delay_us(3)。 //延時(shí)小于 15us if(P06==1) date=1。 //判斷 IO 輸入狀態(tài) else date=0。 delay_us(80)。 //延時(shí)大于 45us DS_H。 27 delay_us(60)。 return(date)。 } void write_byte(unsigned char byte) { for(i=0。i8。i++) { DS18B20_w(byteamp。0x01)。 //byte 最后一位為 1,這寫 1 時(shí)隙;若為 0,則寫 0時(shí) byte=byte1。 //byte 右移一位, byte 從低位到高位,逐位寫入 _nop_()。 } } uchar read_byte() { unsigned char ans=0。 for(i=0。i8。i++) { ans=1。 //ans 右移 一位 if(DS18B20_r()) ans|=0x80。 //若讀出 1 則, ans 最高位寫入 1,寫滿 8 位 _nop_()。 } return(ans)。 //返回讀出的數(shù)據(jù) } void DS18B20_temp(void) { while(!DS18B20_init()) //訪問 DS18B20 以一個(gè)初始化序列未開始 {} write_byte(0xCC)。 //總線上只有一個(gè) DS18B20,因此可直接跳過尋址 write_byte(0x44)。 //開始溫度轉(zhuǎn)換 28 delay_us(5000)。 //等待轉(zhuǎn)換 while(!DS18B20_init()) //等待 DS18B20 復(fù)位 {} write_byte(0xCC)。 write_byte(0xBE)。 //讀暫存器 temp_low=read_byte()。 //讀出 LS temp_high=read_byte()。 //讀出 MS DS18B20_init()。 TEMP_Result=((float)temp_low*+(float)temp_high*16)*1027。 //計(jì)算溫度值 a[2]=TEMP_Result%10。 //獲得十分位數(shù)值 te=TEMP_Result/10。 //獲得整數(shù)部分的數(shù)值 a[1]=te%10。 //獲得個(gè)位數(shù)值 te=TEMP_Result/100。 //獲得個(gè)位以上數(shù)值 a[0]=te%10。 //獲得十位數(shù)值 } void main(void) { P03=0。 //將這三個(gè)引腳設(shè)為輸出 P04=0。 P05=0。 lcd_init()。 //調(diào)用初始化函 數(shù) while(1) { area()。 //調(diào)用溫度上下限設(shè)定函數(shù)設(shè)定溫度上下限 DS18B20_temp()。 //調(diào)用溫度采集函數(shù)獲取溫度值 if(lTEMP_Resulth) //判斷采集溫度是否在設(shè)定范圍內(nèi) ,由于 l 初值賦為 100, h 初值賦為 300,所以初始溫度范圍為 10 至 30 攝氏度 { lcd_display()。 //若在設(shè)定范圍內(nèi),則液晶顯示當(dāng)前溫度值 P07=1; //關(guān)閉蜂鳴器 } 29 else { lcd_display()。 //若不在設(shè)定范圍內(nèi),則液晶顯示當(dāng)前溫度值 P07=0。 //蜂鳴器報(bào)警 } } }
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1