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

正文內(nèi)容

基于at89c52單片機的太陽能熱水器控制系統(tǒng)的設(shè)計與實現(xiàn)-設(shè)計范文模板參考資料-資料下載頁

2024-12-07 09:54本頁面

【導讀】基于AT89C52的太陽能熱水器控制系統(tǒng)

  

【正文】 /當前溫度 值 uchar ADV0,ADV。//AD 值 unchar wl。 uint T0c,T1c。 uchar TW。 //溫度液位選擇位 河南大學本科畢業(yè)生學士學位論文 23 uchar sflag。 //手動上水模式標志位 uchar Tflag。 //高溫標志 //uchar EPflag。 //排空水標志位 //延時程序 void delayus(uchar us) { while(us)。 //12M,一次 6us } void delayms(uint ms) // 毫秒 級延時 { uint ti。 while(ms) { for(ti=0。ti112。ti++){} } } void delay(uint count) { uint i。 while(count) { i=200。 while(i0) i。 count。 } } //空操作 void _nop_ (void)。 //DS18B20 程序段 bit ds18b20_reset(void) //DS18B20 復位和初始化 { uchar data i。 DQ=0。//發(fā)一個復位脈沖 河南大學本科畢業(yè)生學士學位論文 24 delayus(80)。 DQ=1。 delayus(12)。 if(DQ) return(0)。 delayus(80)。 return(1)。 } void ds18b20_write(uchar a) //DS18B20 寫操作 { uchar data i。 bit c。 for(i=0。i8。i++) { c=(ai)amp。0x01。 DQ=0。 DQ=0。 delayus(0)。 DQ=c。 delayus(10)。 } DQ=1。 } uchar ds18b20_read(void) //DS18B20 讀 一字節(jié) 操作 { uchar data i,a。 for(i=0。i8。i++) { DQ=0。 DQ=0。 DQ=0。 DQ=1。 delayus(0)。 a=(a1)。 if(DQ) a=a|0x80。 delayus(10)。 } DQ=1。 河南大學本科畢業(yè)生學士學位論文 25 return a。 } uchar read_temp(void) { uchar i,b,c,Th,Tm,Tl。 ds18b20_reset()。 ds18b20_write(0xcc)。 ds18b20_write(0x44)。 delayms(50)。 ds18b20_reset()。 delay(1)。 ds18b20_write(0xcc)。 ds18b20_write(0xbe)。 b=ds18b20_read()。 c=ds18b20_read()。 flag1=c。 if(flag1) { //溫度為負 TEMP[0]=0。 TEMP[1]=0。 } else{ Th=c/100。 Tm=(c%100)/10。 Tl=c%10。 //取溫度的各個位 if(Th) { //溫度高于 99 度 TEMP[0]=0x0f。 TEMP[1]=0x0f。 } else{ TEMP[0]=Tl。 TEMP[1]=Tm。 } } if(TEMP[0]7) Tflag=1。 //高溫標志 else Tflag=0。 河南大學本科畢業(yè)生學士學位論文 26 return(TEMP[2])。 } //LED 顯示子程序 void Icmdis(uchar TEMP[]) { char i。 ICMWR=0。 ICMMODE=1。//ICM 工作于模式 1 ICMOUT=0xB0。//輸出模式控制字 ICMMODE=0。//ICM 工作于模式 0 for(i=0。i2。i++) ICMOUT=TEMP[i]。//輸出溫度值 } //A/D 轉(zhuǎn)換 及液位顯示子 程序 void ADRun(void) { ADCS=0。 ADWR=0。 _nop_()。 ADWR=1。 ADCS=1。 } uchar ADRead(void) { ADV=ADIN。 if(ADVwl*4){ //水位 顯示為 100% D1=ON。 D2=ON。 D3=ON。 D4=ON。 D5=ON。 } else{ if(ADVwl*3){ //水位顯示為 80% D1=ON。 河南大學本科畢業(yè)生學士學位論文 27 D2=ON。 D3=ON。 D4=ON。 D5=OFF。 } else{ //水位顯示為 60% if(ADVwl*2) { //水位顯示為 40% D1=ON。 D2=ON。 D3=ON。 D4=OFF。 D5=OFF。 } else{ if(ADVwl) { //水位顯示為 20% D1=ON。 D2=ON。 D3=OFF。 D4=OFF。 D5=OFF。 } else { //水位顯示為缺水 D1=ON。 D2=OFF。 D3=OFF。 D4=OFF。 D5=OFF。 } } } } return ADV。 } //定時器 T0 中斷程序 void T0Run(void) { TH0=0x3C。 河南大學本科畢業(yè)生學士學位論文 28 TL0=0xB0。 TR0=1。 //啟動定時器 T0 } void timer0(void) interrupt 1 { TH0=0x3C。 TL0=0xB0。 T0c++。 if(T0c19) { T0c=0。 if(TW){ TW=0。 ADRun()。 ADRead()。 } else{ read_temp()。 Icmdis()。 } } } //定時器 T1 中斷程序 void T1Run(void) { TH1=0x3C。 TL1=0xB0。 TR1=1。 //啟動定時器 T0 } void timer1(void) interrupt 3 { TH1=0x3C。 TL1=0xB0。 河南大學本科畢業(yè)生學士學位論文 29 T1c++。 if(T1c199) { T1c=0。 //EPflag=0。 SOV1=OFF。 SOV2=OFF。 SOV3=ON。 } } //主程序 main() { char T0c=0。 char T1c=0。 IE=0x8A。 TMOD=0x11。 T0Run()。 while(1){ if(S1==0){ ADV0=ADV。 sflag=1。// 手動上水模式標志 TW=1。//液位檢測標志 SOV1=ON。 SOV2=ON。 SOV3=OFF。 //上水 } else { if(sflag) { if(ADVADV0+wl){ //手動上水一個檔位后即停止上水 sflag=0。 SOV1=OFF。 SOV2=OFF。 SOV3=OFF。 河南大學本科畢業(yè)生學士學位論文 30 } } else{ if(SOV1==OFFamp。amp。SOV2==OFF) { //EPflag=1。 //排空管道水標志 T1Run()。 SOV3=ON。 //排空管道內(nèi)的水 } } if(ADVwl*(3Tflag)) { SOV1=ON。 SOV2=ON。 SOV3=OFF。 //水位較低上水 } else{ SOV1=OFF。 SOV2=OFF。 SOV3=OFF。 } } } }
點擊復制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1