單片機課程設計(論文)-基于51單片機的DS18B20數(shù)字溫度計的設計.doc
《單片機課程設計(論文)-基于51單片機的DS18B20數(shù)字溫度計的設計.doc》由會員分享,可在線閱讀,更多相關《單片機課程設計(論文)-基于51單片機的DS18B20數(shù)字溫度計的設計.doc(34頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、單片機課程設計系部名稱: 信息工程系 專業(yè)班級: 電氣083班 學 號: 200880884* 學生姓名: * * 指導教師: 張 * * 2011年06月20日0中原工學院信息商務學院課程設計目錄1 前言12 設計任務及要求22.1 設計任務22.2 設計要求23 課程設計方案及器材選用分析33.1 設計總體方案33.1.1 方案論證33.1.2 方案二的總體設計框圖43.2器材選用分析43.2.1 DS18B20溫度傳感器43.2.2 AT89S52單片機介紹123.3 軟件流程圖153.3.1 主程序153.3.2 讀溫度子程序153.3.3 溫度轉換命令子程序163.3.4 計算溫度子
2、程序164 硬件電路的設計174.1 Protel99 SE軟件介紹174.1.1 Protel99 SE軟件174.1.2 主控制電路圖184.2 Proteus 進行仿真204.2.1 Proteus6簡介204.2.2 proteus仿真圖205 調試性能及分析22課程設計心得24參考文獻25附錄:DS18B20顯示程序261 前言目前,單片機已經(jīng)在測控領域中獲得了廣泛的應用,它除了可以測量電信以外,還可以用于溫度、濕度等非電信號的測量,能獨立工作的單片機溫度檢測、溫度控制系統(tǒng)已經(jīng)廣泛應用很多領域。單片機是一種特殊的計算機,它是在一塊半導體的芯片上集成了CPU,存儲器,RAM,ROM,及
3、輸入與輸出接口電路,這種芯片稱為:單片機。由于單片機的集成度高,功能強,通用性好,特別是它具有體積小,重量輕,能耗低,價格便宜,可靠性高,抗干擾能力強和使用方便的優(yōu)點,使它迅速的得到了推廣應用,目前已成為測量控制系統(tǒng)中的優(yōu)選機種和新電子產(chǎn)品中的關鍵部件。單片機已不僅僅局限于小系統(tǒng)的概念,現(xiàn)已廣泛應用于家用電器,機電產(chǎn)品,辦公自動化用品,機器人,兒童玩具,航天器等領域。本次課程設計,就是用單片機實現(xiàn)溫度控制,傳統(tǒng)的溫度檢測大多以熱敏電阻為溫度傳感器,但熱敏電阻的可靠性差,測量溫度準確率低,而且必須經(jīng)過專門的接口電路轉換成數(shù)字信號才能由單片機進行處理。本次采用DS18B20數(shù)字溫度傳感器來實現(xiàn)基于
4、51單片機的數(shù)字溫度計的設計。傳統(tǒng)的溫度計有反應速度慢、讀數(shù)麻煩、測量精度不高、誤差大等缺點而下面利用集成溫度傳感器AD590設計并制作了一款基于AT89C51的4位數(shù)碼管顯示的數(shù)字溫度計,其電路簡單,軟硬件結構模塊化,易于實現(xiàn)。 該數(shù)字溫度計利用AD590集成溫度傳感器及其接口電路完成溫度的測量并轉換成模擬電壓信號,經(jīng)由模數(shù)轉換器ADC0804轉換成單片機能夠處理的數(shù)字信號,然后送到單片機AT89C51中進行處理變換,最后將溫度值顯示在D4、D3、D2、D1共4位七段碼LED顯示器上。系統(tǒng)以AT89C51單片機為控制核心,加上AD590測溫電路、ADC模數(shù)轉換電路、4位溫度數(shù)據(jù)顯示電路以及外
5、圍電源、時鐘電路等組成。 2 設計任務及要求2.1 設計任務現(xiàn)代社會生活中,多功能的數(shù)字溫度計可以給我們的生活帶來很大的方便;支持“一線總線”接口的溫度傳感器簡化了數(shù)字溫度計的設計,降低了成本;以美國MAXIM/DALLAS半導體公司的單總線溫度傳感器DS18B20為核心,以ATMEL公司的AT89S52為控制器設計的DS18B20溫度控制器結構簡單、測溫準確、具有一定控制功能的智能溫度控制器。此次課程設計,就是用單片機1實現(xiàn)溫度控制,傳統(tǒng)的溫度檢測大多以熱敏電阻為溫度傳感器,但熱敏電阻的可靠性差,測量溫度準確率低,而且必須經(jīng)過專門的接口電路轉換成數(shù)字信號才能由單片機進行處理。本次采用DS18
6、B20數(shù)字溫度傳感器來實現(xiàn)基于51單片機的數(shù)字溫度計的設計。該數(shù)字溫度計利用AD590集成溫度傳感器及其接口電路完成溫度的測量并轉換成模擬電壓信號,經(jīng)由模數(shù)轉換器ADC0804轉換成單片機能夠處理的數(shù)字信號,然后送到單片機AT89C51中進行處理變換,最后將溫度值顯示在D4、D3、D2、D1共4位七段碼LED顯示器上。系統(tǒng)以AT89C51單片機為控制核心,加上AD590測溫電路、ADC模數(shù)轉換電路、4位溫度數(shù)據(jù)顯示電路以及外圍電源、時鐘電路等組成。2.2 設計要求設計一個基于單片機的DS18B20數(shù)字溫度計。課程設計要求: 5V供電; 溫度采集采用DS18B20; 4位LED顯示; 2個按鍵;
7、 設計溫度控制器原理圖,學習用PROTEL畫出該原理圖,并用proteus進行仿真;設計和繪制軟件流程圖,用C語言進行程序編寫;焊接硬件電路,進行調試。3 課程設計方案及器材選用分析3.1設計總體方案提及到溫度的檢測,我們首先會考慮傳統(tǒng)的測溫元件有熱電偶和熱電阻,而熱電偶和熱電阻測出的一般都是電壓,再轉換成對應的溫度,需要比較多的外部硬件支持,硬件電路復雜,軟件調試也復雜,制作成本高。因此,本數(shù)字溫度計設計采用智能溫度傳感器DS18B20作為檢測元件,測溫范圍為-55C至+125C,最大分辨率可達0.0625C。DS18B20可以直接讀出被測量的溫度值,而采用三線制與單片機相連,減少了外部的硬
8、件電路,具有低成本和易使用的特點。按照系統(tǒng)設計功能的要求,確定系統(tǒng)由三個模塊組成:主控制器STC89C51,溫度傳感器DS18B20,驅動顯示電路??傮w電路框圖如下:主控制器STC89C51DS18B20驅動顯示電路圖3.1 系統(tǒng)總體框圖3.1.1方案論證方案一:由于本設計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應,在將隨被測溫度變化的電壓或電流采集過來,進行A/D轉換后,就可以用單片機進行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設計需要用到A/D轉換電路,感溫電路比較麻煩。所以,他的設計理論不符合本次設計的方案要求,應繼續(xù)考慮另一可行方案。方案二:進而考慮到用溫度傳
9、感器,在單片機電路設計中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進行轉換,就可以滿足設計要求。因此,從以上兩種方案很容易看出,方案二,電路比較簡單,軟件設計也比較簡單,故采用了方案二。3.1.2方案二的總體設計框圖溫度計電路設計總體設計方框圖如圖1所示,控制器采用單片機AT89S51,溫度傳感器采用DS18B20,用3位LED數(shù)碼管以串口傳送數(shù)據(jù)實現(xiàn)溫度顯示。DS18B20 采用3 腳PR-35 封裝或8 腳SOIC 封裝。主 控 制 器LED顯 示溫 度 傳 感 器單片機復位時鐘振蕩報警點按鍵調整圖3.2
10、總體設計方框圖主控制器:單片機AT89S51具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統(tǒng)的設計需要,很適合便攜手持式產(chǎn)品的設計使用系統(tǒng)可用二節(jié)電池供電。顯示電路:顯示電路采用3位共陽LED數(shù)碼管,從P3口RXD,TXD串口輸出段碼。3.2器材選用分析3.2.1 DS18B20溫度傳感器1. DS18B20的特點本設計的測溫系統(tǒng)采用芯片DS18B20,DS18B20是DALLAS公司的最新單線數(shù)字溫度傳感器,它的體積更小,適用電壓更寬,更經(jīng)濟。實現(xiàn)方法簡介DS18B20采用外接電源方式工作,一線測溫一線與STC89C51連接,測出的數(shù)據(jù)放在寄存器中,將數(shù)據(jù)經(jīng)過BCD碼轉換后
11、送到LED顯示。DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)位的數(shù)字值讀數(shù)方式。DS18B20的性能特點如下:獨特的單線接口僅需要一個端口引腳進行通信;多個DS18B20可以并聯(lián)在惟一的三線上,實現(xiàn)多點組網(wǎng)功能;無須外部器件;可通過數(shù)據(jù)線供電,電壓范圍為3.05.5;零待機功耗;溫度以或位數(shù)字;用戶可定義報警設置;報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件;負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作; DS18B20內部
12、結構主要由四部分組成:64位光刻ROM,溫度傳感器,非揮發(fā)的溫度報警觸發(fā)器TH和TL,高速暫存器。DS18B20的管腳排列如圖2-3-1所示。64位光刻ROM是出廠前被光刻好的,它可以看作是該DS18B20的地址序列號。不同的器件地址序列號不同。 C64 位ROM和單線接口高速緩存存儲器與控制邏輯溫度傳感器高溫觸發(fā)器TH低溫觸發(fā)器TL配置寄存器8位CRC發(fā)生器Vdd 圖3.3 DS18B20的內部結構圖3.4 DS18B20的引腳分布圖64位ROM的結構開始8位是產(chǎn)品類型的編號,接著是每個器件的惟一的序號,共有48位,最后8位是前面56位的CRC檢驗碼,這也是多個DS18B20可以采用一線進行
13、通信的原因。溫度報警觸發(fā)器和,可通過軟件寫入戶報警上下限。DS18B20溫度傳感器的內部存儲器還包括一個高速暫存RAM和一個非易失性的可電擦除的EERAM。高速暫存RAM的結構為字節(jié)的存儲器,結構如圖2-3-2所示。頭2個字節(jié)包含測得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復位時被刷新。第5個字節(jié),為配置寄存器,它的內容用于確定溫度值的數(shù)字轉換分辨率。DS18B20工作時寄存器中的分辨率轉換為相應精度的溫度數(shù)值。該字節(jié)各位的定義如下圖所示。低5位一直為1,TM是工作模式位,用于設置DS18B20在工作模式還是在測試模式,DS18B20出廠時該位被設置為0,用戶要去改動,R
14、1和0決定溫度轉換的精度位數(shù),來設置分辨率。圖3.5 DS18B20的字節(jié)定義DS18B20高速暫存器共9個存存單元,如表所示:表3-1 DS18B20的引腳分布圖序號 寄存器名稱 作 用 序號 寄存器名稱 0 溫度低字節(jié) 以16位補碼形式存放 4、5 保留字節(jié)1、2 1 溫度高字節(jié) 6 計數(shù)器余值 2 TH/用戶字節(jié)1 存放溫度上限 7 計數(shù)器/ 3 HL/用戶字節(jié)2 存放溫度下限 8 CRC 以12位轉化為例說明溫度高低字節(jié)存放形式及計算:12位轉化后得到的12位數(shù)據(jù),存儲在18B20的兩個高低兩個8位的RAM中,二進制中的前面5位是符號位。如果測得的溫度大于0,這5位為0,只要將測到的數(shù)
15、值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625才能得到實際溫度。 高8位 S S S S S 26 25 24 低8位 23 22 21 20 2-1 2-2 2-3 2-4 表3-2 DS18B20的字節(jié)存放表由下圖可以看到,Dsl8820的內部存儲器是由8個單元組成,其中第0、1個存放測量溫度值,第2、3分別存放報警溫度的上下限值,第4單元為配置單元,5、6、7單元在DSl8820這里沒有被用到。對于第4個寄存器,用戶可以設置溫度轉換精度,系統(tǒng)默認12bit轉換精度,相當于十進制的00625,其轉換時間大約為750磷。具體見表2-4
16、-1。圖3.6 內部存儲器結構圖表3-3 溫度精度配置R1R0轉換精度(16進制)轉換精度(十進制)轉換時間009bit0.593.75ms0110bit0.25187.5ms1011bit0.125375ms1112bit0.0625750ms 由表3-3可見,DS18B20溫度轉換的時間比較長,而且分辨率越高,所需要的溫度數(shù)據(jù)轉換時間越長。因此,在實際應用中要將分辨率和轉換時間權衡考慮。高速暫存RAM的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)讀出前面所有8字節(jié)的CRC碼,可用來檢驗數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。當DS18B20接收到溫度轉換命令后,開始啟動轉換。轉換完成后的溫度
17、值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第1、2字節(jié)。單片機可以通過單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時低位在先,高位在后,數(shù)據(jù)格式以0.0625LSB形式表示。當符號位S0時,表示測得的溫度值為正值,可以直接將二進制位轉換為十進制;當符號位S1時,表示測得的溫度值為負值,要先將補碼變成原碼,再計算十進制數(shù)值。表2-4-2是一部分溫度值對應的二進制溫度數(shù)據(jù)。表3-4 溫度精度配置溫度/二進制表示十六進制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00000191H+1
18、0.1250000 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 10000000H-0.51111 1111 1111 0000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90HDS18B20完成溫度轉換后,就把測得的溫度值與RAM中的TH、TL字節(jié)內容作比較。若TTH或TTL,則將該器件內的報警標志位置位,并對主機發(fā)出的報警搜索命令作出響應。因此,可用多只DS18B20同時
19、測量溫度并進行報警搜索。在64位ROM的最高有效字節(jié)中存儲有循環(huán)冗余檢驗碼(CRC)。主機ROM的前56位來計算CRC值,并和存入DS18B20的CRC值作比較,以判斷主機收到的ROM數(shù)據(jù)是否正確。DS18B20的測溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器1;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數(shù)器2的脈沖輸入。器件中還有一個計數(shù)門,當計數(shù)門打開時,DS18B20就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖進行計數(shù)進而完成溫度測量。計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將55所對應的一個基
20、數(shù)分別置入減法計數(shù)器1、溫度寄存器中,計數(shù)器1和溫度寄存器被預置在55所對應的一個基數(shù)值。減法計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當減法計數(shù)器1的預置值減到0時,溫度寄存器的值將加1,減法計數(shù)器1的預置將重新被裝入,減法計數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到減法計數(shù)器計數(shù)到0時,停止溫度寄存器的累加,此時溫度寄存器中的數(shù)值就是所測溫度值。其輸出用于修正減法計數(shù)器的預置值,只要計數(shù)器門仍未關閉就重復上述過程,直到溫度寄存器值大致被測溫度值。 另外,由于DS18B20單線通信功能是分時完成的,它有嚴格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20
21、的各種操作按協(xié)議進行。操作協(xié)議為:初使化DS18B20(發(fā)復位脈沖)發(fā)ROM功能命令發(fā)存儲器操作命令處理數(shù)據(jù)。 由于DS18B20采用的“一線總線”結構,所以數(shù)據(jù)的傳輸與命令的通訊只要通過微處理器的一根雙向Io口就可以實現(xiàn)。DSl8B20約定在每次通信前必須對其復位,具體的復位時序如圖2-4-2所示。 圖3.7 復位時序圖 圖2-4-3中所示,tRSTL為主機發(fā)出的低電平信號,本文中有AT89S52提供,tRSTL的最小時延為,然后釋放總線,檢查DSl8B20的返回信號,看其是否已準備接受其他操作,其中tPDHIGH時間最小為,最長不能超過,否則認為DS18B20沒有準備好,主機應繼續(xù)復位,直
22、到檢測到返回信號變?yōu)榈碗娖綖橹?。?-5 DS18B20的ROM操作指令操作指令33H55HCCHF0HECH含義讀ROM匹配ROM跳過ROM搜索ROM報警搜索ROM表3-6 DS18B20的存儲器操作指令操作指令4EHBEH48H44HD8HB4H含義寫讀內部復制溫度轉換重新調出讀電源主機一旦檢測到DS18B20的存在,根據(jù)DS18B2的工作協(xié)議,就應對ROM進行操作,接著對存儲器操作,最后進行數(shù)據(jù)處理。在DS18B20中規(guī)定了5條對ROM的操作命令。見表2-4-3。主機在發(fā)送完ROM操作指令之后,就可以對DS18B20內部的存儲器進行操作,同樣DS18B20規(guī)定了6條操作指令。見表2-4-
23、4。 DS18B20的讀、寫時序圖見圖2-4-3。圖3.8 DS18B20的讀寫時序圖2. DS18B20的使用方法由于DS18B20采用的是1Wire總線協(xié)議方式,即在一根數(shù)據(jù)線實現(xiàn)數(shù)據(jù)的雙向傳輸,而對AT89S51單片機來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時序來完成對DS18B20芯片的訪問。由于DS18B20是在一根I/O線上讀寫數(shù)據(jù),因此,對讀寫的數(shù)據(jù)位有著嚴格的時序要求。DS18B20有嚴格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號的時序:初始化時序、讀時序、寫時序。所有時序都是將圖3.9 DS18B20的復位時序圖3
24、.10 DS18B20的讀時序圖3.11 DS18B20的寫時序主機作為主設備,單總線器件作為從設備。而每一次命令和數(shù)據(jù)的傳輸都是從主機主動啟動寫時序開始,如果要求單總線器件回送數(shù)據(jù),在進行寫命令后,主機需啟動讀時序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。對于DS18B20的讀時序分為讀0時序和讀1時序兩個過程。對于DS18B20的讀時隙是從主機把單總線拉低之后,在15秒之內就得釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個讀時序過程,至少需要60us才能完成。DS18B20的寫時序,對于DS18B20的寫時序仍然分為寫0時序和寫1時序兩個過程,對于DS18B
25、20寫0時序和寫1時序的要求不同,當要寫0時序時,單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當要寫1時序時,單總線被拉低之后,在15us之內就得釋放單線3.2.2 AT89S52單片機介紹1. AT89S52的主要性能與MCS-51單片機產(chǎn)品兼容,8K字節(jié)在系統(tǒng)可編程Flash存儲器、 1000次擦寫周期、 全靜態(tài)操作:0Hz33Hz 、三級加密程序存儲器 、 32個可編程I/O口線 、三個16位定時器/計數(shù)器 八個中斷源 、全雙工UART串行通道、 低功耗空閑和掉電模式 、掉電后中斷可喚醒 、看門狗定時器 、雙數(shù)據(jù)指針 、
26、掉電標識符 。2. AT89S52的功能特性AT89S52 是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel公司高密度非易失性存儲器技術制造,與工業(yè)80C51 產(chǎn)品指令和引腳完 全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于 常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng) 可編程Flash,使得AT89S52為眾多嵌入式控制應用系統(tǒng)提 供高靈活、超有效的解決方案。 AT89S52具有以下標準功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門狗定時器,2個數(shù)據(jù)指針,三個16 位 定時器/計數(shù)器,一個6
27、向量2級中斷結構,全雙工串行口, 片內晶振及時鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工 作。掉電保護方式下,RAM內容被保存,振蕩器被凍結, 單片機一切工作停止,直到下一個中斷或硬件復位為止。8 位微控制器 8K 字節(jié)在系統(tǒng)可編程 Flash AT89S52 P0 口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅動8個TTL邏輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。 當訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復用。在這種模式下,P0
28、具有內部上拉電阻。 在flash編程時,P0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗 時,需要外部上拉電阻。 P1 口:P1 口是一個具有內部上拉電阻的8 位雙向I/O 口,P1 輸出緩沖器能驅動4 個TTL 邏輯電平。對P1 端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。此外,P1.0和P1.2分別作定時器/計數(shù)器2的外部計數(shù)輸入(P1.0/T2)和時器/計數(shù)器2 的觸發(fā)輸入(P1.1/T2EX),具體如下表所示。 在flash編程和校驗時,P1口接收低8位地址字節(jié)。 引腳號第二功能
29、 P1.0 T2(定時器/計數(shù)器T2的外部計數(shù)輸入),時鐘輸出 P1.1 T2EX(定時器/計數(shù)器T2的捕捉/重載觸發(fā)信號和方向控制) P1.5 MOSI(在系統(tǒng)編程用) P1.6 MISO(在系統(tǒng)編程用) P1.7 SCK(在系統(tǒng)編程用) P2 口:P2 口是一個具有內部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅動4 個 TTL 邏輯電平。對P2 端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入 口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX DPTR) 時,P2 口送
30、出高八位地址。在這種應用中,P2 口使用很強的內部上拉發(fā)送1。在使用 8位地址(如MOVX RI)訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內容。 在flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制信號。 P3 口:P3 口是一個具有內部上拉電阻的8 位雙向I/O 口,p2 輸出緩沖器能驅動4 個TTL 邏輯電平。對P3 端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。 P3口亦作為AT89S52特殊功能(第二功能)使用,如下所示。 在flash編程和校驗時,P3口也接收一些控制信號。 端口
31、引腳 第二功能P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 INT0(外中斷0)P3.3 INT1(外中斷1)P3.4 T0(定時/計數(shù)器0)P3.5 T1(定時/計數(shù)器1)P3.6 WR(外部數(shù)據(jù)存儲器寫選通)P3.7 RD(外部數(shù)據(jù)存儲器讀選通)此外,P3口還接收一些用于FLASH閃存編程和程序校驗的控制信號。RST復位輸入。當振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將是單片機復位。ALE/PROG當訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它
32、可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。對FLASH存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應設置ALE禁止位無效。PSEN程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當AT89C52由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次PSEN有效,即輸出兩個脈沖,在此期間,當訪問外部數(shù)據(jù)存儲器,將跳過兩次PSEN信號。EA
33、/VPP外部訪問允許,欲使CPU僅訪問外部程序存儲器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復位時內部會鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行內部程序存儲器的指令。FLASH存儲器編程時,該引腳加上+12V的編程允許電源Vpp,當然這必須是該器件是使用12V編程電壓Vpp。3.3 軟件流程圖系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉換命令子程序,計算溫度子程序,顯示數(shù)據(jù)刷新子程序等。3.3.1 主程序初始化調用顯示子程序1S到?初次上電讀出溫度值溫度計算處理顯示數(shù)據(jù)刷新發(fā)溫度轉換開始命令NYNY主程序的主要功
34、能是負責溫度的實時顯示、讀出并處理DS18B20的測量的當前溫度值,溫度測量每1s進行一次。這樣可以在一秒之內測量一次被測溫度,其程序流程見圖7所示。Y發(fā)DS18B20復位命令發(fā)跳過ROM命令發(fā)讀取溫度命令讀取操作,CRC校驗9字節(jié)完?CRC校驗正?確?移入溫度暫存器結束NNY 3.12主程序流程圖 圖3-13 讀溫度流程圖3.3.2 讀溫度子程序讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時需進行CRC校驗,校驗有錯時不進行溫度數(shù)據(jù)的改寫。其程序流程圖如圖8示發(fā)DS18B20復位命令發(fā)跳過ROM命令發(fā)溫度轉換開始命令結束圖3.13 溫度轉換流程圖3.3.3 溫度轉換命令子程序溫度轉
35、換命令子程序主要是發(fā)溫度轉換開始命令,當采用12位分辨率時轉換時間約為750ms,在本程序設計中采用1s顯示程序延時法等待轉換的完成。溫度轉換命令子程序流程圖如上圖,圖3.14所示3.3.4 計算溫度子程序計算溫度子程序將RAM中讀取值進行BCD碼的轉換運算,并進行溫度值正負的判定,其程序流程圖如圖3.15所示溫度數(shù)據(jù)移入顯示寄存器十位數(shù)0?百位數(shù)0?十位數(shù)顯示符號百位數(shù)不顯示百位數(shù)顯示數(shù)據(jù)(不顯示符號) 結束NNYY 開始溫度零下?溫度值取補碼置“”標志計算小數(shù)位溫度BCD值 計算整數(shù)位溫度BCD值 結束置“+”標志NY 圖3-14 計算溫度流程圖 圖3-15顯示數(shù)據(jù)刷新流程圖164 硬件電
36、路的設計4.1 Protel99 SE軟件介紹4.1.1 Protel99 SE軟件Protel99 SE 5共分5個模塊,分別是原理圖設計、PCB設計(包含信號完整性分析)、自動布線器、原理圖混合信號仿真、PLD設計。 以下介紹一些Protel99SE的部分最新功能: l 可生成30多種格式的電氣連接網(wǎng)絡表; l 強大的全局編輯功能; l 在原理圖中選擇一級器件,PCB中同樣的器件也將被選中; l 同時運行原理圖和PCB,在打開的原理圖和PCB圖間允許雙向交叉查找元器件、引腳、網(wǎng)絡 l 既可以進行正向注釋元器件標號(由原理圖到PCB),也可以進行反向注釋(由PCB到原理圖),以保持電氣原理圖
37、和PCB在設計上的一致性; l 滿足國際化設計要求(包括國標標題欄輸出,GB4728國標庫); * 方便易用的數(shù)?;旌戏抡妫嫒軸PICE 3f5); l 支持用CUPL語言和原理圖設計PLD,生成標準的JED下載文件; * PCB可設計32個信號層,16個電源-地層和16個機加工層; l 強大的“規(guī)則驅動”設計環(huán)境,符合在線的和批處理的設計規(guī)則檢查; l 智能覆銅功能,覆鈾可以自動重鋪; l 提供大量的工業(yè)化標準電路板做為設計模版; l 放置漢字功能; l 可以輸入和輸出DXF、DWG格式文件,實現(xiàn)和AutoCAD等軟件的數(shù)據(jù)交換; l 智能封裝導航(對于建立復雜的PGA、BGA封裝很有用)
38、; l 方便的打印預覽功能,不用修改PCB文件就可以直接控制打印結果; l 獨特的3D顯示可以在制板之前看到裝配事物的效果; l 強大的CAM處理使您輕松實現(xiàn)輸出光繪文件、材料清單、鉆孔文件、貼片機文件、測試點報告等; l 經(jīng)過充分驗證的傳輸線特性和仿真精確計算的算法,信號完整性分析直接從PCB啟動; l 反射和串擾仿真的波形顯示結果與便利的測量工具相結合; l 專家導航幫您解決信號完整性問題。 4.1.2主控制電路AT89S52原理圖:系統(tǒng)完整電路圖如下:圖5.16主電路原理圖 圖5.17 數(shù)碼管連線圖5.18 系統(tǒng)報警電路圖5.19電路的PCB圖4.2 Proteus 進行仿真程序編寫完以
39、后,我們先對其進行仿真,初步驗證電路圖和程序的可行性和正確性。4.2.1 roteus6簡介Proteus 是英國Labcenter公司開發(fā)的電路分析與實物仿真軟件。它運行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件的特點是: 1 實現(xiàn)了單片機仿真和SPICE電路仿真相結合。具有模擬電路仿真、數(shù)字電路仿真、單片機及其外圍電路組成的系統(tǒng)的仿真、RS232動態(tài)仿真、I2C調試器、SPI調試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。 2 支持主流單片機系統(tǒng)的仿真。目前支持的單片機類型有:ARM7(LPC21xx)、
40、8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多種外圍芯片。 3 提供軟件調試功能。在硬件仿真系統(tǒng)中具有全速、單步、設置斷點等調試功能,同時可以觀察各個變量、寄存器等的當前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;同時支持第三方的軟件編譯和調試環(huán)境,如Keil C51 uVision2、MPLAB等軟件。 具有強大的原理圖繪制功能。總之,該軟件是一款集單片機和SPICE分析于一身的仿真軟件,功能極其強大。 proteus6.5是目前最好的模擬單片機外圍器件的工具,真的很不錯??梢苑抡?1系列、AVR,PIC等常用的MCU及其外圍電路(如LCD,RAM
41、,ROM,鍵盤,馬達,LED,AD/DA,部分SPI器件,部分IIC器件,.) 其實proteus 與 multisim比較類似,只不過它可以仿真MCU。4.2.2 proteus仿真圖5 調試性能及分析 系統(tǒng)的性能調試以(1、主程序)為主。硬件調試比較簡單,首先檢查電路的焊接是否正確,然后用萬用表測試。軟件調試可以先編寫顯示程序并進行硬件的正確性檢驗,然后分別進行主程序、從程序的編寫和調試,由于DS18B20與單片機采用串行數(shù)據(jù)傳送,因此對DS18B20進行編程時必須嚴格地保證讀寫時序,否則將無法讀取測量結果。性能測試可用制作的溫度計和已有的成品溫度計來同時測量比較,由于DS18B20精度較
42、高,所以誤差指標可以限制在0.1C以內,另外,-55C至+125C的測溫范圍使得該溫度計完全適用于一般的應用場合,其低電壓供電的特性可做成電池供電的手持電子溫度計。電路焊接板圖片如下:課程設計心得本次的課程設計共三周時間,分別進行了BS18D20電路原理圖的設計,電路仿真圖的設計以及實物電路板的焊制三個過程。經(jīng)過這次的課程設計,我們不僅加深了對Protel99 SE軟件的應用和Proteus仿真軟件的了解和使用,還學到了許多課本上沒有涉及知識,練習了電路原理圖的設計和仿真運行,同時對上學期學習的單片機課程進行了一次全面的復習和鞏固,收益很大。我們知道,課程設計一般強調能力培養(yǎng)為主,在獨立完成設
43、計任務的同時,還要注意其他幾方面能力的培養(yǎng)與提高,如獨立工作能力與創(chuàng)造力;綜合運用專業(yè)及基礎知識的能力,解決實際工程技術問題的能力;查閱圖書資料、產(chǎn)品手冊和各種工具書的能力;工程繪圖的能力;書寫技術報告和編制技術資料的能力。在專業(yè)知識與研究方法方面為日后的畢業(yè)設計乃至畢業(yè)后的工作奠定良好的基礎第一周是對BS18D20電路原理圖設計,剛開始感覺有一定的難度,主要是對Protel99 SE軟件及功能的不了解。但在老師和同學的幫助下還是順利的完成了,進而對接下來的兩個任務有了興趣。整個課設的過程就是一個學習的過程。因為在課設的過程中,我們必須熟悉電路原理及器件的使用特點,這些都是對課本知識復習和鞏固
44、。所以 我覺得課設是一個很重要的學習環(huán)節(jié),值得我們應該很認真的去對待!由于本次課程設計是由分組進行完成的,所以通過這次的課設我更加了解到合作的重要性。三周的設計中,我們組成員都參加了設計的各個方面的討論和動手實踐,大家更具自己的實際情況做了不同的分工,合理的利用了時間,感覺得到了很好的經(jīng)驗。這次課設讓我對單片機有了進一步的了解,而且對Proteus仿真軟件的有了一定了解。體會到了Proteus仿真軟件的強大。最主要的是我們能夠自己通過單片機焊接事物,這是我們在課堂上是學不到的。極大地增強了我們的動手實踐能力。通過本次課設,能夠使我們熟練掌握單片機控制電路的設計、程序編寫和整體焊接及系統(tǒng)調試,從
45、而全面地提高我們對單片機的軟件、硬件等方面的理解,進而增強我們在實踐環(huán)節(jié)的動手操作能力。譬如,我們可以根據(jù)實驗指導書的要求,完成BS18D20電路的硬件設計、電路器件的選擇、單片機軟件的運行、以及整體系統(tǒng)調試,并寫出完善的設計報告。在進行課設之前,要求我們具備數(shù)字電路、模擬電路、電路基礎、微機原理、電力電子、電機學和單片機等相關課程的知識,并具備一些基本的實踐操作水平,為以后的就業(yè)打好一定的基礎。總的來說,這次的課程設計自己還是很滿意的,感覺收獲了不少東西,相信此次學到的知識在以后的生活和學習中對我會有很大的幫助!參考文獻1 張五一,張道光.微機原理與接口技術.鄭州:河南科學技術出版社,200
46、62 李廣弟.單片機基礎. 北京:北京航空航天大學出版社,19943 廖常初.現(xiàn)場總線概述.電工技術,1999.4 倪曉軍.單片機原理與接口技術教程.北京:清華大學出版社,20095 姚年春 向華Protel99SE基礎教程. 北京.人民名郵電出版社,20096 韓穎; Proteus在單片機技術實訓教學中的應用J;中國科教創(chuàng)新導刊;2008年31期7 周靈彬;張靖武.PROTEUS的單片機教學與應用仿真J.單片機與嵌入式系統(tǒng)應用;2008年01期附錄:DS18B20顯示程序-#include #define uint unsigned int#define uchar unsigned ch
47、ar /宏定義sbit p34=P24;sbit p35=P25;sbit p36=P26;sbit dp=P07;sbit p37=P27;sbit DQ=P22; /定義DS18B20總線I/Osbit SET=P31; /定義選擇報調整警溫度上限和下限(1為上限,0為下限)/*P3.2和P3.3為調整溫度報警增加鍵和減少鍵*/sbit LING=P20; /定義響鈴signed char m; /溫度值全局變量bit sign=0; /外部中斷狀態(tài)標志signed char shangxian=38; /上限報警溫度,默認值為38signed char xiaxian=6; /下限報警溫
48、度,默認值為5uchar code LEDData=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 xff,0 xbf;/*延時子程序*/void Delay(uint i) while( i- );/*初始化DS18B20*/void Init_DS18B20(void) unsigned char x=0; DQ=1; Delay(8); /稍做延時 DQ=0; /單片機將DQ拉低 Delay(80); /精確延時,大于480us DQ=1; /拉高總線 Delay(14); x=DQ; /稍做延時后,如果x=0則
49、初始化成功,x=1則初始化失敗 Delay(20);/*讀一個字節(jié)*/unsigned char ReadOneChar(void) unsigned char i=0; unsigned char dat=0; for (i=8;i0;i-) DQ=0; / 給脈沖信號 dat=1; DQ=1; / 給脈沖信號 if(DQ) dat|=0 x80; Delay(4); return(dat);/*寫一個字節(jié)*/void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) DQ=0; DQ=dat&0 x01
50、; Delay(5); DQ=1; dat=1; void Tmpchange(void) /發(fā)送溫度轉換命令 Init_DS18B20(); WriteOneChar(0 xCC); /跳過讀序號列號的操作 WriteOneChar(0 x44); /啟動溫度轉換/*讀取溫度*/unsigned int ReadTemperature(void) unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt=0; Tmpchange(); Init_DS18B20(); WriteOneChar(0 xCC); /跳過讀序號
51、列號的操作 WriteOneChar(0 xBE); /讀取溫度寄存器 a=ReadOneChar(); /讀低8位 b=ReadOneChar(); /讀高8位 t=b; tshangxian | mxiaxian) LING=1; /溫度不在范圍內報警 else LING=0;p34=0;p35=0;p36=0;p37=0; P0 =LEDDatad; /顯示小數(shù)點后兩位 p34=1;p35=0;p36=0;p37=0; Delay(300);p34=0;p35=0;p36=0;p37=0; P0 =LEDDatac; /顯示小數(shù)點后一位p34=0;p35=1;p36=0;p37=0; D
52、elay(300);p34=0;p35=0;p36=0;p37=0; P0 =LEDDatab; /顯示個位dp=0;p34=0;p35=0;p36=1;p37=0; Delay(300);p34=0;p35=0;p36=0;p37=0; P0 =LEDDataa; /顯示十位p34=0;p35=0;p36=0;p37=1; Delay(300);p34=0;p35=0;p36=0;p37=0; /關閉顯示disptiaozheng() uchar f,g,j,k; f=shangxian/10; g=shangxian%10; j=xiaxian/10; k=xiaxian%10;p34=0
53、;p35=0;p36=0;p37=0; P0 =0 xc0; /顯示0p34=1;p35=0;p36=0;p37=0; Delay(200);p34=0;p35=0;p36=0;p37=0; P0 =0 xc0; /顯示0p34=0;p35=1;p36=0;p37=0; Delay(200);p34=0;p35=0;p36=0;p37=0; if(SET=1) P0 =LEDDatag; dp=0; /顯示上限溫度個位 else P0 =LEDDatak; dp=0; p34=0;p35=0;p36=1;p37=0; Delay(200);p34=0;p35=0;p36=0;p37=0; if
54、(SET=1) P0 =LEDDataf; /顯示上限溫度十位 else if(f=0) P0=0 x00; /不顯示下限溫度十位 else P0 =LEDDataj; /顯示下限溫度十位 p34=0;p35=0;p36=0;p37=1; Delay(200);p34=0;p35=0;p36=0;p37=0; /關閉顯示 Delay(20); /*外部中斷0服務程序*/void int0(void) interrupt 0 EX0=0; /關外部中斷0 sign=1; if(SET=1) shangxian+; else xiaxian+; Delay(500); EX0=1; /*外部中斷1
55、服務程序*/void int1(void) interrupt 2 EX1=0; /關外部中斷0 sign=1; if(SET=1) shangxian-; else xiaxian-; Delay(500); EX1=1; /*主函數(shù)*/void main(void) uint z; IT0=1; IT1=1; EX0=1; EX1=1; EA=1; ReadTemperature(); LING=0; for(z=0;z100;z+) Disp_init(); while(1) Disp_Temperature(); if(sign=1) for(z=0;z300;z+) disptiao
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習題含答案
- 2煤礦安全監(jiān)測工種技術比武題庫含解析
- 1 礦山應急救援安全知識競賽試題
- 1 礦井泵工考試練習題含答案
- 2煤礦爆破工考試復習題含答案
- 1 各種煤礦安全考試試題含答案