畢業(yè)設(shè)計(jì)(論文)-基于DS18B20的單片機(jī)設(shè)計(jì)(多點(diǎn)測(cè)溫).docx
《畢業(yè)設(shè)計(jì)(論文)-基于DS18B20的單片機(jī)設(shè)計(jì)(多點(diǎn)測(cè)溫).docx》由會(huì)員分享,可在線閱讀,更多相關(guān)《畢業(yè)設(shè)計(jì)(論文)-基于DS18B20的單片機(jī)設(shè)計(jì)(多點(diǎn)測(cè)溫).docx(37頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、目錄一、系統(tǒng)硬件部分設(shè)計(jì)21系統(tǒng)總體設(shè)計(jì)方案2(1)系統(tǒng)的技術(shù)指標(biāo)2(2)溫度測(cè)量方案2(3)系統(tǒng)方案及元件的選擇32系統(tǒng)的工作模塊4(1)AT89C51芯片4(2) LCD顯示5(3)溫度采集模塊5(4)聲光模塊5(5)驅(qū)動(dòng)模塊63系統(tǒng)電路原理圖7二、系統(tǒng)軟件部分設(shè)計(jì)81系統(tǒng)軟件設(shè)計(jì)方案8(1)主程序流程圖8(2)顯示模塊流程圖9(3)溫度采集模塊流程圖92程序清單10三、系統(tǒng)仿真過程及結(jié)果111.Keil編譯及仿真112.Proteus仿真12四、系統(tǒng)實(shí)物制作與調(diào)試151系統(tǒng)實(shí)物器件清單152實(shí)物制作過程153系統(tǒng)調(diào)試過程與功能實(shí)現(xiàn)16(1)實(shí)驗(yàn)中遇到的問題和解決方案16(2)系統(tǒng)的功能實(shí)
2、現(xiàn)16五、心得體會(huì):17六、參考文件18附錄19附錄一(系統(tǒng)實(shí)物器件清單)19附錄二(源程序)21一、系統(tǒng)硬件部分設(shè)計(jì)1系統(tǒng)總體設(shè)計(jì)方案 如圖1所示:圖1系統(tǒng)方案本設(shè)計(jì)目的在于通過測(cè)量溫度來判斷外部設(shè)備是否工作,以維持室溫的恒定,于是我們測(cè)溫模塊DS18B20來采集不同地方的溫度,通過單片機(jī)89C51來判斷溫度是否在設(shè)定范圍內(nèi),并輸出到顯示模塊LCD1602,顯示溫度數(shù)值。如果溫度在可控范圍內(nèi),LED燈將顯示正常工作,蜂鳴器不工作;如果溫度超過設(shè)定值,系統(tǒng)將驅(qū)動(dòng)降溫模塊,電機(jī)將開始運(yùn)轉(zhuǎn),LED燈顯示超溫工作,蜂鳴器報(bào)警;如果溫度低于設(shè)定值,系統(tǒng)將驅(qū)動(dòng)升溫模塊,電阻絲將開始通電,將電能轉(zhuǎn)化成熱能
3、,LED燈將顯示紅色報(bào)警,蜂鳴器報(bào)警。(1)系統(tǒng)的技術(shù)指標(biāo)利用DS18B20和AT89C51設(shè)計(jì)一個(gè)溫度測(cè)量系統(tǒng),系統(tǒng)功能:實(shí)現(xiàn)三點(diǎn)溫度檢測(cè),用LCD顯示溫度;溫度測(cè)量范圍:-55125,精度0.1。設(shè)定溫度上下限,當(dāng)溫度高于上限值或低于下限值時(shí),系統(tǒng)能自動(dòng)驅(qū)動(dòng)降溫與升溫設(shè)備工作。(2)溫度測(cè)量方案由于多點(diǎn)溫度測(cè)量是本設(shè)計(jì)的主要內(nèi)容,所以溫度測(cè)量的精確非常重要,為了提高溫度測(cè)量匯總的準(zhǔn)確度,本設(shè)計(jì)采用了使用DS18B20溫度測(cè)量模塊直接對(duì)溫度進(jìn)行測(cè)量。然后將多個(gè)DS18B20溫度測(cè)量模塊得到的數(shù)據(jù)進(jìn)行采集,可以達(dá)到多點(diǎn)的溫度精確測(cè)量。DS18B20的64位ROM中存儲(chǔ)著器件獨(dú)一無二的序列號(hào),緩
4、存器中包含兩字節(jié)的溫度寄存器,用于存儲(chǔ)溫度傳感器的數(shù)字輸出,緩存器中還提供一字節(jié)的上線警報(bào)觸發(fā)(TH)和下線警報(bào)觸發(fā)(TL)寄存器,和一字節(jié)的配置寄存器,使用者可以通過配置寄存器來設(shè)置溫度轉(zhuǎn)換的精度。緩存器的第五字節(jié)、第六字節(jié)和第七字節(jié)為器件內(nèi)部保留使用。第八字節(jié)含有循環(huán)冗余碼(CRC)。使用寄生電源時(shí),DS18B20不需要額外的供電電源,當(dāng)總線為新電平時(shí),功率由單總線上的上拉電阻通過DQ引腳提供;高電平總線信號(hào)同時(shí)也向內(nèi)部電容Cap充電,Cap在總線低電平時(shí)為器件供電。DS18B20中溫度數(shù)據(jù)是以帶符號(hào)位的16位補(bǔ)碼存儲(chǔ)在溫度寄存器中的,符號(hào)位說明溫度是正值還是負(fù)值,正值時(shí),S=0;負(fù)值時(shí),
5、S=1。DS18B20采用嚴(yán)格的單總線通信協(xié)議,以保證數(shù)據(jù)的完整性。該協(xié)議定義了6鐘信號(hào)類型,即復(fù)位脈沖、應(yīng)答脈沖、寫0、寫1、讀0和讀1.。除了應(yīng)答脈沖,所有這些信號(hào)都有主機(jī)發(fā)出同步信號(hào)。總線上傳輸?shù)乃袛?shù)據(jù)和命令都是字節(jié)的低位在前。在寫時(shí)序開始后的1560us期間,DS18B20采樣總線的狀態(tài)。如果總線為高電平,則邏輯1被寫入DS18B20;如果總線為低電平,則邏輯0被寫入DS18B20.。每個(gè)讀時(shí)序均由主機(jī)發(fā)起,拉低總線至少1us。在主機(jī)發(fā)起讀時(shí)序后,DS18B20開始在總線上傳送0或1。若DS18B20發(fā)送1,則保持總線為高電平;若發(fā)送0,則拉低總線,當(dāng)傳送0時(shí),DS18B20在該時(shí)序
6、結(jié)束時(shí)釋放總線,再由上拉電阻將總線拉回空閑狀態(tài)。DS18B20發(fā)出的數(shù)據(jù)在讀時(shí)序下降沿起始后的15us內(nèi)有效,因此主機(jī)必須在讀時(shí)序開始后的15us內(nèi)釋放總線,并采樣總線狀態(tài)。DS18B20在使用時(shí),一般采用單片機(jī)來進(jìn)行數(shù)據(jù)采集。只需將DS18B20信號(hào)線與單片機(jī)一位I/O線相連,且單片機(jī)的一位I/O線可掛接多個(gè)DS18B20,從而實(shí)現(xiàn)多點(diǎn)溫度測(cè)量。(3)系統(tǒng)方案及元件的選擇機(jī)型的選擇,通過對(duì)系統(tǒng)大致程序的估計(jì)和系統(tǒng)工作速度的估計(jì)以及I/O口需求量的估計(jì),考慮價(jià)格因素、元器件市場(chǎng)因素,選定AT89C51單片機(jī)作為系統(tǒng)的主要控制芯片。各種經(jīng)過DS18B20測(cè)量得到的溫度值的電信號(hào)都需要經(jīng)過LCD顯
7、示出來,考慮到被測(cè)量的有效位數(shù)及其富裕量,選擇LM016L液晶顯示模塊進(jìn)行顯示,由于需要顯示的數(shù)字較多,需要進(jìn)行排版處理,才能使得溫度值能夠更加直觀地顯示出來,選擇LM016L液晶顯示模塊進(jìn)行顯示排版。由于升溫和降溫時(shí),需要進(jìn)行聲音報(bào)警和燈光報(bào)警,所以采用LED指示燈和蜂鳴器進(jìn)行報(bào)警提示。由于該電路的設(shè)計(jì)需要對(duì)升溫和降溫做出反應(yīng),在升溫時(shí)散熱,在降溫時(shí)發(fā)熱,所以采用電動(dòng)機(jī)模塊和電阻絲模塊,在升溫時(shí)發(fā)電機(jī)啟動(dòng),帶動(dòng)風(fēng)扇進(jìn)行散熱, 在降溫時(shí)電阻絲模塊接入電路,通過電流熱效應(yīng)進(jìn)行放熱。2系統(tǒng)的工作模塊(1)AT89C51芯片51 單片機(jī)是一塊芯片集成了 CPU、RAM、ROM、定時(shí)/計(jì)數(shù)器和多功能的
8、 I/O 口。 運(yùn)算模塊由DS18B20、設(shè)備和顯示屏組成。 單片機(jī)通過對(duì)DS18B20輸入數(shù)據(jù)的處理,來判斷是否啟動(dòng)設(shè)備。如果溫度超過所設(shè)置的上限值,單片機(jī)將在電機(jī)的輸出口置1,啟動(dòng)電機(jī)散熱,同時(shí)高溫指示燈將亮起,蜂鳴器工作;如果溫度低于所設(shè)置的下限值,電阻絲工作供熱,低溫指示燈將亮起,蜂鳴器工作;在所設(shè)置的溫度范圍內(nèi),設(shè)備將不會(huì)工作,綠燈亮起。如圖2所示:圖2 AT89C51(2) LCD顯示本設(shè)計(jì)采用的是 LCD 液晶顯示輸出數(shù)據(jù)。液晶顯示器 LM016L 液晶顯示器 LCD液晶顯示模塊引出引腳標(biāo)號(hào)為D7.0、RS、RW、E,接入單片機(jī)引腳P07.0、P20、P21 、P22如圖3所示:
9、 圖3液晶顯示圖(3)溫度采集模塊本設(shè)計(jì)采用DS18B20模塊采集和輸送溫度,溫度采集模塊引出引腳標(biāo)號(hào)為DQ-A、DQ-B、DQ-C接入單片機(jī)引腳P35、P36、P37。連接方式如圖4所示: 圖4 DS18B20(4)聲光模塊LED指示燈LED指示燈是單片機(jī)系統(tǒng)中最常用的顯示設(shè)備,用戶可以根據(jù)指示燈的亮滅狀況判斷設(shè)備的工作狀態(tài)。指示燈需要完成的任務(wù)有:檢查設(shè)備的運(yùn)行狀態(tài),如果設(shè)備沒啟動(dòng),則相應(yīng)的指示燈亮起,其他指示燈不工作;如果設(shè)備啟動(dòng),則相應(yīng)的指示燈亮起,其他不工作設(shè)備的指示燈熄滅,同時(shí)以不同顏色的指示燈來區(qū)別工作狀況,使用戶可以更加有順序和效率的操作設(shè)備。LED指示模塊引出引腳LED-A、
10、LED-B、LED-C、MOTOR-A、MOTOR-B、MOTOR-C、HEAT-A、HEAT-B、HEAT-C接入單片機(jī)引腳P24、P25、P26、P27、P30、P31、P32、P33、P34。如圖5所示。圖5 LED指示燈警報(bào)本設(shè)計(jì)采用揚(yáng)聲器speaker警報(bào)模塊引出引腳BEE,接入單片機(jī)引腳P23連接方式如圖6所示:圖6蜂鳴器(5)驅(qū)動(dòng)模塊電動(dòng)機(jī)驅(qū)動(dòng)電動(dòng)機(jī)屬于強(qiáng)電設(shè)備,在弱電設(shè)備中無法應(yīng)用,所以電動(dòng)機(jī)的驅(qū)動(dòng)就需要使用繼電器,繼電器是弱電驅(qū)動(dòng)強(qiáng)電的中間設(shè)備,單片機(jī)可以在繼電器的控制端輸入一個(gè)高電平信號(hào),使繼電器的銜鐵吸和,從而啟動(dòng)電動(dòng)機(jī)。電動(dòng)機(jī)驅(qū)動(dòng)模塊引出引腳MOTOR-A、MOTOR-
11、B、MOTOR-C,接入單片機(jī)引腳P27、P30、P31。如圖7所示:圖7電動(dòng)機(jī)的連接圖發(fā)熱電阻絲驅(qū)動(dòng)發(fā)熱電阻絲的驅(qū)動(dòng)原理同電動(dòng)機(jī)的驅(qū)動(dòng)一樣,利用繼電器使設(shè)備接入電源從而工作。電阻絲驅(qū)動(dòng)模塊引出引腳HEAT-A、HEAT-B、HEAT-C,接入單片機(jī)引腳P32、P33、P34.如圖8所示:圖8電阻絲的連接圖3系統(tǒng)電路原理圖二、系統(tǒng)軟件部分設(shè)計(jì)1系統(tǒng)軟件設(shè)計(jì)方案(軟件流程圖)(1)主程序流程圖主程序通過對(duì)溫度采集模塊輸送的信息進(jìn)行處理,并在LCD顯示處理,如圖 9.圖9主程序流程圖(2)顯示模塊流程圖通過單片機(jī)向顯示模塊寫入命令和數(shù)據(jù),對(duì)顯示方式和顯示內(nèi)容作出選擇,如圖10.圖10顯示模塊流程圖
12、(3)溫度采集模塊流程圖DS18B20溫度采集模塊的工作時(shí)序包括:初始化時(shí)序、寫時(shí)序和讀時(shí)序,如圖11. 圖11溫度采集模塊流程圖2程序清單(見附錄二)三、系統(tǒng)仿真過程及結(jié)果1.Keil編譯及仿真將所編輯的C程序?qū)懭隟eil軟件,并運(yùn)行仿真,所得程序編譯無誤,如圖12。圖12編譯程序截圖點(diǎn)擊軟件右上角的程序仿真按鈕,對(duì)所編譯成功的程序進(jìn)行仿真,結(jié)果如圖13。圖13運(yùn)行程序截圖2.Proteus仿真接通電源開關(guān)后,仿真圖如圖14 15 16 17和18所示:LCD、DS18B20開始工作。DS18B20溫度數(shù)值為27.0、27.0、27.0LCD示數(shù)分別為27.0、27.0、27.0未超過溫度上
13、下限,電阻絲模塊、電動(dòng)機(jī)模塊不工作,如圖14。圖14調(diào)整DS18B20感受到的溫度值為31.5、33.0、29.4LCD示數(shù)為31.5、33.0、29.4未超過溫度上下限,所以電動(dòng)機(jī)模塊和電阻絲模塊都不動(dòng)作,如圖15。圖15調(diào)整DS18B20溫度數(shù)值為31.5、33.0、40.9LCD顯示為31.5、33.0、40.9第三組溫度超過溫度上限,第三組對(duì)應(yīng)發(fā)動(dòng)機(jī)模塊動(dòng)作,電阻絲模塊不動(dòng)做,如圖16。圖16調(diào)整DS18B20溫度數(shù)值分別為31.5、33.0、19.7,LCD顯示為31.5、33.0、19.7,由于第三組低于溫度下限,所以第三組對(duì)應(yīng)電阻絲模塊動(dòng)作,電動(dòng)機(jī)模塊不動(dòng)作,如圖17。圖17調(diào)整
14、DS18B20溫度數(shù)值為39.7、39.0、20.0LCD顯示為39.7、39.0、20.0按住KM2按鈕,給B降溫未超過溫度上下限,但電動(dòng)機(jī)模塊動(dòng)作,電阻絲模塊沒有動(dòng)作。圖18四、系統(tǒng)實(shí)物制作與調(diào)試1系統(tǒng)實(shí)物器件清單(見附錄一)2實(shí)物制作過程為了縮短開發(fā)周期,采用購買完整的單片機(jī)開發(fā)板進(jìn)行實(shí)驗(yàn),購買單片機(jī)開發(fā)板中只包含本實(shí)驗(yàn)中的AT89C51芯片、AT89C51的周邊電路和電動(dòng)機(jī)模塊和電阻絲模塊,為了完善開發(fā)元件,我們購買了LCD液晶顯示模塊,型號(hào)為L(zhǎng)M016L、三塊DS18B20芯片和若干杜邦線。因?yàn)殡妱?dòng)機(jī)模塊和電阻絲模塊并沒有與開發(fā)板直接相連,所以采用杜邦線將電動(dòng)機(jī)模塊和電阻絲模塊與開發(fā)
15、板進(jìn)行連接,對(duì)照電路圖進(jìn)行完善連接。實(shí)物圖如圖19所示。圖193系統(tǒng)調(diào)試過程與功能實(shí)現(xiàn)(1)實(shí)驗(yàn)中遇到的問題和解決方案實(shí)驗(yàn)初期,按照實(shí)驗(yàn)方案在溫度范圍內(nèi)的LED應(yīng)該點(diǎn)亮,仿真成功,但是應(yīng)用于實(shí)驗(yàn)中的單片機(jī)開發(fā)板卻并沒成功,經(jīng)過多次更換LED之后依然無發(fā)點(diǎn)亮,通過與老師、同學(xué)的討論和分析,得出結(jié)論:在單片機(jī)開發(fā)板中使用的LED燈是共陽極連接的,所以實(shí)驗(yàn)現(xiàn)象與仿真結(jié)果無法一致。硬件修改過于繁瑣,所以我們?cè)谲浖闯绦蛘Z言上做了修改,原是“0”點(diǎn)亮的程序,我們改為“1”點(diǎn)亮,通過軟件即程序上的修改,我們達(dá)到了仿真結(jié)果。多次實(shí)驗(yàn)以后,我們將位定義直接集中在端口頭文件,方便進(jìn)行調(diào)試。我們將三組溫度采集和處
16、理模塊的相似功能的程序進(jìn)行分組集成函數(shù)。通過AT89C51部分函數(shù)初始化程序,我們成功解決了無定義端口高電平影響實(shí)驗(yàn)的問題。(2)系統(tǒng)的功能實(shí)現(xiàn)用手指握住B組DS18B20芯片加溫,LCD示數(shù)為B組25.5,A組19.3,C組19.3。其中A組與C組低于溫度下限,觸發(fā)對(duì)應(yīng)LED7、LED8,B組處于溫度范圍內(nèi),觸發(fā)對(duì)應(yīng)LED2。圖20使用加熱工具對(duì)B組DS18B20芯片進(jìn)行加熱,LCD示數(shù)如下:A組21.0,B組40,C組23.1攝氏度。其中B組超過溫度上限,觸發(fā)對(duì)應(yīng)LED5,A組C組處在溫度范圍內(nèi),觸發(fā)對(duì)應(yīng)LED1、LED3。五、心得體會(huì):課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn)、提出、分析
17、和解決實(shí)際問題, 鍛煉實(shí)踐能力的重要環(huán)節(jié), 是對(duì)學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程。 隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機(jī)已經(jīng)成為當(dāng)今計(jì)算機(jī)應(yīng)用中空前活躍的領(lǐng)域,在生活中可以說得是無處不在。因此作為自動(dòng)化專業(yè)的學(xué)生來說掌握單片機(jī)的開發(fā)技術(shù)是十分重要的。我的題目是簡(jiǎn)易計(jì)算器硬軟件的設(shè)計(jì),對(duì)于我們這些工科學(xué)生來說,這是 一次考驗(yàn)。怎么才能找到課堂所學(xué)與實(shí)際應(yīng)用的最佳結(jié)合點(diǎn)?怎樣讓自己的業(yè)余更接近專業(yè)?怎樣讓自己的計(jì)劃更具有序性,而不會(huì)忙無一用?這都是我們所要考慮和努力的。這次課程設(shè)計(jì)我學(xué)到很多很多的東西,學(xué)會(huì)了怎么樣去制定計(jì)劃,怎么樣去實(shí)現(xiàn)這個(gè)計(jì)劃,并掌握了在執(zhí)行過程中怎么樣去克服心理上的不良情緒
18、。不僅鞏固了以前所學(xué)過的知識(shí),而且學(xué)到了很多在書本上所沒有學(xué)到過的知識(shí),掌握了一種系統(tǒng)的研究方法,可以進(jìn)行一些簡(jiǎn)單的編程。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。 同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處, 對(duì)以前所學(xué)過的知識(shí)理解得不夠深刻,掌握得不夠牢固,對(duì)單片機(jī)匯編語言掌握得不夠好。這次課程設(shè)計(jì)通過自己的努力,同學(xué)的幫助,網(wǎng)絡(luò)資料的收集,最終順利完成了。六、參考文件1 張毅剛. 單片機(jī)原理及應(yīng)用M 北京.高等教育出版社 2010附錄附
19、錄一(系統(tǒng)實(shí)物器件清單)DescriptionDesignatorFootprintLibRefQuantityMotor, General KindB1RB5-10.5Motor1Motor, General KindB2RB5-10.5Motor1Motor, General KindB3RB5-10.5Motor1CapacitorC1RAD-0.3Cap1CapacitorC2RAD-0.3Cap11 Amp General Purpose RectifierD1DIO10.46-5.3x2.8Diode 1N400111 Amp General Purpose RectifierD2
20、DIO10.46-5.3x2.8Diode 1N400111 Amp General Purpose RectifierD3DIO10.46-5.3x2.8Diode 1N400111 Amp General Purpose RectifierD4DIO10.46-5.3x2.8Diode 1N400111 Amp General Purpose RectifierD5DIO10.46-5.3x2.8Diode 1N400111 Amp General Purpose RectifierD6DIO10.46-5.3x2.8Diode 1N40011Typical RED GaAs LEDDS1
21、LED-1LED11Typical RED GaAs LEDDS2LED-1LED11Typical RED GaAs LEDDS3LED-1LED11Typical RED GaAs LEDDS4LED-1LED11Typical RED GaAs LEDDS5LED-1LED11Typical RED GaAs LEDDS6LED-1LED11Typical RED GaAs LEDDS7LED-1LED11Typical RED GaAs LEDDS8LED-1LED11Typical RED GaAs LEDDS9LED-1LED11Single-Pole Dual-Throw Rel
22、ayK1DIP-P5/X1.65Relay-SPDT1Single-Pole Dual-Throw RelayK2DIP-P5/X1.65Relay-SPDT1Single-Pole Dual-Throw RelayK3DIP-P5/X1.65Relay-SPDT1Single-Pole Dual-Throw RelayK4DIP-P5/X1.65Relay-SPDT1Single-Pole Dual-Throw RelayK5DIP-P5/X1.65Relay-SPDT1Single-Pole Dual-Throw RelayK6DIP-P5/X1.65Relay-SPDT1Inductor
23、L1INDC2010-0804Inductor1InductorL2INDC1005-0402Inductor1InductorL3INDC2010-0804Inductor1LoudspeakerLS1PIN2Speaker1NPN Bipolar TransistorQ1BCY-W3NPN1NPN Bipolar TransistorQ2BCY-W3NPN1NPN Bipolar TransistorQ3BCY-W3NPN1NPN Bipolar TransistorQ4BCY-W3NPN1NPN Bipolar TransistorQ5BCY-W3NPN1NPN Bipolar Tran
24、sistorQ6BCY-W3NPN1NPN Bipolar TransistorQ7BCY-W3NPN1ResistorR1AXIAL-0.4Res21ResistorR2AXIAL-0.4Res21ResistorR3AXIAL-0.4Res21ResistorR4AXIAL-0.4Res21ResistorR5AXIAL-0.4Res21ResistorR6AXIAL-0.4Res21ResistorR7AXIAL-0.4Res21ResistorR8AXIAL-0.4Res21ResistorR9AXIAL-0.4Res21ResistorR10AXIAL-0.4Res21Resisto
25、rR11AXIAL-0.4Res21ResistorR12AXIAL-0.4Res21ResistorR13AXIAL-0.4Res21ResistorR14AXIAL-0.4Res21ResistorR15AXIAL-0.4Res21ResistorR16AXIAL-0.4Res21Isolated Resistor NetworkRP1SSO-G16/X.4Res Pack41SwitchS1SPST-2SW-PB1SwitchS2SPST-2SW-PB1SwitchS3SPST-2SW-PB1SwitchS4SPST-2SW-PB1SwitchS5SPST-2SW-PB1SwitchS6
26、SPST-2SW-PB1U1AT89C511U2Component_11U3Component_11U4Component_11Crystal OscillatorY1BCY-W2/D3.1XTAL1附錄二(源程序)主程序:#include#includeioset.h #includeLCD1602.h#includeds1820.h#define uchar unsigned char#define uint unsigned intuchar fh,bw,sw,fh1,bw1,sw1,fh2,bw2,sw2;uint ty,temp,tempi,tempx,ty1,temp1,temp1
27、i,temp1x,ty2,temp2,temp2i,temp2x,max,min;uchar displaytemp16 = A: B: ;uchar displaytemp116 =C: ;void delays (unsigned int us) while(us-);void DISPLAY() displaytemp2= fh; bw=tempi/100;if(bw=0) displaytemp3= ; else displaytemp3=bw+0 x30;sw=(tempi%100)/10;if(sw=0) displaytemp4= ; else displaytemp4=sw+0
28、 x30; displaytemp5= (tempi%100)%10+0 x30; displaytemp6=.; displaytemp7=tempx/10+0 x30;displaytemp10= fh1; bw1=temp1i/100;if(bw1=0) displaytemp11= ; else displaytemp11=bw1+0 x30;sw1=(temp1i%100)/10;if(sw1=0) displaytemp12= ; else displaytemp12=sw1+0 x30; displaytemp13= (temp1i%100)%10+0 x30; displayt
29、emp14=.; displaytemp15=temp1x/10+0 x30; LCD_Write_String(0,0,displaytemp); displaytemp12= fh2; bw2=temp2i/100;if(bw2=0) displaytemp13= ; else displaytemp13=bw2+0 x30;sw2=(temp2i%100)/10;if(sw2=0) displaytemp14= ; else displaytemp14=sw2+0 x30; displaytemp15= (temp2i%100)%10+0 x30; displaytemp16=.; di
30、splaytemp17=temp2x/10+0 x30;LCD_Write_String(0,1,displaytemp1);void flag() temp=retemp();ty=temp;if(ty0 xf000) fh=-; temp=temp; temp+=1; else fh= ; tempi =temp4; tempx=(temp&0 x000f)*6.25;temp1=retemp1();ty1=temp1;if(ty10 xf000) fh1=-; temp1=temp1; temp1+=1; else fh1= ; temp1i =temp14; temp1x=(temp1
31、&0 x000f)*6.25;temp2=retemp2();ty2=temp2;if(ty20 xf000) fh2=-; temp2=temp2; temp2+=1; else fh2= ; temp2i =temp24; temp2x=(temp2&0 x000f)*6.25;void port_init(void) LED_A =1; LED_B =1; LED_C =1; MOTOR_A =0; MOTOR_B =0; MOTOR_C =0; HEAT_A =0; HEAT_B =0; HEAT_C =0; BEE =0;void alarm(int z,int p,int v) i
32、f(z=max) LED_A =0; MOTOR_A =1; HEAT_A =0; else if(z=max) LED_B =0; MOTOR_B =1; HEAT_B =0; else if(p=max) LED_C =0; MOTOR_C =1; HEAT_C =0; else if(vmin) LED_C =0; MOTOR_C =0; HEAT_C =1; else LED_C =1; MOTOR_C =0; HEAT_C =0; /* if(MOTOR_A=1)|(MOTOR_B=1)|(MOTOR_C=1)|(HEAT_A=1)|(HEAT_B=1)|(HEAT_C=1) BEE
33、=1; else BEE=0;*/void keycan() if(KMA=0) delays(500); if(KMA=0) MOTOR_A=1; if(KTA=0) delays(500); if(KTA=0) HEAT_A=1; if(KMB=0) delays(500); if(KMB=0) MOTOR_B=1; if(KTB=0) delays(500); if(KTB=0) HEAT_B=1; if(KMC=0) delays(500); if(KMC=0) MOTOR_C=1; if(KTC=0) delays(500); if(KTC=0) HEAT_C=1;void main
34、() port_init(); LCD_initial(); max=40; min=20; while(1) keycan(); flag(); DISPLAY(); alarm(tempi,temp1i,temp2i); delays(10); IOSET端口頭文件#ifndef _IOSET_H_#define _IOSET_H_#define out P0sbit KMA=P10; sbit KTA=P11; sbit KMB=P12; sbit KTB=P13; sbit KMC=P14; sbit KTC=P15; sbit RS=P20; sbit RW=P21;sbit E =
35、P22; sbit BEE =P23;sbit LED_A =P24;sbit LED_B =P25;sbit LED_C =P26;sbit MOTOR_A =P27;sbit MOTOR_B =P30;sbit MOTOR_C =P31;sbit HEAT_A =P32;sbit HEAT_B =P33;sbit HEAT_C =P34;sbit DQ =P35;sbit DQ1=P36;sbit DQ2=P37;#endifLCD1602液晶顯示屏頭文件#ifndef _1602_H_#define _1602_H_#include #include /包含_nop_( )空函數(shù)指令的頭
36、文件#define uchar unsigned char#define uint unsigned intvoid lcd_initial(void);/ LCD初始化函數(shù)void check_busy(void); /檢查忙標(biāo)志函數(shù)void write_command(uchar com); /寫命令函數(shù)void write_data(uchar dat);/寫數(shù)據(jù)函數(shù)void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) ; /寫字符串函數(shù)void delay(uint);/延時(shí)函數(shù)void dela
37、y(uint j) /1ms延時(shí)子程序uchar i=250;for(;j0;j-)while(-i);i=249;while(-i);i=250;void check_busy(void)/檢查忙標(biāo)志函數(shù)uchar dt;dodt=0 xff;E=0;RS=0;RW=1;E=1;dt=out;while(dt&0 x80);E=0;void write_command(uchar com) /寫命令函數(shù)check_busy();E=0;RS=0;RW=0;out=com;E=1;_nop_( );E=0;delay(1);void write_data(uchar dat) /寫數(shù)據(jù)函數(shù)ch
38、eck_busy();E=0;RS=1;RW=0;out=dat;E=1;_nop_();E=0;delay(1);void LCD_initial(void) /液晶顯示器初始化函數(shù)write_command(0 x38);/寫入命令0 x38:8位兩行顯示,57點(diǎn)陣字符write_command(0 x0C);/寫入命令0 x0C:開整體顯示,光標(biāo)關(guān),無黑塊write_command(0 x06);/寫入命令0 x06:光標(biāo)右移write_command(0 x01); /寫入命令0 x01:清屏delay(1);/ 寫入字符串函數(shù)void LCD_Write_String(unsigne
39、d char x,unsigned char y,unsigned char *s) if (y = 0) write_command(0 x80 + x); /表示第一行else write_command(0 xC0 + x); /表示第二行 while (*s0) write_data( *s); s +; delay(1); #endifDS18B20模塊頭文件#ifndef _1802_H_#define _1802_H_#include #include /包含_nop_( )空函數(shù)指令的頭文件#define uchar unsigned char#define uint unsi
40、gned intvoid delay5(uchar);void init_ds18b20(void);uchar readbyte(void);void writebyte(uchar);uint retemp(void);void init_ds18b201(void);uchar readbyte1(void);void writebyte1(uchar);uint retemp1(void);void init_ds18b202(void);uchar readbyte2(void);void writebyte2(uchar);uint retemp2(void);void delay
41、5(uchar n) do _nop_(); _nop_(); _nop_(); n-; while(n);void init_ds18b20(void)/函數(shù)功能:18B20初始化 uchar x=0; DQ =0; delay5(120); DQ =1; delay5(16); delay5(80);uchar readbyte(void) /函數(shù)功能:讀取1字節(jié)數(shù)據(jù)uchar i=0;uchar date=0;for (i=8;i0;i-) DQ =0; delay5(1); DQ =1;/15s內(nèi)拉釋放總線 date=1; if(DQ) date|=0 x80; delay5(11);
42、 return(date);void writebyte(uchar dat) /函數(shù)功能:寫1字節(jié) uchar i=0; for(i=8;i0;i-) DQ =0; DQ =dat&0 x01;/寫1 在15s內(nèi)拉低 delay5(12); /寫0 拉低60s DQ = 1; dat=1; delay5(5); uint retemp(void)/函數(shù)功能:讀取溫度uchar a,b;uint t;init_ds18b20();writebyte(0 xCC); writebyte(0 x44);init_ds18b20();writebyte(0 xCC); writebyte(0 xBE
43、); a=readbyte();b=readbyte();t=b;t0;i-) DQ1 =0; delay5(1); DQ1 =1;/15s內(nèi)拉釋放總線 date1=1; if(DQ1) date1|=0 x80; delay5(11); return(date1);void writebyte1(uchar dat1) /函數(shù)功能:寫1字節(jié) uchar i=0; for(i=8;i0;i-) DQ1 =0; DQ1 =dat1&0 x01;/寫1 在15s內(nèi)拉低 delay5(12); /寫0 拉低60s DQ1 = 1; dat1=1; delay5(5); uint retemp1(vo
44、id)/函數(shù)功能:讀取溫度uchar c,d;uint t1;init_ds18b201();writebyte1(0 xCC); writebyte1(0 x44);init_ds18b201();writebyte1(0 xCC); writebyte1(0 xBE); c=readbyte1();d=readbyte1();t1=d;t10;i-) DQ2 =0; delay5(1); DQ2 =1;/15s內(nèi)拉釋放總線 date2=1; if(DQ2) date2|=0 x80; delay5(11); return(date2);void writebyte2(uchar dat2)
45、 /函數(shù)功能:寫1字節(jié) uchar i=0; for(i=8;i0;i-) DQ2 =0; DQ2 =dat2&0 x01;/寫1 在15s內(nèi)拉低 delay5(12); /寫0 拉低60s DQ2 = 1; dat2=1; delay5(5); uint retemp2(void)/函數(shù)功能:讀取溫度uchar e,f;uint t2;init_ds18b202();writebyte2(0 xCC); writebyte2(0 x44);init_ds18b202();writebyte2(0 xCC); writebyte2(0 xBE); e=readbyte2();f=readbyte2();t2=f;t2=8;t2=t2|e;return(t2);#endi37
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)2圖形與幾何第7課時(shí)圖形的位置練習(xí)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)2圖形與幾何第1課時(shí)圖形的認(rèn)識(shí)與測(cè)量1平面圖形的認(rèn)識(shí)練習(xí)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)1數(shù)與代數(shù)第10課時(shí)比和比例2作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)4比例1比例的意義和基本性質(zhì)第3課時(shí)解比例練習(xí)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)3圓柱與圓錐1圓柱第7課時(shí)圓柱的體積3作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)3圓柱與圓錐1圓柱第1節(jié)圓柱的認(rèn)識(shí)作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)2百分?jǐn)?shù)(二)第1節(jié)折扣和成數(shù)作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)1負(fù)數(shù)第1課時(shí)負(fù)數(shù)的初步認(rèn)識(shí)作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)上冊(cè)期末復(fù)習(xí)考前模擬期末模擬訓(xùn)練二作業(yè)課件蘇教版
- 2023年六年級(jí)數(shù)學(xué)上冊(cè)期末豐收?qǐng)@作業(yè)課件蘇教版
- 2023年六年級(jí)數(shù)學(xué)上冊(cè)易錯(cuò)清單十二課件新人教版
- 標(biāo)準(zhǔn)工時(shí)講義
- 2021年一年級(jí)語文上冊(cè)第六單元知識(shí)要點(diǎn)習(xí)題課件新人教版
- 2022春一年級(jí)語文下冊(cè)課文5識(shí)字測(cè)評(píng)習(xí)題課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)4數(shù)學(xué)思考第1課時(shí)數(shù)學(xué)思考1練習(xí)課件新人教版