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

正文內(nèi)容

基于單片機的溫度檢測與控制系統(tǒng)設計-閱讀頁

2025-03-18 12:01本頁面
  

【正文】 void delaynms(unsigned char n) //延時多毫秒子程序 { unsigned char i。in。 } void write_(uchar ) //LCD 寫指令子程序 { lcdrs=0。 delay(5)。 delay(5)。 } void write_data(uchar date) //LCD 寫數(shù)據(jù)子程序 { lcdrs=1 P2=date。 lcden=1。 lcden=0。 write_(0x38)。 write_(0x06)。 write_(0x80)。 //儲存 DS18B20 是否存在的標志, flag=0,表示存在; flag=1,表示不存在 DQ = 1。time2。 DQ = 0。time200。 //略 微延時約 600 微秒 。 //釋放數(shù)據(jù)線(將數(shù)據(jù)線拉高) for(time=0。time++) 。 //讓單片機檢測是否輸出了存在脈沖( DQ=0 表示存在) for(time=0。time++) 。 //返回檢測成功標志 } unsigned char ReadOneChar() //DS18B20 讀子程序 { unsigned char i=0。 //儲存讀出的一個字節(jié)數(shù)據(jù) for (i=0。i++) { DQ =1。 //等待 一個機器周期 DQ = 0。 //等待一個機器周期 DQ = 1。time2。 //延時約 6us,使主機在 15us 內(nèi)采樣 dat=1。 //如果讀到的數(shù)據(jù) 是 1,則將 1 存入 dat else dat|=0x00。time8。 //延時 3us,兩個讀時序之間必須有大于 1us 的恢復 } return(dat)。 for (i=0。 i++) { DQ =1。 //等待一個機器周期 DQ=0。0x01。time10。/ /延時約 30us, DS18B20 在拉低后的約 15~60us // 畢 業(yè) 實 習 報 告 28 期間從數(shù)據(jù)線上采樣 DQ=1。time1。//延時 3us,兩個寫時序間至少需要 1us 的恢復期 dat=1。time4。 //稍作延時 ,給硬件一點反應時間 } void ReadyReadTemp() //DS18B20 讀準備子程序 { Init_DS18B20()。 // 跳過讀序號列號的操作 WriteOneChar(0x44)。 //轉(zhuǎn)換一次需要延時一段時間 Init_DS18B20()。 //跳過讀序號列號的操作 WriteOneChar(0xBE)。num4。 delay(20)。num19。 delay(20)。 for(num=0。num++) { nwrite_data(table2[num])。 } } 畢 業(yè) 實 習 報 告 29 void disply_init2() //LCD 顯示 2 子程序 { write_(0X80)。num5。 delay(20)。 for(num=0。num++) { write_data(table4[num])。 } } void display_temp1(uchar x) //LCD 顯示溫度整數(shù)子程序 { unsigned char j,k,l。 //取百位 k=(x%100)/10。 //取個位 write_(0x80+0x43)。39。 //將百位數(shù)字的字符常量寫入 LCD } write_data(digit[j])。 //將十位數(shù)字的字符常量寫入 LCD write_data(digit[l])。 //延時 1ms 給硬件一點反應時間 } void display_temp2(uchar x) //LCD 顯示溫度小數(shù)子程序 { write_data(digit[x])。 //延時 1ms 給硬件一點反應時間 } 畢 業(yè) 實 習 報 告 30 void highwarning() //高溫警告子程序 { LED1=0。 delaynms(1000)。 buzzer=0。 delaynms(1000)。 } void judge(uchar m1,char numlow1,char numhigh1) //判斷溫度范圍子程序 { char m 。 } else { m=m1。 LED2=1。 } if((mnumhigh1)amp。 motor=0。 LED2=0。 } if(m=numlow1) 畢 業(yè) 實 習 報 告 31 { lowwarning()。 LED2=1。 } } uint keeyboard() //鍵盤掃描子程序 { P1=0xfe。 temp=tempamp。 num1=20。 switch(temp) { case 0xee: num1=7。 case 0xde: num1=8。 case 0xbe: num1=9。 } while(temp!=0xf0)//松手檢測 { temp=P1。0xf0。 temp=P1。0xf0。 畢 業(yè) 實 習 報 告 32 switch(temp) { case 0xed: num1=4。 case 0xdd: num1=5。 case 0xbd: num1=6。 } while(temp!=0xf0)//松手檢測 { temp=P1。0xf0。 temp=P1。0xf0。 switch(temp) { case 0xeb: num1=1。 case 0xdb: num1=2。 case 0xbb: num1=3。 case 0x7b: num1=10。 } while(temp!=0xf0)//松手檢測 { 畢 業(yè) 實 習 報 告 33 temp=P1。0xf0。 temp=P1。0xf0。 switch(temp) { case 0xd7: num1=0。 case 0xb7: num1=12。 case 0x77: num1=11。 } while(temp!=0xf0)//松手檢測 { temp=P1。0xf0。 } } void extern_interrupt() //外部中斷初始化 { EX0=1。 //開外部中斷 1 IT0=1。 //開總中斷 畢 業(yè) 實 習 報 告 34 } void main() { uchar tltemp,i,ii,i1。 //溫度低位 uchar TH。 //溫度的整數(shù)部分 uchar TD。 numlow=4。 //初始高溫度為 20 buzzer=1。 //關(guān)閉 LED1 lamp=1。 //關(guān)閉電機 extern_interrupt()。 //液晶初始化 disply_init1()。 //DS18B20 讀準備 while(Init_DS18B20()==1) //判斷 DS18B20 是否初始化成功 { Init_DS18B20()。 //flagX 都為標志判斷位 flag3=0。 flag5=0。 flag=0。 //讀溫度準備 TL=ReadOneChar()。 //接著讀的是溫度值高位 if((THamp。 TL=~TL。 //取反 tltemp=TL+1。 if(tltemp255) TH++。 //實際溫度值 =(TH*256+TL)/16,即: TH*16+TL/16 TD=(TL%16)*10/16。 //實際溫度值 =(TH*256+TL)/16,即: TH*16+TL/16 TD=(TL%16)*10/16。 display_temp1(TN)。.39。 //顯示小數(shù)部分 display_temp2(TD) 。 //判斷溫度范圍并采取相應措施 flag=0。 ii=0。 while(flag1) //進入溫度設置頁面 { motor=0。 LED2=1。 if(flag2==1) //顯示 HIGH 、 LOW { write_(0x01)。 write_(0x80+12)。 disply_init3()。 disply_init0()。 write_(0x0f)。 } a=keeyboard()。 if(num1!=20) //對按鍵是否按下進行判斷 { if(a==10) //如果矩陣鍵盤 39。按下后 畢 業(yè) 實 習 報 告 36 { i1=0。 //判斷高溫度輸入是否為負數(shù) } else { flag5=1。+39。 flag4=0。 i++。 //將鍵盤按下的數(shù)字以數(shù)字存儲在 numt 變量中 } i1=1。 } else { if(i2) //輸入高溫度后,改變 LCD 的顯示地址 { write_(0x80+0x40+6)。 } else { 畢 業(yè) 實 習 報 告 37 write_(0x0C)。 delay(10)。 delay(10)。 flag3=0。 flag3=1。 //從 numt 取得高溫度 numlow=numt%
點擊復制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1