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

正文內(nèi)容

基于單片機的單總線溫度計設(shè)計(文件)

2025-07-07 12:52 上一頁面

下一頁面
 

【正文】 顯示“UP”,讓用戶重新進行溫度設(shè)定。由于DS18B20的測量精度只有177。它充分利用監(jiān)控計算機的處理能力,在監(jiān)控計算機上用線性插補的數(shù)學方法對其進行誤差校正補償,能輕易地將其提高其精度。//溫度值低位字節(jié)uchar tpmsb。sbit P14=P1^4。i++)。 while(i0) i。}/****************等待應(yīng)答脈沖***********/void RxWait(void){ uint i。 while(i0) i。 i++。 b=DQ。}/*******************讀取數(shù)據(jù)的一個字節(jié)***************/uchar RdByte(void){ uchar i,j,b。i++) { j=RdBit()。 uchar j。j++) { btmp=bamp。 i++。 while(i0) i。//保持低電平在60us到120us之間 DQ=1。//產(chǎn)生復(fù)位脈沖,初始化DS18B20 RxWait()。//convert T命令}/********************讀取溫度值*******************/void RdTemp(void){ TxReset()。//skip rom命令 WrByte(0xbe)。 delay(1)。//讀取溫度 tplsb=tplsb4。 //返回取出的溫度值整數(shù)部分,有符號}/*****************取出四位小數(shù)位**************/uchar *XiaoShuWei(void){ uchar i,AfterDot[4]。i++) { AfterDot[i]=tplsbamp。//四位小數(shù)位以數(shù)組返回}/**************************小數(shù)位值的計算****************************/unsigned short JiSuanXiaoShu(char T1,uchar *After_Dot){ unsigned short XSW。amp。After_Dot[1]==0amp。amp。amp。After_Dot[1]==0amp。After_Dot[3]==0) XSW=0。 /*溫度范圍是55~125*/ if(CC=0) { sign=CC/100。 //分配小數(shù)位 } if(CC0) { sign=negative。After_dot[2]==0 amp。After_dot[0]==0。 } tab[0]=sign。 return (tab)。 case 1: GE_SHI_BAI_SIGN=table1[1]。 case 3: GE_SHI_BAI_SIGN=table1[3]。 case 5: GE_SHI_BAI_SIGN=table1[5]。 case 7: GE_SHI_BAI_SIGN=table1[7]。 case 9: GE_SHI_BAI_SIGN=table1[9]。 //負號39。 //報錯39。 switch(ge_shi_bai_sign) { case 0: GE_SHI_BAI_SIGN=table2[0]。 case 2: GE_SHI_BAI_SIGN=table2[2]。 case 4: GE_SHI_BAI_SIGN=table2[4]。 case 6: GE_SHI_BAI_SIGN=table2[6]。 case 8: GE_SHI_BAI_SIGN=table2[8]。 //case negative:GE_SHI_BAI_SIGN=table1[16]。 //case Error:GE_SHI=table1[14]。 } return (GE_SHI_BAI_SIGN)。 P14=0。 P0=figure2。 //顯示個位(帶小數(shù)點) P14=1。 delay(1)。 P1=0x01。 uchar *SW,*XiaoShu2,SIGN,GE,SHI,BAI。//將四位小數(shù)位取出存入數(shù)組XiaoShu2 XiaoShu=JiSuanXiaoShu(WenDu,XiaoShu2)。 SHI=yima2(SW[2])。 } Init_shumaguan()。 while(i) { while(j) { Output(SIGN,BAI,SHI,GE)。//將各位數(shù)字分配到數(shù)碼管上 SIGN=yima(SW[0])。 WenDu=Temperature()。}/*****************************主函數(shù)*****************************/void main(){ while(1) { char WenDu。 P0=figure4。 P14=0。 P1=0x04。 delay(1)。}void Output(uchar figure1,uchar figure2,uchar figure3,uchar figure4)//figure1,figure2,figure3,figure4分別為符號位,百位,十位,個位{ //負數(shù)顯示符號位,正數(shù)顯示百位 P14=1。 //報錯39。 //負號39。 case 9: GE_SHI_BAI_SIGN=table2[9]。 case 7: GE_SHI_BAI_SIGN=table2[7]。 case 5: GE_SHI_BAI_SIGN=table2[5]。 case 3: GE_SHI_BAI_SIGN=table2[3]。 case 1: GE_SHI_BAI_SIGN=table2[1]。 } return (GE_SHI_BAI_SIGN)。 //case Error:GE_SHI=table1[14]。 case negative: GE_SHI_BAI_SIGN=table1[16]。 case 8: GE_SHI_BAI_SIGN=table1[8]。 case 6: GE_SHI_BAI_SIGN=table1[6]。 case 4: GE_SHI_BAI_SIGN=table1[4]。 case 2: GE_SHI_BAI_SIGN=table1[2]。 switch(ge_shi_bai_sign) { case 0: GE_SHI_BAI_SIGN=table1[0]。tab[2]=shi。//如果小數(shù)位全0,個位是補碼形式 if(k!=1) shi=(1CC)%10。After_dot[1]==0amp。 k=After_dot[3]==0amp。 //分配十位 shi=CC%10。//小數(shù)部分返回小數(shù)點左移三位后的值}/***************************數(shù)位分配函數(shù)************************/uchar *shuweifenpei(char CC,unsigned short DD,uchar After_dot[4]){ uchar tab[4]。After_Dot[2]==0amp。 if(After_Dot[0]==0amp。amp。After_Dot[2]==1) XSW=(!After_Dot[3])*500+After_Dot[2]* if(After_Dot[0]==0amp。 else//為負數(shù)時小數(shù)補碼表示 { if(After_Dot[0]==1)//最后一位是1,轉(zhuǎn)換為原碼時不用借位 XSW=(!After_Dot[3])*500+(!After_Dot[2])*250+(!After_Dot[1])*125+After_Dot[0]*62。 tplsb=tplsb1。 //用于取位 for(i=0。 T=tpmsb|tplsb。//啟動溫度轉(zhuǎn)換,需要750ms delay(1000)。//溫度值低位字節(jié)(其中低4位為二進制的小數(shù)部分) tpmsb=RdByte()。//等待DS18B20給出應(yīng)答脈沖 delay(1)。//延時 WrByte(0xcc)。 i++。 i=8。 //延時15us DQ=1。 b=b1。 for(j=1。 } return (b)。 for(i=1。 while(i0) i。 i++。 bit b。 while(~DQ)。 //產(chǎn)生上升沿 i=4。 DQ=0。 while(t) for(i=0。/****************帶小數(shù)點的數(shù)字09****************/uchar code table2[]={0xfd,0x61,0xdb,0xf3,0x67,0xb7,0xbf,0xe1,0xff,0xf7}。從這次的課程設(shè)計中,我真真正正的意識到,在以后的學習中,要理論聯(lián)系實際,把我們所學的理論知識用到實際當中,學習單機片機更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次課程設(shè)計中的最大收獲。由于DS18B20 是基于帶隙結(jié)構(gòu)的數(shù)字式溫度傳感器,PN 結(jié)增量電壓正比于IC 絕對溫度(PTAT),它的測溫精度較高,其誤差在時間和外部環(huán)境變化的條件下,保持相當高的穩(wěn)定性。由于DS18B20 支持單總線協(xié)議,我們可以將多個DS18B20 可以并聯(lián)到3 根或2 根線上,CPU 只需一根端口線就能與諸多DS18B20 通信,占用較少的微處理器的端口就可以實現(xiàn)多點測溫監(jiān)控系統(tǒng)。:圖 DS18B20初始化流程圖 圖 溫度檢測模塊DS18B20在單片機控制下分三個階段:●18B20 初始化:●讀18B20時序::●寫18B20時序:寫18B20 圖 圖 報警模塊 圖 報警模塊子程序流程圖 中斷設(shè)定模塊中斷模塊采用了外中斷和內(nèi)中斷套用方法。各模塊程序功能如下:●數(shù)碼管顯示程序:向數(shù)碼的顯示送數(shù),控制系統(tǒng)的顯示部分。這里將各執(zhí)行模塊一一列出,并為每一個執(zhí)行模塊進行功能定義和接口定義。圖 蜂鳴器電路連接圖4 軟件設(shè)計整個系統(tǒng)的功能是由硬件電路配合軟件來實現(xiàn)的,當硬件基本定型后,軟件的功能也就基本定下來了。所有讀時序至少需要60us。如果線上事高電平,就是寫1,如果是低電平,就是寫0。寫時間時序:當主機把數(shù)據(jù)從邏輯高電平拉到邏輯低電平的時候,寫時間隙開始。在單總線器件檢測到上升沿后,延時15~60us,接著通過拉低總線60~240us,以產(chǎn)生應(yīng)答脈沖。(4)然后就可以從剛才的二維數(shù)組匹配在線的溫度傳感器,隨后發(fā)溫度讀取命令就可以獲得對應(yīng)的度值了。軟件實現(xiàn)DS18B20的工作嚴格遵守單總線協(xié)議:(1)主機首先發(fā)出一個復(fù)位脈沖,信號線上的DS18B20 器件被復(fù)位。在主機檢測到應(yīng)答脈沖后,就可以發(fā)出ROM 命令。如果出現(xiàn)序列混亂,則單總線器件不會響應(yīng)主機。在時間片結(jié)束時,I/O 引腳經(jīng)過外部的上_鱯__9L_€%拉電阻拉回高電平
點擊復(fù)制文檔內(nèi)容
電大資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1