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

正文內(nèi)容

單片機(jī)課程設(shè)計(jì)報(bào)告-基于單片機(jī)的單總線溫度傳感器設(shè)計(jì)(參考版)

2025-06-09 22:02本頁面
  

【正文】 } Init_shumaguan()。 while(i) { while(j) { Output(SIGN,BAI,SHI,GE)。 SHI=yima2(SW[2])。//將各位數(shù)字分配到數(shù)碼管上 SIGN=yima(SW[0])。//將四位小數(shù)位取出存入數(shù)組XiaoShu2 XiaoShu=JiSuanXiaoShu(WenDu,XiaoShu2)。 WenDu=Temperature()。 uchar *SW,*XiaoShu2,SIGN,GE,SHI,BAI。}/*****************************主函數(shù)*****************************/void main(){ while(1) { char WenDu。 P1=0x01。 P0=figure4。 delay(1)。 P14=0。 //顯示個(gè)位(帶小數(shù)點(diǎn)) P14=1。 P1=0x04。 P0=figure2。 delay(1)。 P14=0。}void Output(uchar figure1,uchar figure2,uchar figure3,uchar figure4)//figure1,figure2,figure3,figure4分別為符號(hào)位,百位,十位,個(gè)位{ //負(fù)數(shù)顯示符號(hào)位,正數(shù)顯示百位 P14=1。 } return (GE_SHI_BAI_SIGN)。 //報(bào)錯(cuò)39。 //case Error:GE_SHI=table1[14]。 //負(fù)號(hào)39。 //case negative:GE_SHI_BAI_SIGN=table1[16]。 case 9: GE_SHI_BAI_SIGN=table2[9]。 case 8: GE_SHI_BAI_SIGN=table2[8]。 case 7: GE_SHI_BAI_SIGN=table2[7]。 case 6: GE_SHI_BAI_SIGN=table2[6]。 case 5: GE_SHI_BAI_SIGN=table2[5]。 case 4: GE_SHI_BAI_SIGN=table2[4]。 case 3: GE_SHI_BAI_SIGN=table2[3]。 case 2: GE_SHI_BAI_SIGN=table2[2]。 case 1: GE_SHI_BAI_SIGN=table2[1]。 switch(ge_shi_bai_sign) { case 0: GE_SHI_BAI_SIGN=table2[0]。 } return (GE_SHI_BAI_SIGN)。 //報(bào)錯(cuò)39。 //case Error:GE_SHI=table1[14]。 //負(fù)號(hào)39。 case negative: GE_SHI_BAI_SIGN=table1[16]。 case 9: GE_SHI_BAI_SIGN=table1[9]。 case 8: GE_SHI_BAI_SIGN=table1[8]。 case 7: GE_SHI_BAI_SIGN=table1[7]。 case 6: GE_SHI_BAI_SIGN=table1[6]。 case 5: GE_SHI_BAI_SIGN=table1[5]。 case 4: GE_SHI_BAI_SIGN=table1[4]。 case 3: GE_SHI_BAI_SIGN=table1[3]。 case 2: GE_SHI_BAI_SIGN=table1[2]。 case 1: GE_SHI_BAI_SIGN=table1[1]。 switch(ge_shi_bai_sign) { case 0: GE_SHI_BAI_SIGN=table1[0]。 return (tab)。tab[2]=shi。 } tab[0]=sign。//如果小數(shù)位全0,個(gè)位是補(bǔ)碼形式 if(k!=1) shi=(1CC)%10。After_dot[0]==0。After_dot[1]==0amp。After_dot[2]==0 amp。 k=After_dot[3]==0amp。 //分配小數(shù)位 } if(CC0) { sign=negative。 //分配十位 shi=CC%10。 /*溫度范圍是55~125*/ if(CC=0) { sign=CC/100。//小數(shù)部分返回小數(shù)點(diǎn)左移三位后的值}/***************************數(shù)位分配函數(shù)************************/uchar *shuweifenpei(char CC,unsigned short DD,uchar After_dot[4]){ uchar tab[4]。After_Dot[3]==0) XSW=0。After_Dot[2]==0amp。After_Dot[1]==0amp。 if(After_Dot[0]==0amp。amp。amp。amp。After_Dot[2]==1) XSW=(!After_Dot[3])*500+After_Dot[2]*After_Dot[1]==0amp。 if(After_Dot[0]==0amp。amp。 else//為負(fù)數(shù)時(shí)小數(shù)補(bǔ)碼表示 { if(After_Dot[0]==1)//最后一位是1,轉(zhuǎn)換為原碼時(shí)不用借位 XSW=(!After_Dot[3])*500+(!After_Dot[2])*250+(!After_Dot[1])*125+After_Dot[0]*62。//四位小數(shù)位以數(shù)組返回}/**************************小數(shù)位值的計(jì)算****************************/unsigned short JiSuanXiaoShu(char T1,uchar *After_Dot){ unsigned short XSW。 tplsb=tplsb1。i++) { AfterDot[i]=tplsbamp。 //用于取位 for(i=0。 //返回取出的溫度值整數(shù)部分,有符號(hào)}/*****************取出四位小數(shù)位**************/uchar *XiaoShuWei(void){ uchar i,AfterDot[4]。 T=tpmsb|tplsb。//讀取溫度 tplsb=tplsb4。//啟動(dòng)溫度轉(zhuǎn)換,需要750ms delay(1000)。 delay(1)。//溫度值低位字節(jié)(其中低4位為二進(jìn)制的小數(shù)部分) tpmsb=RdByte()。//skip rom命令 WrByte(0xbe)。//等待DS18B20給出應(yīng)答脈沖 delay(1)。//convert T命令}/********************讀取溫度值*******************/void RdTemp(void){ TxReset()。//延時(shí) WrByte(0xcc)。//產(chǎn)生復(fù)位脈沖,初始化DS18B20 RxWait()。 i++。//保持低電平在60us到120us之間 DQ=1。 i=8。 while(i0) i。 //延時(shí)15us DQ=1。 i++。 b=b1。j++) { btmp=bamp。 for(j=1。 uchar j。 } return (b)。i++) { j=RdBit()。 for(i=1。}/*******************讀取數(shù)據(jù)的一個(gè)字節(jié)***************/uchar RdByte(void){ uchar i,j,b。 while(i0) i。 b=DQ。 i++。 i++。 bit b。 while(i0) i。 while(~DQ)。}/****************等待應(yīng)答脈沖***********/void RxWait(void){ uint i。 //產(chǎn)生上升沿 i=4。 while(i0) i。 DQ=0。i++)。 while(t) for(i=0。sbit P14=P1^4。/****************帶小數(shù)點(diǎn)的數(shù)字09****************/uchar code table2[]={0xfd,0x61,0xdb,0xf3,0x67,0xb7,0xbf,0xe1,0xff,0xf7}。//溫度值低位字節(jié)uchar tpmsb。從這次的課程設(shè)計(jì)中,我真真正正的意識(shí)到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識(shí)用到實(shí)際當(dāng)中,學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次課程設(shè)計(jì)中的最大收獲。中斷設(shè)定子程序流程圖見下圖5 總 結(jié) 經(jīng)過將近數(shù)日的單片機(jī)課程設(shè)計(jì),終于完成了我的數(shù)字溫度計(jì)的設(shè)計(jì),雖然沒有完全達(dá)到設(shè)計(jì)要求,但從心底里說,還是高興的,在本次設(shè)計(jì)的過程中,我發(fā)現(xiàn)很多的問題,雖然以前還做過這樣的設(shè)計(jì)但這次設(shè)計(jì)真的讓我長(zhǎng)進(jìn)了很多,單片機(jī)課程設(shè)計(jì)重點(diǎn)就在于軟件算法的設(shè)計(jì),需要有很巧妙的程序算法,雖然以前寫過幾次程序,但我覺的寫好一個(gè)程序并不是一件簡(jiǎn)單的事,舉個(gè)例子,以前寫的那幾次,數(shù)據(jù)加減時(shí),我用的都是BCD碼,這一次,我全部用的都是16進(jìn)制的數(shù)直接加減,顯示處理時(shí)在用除法去刪分,感覺效果比較好,有好多的東西,只有我們?nèi)ピ囍隽?,才能真正的掌握,只學(xué)習(xí)理論有些東西是很難理解的,更談不上掌握。當(dāng)設(shè)計(jì)需要實(shí)現(xiàn)上下限報(bào)警時(shí),利用INT0口進(jìn)行中斷,set 鍵進(jìn)行上下限報(bào)警溫度設(shè)定,進(jìn)入溫度設(shè)定狀態(tài)后(按一下溫度設(shè)定鍵),首先會(huì)提示顯示“UP”字母,表示要用戶設(shè)定高溫報(bào)警溫度,按S3 鍵 ,表示本位數(shù)字+1,按S4 表示移向下一位,如果4 位高溫設(shè)定完畢,則顯示“DO”,表示要用戶設(shè)定低溫報(bào)警溫度。●中斷設(shè)定程序:實(shí)現(xiàn)設(shè)定上下限報(bào)警功能。●溫度測(cè)試及處理程序:對(duì)溫度芯片送過來的數(shù)據(jù)進(jìn)行處理,進(jìn)行判斷和顯示。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1