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

正文內(nèi)容

溫度的自動(dòng)控制系統(tǒng)畢業(yè)論文-資料下載頁(yè)

2025-06-28 20:39本頁(yè)面
  

【正文】 0口為段碼輸入,P21~P24為位選/***************************************************/includeinclude //nop();延時(shí)函數(shù)用define dm P0 //段碼輸出口define uchar unsigned chardefine uint unsigned intsbit DQ=P2^7。 //溫度輸入口sbit w0=P2^0。 //數(shù)碼管 4sbit w1=P2^1。 //數(shù)碼管 3sbit w2=P2^2。 //數(shù)碼管 2sbit w3=P2^3。 //數(shù)碼管 1sbit beep=P1^7。 //蜂鳴器sbit set=P2^6。 //溫度設(shè)置切換鍵sbit add=P2^4。 //溫度加sbit dec=P2^5。 //溫度減int temp1=0。 //顯示當(dāng)前溫度和設(shè)置溫度的標(biāo)志位為 0 時(shí)顯示當(dāng)前溫度uint t。uint h。uint temp。uchar r。uchar high=36,low=20。uchar sign。uchar q=0。uchar tt=0。uchar scale。//**************溫度小數(shù)部分用查表法***********//uchar code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09}。 //小數(shù)斷碼表uchar code table_dm[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40}。//共陰 LED 段碼表 0 1 2 3 4 5 6 7 8 9 不亮 uchar table_dm1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}。 //個(gè)位帶小數(shù)點(diǎn)的斷碼表uchar data temp_data[2]={0x00,0x00}。 //讀出溫度暫放uchar data display[5]={0x00,0x00,0x00,0x00,0x00}。 //顯示單元數(shù)據(jù),共 4 個(gè)數(shù)據(jù)和一個(gè)運(yùn)算暫用/*****************11us 延時(shí)函數(shù)************************/void delay(uint t){for(。t0。t)。}void scan(){int j。for(j=0。j4。j++){switch (j) { case 0:dm=table_dm[display[0] ]。 w0=0。delay(50)。w0=1。//xiaoshu case 1: dm=table_dm1[display[1]]。 w1=0。delay(50)。w1=1。//gewei case 2: dm=table_dm[display[2]]。 w2=0。delay(50)。w2=1。//shiwei case 3: dm=table_dm[display[3]]。 w3=0。delay(50)。w3=1。//baiwei //else{dm=table_dm[b3]。w3=0。delay(50)。w3=1。} } }}//***************DS18B20 復(fù)位函數(shù)*********************//ow_reset(void){char presence=1。while(presence){while(presence){ DQ=1。_nop_()。_nop_()。//從高拉倒低DQ=0。delay(50)。 //550usDQ=1。delay(6)。 //66uspresence=DQ。 //presence=0 復(fù)位成功,繼續(xù)下一步}delay(45)。 //延時(shí) 500 uspresence=~DQ。}DQ=1。 //拉高電平return(presence)。}//****************DS18B20 寫(xiě)命令函數(shù)******************////向 1 WIRE 總線上寫(xiě) 1 個(gè)字節(jié)void write_byte(uchar val){uchar i。for(i=8。i0。i){DQ=1。_nop_()。_nop_()。//從高拉倒低DQ=0。_nop_()。_nop_()。_nop_()。_nop_()。 //5 usDQ=valamp。0x01。 //最低位移出delay(6)。 //66usval=val/2。 //右移 1 位}DQ=1。delay(1)。}/**************DS18B20 讀 1 字節(jié)函數(shù)*******************///從總線上取 1 個(gè)字節(jié)uchar read_byte(void){uchar i。uchar value=0。for(i=8。i0。i){DQ=1。_nop_()。_nop_()。value=1。DQ=0。_nop_()。_nop_()。_nop_()。_nop_()。 //4usDQ=1。_nop_()。_nop_()。_nop_()。_nop_()。 //4usif(DQ)value|=0x80。delay(6)。 //66us}DQ=1。return(value)。}/*****************讀出溫度函數(shù)***********************/read_temp(){ow_reset()。 //總線復(fù)位delay(200)。write_byte(0xcc)。 //發(fā)命令write_byte(0x44)。 //發(fā)轉(zhuǎn)換命令ow_reset()。delay(1)。write_byte(0xcc)。 //發(fā)命令write_byte(0xbe)。temp_data[0]=read_byte()。//讀溫度值的低字節(jié)temp_data[1]=read_byte()。//讀溫度值的高字節(jié)temp=temp_data[1]。temp=8。temp=temp|temp_data[0]。 // 兩字節(jié)合成一個(gè)整型變量return temp。 //返回溫度值}/****************溫度數(shù)據(jù)處理函數(shù)**********************///二進(jìn)制高字節(jié)的低半字節(jié)和低字節(jié)的高半字節(jié)組成一字節(jié), 這//個(gè)字節(jié)的二進(jìn)制轉(zhuǎn)換為十進(jìn)制后, 就是溫度值的百、十、個(gè)位值,而剩下的低字節(jié)的低半字節(jié)轉(zhuǎn)化成十進(jìn)制后, 就是溫度值的//小數(shù)部分/******************************************************/work_temp(uint tem){uchar n=0。if(tem6348) // 溫度值正負(fù)判斷{tem=65536tem。n=1。} // 負(fù)溫度求補(bǔ)碼, 標(biāo)志位置 1display[4]=temamp。0x0f。 // 取小數(shù)部分的值display[0]=ditab[display[4]]。 // 存入小數(shù)部分顯示值display[4]=tem4。 // 取中間八位,即整數(shù)部分的值display[3]=display[4]/100。 // 取百位數(shù)據(jù)暫存display[1]=display[4]%100。 // 取后兩位數(shù)據(jù)暫存display[2]=display[1]/10。 // 取十位數(shù)據(jù)暫存display[1]=display[1]%10。 //個(gè)位數(shù)據(jù)r=display[1]+display[2]*10+display[3]*100。/////符號(hào)位顯示判斷/////if(!display[3]){display[3]=0x0a。 //最高位為 0 時(shí)不顯示if(!display[2]){display[2]=0x0a。 //次高位為 0 時(shí)不顯示}}if(n){display[3]=0x0b。} //負(fù)溫度時(shí)最高位顯示 return(tem)。}void BEEP(){if((r=highamp。amp。r129)||rlow){beep=!beep。}else{ beep=0。}}//*********設(shè)置溫度顯示轉(zhuǎn)換************//void xianshi(int horl){int n=0。if(horl128){horl=256horl。n=1。}display[3]=horl/100。display[3]=display[3]amp。0x0f。display[2]=horl%100/10。display[1]=horl%10。display[0]=0。if(!display[3]){display[3]=0x0a。 //最高位為 0 時(shí)不顯示if(!display[2]) {display[2]=0x0a。 //次高位為 0 時(shí)不顯示}}if(n){display[3]=0x0b。 //負(fù)溫度時(shí)最高位顯示 }}//*********按鍵查詢程序**************//void keyscan(){int temp1。 //最高溫度和最低溫度標(biāo)志位if(set==0){while(1){delay(500)。 //消抖if(set==0){temp1++。while(!set)scan()。}if(temp1==1){xianshi(high)。scan()。if(add==0){while(!add)scan()。high+=1。}if(dec==0){while(!dec)scan()。high=1。}}if(temp1==2){xianshi(low)。if(add==0){ while(!add)scan()。low+=1。}if(dec==0){while(!dec)scan()。low=1。}scan()。}if(temp1=3){temp1=0。break。}}}}/****************主函數(shù)************************/void main(){dm=0x00。 //初始化端口w0=0。w1=0。w2=0。w3=0。for(h=0。h4。h++) //開(kāi)機(jī)顯示0000{display[h]=0。}ow_reset()。 //開(kāi)機(jī)先轉(zhuǎn)換一次write_byte(0xcc)。 //Skip ROMwrite_byte(0x44)。 //發(fā)轉(zhuǎn)換命令for(h=0。h100。h++) //開(kāi)機(jī)顯示0000{scan()。}while(1){if (temp1==0){work_temp(read_temp())。//處理溫度數(shù)據(jù)BEEP()。 scan()。 //顯示溫度值 keyscan()。} else keyscan()。}}
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1