版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《51單片機(jī)》課程設(shè)計(jì)</p><p> 論文題目 以51單片機(jī)為基礎(chǔ)的溫度計(jì) </p><p> 系 別 機(jī)械與材料工程學(xué)院 </p><p> 專 業(yè) xxx </p><p> 班 級(jí) xxx
2、 </p><p> 學(xué) 號(hào) xxxxxxxxxxxx </p><p> 學(xué)生姓名 xxx </p><p> 指導(dǎo)教師 (簽名) </p><p> 完成時(shí)間 2015 年 12 月
3、 31 日</p><p><b> 課程設(shè)計(jì)成績(jī)?cè)u(píng)定表</b></p><p><b> 目 錄</b></p><p><b> 前言- 1 -</b></p><p> 第一章 設(shè)計(jì)任務(wù)及要求- 1 -</p><p> 1.1
4、 設(shè)計(jì)任務(wù)- 1 -</p><p> 1.2 設(shè)計(jì)要求- 1 -</p><p> 第二章 課程設(shè)計(jì)方案及器材選用分析- 1 -</p><p> 2.1設(shè)計(jì)總體方案- 1 -</p><p> 2.2器材選用分析- 3 -</p><p> 2.3 軟件流程圖- 9 -</p>
5、<p> 第三章 調(diào)試性能及分析- 11 -</p><p> 課程設(shè)計(jì)心得- 12 -</p><p> 附錄:程序- 12 -</p><p><b> 前言</b></p><p> 目前,單片機(jī)已經(jīng)在測(cè)控領(lǐng)域中獲得了廣泛的應(yīng)用,它除了可以測(cè)量電信以外,還可以用于溫度、濕度等非電信號(hào)的測(cè)量
6、,能獨(dú)立工作的單片機(jī)溫度檢測(cè)、溫度控制系統(tǒng)已經(jīng)廣泛應(yīng)用很多領(lǐng)域。</p><p> 本次課程設(shè)計(jì),就是用單片機(jī)實(shí)現(xiàn)溫度檢測(cè),傳統(tǒng)的溫度檢測(cè)大多以熱敏電阻為溫度傳感器,但熱敏電阻的可靠性差,測(cè)量溫度準(zhǔn)確率低,而且必須經(jīng)過(guò)專門的接口電路轉(zhuǎn)換成數(shù)字信號(hào)才能由單片機(jī)進(jìn)行處理。本次采用DS18B20數(shù)字溫度傳感器來(lái)實(shí)現(xiàn)基于51單片機(jī)的數(shù)字溫度計(jì)的設(shè)計(jì)。</p><p> 傳統(tǒng)的溫度計(jì)有反應(yīng)速度慢
7、、讀數(shù)麻煩、測(cè)量精度不高、誤差大等缺點(diǎn)而下面利用集成溫度傳感器AD590設(shè)計(jì)并制作了一款基于AT89S52的4位數(shù)碼管顯示的數(shù)字溫度計(jì),其電路簡(jiǎn)單,軟硬件結(jié)構(gòu)模塊化,易于實(shí)現(xiàn)。 </p><p> 第一章 設(shè)計(jì)任務(wù)及要求</p><p><b> 1.1 設(shè)計(jì)任務(wù)</b></p><p> 現(xiàn)代社會(huì)生活中,多功能的數(shù)字溫度計(jì)可以給我們的生
8、活帶來(lái)很大的方便;支持“一線總線”接口的溫度傳感器簡(jiǎn)化了數(shù)字溫度計(jì)的設(shè)計(jì),降低了成本;以美國(guó)MAXIM/DALLAS半導(dǎo)體公司的單總線溫度傳感器DS18B20為核心,以ATMEL公司的AT89S52為控制器設(shè)計(jì)的DS18B20溫度控制器結(jié)構(gòu)簡(jiǎn)單、測(cè)溫準(zhǔn)確、具有一定控制功能的智能溫度控制器。</p><p> 本次采用DS18B20數(shù)字溫度傳感器來(lái)實(shí)現(xiàn)基于51單片機(jī)的數(shù)字溫度計(jì)的設(shè)計(jì)。</p>&l
9、t;p><b> 1.2 設(shè)計(jì)要求</b></p><p> 設(shè)計(jì)一個(gè)基于51單片機(jī)的數(shù)字溫度計(jì)。</p><p> 第二章 課程設(shè)計(jì)方案及器材選用分析</p><p><b> 2.1設(shè)計(jì)總體方案</b></p><p> 提及到溫度的檢測(cè),我們首先會(huì)考慮傳統(tǒng)的測(cè)溫元件有熱電偶和熱
10、電阻,而熱電偶和熱電阻測(cè)出的一般都是電壓,再轉(zhuǎn)換成對(duì)應(yīng)的溫度,需要比較多的外部硬件支持,硬件電路復(fù)雜,軟件調(diào)試也復(fù)雜,制作成本高。</p><p> 因此,本數(shù)字溫度計(jì)設(shè)計(jì)采用智能溫度傳感器DS18B20作為檢測(cè)元件,測(cè)溫范圍為-55°C至+125°C,最大分辨率可達(dá)0.0625°C。DS18B20可以直接讀出被測(cè)量的溫度值,而采用三線制與單片機(jī)相連,減少了外部的硬件電路,具有低成
11、本和易使用的特點(diǎn)。</p><p> 按照系統(tǒng)設(shè)計(jì)功能的要求,確定系統(tǒng)由三個(gè)模塊組成:主控制器STC89C51,溫度傳感器DS18B20,驅(qū)動(dòng)顯示電路。</p><p> 圖2.1 系統(tǒng)總體框圖</p><p><b> 2.1.1方案論證</b></p><p> 方案一:由于本設(shè)計(jì)是測(cè)溫電路,可以使用熱敏電阻
12、之類的器件利用其感溫效應(yīng),在將隨被測(cè)溫度變化的電壓或電流采集過(guò)來(lái),進(jìn)行A/D轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測(cè)溫度顯示出來(lái),這種設(shè)計(jì)需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。</p><p> 所以,他的設(shè)計(jì)理論不符合本次設(shè)計(jì)的方案要求,應(yīng)繼續(xù)考慮另一可行方案。</p><p> 方案二:進(jìn)而考慮到用溫度傳感器,在單片機(jī)電路設(shè)計(jì)中,大多都是使用傳感器,所以
13、這是非常容易想到的,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測(cè)溫度值,進(jìn)行轉(zhuǎn)換,就可以滿足設(shè)計(jì)要求。</p><p> 因此,從以上兩種方案很容易看出,方案二,電路比較簡(jiǎn)單,軟件設(shè)計(jì)也比較簡(jiǎn)單,故采用了方案二。</p><p> 2.1.2方案二的總體設(shè)計(jì)框圖</p><p> 溫度計(jì)電路設(shè)計(jì)總體設(shè)計(jì),控制器采用單片機(jī)AT89S
14、52,溫度傳感器采用DS18B20,用3位LED數(shù)碼管以串口傳送數(shù)據(jù)實(shí)現(xiàn)溫度顯示。DS18B20 采用3 腳PR-35 封裝。</p><p> 圖2.2 總體設(shè)計(jì)方框圖</p><p> 主控制器:?jiǎn)纹瑱C(jī)AT89S52具有低電壓供電和體積小等特點(diǎn),四個(gè)端口只需要兩個(gè)口就能滿足電路系統(tǒng)的設(shè)計(jì)需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用系統(tǒng)可用二節(jié)電池供電。</p><p&g
15、t;<b> 2.2器材選用分析</b></p><p> 2.2.1 DS18B20溫度傳感器</p><p> 1. DS18B20的特點(diǎn)</p><p> 本設(shè)計(jì)的測(cè)溫系統(tǒng)采用芯片DS18B20,DS18B20是DALLAS公司的最新單線數(shù)字溫度傳感器,它的體積更小,適用電壓更寬,更經(jīng)濟(jì)。</p><p>
16、;<b> 實(shí)現(xiàn)方法簡(jiǎn)介</b></p><p> DS18B20采用外接電源方式工作,一線測(cè)溫一線與STC89C51連接,測(cè)出的數(shù)據(jù)放在寄存器中,將數(shù)據(jù)經(jīng)過(guò)BCD碼轉(zhuǎn)換后送到LED顯示。</p><p> DS18B20溫度傳感器是美國(guó)DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際
17、要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方式。DS18B20的性能特點(diǎn)如下:</p><p> ●獨(dú)特的單線接口僅需要一個(gè)端口引腳進(jìn)行通信;</p><p> ●多個(gè)DS18B20可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能;</p><p><b> ●無(wú)須外部器件;</b></p><p> ●可通過(guò)數(shù)據(jù)線供
18、電,電壓范圍為3.0~5.5V;</p><p><b> ●零待機(jī)功耗;</b></p><p> ●溫度以9或12位數(shù)字;</p><p> ●用戶可定義報(bào)警設(shè)置;</p><p> ●報(bào)警搜索命令識(shí)別并標(biāo)志超過(guò)程序限定溫度(溫度報(bào)警條件)的器件;</p><p> ●負(fù)電壓特性,電
19、源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作; </p><p> DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM,溫度傳感器,非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL,高速暫存器。</p><p> 64位ROM的結(jié)構(gòu)開始8位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48位,最后8位是前面56位的CRC檢驗(yàn)碼,這也是多個(gè)DS18B20可以采用一線進(jìn)行通信的原因。溫度
20、報(bào)警觸發(fā)器TH和TL,可通過(guò)軟件寫入戶報(bào)警上下限。</p><p> DS18B20工作時(shí)寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。低5位一直為1,TM是工作模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式,DS18B20出廠時(shí)該位被設(shè)置為0,用戶要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來(lái)設(shè)置分辨率。</p><p> 以12位轉(zhuǎn)化為例說(shuō)明溫度高低字節(jié)存放形式及計(jì)算:12位轉(zhuǎn)
21、化后得到的12位數(shù)據(jù),存儲(chǔ)在18B20的兩個(gè)高低兩個(gè)8位的RAM中,二進(jìn)制中的前面5位是符號(hào)位。如果測(cè)得的溫度大于0,這5位為0,只要將測(cè)到的數(shù)值乘于0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測(cè)到的數(shù)值需要取反加1再乘于0.0625才能得到實(shí)際溫度。 </p><p> 高速暫存RAM的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)讀出前面所有8字節(jié)的CRC碼,可用來(lái)檢驗(yàn)數(shù)據(jù),從而保證通信數(shù)
22、據(jù)的正確性。</p><p> 當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第1、2字節(jié)。單片機(jī)可以通過(guò)單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時(shí)低位在先,高位在后,數(shù)據(jù)格式以0.0625℃/LSB形式表示。</p><p> 當(dāng)符號(hào)位S=0時(shí),表示測(cè)得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)符號(hào)位S=1時(shí)
23、,表示測(cè)得的溫度值為負(fù)值,要先將補(bǔ)碼變成原碼,再計(jì)算十進(jìn)制數(shù)值。表2-4-2是一部分溫度值對(duì)應(yīng)的二進(jìn)制溫度數(shù)據(jù)。</p><p> DS18B20的測(cè)溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入。器件中還有一個(gè)計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時(shí),DS18B20就對(duì)低溫度系數(shù)振蕩
24、器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù)進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門的開啟時(shí)間由高溫度系數(shù)振蕩器來(lái)決定,每次測(cè)量前,首先將-55℃所對(duì)應(yīng)的一個(gè)基數(shù)分別置入減法計(jì)數(shù)器1、溫度寄存器中,計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55℃所對(duì)應(yīng)的一個(gè)基數(shù)值。</p><p> 減法計(jì)數(shù)器1對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器1的預(yù)置值減到0時(shí),溫度寄存器的值將加1,減法計(jì)數(shù)器1的預(yù)置將重新被裝入,減法計(jì)數(shù)器1重新開始對(duì)低溫度系數(shù)晶
25、振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器計(jì)數(shù)到0時(shí),停止溫度寄存器的累加,此時(shí)溫度寄存器中的數(shù)值就是所測(cè)溫度值。其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)器門仍未關(guān)閉就重復(fù)上述過(guò)程,直到溫度寄存器值大致被測(cè)溫度值。</p><p> 另外,由于DS18B20單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)對(duì)DS18B20的各種操作按協(xié)議進(jìn)行。操作協(xié)議為:初使化DS18B20(發(fā)復(fù)位
26、脈沖)→發(fā)ROM功能命令→發(fā)存儲(chǔ)器操作命令→處理數(shù)據(jù)。 </p><p> 圖2.3 DS18B20封裝結(jié)構(gòu)圖及引腳圖</p><p> 2. DS18B20的使用方法</p><p> 由于DS18B20采用的是1-Wire總線協(xié)議方式,即在一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,而對(duì)AT89S51單片機(jī)來(lái)說(shuō),硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的
27、方法來(lái)模擬單總線的協(xié)議時(shí)序來(lái)完成對(duì)DS18B20芯片的訪問(wèn)。</p><p> 由于DS18B20是在一根I/O線上讀寫數(shù)據(jù),因此,對(duì)讀寫的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求。DS18B20有嚴(yán)格的通信協(xié)議來(lái)保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號(hào)的時(shí)序:初始化時(shí)序、讀時(shí)序、寫時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動(dòng)啟動(dòng)寫時(shí)序開始,如果要求單總線器件回
28、送數(shù)據(jù),在進(jìn)行寫命令后,主機(jī)需啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。</p><p> 對(duì)于DS18B20的讀時(shí)序分為讀0時(shí)序和讀1時(shí)序兩個(gè)過(guò)程。</p><p> 對(duì)于DS18B20的讀時(shí)隙是從主機(jī)把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個(gè)讀時(shí)序過(guò)程,至少需要60us才能完成。</p
29、><p> DS18B20的寫時(shí)序,對(duì)于DS18B20的寫時(shí)序仍然分為寫0時(shí)序和寫1時(shí)序兩個(gè)過(guò)程,</p><p> 對(duì)于DS18B20寫0時(shí)序和寫1時(shí)序的要求不同,當(dāng)要寫0時(shí)序時(shí),單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當(dāng)要寫1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)就得釋放單線</p><p&g
30、t; 2.2.2 AT89S52單片機(jī)介紹</p><p> 1. AT89S52的主要性能</p><p> 與MCS-51單片機(jī)產(chǎn)品兼容,8K字節(jié)在系統(tǒng)可編程Flash存儲(chǔ)器、 1000次擦寫周期、 全靜態(tài)操作:0Hz~33Hz 、三級(jí)加密程序存儲(chǔ)器 、 32個(gè)可編程I/O口線 、三個(gè)16位定時(shí)器/計(jì)數(shù)器 八個(gè)中斷源 、全雙工UART串行通道、 低功耗空閑和掉電模式 、掉電后中
31、斷可喚醒 、看門狗定時(shí)器 、雙數(shù)據(jù)指針 、掉電標(biāo)識(shí)符 。</p><p> 2. AT89S52的功能特性</p><p> AT89S52 是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。使用Atmel公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完 全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于 常規(guī)編程器。在單芯
32、片上,擁有靈巧的8 位CPU 和在系統(tǒng) 可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提 供高靈活、超有效的解決方案。 AT89S52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三個(gè)16 位 定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口, 片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,C
33、PU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工 作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié), 單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。8 位微控制器 8K 字節(jié)在系統(tǒng)可編程 Flash AT89S52 </p><p> P0 口:P0口是一個(gè)8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電平。對(duì)P0端口寫“1”時(shí),引腳用作高阻抗輸入。 </p>
34、<p> 當(dāng)訪問(wèn)外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0具有內(nèi)部上拉電阻。 </p><p> 在flash編程時(shí),P0口也用來(lái)接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn) 時(shí),需要外部上拉電阻。 </p><p> P1 口:P1 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,P1 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對(duì)P
35、1 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0和P1.2分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(P1.0/T2)和時(shí)器/計(jì)數(shù)器2 的觸發(fā)輸入(P1.1/T2EX),具體如下表所示。 </p><p> 在flash編程和校驗(yàn)時(shí),P1口接收低8位地址字節(jié)。 </p><p><
36、b> 引腳號(hào)第二功能 </b></p><p> P1.0 T2(定時(shí)器/計(jì)數(shù)器T2的外部計(jì)數(shù)輸入),時(shí)鐘輸出 </p><p> P1.1 T2EX(定時(shí)器/計(jì)數(shù)器T2的捕捉/重載觸發(fā)信號(hào)和方向控制) </p><p> P1.5 MOSI(在系統(tǒng)編程用) </p><p> P1.6 MISO(在系統(tǒng)編程用)
37、</p><p> P1.7 SCK(在系統(tǒng)編程用) </p><p> P2 口:P2 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動(dòng)4 個(gè) </p><p> TTL 邏輯電平。對(duì)P2 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入 口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在訪問(wèn)外
38、部程序存儲(chǔ)器或用16位地址讀取外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX @DPTR) 時(shí),P2 口送出高八位地址。在這種應(yīng)用中,P2 口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用 8位地址(如MOVX @RI)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口輸出P2鎖存器的內(nèi)容。 </p><p> 在flash編程和校驗(yàn)時(shí),P2口也接收高8位地址字節(jié)和一些控制信號(hào)。 </p><p> P3 口:P3 口是一個(gè)具有內(nèi)部上
39、拉電阻的8 位雙向I/O 口,p2 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對(duì)P3 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。 P3口亦作為AT89S52特殊功能(第二功能)使用,如下所示。 在flash編程和校驗(yàn)時(shí),P3口也接收一些控制信號(hào)。 </p><p><b> 端口引腳 第二功能</b&g
40、t;</p><p> P3.0 RXD(串行輸入口)</p><p> P3.1 TXD(串行輸出口)</p><p> P3.2 INT0(外中斷0)</p><p> P3.3 INT1(外中斷1)</p><p> P3.4 T0(定時(shí)/計(jì)數(shù)器0)</p><p> P3.5
41、 T1(定時(shí)/計(jì)數(shù)器1)</p><p> P3.6 WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)</p><p> P3.7 RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)</p><p> 此外,P3口還接收一些用于FLASH閃存編程和程序校驗(yàn)的控制信號(hào)。</p><p> RST——復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將是單片機(jī)復(fù)位。&
42、lt;/p><p> ALE/PROG——當(dāng)訪問(wèn)外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過(guò)一個(gè)ALE脈沖。</p><p> 對(duì)FLASH存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG)。</p&g
43、t;<p> 如有必要,可通過(guò)對(duì)特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE禁止位無(wú)效。</p><p> PSEN——程序儲(chǔ)存允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89C52由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PS
44、EN有效,即輸出兩個(gè)脈沖,在此期間,當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器,將跳過(guò)兩次PSEN信號(hào)。</p><p> EA/VPP——外部訪問(wèn)允許,欲使CPU僅訪問(wèn)外部程序存儲(chǔ)器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。</p><p> 如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器的指令。</p
45、><p> FLASH存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。</p><p> 圖2.4 封裝AT89S52引腳圖</p><p><b> 2.3 軟件流程圖</b></p><p> 系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計(jì)算溫度
46、子程序,顯示數(shù)據(jù)刷新子程序等。</p><p> 2.3.1 主程序</p><p> 主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20的測(cè)量的當(dāng)前溫度值,溫度測(cè)量每1s進(jìn)行一次。這樣可以在一秒之內(nèi)測(cè)量一次被測(cè)溫度,其程序流程見圖3.6所示。</p><p> 圖 3.5主程序流程圖 圖3.6 讀溫度流程圖&
47、lt;/p><p> 2.3.2 讀溫度子程序</p><p> 讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時(shí)需進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。其程序流程圖如圖3.7示</p><p> 圖3.7 溫度轉(zhuǎn)換流程圖</p><p> 2.3.3 溫度轉(zhuǎn)換命令子程序</p><p>
48、溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12位分辨率時(shí)轉(zhuǎn)換時(shí)間約為750ms,在本程序設(shè)計(jì)中采用1s顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如圖3.8所示</p><p> 2.3.4 計(jì)算溫度子程序</p><p> 計(jì)算溫度子程序?qū)AM中讀取值進(jìn)行BCD碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖3.9所示</p><p&g
49、t; 圖3.8 計(jì)算溫度流程圖 圖3.9 顯示數(shù)據(jù)刷新流程圖 </p><p> 第三章 調(diào)試性能及分析</p><p> 系統(tǒng)的性能調(diào)試以主程序?yàn)橹鳌S布{(diào)試比較簡(jiǎn)單,首先檢查電路的焊接是否正確,然后用萬(wàn)用表測(cè)試。軟件調(diào)試可以先編寫顯示程序并進(jìn)行硬件的正確性檢驗(yàn),然后分別進(jìn)行主程序、從程序的編寫和調(diào)試,由于DS18B20與單片機(jī)采用串行數(shù)據(jù)傳送,
50、因此對(duì)DS18B20進(jìn)行編程時(shí)必須嚴(yán)格地保證讀寫時(shí)序,否則將無(wú)法讀取測(cè)量結(jié)果。</p><p> 性能測(cè)試可用制作的溫度計(jì)和已有的成品溫度計(jì)來(lái)同時(shí)測(cè)量比較,由于DS18B20精度較高,所以誤差指標(biāo)可以限制在0.1°C以內(nèi),另外,-55°C至+125°C的測(cè)溫范圍使得該溫度計(jì)完全適用于一般的應(yīng)用場(chǎng)合,其低電壓供電的特性可做成電池供電的手持電子溫度計(jì)。</p><p
51、> 最開始的時(shí)候DS18B20僅靠杜邦線與單片機(jī)連接,但傳感器較為敏感,容易造成程序進(jìn)入死循環(huán)。最后決定將傳感器另外焊接在一塊洞洞板上。</p><p><b> 課程設(shè)計(jì)心得</b></p><p> 通過(guò)本次的課程設(shè)計(jì)我知道,課程設(shè)計(jì)一般強(qiáng)調(diào)能力培養(yǎng)為主,在獨(dú)立完成設(shè)計(jì)任務(wù)的同時(shí),還要注意其他幾方面能力的培養(yǎng)與提高,如獨(dú)立工作能力與創(chuàng)造力;綜合運(yùn)用專業(yè)
52、及基礎(chǔ)知識(shí)的能力,解決實(shí)際工程技術(shù)問(wèn)題的能力;查閱圖書資料、產(chǎn)品手冊(cè)和各種工具書的能力;工程繪圖的能力;書寫技術(shù)報(bào)告和編制技術(shù)資料的能力。在專業(yè)知識(shí)與研究方法方面為日后的畢業(yè)設(shè)計(jì)乃至畢業(yè)后的工作奠定良好的基礎(chǔ)</p><p><b> 參考文獻(xiàn) </b></p><p> [1] 郭天祥.新概念51單片機(jī)C語(yǔ)言教程.北京[M]:電子工業(yè)出版社,2015</
53、p><p> [2] 測(cè)溫芯片DS18B20詳細(xì)解讀.http://www.ndiy.cn/thread-24274-1-1.html.2013-10-6</p><p><b> 附錄:程序</b></p><p> #include<reg52.h></p><p> #define uchar u
54、nsigned char </p><p> #define uint unsigned int</p><p> sbit ds=P3^7; //溫度傳感器信號(hào)線</p><p> sbit beep=P1^0;</p><p> sbit D1=P2^7;</p><p> sbit D2=P2^6;&l
55、t;/p><p> sbit D3=P2^5;</p><p> sbit D4=P2^4;</p><p> sbit CLK164=P3^4;</p><p> sbit DAT164=P3^6;</p><p> uchar shumaguan[4]={0};</p><p> u
56、int temp; //存放整形溫度數(shù)據(jù)</p><p> uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//,</p><p> uchar code tablen[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; </p&
57、gt;<p> void delay(uint x) </p><p><b> {</b></p><p> uchar i,j;</p><p> for(i=x;i>0;i--)</p><p> for(j=110;j>0;j--);</p><p>
58、<b> }</b></p><p> void dsreset(void) //復(fù)位</p><p><b> {</b></p><p><b> uint i;</b></p><p><b> ds=0;</b></p>&
59、lt;p><b> i=103;</b></p><p> while(i>0)i--;</p><p><b> ds=1;</b></p><p><b> i=4;</b></p><p> while(i>0)i--;</p>
60、<p><b> }</b></p><p> bit readbit(void) //讀一位數(shù)據(jù) bit定義2位</p><p><b> {</b></p><p><b> uint i;</b></p><p><b> bit dat;&
61、lt;/b></p><p> ds=0;i++; //延時(shí)</p><p> ds=1;i++;i++;</p><p><b> dat=ds;</b></p><p> i=8;while(i>0)i--;</p><p> return(dat);</p>
62、;<p><b> }</b></p><p> uchar readbyte(void) //讀一個(gè)字節(jié)數(shù)據(jù)</p><p><b> {</b></p><p> uchar i,j,dat;</p><p><b> dat=0;</b></
63、p><p> for(i=1; i<=8; i++)</p><p><b> {</b></p><p> j=readbit();</p><p> dat=(j<<7)|(dat>>1);</p><p><b> }</b><
64、/p><p> return(dat);</p><p><b> }</b></p><p> void writebyte(uchar dat) //向18b20寫一字節(jié)數(shù)據(jù)</p><p><b> {</b></p><p><b> uint i;&
65、lt;/b></p><p><b> uchar j;</b></p><p> bit testb;</p><p> for(j=1;j<=8;j++)</p><p><b> {</b></p><p> testb=dat&0x01;
66、</p><p> dat=dat>>1;</p><p> if(testb) //寫1</p><p><b> {</b></p><p><b> ds=0;</b></p><p><b> i++;i++;</b>&l
67、t;/p><p><b> ds=1;</b></p><p> i=8;while(i>0)i--;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b>
68、;</p><p><b> ds=0;</b></p><p> i=8;while(i>0)i--;</p><p><b> ds=1;</b></p><p><b> i++;i++;</b></p><p><b>
69、 } </b></p><p><b> }</b></p><p><b> }</b></p><p> void sendchange(void) //向18b20發(fā)送轉(zhuǎn)換溫度命令</p><p><b> {</b></p><
70、p> dsreset();</p><p><b> delay(1);</b></p><p> writebyte(0xcc); //寫跳過(guò)讀rom命令</p><p> writebyte(0x44); //寫溫度轉(zhuǎn)換命令</p><p><b> } </b></p&g
71、t;<p> uint get_temp() //讀取寄存器中存儲(chǔ)的溫度數(shù)據(jù)</p><p><b> { </b></p><p> uchar a,b;</p><p> dsreset();</p><p><b> delay(1);</b></p>
72、<p> writebyte(0xcc);</p><p> writebyte(0xbe);</p><p> a=readbyte(); //讀低八位</p><p> b=readbyte(); //讀高八位</p><p><b> temp=b;</b></p><p&
73、gt; temp<<=8; //將高低兩個(gè)字節(jié)合成一個(gè)整形變量</p><p> temp=temp|a;</p><p> temp=temp*62500/10000; //溫度在寄存器中默認(rèn)為12位,分辨率為0.0625度</p><p> return temp; </p><p><b> }</
74、b></p><p> void Put164(unsigned char tmp)</p><p><b> {</b></p><p> unsigned char i;</p><p> for(i=0;i<8;i++)</p><p><b> {</
75、b></p><p><b> CLK164=0;</b></p><p> if(tmp&0x80)</p><p><b> DAT164=1;</b></p><p><b> else </b></p><p><b&
76、gt; DAT164=0;</b></p><p><b> CLK164=1;</b></p><p><b> tmp<<=1;</b></p><p><b> }</b></p><p><b> }</b><
77、;/p><p> void SET(uchar j)</p><p><b> {</b></p><p><b> switch(j)</b></p><p><b> {</b></p><p> case 1:D1=0;D2=1;D3=1;D
78、4=1;break;</p><p> case 2:D1=1;D2=0;D3=1;D4=1;break;</p><p> case 3:D1=1;D2=1;D3=0;D4=1;break;</p><p> case 4:D1=1;D2=1;D3=1;D4=0;break;</p><p> default:D1=1;D2=1;D
79、3=1;D4=1;break;</p><p><b> }</b></p><p><b> }</b></p><p> void shumaguansaomiao()</p><p><b> {</b></p><p><b>
80、 SET(0);</b></p><p> Put164(table[shumaguan[0]]);</p><p><b> SET(1);</b></p><p> delay(70);</p><p><b> SET(0);</b></p><p&g
81、t; Put164(tablen[shumaguan[1]]);</p><p><b> SET(2);</b></p><p> delay(70);</p><p><b> SET(0);</b></p><p> Put164(table[shumaguan[2]]);</
82、p><p><b> SET(3);</b></p><p> delay(70);</p><p><b> SET(0);</b></p><p> Put164(table[shumaguan[3]]);</p><p><b> SET(4);<
83、/b></p><p><b> }</b></p><p> void shuzifenli(uint v)</p><p><b> {</b></p><p> shumaguan[0]=v/1000%10;</p><p> shumaguan[1]=
84、v/100%10;</p><p> shumaguan[2]=v/10%10;</p><p> shumaguan[3]=v%10;</p><p> shumaguansaomiao(); //掃描一次數(shù)碼管</p><p><b> }</b></p><p> void mai
85、n()</p><p><b> {</b></p><p><b> while(1)</b></p><p><b> {</b></p><p> sendchange();</p><p> delay(100);</p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于51單片機(jī)的溫度計(jì)課程設(shè)計(jì)
- 數(shù)字溫度計(jì)課程設(shè)計(jì)---基于51單片機(jī)數(shù)字溫度計(jì)設(shè)計(jì)
- 數(shù)字溫度計(jì)課程設(shè)計(jì)---基于51單片機(jī)數(shù)字溫度計(jì)設(shè)計(jì)
- 基于51單片機(jī)的數(shù)字溫度計(jì)課程設(shè)計(jì)
- protel課程設(shè)計(jì)--基于51單片機(jī)的溫度計(jì)
- 基于51單片機(jī)數(shù)字溫度計(jì)設(shè)計(jì)報(bào)告課程設(shè)計(jì)
- 課程設(shè)計(jì)--基于51單片機(jī)的數(shù)字溫度計(jì)的設(shè)計(jì)
- 基于單片機(jī)溫度計(jì)課程設(shè)計(jì)
- 基于單片機(jī)溫度計(jì)課程設(shè)計(jì)
- 51單片機(jī)課程設(shè)計(jì)數(shù)字溫度計(jì)報(bào)告
- 單片機(jī)溫度計(jì)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-- 基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)
- 基于單片機(jī)數(shù)字溫度計(jì)課程設(shè)計(jì)
- 基于單片機(jī)的數(shù)字溫度計(jì)課程設(shè)計(jì)
- 基于單片機(jī)的數(shù)字溫度計(jì)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--數(shù)字溫度計(jì)
- 單片機(jī)課程設(shè)計(jì)--數(shù)字溫度計(jì)
- 單片機(jī)課程設(shè)計(jì)-數(shù)字溫度計(jì)
- 單片機(jī)課程設(shè)計(jì)—數(shù)字溫度計(jì)
- 單片機(jī)課程設(shè)計(jì)---基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論