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

正文內(nèi)容

基于89c51單片機(jī)的溫度控制器的設(shè)計(jì)-資料下載頁(yè)

2024-12-07 09:54本頁(yè)面

【導(dǎo)讀】溫度控制器是一種提供溫度顯示、語(yǔ)音報(bào)溫和報(bào)警的裝置。警溫度,實(shí)現(xiàn)控溫目的,并且根據(jù)下位機(jī)測(cè)量的溫度繪出溫度變化曲線。Keyword:SCM;DS18B20;ISD1420;7bitcodedisplays;食品、機(jī)械、石油等工業(yè)中,具有舉足輕重的作用。隨著電子技術(shù)和微型計(jì)算

  

【正文】 。 //錄音芯片地址表 void TXReset()。 //DS18B20復(fù)位函數(shù) void ack_18b20()。 bit read_bit()。 //讀取數(shù)據(jù) uchar read_byte()。 void del(uint z)。 //延時(shí)函數(shù) void write_bit(uchar dat)。 //寫數(shù)據(jù) void Tem_Start()。 void ReadTem()。 //讀取溫度值 uint CalTemp()。 //轉(zhuǎn)換溫度 void display()。 //顯示函數(shù) void Serial_init()。 //初始化函數(shù) 36 void record(uchar address)。 //錄音函數(shù) void play(uchar address)。 //放音函數(shù) void record_init()。 //錄入語(yǔ)庫(kù)函數(shù) void main() { Serial_init()。 //初始化函數(shù) while(1) { if(BUF==0x01) //初始化語(yǔ)音庫(kù) { BUF=0。 record_init()。 //錄放音函數(shù) } if(flagbaoshi==1) { play(0x34)。 //當(dāng)前溫度是 play(tre[temp/100])。 //溫度值 if((temp%100)/10==0) play(tre[10])。 if((temp%100)/10) { play(tre[10])。 play(tre[(temp%100)/10])。 } play(tre[11])。 //點(diǎn) play(tre[temp%10])。 play(0x3c)。 //度 } } } void Serial_init() { EA=1。 ES=1。 REC=1。 PL=1。 TWR=1。 TMOD=0x21。 ET0=1。 TH0=(65553620210)/256。 TL0=(6553620210)%256。 TH1=0xfd。 TL1=0xfd。 37 TR0=1。 TR1=1。 SM0=0。 SM1=1。 REN=1。 BUF=35。 flagbaoshi=0。 TWR=0。 P1=0xc0。 TWR=1。 del(10)。 } void del(uint z) { uint j。 while(z) for(j=0。j125。j++)。 } void TXReset() { uchar i=120。 DQ=0。 //單片機(jī)拉低總線 while(i0)i。 //延時(shí) us DQ=1。 //拉高總線 i=4。 while(i0)i。 //延時(shí) us } void ack_18b20() { uchar i=4。 while(DQ)。 while(~DQ)。 //等待應(yīng)答信號(hào) while(i0)i。 //延時(shí) us } bit read_bit() //讀取數(shù)據(jù) { bit b。 uint i=0。 38 DQ=0。 //總線拉低 i++。 //至少維持 us DQ=1。 i++。 i++。 b=DQ。 i=8。 while(i0)i。 return b。 } uchar read_byte(void) { uint i。 uchar j,dat。 for(i=0。i8。i++) { j=read_bit()。 //讀取一位 dat=(j7)|(dat1)。//得到溫度值(二進(jìn)制) } return dat。 } void write_bit(uchar dat) { uchar i。 uint j。 bit b。 for(i=0。i8。i++) { b=datamp。0x01。 dat=dat1。 if(b) //發(fā)送的是 { DQ=0。 //拉低總線 j++。 //至少維持 us j++。 DQ=1。 //拉高總線 j=8。 while(j0)j。//延時(shí) } else //發(fā)送的是 { DQ=0。 j=8。 39 while(j0)j。 DQ=1。 //準(zhǔn)備釋放 j++。 j++。 } } } void Tem_Start() { TXReset()。 //復(fù)位信號(hào) ack_18b20()。 //等待應(yīng)帶信號(hào) del(1)。 write_bit(0xcc)。 //只掛了一個(gè),跳過 ROM write_bit(0x44)。 //溫度轉(zhuǎn)換 } void ReadTem() //讀取溫度值 { TXReset()。 //復(fù)位信號(hào) ack_18b20()。 //等待應(yīng)帶信號(hào) del(1)。 write_bit(0xcc)。 //只掛了一個(gè),跳過 ROM write_bit(0xbe)。 //開始讀暫存器 } uint CalTemp() //獲取十進(jìn)制溫度 { uint tempval,value。 uint tpl,tph。 float t。 ReadTem()。 //讀取溫度值 tpl=read_byte()。 //獲得低八位 tph=read_byte()。 //獲得高八位 tempval=tph。 tempval=tempval8。 //把以上八位數(shù)據(jù)從低八位移到高八位 tempval=tempval|tpl。//兩字節(jié)合成一個(gè)整型變量 value=tempval。 t=value*。 //得到真實(shí)十進(jìn)制溫度值 value=t*10+。 return value。 //變成位數(shù)好顯示 } void display() 40 { count++。 temp2=temp。 if(temp2999) //溫度限制 temp2=999。 if(temp20) temp2=0。 switch (count) //數(shù)碼管顯示 { case 1:{wela=1。P0=0xfe。wela=0。 dula=1。P0=table[temp2/100]。dula=0。}break。 //十位 case 2:{wela=1。P0=0xfd。wela=0。 dula=1。P0=table[temp2%100/10]|0x80。dula=0。}break。//個(gè)位 case 3:{wela=1。P0=0xfb。wela=0。 dula=1。P0=table[temp2%10]。dula=0。count=0。}break。 //小數(shù)位 default :break。 } } void Serial() interrupt 4 { BUF=SBUF。 while(!RI)。 RI=0。 } void play(uchar address) //播放對(duì)應(yīng)地址的語(yǔ)音信息 { TWR=0。 //用上升沿將 P1數(shù)據(jù)打進(jìn)去 P1=address。 TWR=1。 del(10)。 TWR=0。 PL=0。 //PL為低電平,開始放音 if(address==0x34) //播放最后一段 del(400)。 else del(100)。 PL=1。 //PL置高電平,停止放音 } void record(uchar address) //錄制對(duì)應(yīng)地址語(yǔ)音信息 41 { P1=0xc0。 //0xff也行,只要保證前兩位是 TWR=0。 del(10)。 TWR=1。 del(30)。 //用上升沿將 P1數(shù)據(jù)打進(jìn)去 ,地址復(fù)位 P1=address。 TWR=0。 //在 address地址錄音 del(10)。 TWR=1。 del(10)。 REC=1。 del(10)。 REC=0。 //REC低電平開始錄音 if(address==0x34) { del(400)。 //錄制最后一段 REC=1。 del(400)。 } else { del(100)。 REC=1。 del(100)。 } } void record_init() //初始化錄音 { uchar time=0。 for(time=0。time14。time++)//總共十五段 { record(tre[time])。 } /* for(time=0。time14。time++)//總共十五段 { record(tre[time])。 }*/ } void time0()interrupt 1 //定時(shí)器中斷 42 { TH0=(6553620210)/256。 TL0=(6553620210)%256。 //定時(shí)器賦初值 Tem_Start()。 //開始測(cè)溫 temp=CalTemp()。 //獲得十進(jìn)制溫度值 if(tempBUF*10amp。amp。BUF!=0) //溫度超過范圍報(bào)警 { P1=BUF。 beep=0。 del(10)。 beep=1。 } display()。 //溫度顯示 time++。 if(time==50) //每隔秒掃描一次溫度 { ES=0。 time=0。 SBUF=temp/100。 while(!TI)。 TI=0。 SBUF=(temp%100)/10。 while(!TI)。 TI=0。 SBUF=temp%10。 while(!TI)。 TI=0。 ES=1。 } time2++。 if(time2==1500) //30秒定時(shí)報(bào)溫 { time2=0。 flagbaoshi=1。 } }
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1