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

正文內(nèi)容

基于18b20的溫度測(cè)量?jī)x課程設(shè)計(jì)報(bào)告-資料下載頁(yè)

2025-06-28 00:13本頁(yè)面
  

【正文】 附錄 系統(tǒng)源程序include include //_nop_()。延時(shí)函數(shù)用define Disdata P0 //段碼輸出口define discan P2 //掃描口define uchar unsigned chardefine uint unsigned intsbit DQ=P1^3。 uint h。 uint temp。uchar code dis_7[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40}。 uchar code scan_con[4]={0xfb,0xfa,0xf9,0xf8}。 //列掃描控制字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)。}/****************顯示掃描函數(shù)***************************/scan(){ char k。 for(k=1。k4。k++) //4位LED掃描控制 { Disdata=dis_7[display[k]]。 //數(shù)據(jù)顯示 discan=scan_con[k]。 //位選 delay(200)。 }}/****************DS18B20復(fù)位函數(shù)************************/ow_reset(void){ char presence=1。 while(presence) { while(presence) { DQ=1。_nop_()。_nop_()。 //從高拉倒低 DQ=0。 delay(50)。 //550 us DQ=1。 delay(6)。 //66 us presence=DQ。 //presence=0 復(fù)位成功,繼續(xù)下一步 } delay(45)。 //延時(shí)500 us presence=~DQ。 } DQ=1。 //拉高電平}/****************DS18B20寫(xiě)命令函數(shù)************************///向1WIRE 總線(xiàn)上寫(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 us DQ=valamp。0x01。 //最低位移出 delay(6)。 //66 us val=val/2。 //右移1位 } DQ=1。 delay(1)。}/****************DS18B20讀1字節(jié)函數(shù)************************///從總線(xiàn)上取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_()。 //4 us DQ=1。_nop_()。_nop_()。_nop_()。_nop_()。 //4 us if(DQ)value|=0x80。 delay(6)。 //66 us } DQ=1。 return(value)。}/****************讀出溫度函數(shù)************************/read_temp(){ ow_reset()。 //總線(xiàn)復(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。 //返回溫度值}work_temp(uint tem){ uchar n=0。 if(tem6348) // 溫度值正負(fù)判斷 {tem=65536tem。n=1。} // 負(fù)溫度求補(bǔ)碼,標(biāo)志位置1 display[4]=temamp。0x0f。 // 取小數(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。 if(!display[3]) { display[3]=0x0a。 //最高位為0時(shí)不顯示 if(!display[2]) { display[2]=0x0a。 //次高位為0時(shí)不顯示 } } if(n){display[3]=0x0b。} //負(fù)溫度時(shí)最高位顯示}void main(){ Disdata=0xff。 //初始化端口 discan=0xff。 for(h=0。h4。h++) //開(kāi)機(jī)顯示0000 {display[h]=0。} ow_reset()。 //復(fù)位 write_byte(0xcc)。 //Skip ROM write_byte(0x44)。 //發(fā)轉(zhuǎn)換命令 for(h=0。h100。h++) //開(kāi)機(jī)顯示0000 {scan()。} while(1) { work_temp(read_temp())。 //處理溫度數(shù)據(jù) scan()。 //顯示溫度值 }}
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1