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

正文內容

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

2025-06-28 20:39本頁面
  

【正文】 0口為段碼輸入,P21~P24為位選/***************************************************/includeinclude //nop();延時函數(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。 //溫度設置切換鍵sbit add=P2^4。 //溫度加sbit dec=P2^5。 //溫度減int temp1=0。 //顯示當前溫度和設置溫度的標志位為 0 時顯示當前溫度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}。 //個位帶小數(shù)點的斷碼表uchar data temp_data[2]={0x00,0x00}。 //讀出溫度暫放uchar data display[5]={0x00,0x00,0x00,0x00,0x00}。 //顯示單元數(shù)據(jù),共 4 個數(shù)據(jù)和一個運算暫用/*****************11us 延時函數(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 復位函數(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 復位成功,繼續(xù)下一步}delay(45)。 //延時 500 uspresence=~DQ。}DQ=1。 //拉高電平return(presence)。}//****************DS18B20 寫命令函數(shù)******************////向 1 WIRE 總線上寫 1 個字節(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 個字節(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()。 //總線復位delay(200)。write_byte(0xcc)。 //發(fā)命令write_byte(0x44)。 //發(fā)轉換命令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é)合成一個整型變量return temp。 //返回溫度值}/****************溫度數(shù)據(jù)處理函數(shù)**********************///二進制高字節(jié)的低半字節(jié)和低字節(jié)的高半字節(jié)組成一字節(jié), 這//個字節(jié)的二進制轉換為十進制后, 就是溫度值的百、十、個位值,而剩下的低字節(jié)的低半字節(jié)轉化成十進制后, 就是溫度值的//小數(shù)部分/******************************************************/work_temp(uint tem){uchar n=0。if(tem6348) // 溫度值正負判斷{tem=65536tem。n=1。} // 負溫度求補碼, 標志位置 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。 //個位數(shù)據(jù)r=display[1]+display[2]*10+display[3]*100。/////符號位顯示判斷/////if(!display[3]){display[3]=0x0a。 //最高位為 0 時不顯示if(!display[2]){display[2]=0x0a。 //次高位為 0 時不顯示}}if(n){display[3]=0x0b。} //負溫度時最高位顯示 return(tem)。}void BEEP(){if((r=highamp。amp。r129)||rlow){beep=!beep。}else{ beep=0。}}//*********設置溫度顯示轉換************//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 時不顯示if(!display[2]) {display[2]=0x0a。 //次高位為 0 時不顯示}}if(n){display[3]=0x0b。 //負溫度時最高位顯示 }}//*********按鍵查詢程序**************//void keyscan(){int temp1。 //最高溫度和最低溫度標志位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++) //開機顯示0000{display[h]=0。}ow_reset()。 //開機先轉換一次write_byte(0xcc)。 //Skip ROMwrite_byte(0x44)。 //發(fā)轉換命令for(h=0。h100。h++) //開機顯示0000{scan()。}while(1){if (temp1==0){work_temp(read_temp())。//處理溫度數(shù)據(jù)BEEP()。 scan()。 //顯示溫度值 keyscan()。} else keyscan()。}}
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1