




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《基于單片機的數字溫度計課程設計》設計報告設計時間:班級:信工應電11(3)班姓名:李耿亮報告頁數:31頁廣東工業(yè)大學課程設計報告設計題目_基于單片機的數字溫度計設計_學院_信息工程_專業(yè)__應用電子技術_11(3)_班學號_3111002657_姓名__李耿亮__(合作者_張斌洪_第8組)成績評定_______教師簽名_______目錄一.課程設計目的………………………4二.設計任務……………4三.設計要求…………4四.設計方案及比擬〔設計可行性分析〕…………………4五.系統(tǒng)設計總體思路…………6六.系統(tǒng)原理框圖及工作原理分析……………61.溫度計設計系統(tǒng)流程圖…………………62.數字溫度計應用系統(tǒng)的硬件設計………8(1).單片機小系統(tǒng)的根本組成及其選擇………………8(2).電源…………………8(3).晶振控制……………8(4).I/O口&接口…………9(5).主要芯片及其功能…………………10①AT89S52……………10②DS18B20……………12③1602液晶顯示屏…………………18七.系統(tǒng)軟件程序的設計……………………191.軟件流程框圖……………192.C語言程序………………21八.系統(tǒng)仿真調試………………251.仿真器的介紹………………27⑴.keil軟件的開發(fā)運用…………………27①.KeilC51單片機軟件開發(fā)系統(tǒng)的整體結構………27②.使用獨立的Keil仿真器時,考前須知………28⑵.proteus軟件的開發(fā)運用.……………28①.Protues軟件介紹.………………28②.proteus的工作過程.………………282.系統(tǒng)整體調試…………………28⑴.仿真調試結果……………28⑵.仿真結果分析……………29九.PCB板制作以及成品制作調試……………29十.實驗結果……………………30十一.結論〔設計分析〕………30十二.課程設計心得體會……………………30一課程設計目的加強學生理論聯系實際的能力,提高學生的動手能力;學會根本電子元器件的識別和檢測;學會應用EDA軟件Proteus,Multisim進行電路的設計和仿真;根本掌握單片機的根本原理,并能將其應用于系統(tǒng)的設計:5.學會運用Altium
DesignerPcb進行pcb板制作;6.通過實訓,提高學生的學習興趣,激發(fā)自主學習能力,培養(yǎng)創(chuàng)新意識。二設計任務先焊制一個單片機最小系統(tǒng),并以制作的單片機最小系統(tǒng)為核心,設計并制作一個數字溫度計應用系統(tǒng)。三設計要求1采用DS18B20作為溫度傳感器進行溫度檢測;2對采集溫度進行顯示,采用兩路設計〔顯示溫度分辨率0.1℃3采集溫度數值應采用數字濾波措施,保證顯示數據穩(wěn)定;4顯示數據,無數據位必須消隱。四、設計方案及比擬〔設計可行性分析〕該系統(tǒng)主要由溫度測量和數據采集兩局部電路組成,實現的方法有很多種,下面將列出兩種在日常生活中和工農業(yè)生產中經常用到的實現方案。方案一采用熱電偶溫差電路測溫,溫度檢測局部可以使用低溫熱偶,熱電偶由兩個焊接在一起的異金屬導線所組成〔熱電偶的構成如圖3.1〕,熱電偶產生的熱電勢由兩種金屬的接觸電勢和單一導體的溫差電勢組成。通過將參考結點保持在溫度并測量該電壓,便可推斷出檢測結點的溫度。數據采集局部那么使用帶有A/D通道的單片機,在將隨被測溫度變化的電壓或電流采集過來,進行A/D轉換后,就可以用單片機進行數據的處理,在顯示電路上,就可以將被測溫度顯示出來。熱電偶的優(yōu)點是工作溫度范圍非常寬,且體積小,但是它們也存在著輸出電壓小、容易遭受來自導線環(huán)路的噪聲影響以及漂移較高的缺點,并且這種設計需要用到A/D轉換電路,感溫電路比擬麻煩。圖3.1熱電偶電路圖系統(tǒng)主要包括對A/D0809的數據采集,自動手開工作方式檢測,溫度的顯示等,這幾項功能的信號通過輸入輸出電路經單片機處理。此外還有復位電路,晶振電路,啟動電路等。故現場輸入硬件有手動復位鍵、A/D轉換芯片,處理芯片為51芯片,執(zhí)行機構有4位數碼管、報警器等。方案二采用數字溫度芯片DS18B20測量溫度,輸出信號全數字化。便于單片機處理及控制,省去傳統(tǒng)的測溫方法的很多外圍電路。且該芯片的物理化學性很穩(wěn)定,它能用做工業(yè)測溫元件,此元件線形較好。在0—100攝氏度時,最大線形偏差小于1攝氏度。DS18B20的最大特點之一采用了單總線的數據傳輸,由數字溫度計DS18B20和微控制器AT89C51(52)構成的溫度測量裝置,它直接輸出溫度的數字信號,可直接與計算機連接。這樣,測溫系統(tǒng)的結構就比擬簡單,體積也不大。采用控制工作,還可以與PC機通信上傳數據,另外AT89S51(52)在工業(yè)控制上也有著廣泛的應用,編程技術及外圍功能電路的配合使用都很成熟。該系統(tǒng)利用AT89C51(52)芯片控制溫度傳感器DS18B20進行實時溫度檢測并顯示,能夠實現快速測量環(huán)境溫度,并可以根據需要設定上下限報警溫度。該系統(tǒng)擴展性非常強,它可以在設計中參加時鐘芯片DS1302以獲取時間數據,在數據處理同時顯示時間,并可以利用AT24C16芯片作為存儲器件,以此來對某些時間點的溫度數據進行存儲,利用鍵盤來進行調時和溫度查詢,獲得的數據可以通過MAX232芯片與計算機的RS232系統(tǒng)框圖如圖1602顯示器單片機芯片1602顯示器單片機芯片AT89S52晶振控制晶振控制第一路第一路溫度檢測電DS18B20第二路第二路溫度檢測電DS18B20從以上兩種方案,容易看出方案一的測溫裝置可測溫度范圍寬、體積小,但是線性誤差較大。方案二的測溫裝置電路簡單、精確度較高、實現方便、軟件設計也比擬簡單,還可以進行各種功能的擴展,例如報警系統(tǒng),時間顯示等,故本次設計采用了方案二,并采用兩路設計。五系統(tǒng)設計總體思路設計方案及其總體設計框圖單片機芯片AT89S521602單片機芯片AT89S521602顯示器晶振控制晶振控制第一路第一路溫度檢測電DS18B20第二路第二路溫度檢測電路DS18B20六系統(tǒng)原理框圖及工作原理分析1.溫度計設計系統(tǒng)流程圖系統(tǒng)設計原理:本次課程設計是基于單片機的數字溫度計設計,在開始課程設計的時候我們要理解并掌握對單片機的開發(fā),學會使用系統(tǒng)設計原理:本次課程設計是基于單片機的數字溫度計設計,在開始課程設計的時候我們要理解并掌握對單片機的開發(fā),學會使用KEIL及Proteus,Multisim等仿真軟件。根據設計任務要求選擇好器件,編寫好程序運行成功之后進行軟件聯調,驗證系統(tǒng)是否正確。通過篩選,我們組選用單片機AT89S52作為主控制系統(tǒng);用1602液晶顯示模塊芯片作為溫度數據顯示裝置;智能溫度傳感器采用DS18B20器件作為測溫電路主要組成局部。開始進入緩沖區(qū)初始化進入緩沖區(qū)初始化復位復位DS18B20發(fā)跳過ROM命令溫度轉換命令溫度轉換命令延時延時復位復位DS18B20,跳過ROM命令讀存儲器命令讀存儲器命令讀溫度命令讀溫度命令更新數據緩沖區(qū)將溫度轉換為BCD碼更新數據緩沖區(qū)將溫度轉換為BCD碼2、數字溫度計應用系統(tǒng)的硬件設計(1)、單片機小系統(tǒng)的根本組成及其選擇單片機選型參考①AT89S51、AT89S52:具備ISP下載功能,可以使用USBASP程序下載線或者并口下載②STC89C51、STC89C52:使用串口線+MAX232燒寫程序。③AT89C51、AT89C52:可以在最小系統(tǒng)板上使用,但需要另外用編程器燒寫程序本次課程設計選用AT89S52型號單片機進行操作。AT89S52是一個低功耗,高性能CMOS8位單片機,片內含AT89S52是一個低功耗,高性能CMOS8位單片機,片內含8kBytesISP(In-systemprogrammable)的可反復擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術制造,兼容標準MCS-51指令系統(tǒng)及80C51引腳結構,芯片內集成了通用8位中央處理器和ISPFlash存儲單元,功能強大的微型計算機的AT89S52可為許多嵌入式控制應用系統(tǒng)提供高性價比的解決方案。
AT89S52具有如下特點:40個引腳,8kBytesFlash片內程序存儲器,256bytes的隨機存取數據存儲器〔RAM〕,32個外部雙向輸入/輸出〔I/O〕口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數器,2個全雙工串行通信口,看門狗〔WDT〕電路,片內時鐘振蕩器。
AT89S52引腳圖
此外,AT89S52設計和配置了振蕩頻率可為0Hz并可通過軟件設置省電模式。空閑模式下,CPU暫停工作,而RAM定時計數器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結振蕩器而保存RAM的數據,停止芯片其它功能直至外中斷激活或硬件復位。同時該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應不同產品的需求。此外,AT89S52設計和配置了振蕩頻率可為0Hz并可通過軟件設置省電模式??臻e模式下,CPU暫停工作,而RAM定時計數器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結振蕩器而保存RAM的數據,停止芯片其它功能直至外中斷激活或硬件復位。同時該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應不同產品的需求。(2)電源①電源適配器供電:DC座〔三個管腳〕②usb供電:(3)晶振控制晶振控制電路結構原理如右圖所示晶振控制電路結構原理如右圖所示(4)I/O口&接口①所有I/O用排針引出②串行通信口:P3.0,p3.1③ISP:p1.6,p1.7單片機共有4個單片機共有4個8位雙向并行I/O通道口,每位均有自己的鎖存器、輸出驅動器和輸入緩沖器組成。這種結構,在數據輸出時可以鎖存,及輸出新的數據以前,通道口上的原始數據不變。但對輸入信息是不鎖存的,所以從外部輸入的信息必須保持到取數指令執(zhí)行完為止。(5)主要芯片及其功能①AT89S52(也可以用AT89S51)引腳說明AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程AT89S52引腳圖DIP封裝Flash存儲器。使用Atmel公司高密度非易失性存儲器技術制造,與工業(yè)80C51產品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應用系統(tǒng)提供高靈活、超有效的解決方案。AT89S52具有以下標準功能:8k字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時器,2個數據指針,三個16位定時器/計數器,一個6向量2級中斷結構,全雙工串行口,片內晶振及時鐘電路。另外,AT89S52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU停止工作,允許RAM、定時器/計數器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。P0口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅動8個TTL邏輯電平。對P0端口寫“1〞時,引腳用作高阻抗輸入。當訪問外部程序和數據存儲器時,P0口也被作為低8位地址/數據復用。在這種模式下,P0不具有內部上拉電阻。在flash編程時,P0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。P1口:P1口是一個具有內部上拉電阻的8位雙向I/O口,p1輸出緩沖器能驅動4個TTL邏輯電平。對P1端口寫“1〞時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流〔IIL〕。此外,P1.0和P1.1分別作定時器/計數器2的外部計數輸入〔P1.0/T2〕和定時器/計數器2的觸發(fā)輸入〔P1.1/T2EX〕。在flash編程和校驗時,P1口接收低8位地址字節(jié)。引腳號第二功能:P1.0T2〔定時器/計數器T2的外部計數輸入〕,時鐘輸出P1.1T2EX〔定時器/計數器T2的捕捉/重載觸發(fā)信號和方向控制〕P1.5MOSI〔在系統(tǒng)編程用〕P1.6MISO〔在系統(tǒng)編程用〕P1.7SCK〔在系統(tǒng)編程用〕P2口:P2口是一個具有內部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅動AT89S52引腳圖PLCC封裝4個TTL邏輯電平。對P2端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流〔IIL〕。在訪問外部程序存儲器或用16位地址讀取外部數據存儲器〔例如執(zhí)行MOVX@DPTR〕時,P2口送出高八位地址。在這種應用中,P2口使用很強的內部上拉發(fā)送1。在使用8位地址〔如MOVX@RI〕訪問外部數據存儲器時,P2口輸出P2鎖存器的內容。在flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制信號。P3口:P3口是一個具有內部上拉電阻的8位雙向I/O口,p3輸出緩沖器能驅動4個TTL邏輯電平。對P3端口寫“1〞時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流〔IIL〕。P3口亦作為AT89S52特殊功能〔第二功能〕使用,如下表所示。在flash編程和校驗時,P3口也接收一些控制信號。端口引腳第二功能:P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2INTO(外中斷0)P3.3INT1(外中斷1)P3.4TO(定時/計數器0)P3.5T1(定時/計數器1)P3.6WR(外部數據存儲器寫選通)P3.7RD(外部數據存儲器讀選通)此外,P3口還接收一些用于FLASH閃存編程和程序校驗的控制信號。RST:復位輸入。當振蕩器工作時,RST引腳出現兩個機器周期以上高電平將是單片機復位。ALE/PROG:當訪問外部程序存儲器或數據存儲器時,ALE〔地址鎖存允許〕輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數據存儲器時將跳過一個ALE脈沖。對FLASH存儲器編程期間,該引腳還用于輸入編程脈沖〔PROG〕。如有必要,可通過對特殊功能存放器〔SFR〕區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應設置ALE禁止位無效。PSEN:程序儲存允許〔PSEN〕輸出是外部程序存儲器的讀選通信號,當AT89S52由外部程序存儲器取指令〔或數據〕時,每個機器周期兩次PSEN有效,即輸出兩個脈沖,在此期間,當訪問外部數據存儲器,將跳過兩次PSEN信號。EA/VPP:外部訪問允許,欲使CPU僅訪問外部程序存儲器〔地址為0000H-FFFFH〕,EA端必須保持低電平〔接地〕。需注意的是:如果加密位LB1被編程,復位時內部會鎖存EA端狀態(tài)。如EA端為高電平〔接Vcc端〕,CPU那么執(zhí)行內部程序存儲器的指令。FLASH存儲器編程時,該引腳加上+12V的編程允許電源Vpp,當然這必須是該器件是使用12V編程電壓Vpp。XTAL1:振蕩器反相放大器和內部時鐘發(fā)生電路的輸入端。XTAL2:振蕩器反相放大器的輸出端。②DS18B20②DS18B20DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改良型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據實際要求通過簡單的編程實現9-12位的數字值讀數方式。TO-92封裝的DS18B20的引腳排列見下列圖,其引腳功能描述見表3-3?!驳滓晥D〕圖3-3DS18B20引腳圖表3-3DS18B20詳細引腳功能描述序號名稱引腳功能描述1GND地信號2DQ數據輸入/輸出引腳。開漏單總線接口引腳。當被用著在寄生電源下,也可以向器件提供電源。3VDD可選擇的VDD引腳。當工作于寄生電源時此引腳必須接地。DS18B20的性能特點如下:獨特的單線接口僅需要一個端口引腳進行通信;多個DS18B20可以并聯在惟一的三線上,實現多點組網功能;無須外部器件;可通過數據線供電,電壓范圍為3.0~5.5V;零待機功耗;溫度以9或12位數字;用戶可定義報警設置;報警搜索命令識別并標志超過程序限定溫度〔溫度報警條件〕的器件;負電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作;DS18B20采用3腳PR-35封裝或8腳SOIC封裝,其內部結構框圖如圖3-4所示。I/OCI/OC64位ROM和單線接口高速緩存存儲器與控制邏輯溫度傳感器高溫觸發(fā)器TH低溫觸發(fā)器TL配置存放器8位CRC發(fā)生器Vdd圖3-4DS18B20內部結構64位ROM的結構開始8位是產品類型的編號,接著是每個器件的惟一的序號,共有48位,最后8位是前面56位的CRC檢驗碼,這也是多個DS18B20可以采用一線進行通信的原因。溫度報警觸發(fā)器TH和TL,可通過軟件寫入戶報警上下限。DS18B20溫度傳感器的內部存儲器還包括一個高速暫存RAM和一個非易失性的可電擦除的EERAM。高速暫存RAM的結構為8字節(jié)的存儲器,結構如圖3-4所示。頭2個字節(jié)包含測得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復位時被刷新。第5個字節(jié),為配置存放器,它的內容用于確定溫度值的數字轉換分辨率。DS18B20工作時存放器中的分辨率轉換為相應精度的溫度數值。該字節(jié)各位的定義如圖3-5所示。低5位一直為1,TM是工作模式位,用于設置DS18B20在工作模式還是在測試模式,DS18B20出廠時該位被設置為0,用戶要去改動,R1和R0決定溫度轉換的精度位數,來設置分辨率.溫度LSB溫度MSBTH用戶字節(jié)1TL用戶字節(jié)2配置存放器保存保存保存CRC圖3-5DS18B20字節(jié)定義DS18B20溫度轉換的時間比擬長,而且分辨率越高,所需要的溫度數據轉換時間越長。因此,在實際應用中要將分辨率和轉換時間權衡考慮。高速暫存RAM的第6、7、8字節(jié)保存未用,表現為全邏輯1。第9字節(jié)讀出前面所有8字節(jié)的CRC碼,可用來檢驗數據,從而保證通信數據的正確性。當DS18B20接收到溫度轉換命令后,開始啟動轉換。轉換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第1、2字節(jié)。單片機可以通過單線接口讀出該數據,讀數據時低位在先,高位在后,數據格式以0.0625℃當符號位S=0時,表示測得的溫度值為正值,可以直接將二進制位轉換為十進制;當符號位S=1時,表示測得的溫度值為負值,要先將補碼變成原碼,再計算十進制數值。表2是一局部溫度值對應的二進制溫度數據。表3-4DS18B20溫度轉換時間表R1R0分辨率/位溫度最大轉換時間/ms00993.750110187.510113751112750DS18B20完成溫度轉換后,就把測得的溫度值與RAM中的TH、TL字節(jié)內容作比擬。假設T>TH或T<TL,那么將該器件內的報警標志位置位,并對主機發(fā)出的報警搜索命令作出響應。因此,可用多只DS18B20同時測量溫度并進行報警搜索。在64位ROM的最高有效字節(jié)中存儲有循環(huán)冗余檢驗碼〔CRC〕。主機ROM的前56位來計算CRC值,并和存入DS18B20的CRC值作比擬,以判斷主機收到的ROM數據是否正確。DS18B20的測溫原理是這這樣的,器件中低溫度系數晶振的振蕩頻率受溫度的影響很小,用于產生固定頻率的脈沖信號送給減法計數器1;高溫度系數晶振隨溫度變化其振蕩頻率明顯改變,所產生的信號作為減法計數器2的脈沖輸入。器件中還有一個計數門,當計數門翻開時,DS18B20就對低溫度系數振蕩器產生的時鐘脈沖進行計數進而完成溫度測量。計數門的開啟時間由高溫度系數振蕩器來決定,每次測量前,首先將-55℃所對應的一個基數分別置入減法計數器1、溫度存放器中,計數器1和溫度存放器被預置在-55減法計數器1對低溫度系數晶振產生的脈沖信號進行減法計數,當減法計數器1的預置值減到0時,溫度存放器的值將加1,減法計數器1的預置將重新被裝入,減法計數器1重新開始對低溫度系數晶振產生的脈沖信號進行計數,如此循環(huán)直到減法計數器計數到0時,停止溫度存放器的累加,此時溫度存放器中的數值就是所測溫度值。其輸出用于修正減法計數器的預置值,只要計數器門仍未關閉就重復上述過程,直到溫度存放器值大致被測溫度值。表3-5一局部溫度對應值表溫度/℃二進制表示十六進制表示+125000001111101000007D0H+8500000101010100000550H+25.062500000001100100000191H+10.125000000001010000100A2H+0.500000000000000100008H000000000000010000000H-0.51111111111110000FFF8H-10.1251111111101011110FF5EH-25.06251111111001101111FE6FH-551111110010010000FC90H另外,由于DS18B20單線通信功能是分時完成的,它有嚴格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作按協(xié)議進行。操作協(xié)議為:初使化DS18B20〔發(fā)復位脈沖〕→發(fā)ROM功能命令→發(fā)存儲器操作命令→處理數據。DS18B20溫度傳感器與單片機的接口電路DS18B20可以采用兩種方式供電,一種是采用電源供電方式,此時DS18B20的1腳接地,2腳作為信號線,3腳接電源。另一種是寄生電源供電方式,如圖4所示單片機端口接單線總線,為保證在有效的DS18B20時鐘周期內提供足夠的電流,可用一個MOSFET管來完成對總線的上拉。當DS18B20處于寫存儲器操作和溫度A/D轉換操作時,總線上必須有強的上拉,上拉開啟時間最大為10us。采用寄生電源供電方式時VDD端接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。由于DS18B20是在一根I/O線上讀寫數據,因此,對讀寫的數據位有著嚴格的時序要求。DS18B20有嚴格的通信協(xié)議來保證各位數據傳輸的正確性和完整性。該協(xié)議定義了幾種信號的時序:初始化時序、讀時序、寫時序。所有時序都是將主機作為主設備,單總線器件作為從設備。而每一次命令和數據的傳輸都是從主機主動啟動寫時序開始,如果要求單總線器件回送數據,在進行寫命令后,主機需啟動讀時序完成數據接收。數據和命令的傳輸都是低位在先。DS18B20的復位時序DS18B20的讀時序對于DS18B20的讀時序分為讀0時序和讀1時序兩個過程。對于DS18B20的讀時隙是從主機把單總線拉低之后,在15秒之內就得釋放單總線,以讓DS18B20把數據傳輸到單總線上。DS18B20在完成一個讀時序過程,至少需要60us才能完成。DS18B20的寫時序對于DS18B20的寫時序仍然分為寫0時序和寫1時序兩個過程。對于DS18B20寫0時序和寫1時序的要求不同,當要寫0時序時,單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0〞電平,當要寫1時序時,單總線被拉低之后,在15us之內就得釋放單總線。③1602液晶顯示屏調用子程序設置第二行顯示位置與內容調用子程序設置第一行顯示位置與內容1602液晶顯示流程圖:調用子程序設置第二行顯示位置與內容調用子程序設置第一行顯示位置與內容延時初始化1602延時初始化1602開始工業(yè)字符型液晶,能夠同時顯示16x02即32個字符?!?6列2行〕注:為了表示的方便,后文皆以1表示高電平,0表示低電平。1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊。它由假設干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形〔用自定義CGRAM,顯示效果也不好〕。1602LCD是指顯示的內容為16X2,即可以顯示兩行,每行16個字符液晶模塊〔顯示字符和數字〕。目前市面上字符液晶絕大多數是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780寫的控制程序可以很方便地應用于市面上大局部的字符型液晶。管腳功能LCD1602引腳圖1602采用標準的16腳接口,其中:第1腳:VSS為電源地第2腳:VCC接5V電源正極第3腳:V0為液晶顯示器比照度調整端,接正電源時比照度最弱,接地電源時比照度最高〔比照度過高時會產生“鬼影〞,使用時可以通過一個10K的電位器調整比照度〕。第4腳:RS為存放器選擇,高電平1時選擇數據存放器、低電平0時選擇指令存放器。第5腳:RW為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。第6腳:E(或EN)端為使能(enable)端。第7~14腳:D0~D7為8位雙向數據端。第15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負極。七系統(tǒng)軟件程序的設計1軟件流程框圖:發(fā)DS18B20發(fā)DS18B20復位命令初始化發(fā)跳過ROM命令調用顯示子程序發(fā)跳過ROM命令調用顯示子程序NN發(fā)讀取溫度命令是否正確發(fā)讀取溫度命令是否正確讀取操作并進行校驗NY讀取操作并進行校驗NY初次上串初次上串YNYN字節(jié)是否讀完N字節(jié)是否讀完N讀出溫度值,溫度計算,處理顯示,數據刷新讀出溫度值,溫度計算,處理顯示,數據刷新YYN校驗是否正確N校驗是否正確發(fā)溫度轉換開始命令發(fā)溫度轉換開始命令移入溫度暫存器移入溫度暫存器主程序流程圖主程序流程圖讀溫度流程圖讀溫度流程圖結束結束計算溫度子程序將RAM中讀取值進行BCD碼的轉換運算,并進行溫度值正負的判定,其程序流程圖如下列圖。開始開始溫度零下?溫度值取補碼置“—〞標志計算小數位溫度BCD值計算整數位溫度BCD值結束置“+〞標志NY計算溫度流程圖顯示數據刷新子程序主要是對顯示緩沖器中的顯示數據進行刷新操作,當最高顯示位為0時將符號顯示位移入下一位。程序流程圖如下列圖。溫度數據移入顯示存放器溫度數據移入顯示存放器十位數0?百位數0?十位數顯示符號百位數不顯示百位數顯示數據〔不顯示符號〕結束NNYY顯示數據刷新流程圖2C語言程序 #include<reg52.h.H> //包含頭文件//#include<intrins.h>#include<float.h>//浮點數處理#include<string.h>#defineucharunsignedchar#defineuintunsignedintsbitLCD_Busy=P2^7; //定義LCM2402的測忙線〔與LCM2402_DB0_DB7關聯〕/***LCD1602端口定義***/sbitLCD_E=P0^5;sbitRW=P0^6;sbitRS=P0^7;uinttemp,temp2;floatf_temp,f_temp2;sbitds=P3^7;sbitds2=P3^6;voiddelay(uintz)//延時zMS{uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voidLCD_TestBusy(void){ P2=0xff; //設備讀狀態(tài) RS=0; RW=1; LCD_E=1; while(LCD_Busy); //等待LCM不忙 LCD_E=0; //}voidwrite_com(ucharcom){ LCD_TestBusy(); P2=com; RS=0; RW=0; LCD_E=1; LCD_E=0;}voidwrite_dat(uchardat){LCD_TestBusy(); P2=dat; RS=1; RW=0; LCD_E=1; LCD_E=0;}voidprint(uchara,uchar*str){ write_com(a|0x80); while(*str!='\0'){ write_dat(*str++); } *str=0;}voidprint_sfm(ucharadd,uintt){ uchara,b,c; a=t/100; b=t%100/10; c=t%100%10; write_com(0x80+0x40+add); write_dat(0x30+a); write_dat(0x30+b);write_dat(0x30+c);}voidinit(){RW=0;write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01);}voiddsreset(void)//DS18B20復位,初始化{uinti;ds=0;i=103;while(i>0)i--;ds=1;i=4;while(i>0)i--;}bittempreadbit(void)//讀一位數據{uinti;bitdat;ds=0;i++;ds=1;i++;i++;dat=ds;i=8;while(i>0)i--;return(dat);}uchartempread(void)//讀一字節(jié)〔8位〕{uchari,j,dat;dat=0;for(i=1;i<=8;i++){j=tempreadbit(); dat=(j<<7)|(dat>>1);//讀出的最低位在最前面,剛好一字節(jié)在dat里}return(dat); }voidtempwritebyte(uchardat) //向DS18B20寫一個字節(jié)數據{uinti;ucharj;bittestb;for(j=1;j<=8;j++){testb=dat&0x01; dat=dat>>1; if(testb) { ds=0; i++;i++; ds=1; i=8;while(i>0)i--;} else { ds=0; i=8;while(i>0)i--; ds=1; i++;i++; }}}voidtempchange(void) //開始獲取溫度并轉換{dsreset();delay(1);tempwritebyte(0xcc); //寫跳過讀ROM指令tempwritebyte(0x44); //寫溫度轉換指令}uintget_temp(){uchara,b;dsreset();delay(1);tempwritebyte(0xcc);tempwritebyte(0xbe);a=tempread(); // 讀低八位b=tempread(); // 讀高八位if(b&0x80)//判斷正負{temp=~b+1;}else{temp=b;}temp<<=8; // 兩個字節(jié)組合成一個字temp=temp|a;f_temp=temp*0.0625;//temp=f_temp*10+0.5;//f_temp=f_temp+0.05;returntemp; //返回temp是整型}voiddsreset2(void)//DS18B20復位,初始化{uinti;ds2=0;i=103;while(i>0)i--;ds2=1;i=4;while(i>0)i--;}bittempreadbit2(void)//讀一位數據{uinti;bitdat;ds2=0;i++;ds2=1;i++;i++;dat=ds2;i=8;while(i>0)i--;return(dat);}uchartempread2(void)//讀一字節(jié)〔8位〕{uchari,j,dat;dat=0;for(i=1;i<=8;i++){j=tempreadbit2(); dat=(j<<7)|(dat>>1);//讀出的最低位在最前面,剛好一字節(jié)在dat里}return(dat); }voidtempwritebyte2(uchardat) //向DS18B20寫一個字節(jié)數據{uinti;ucharj;bittestb;for(j=1;j<=8;j++){testb=dat&0x01; dat=dat>>1; if(testb) { ds2=0; i++;i++; ds2=1; i=8;while(i>0)i--;} else { ds2=0; i=8;while(i>0)i--; ds2=1; i++;i++; }}}voidtempchange2(void) //開始獲取溫度并轉換{dsreset2();delay(1);tempwritebyte2(0xcc); //寫跳過讀ROM指令tempwritebyte2(0x44); //寫溫度轉換指令}uintget_temp2(){uchara,b;dsreset2();delay(1);tempwritebyte2(0xcc);tempwritebyte2(0xbe);a=tempread2(); // 讀低八位b=tempread2(); // 讀高八位temp2=b;temp2<<=8; // 兩個字節(jié)組合成一個字temp2=temp2|a;f_temp2=temp2*0.0625;//temp2=f_temp2*10+0.5;//f_temp2=f_temp2+0.05;returntemp2; //返回temp是整型}voidmain(){ uinti,j;init();print(0x80,"Tis"); //第一行地址 tempchange(); delay(1000); tempchange(); tempchange2(); delay(1000); tempchange2();while(1) { tempchange(); i=get_temp();print_sfm(4,i); tempchange2(); j=get_temp2(); print_sfm(10,j); }}八系統(tǒng)仿真調試1、仿真器的介紹KeilC51是美國KeilSoftwareKeilC51是美國KeilSoftware公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調試器等在內的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境〔uVision〕將這些局部組合在一起。運行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。如果使用C語言編程,那么Keil幾乎就是不二之選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強大的軟件仿真調試工具也會令你事半功倍。①KeilC51單片機軟件開發(fā)系統(tǒng)的整體結構C51工具包的整體結構,uVision與Ishell分別是C51forWindows和forDos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調試、仿真等整個開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及C51編譯器編譯生成目標文件(.OBJ)。目標文件可由LIB51創(chuàng)立生成庫文件,也可以與庫文件一起經L51連接定位生成絕對目標文件(.ABS)。ABS文件由OH51轉換成標準的Hex文件,以供調試器dScope51或tScope51使用進行源代碼級調試,也可由仿真器使用直接對目標板進行調試,也可以直接寫入程序存貯器如EPROM中。②使用獨立的Keil仿真器時,考前須知仿真器標配11.0592MHz的晶振,但用戶可以在仿真器上的晶振插孔中換插其他頻率的晶振。仿真器上的復位按鈕只復位仿真芯片,不復位目標系統(tǒng)。仿真芯片的31腳〔/EA〕已接至高電平,所以仿真時只能使用片內ROM,不能使用片外ROM;但仿真器外引插針中的31腳并不與仿真芯片的31腳相連,故該仿真器仍可插入到擴展有外部ROM〔其CPU的/EA引腳接至低電平〕的目標系統(tǒng)中使用。⑵proteus軟件的開發(fā)運用①Protues軟件介紹Proteus是目前最好的模擬單片機外圍器件的工具,它可以仿真51系列、AVR,PIC等常用的MCU及其外圍電路。本文基于Proteus6.9和KeiluVision3軟件。Proteus與其它單片機仿真軟件不同的是,它不僅能仿真單片機CPU的工作情況,也能仿真單片機外圍電路或沒有單片機參與的其它電路的工作情況。因此在仿真和程序調試時,關心的不再是某些語句執(zhí)行時單片機存放器和存儲器內容的改變,而是從工程的角度直接看程序運行和電路工作的過程和結果。對于這樣的仿真實驗,從某種意義上講,是彌補了實驗和工程應用間脫節(jié)的矛盾和現象。②proteu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 大竹縣竹中中考數學試卷
- 營養(yǎng)型輸液項目風險識別與評估綜合報告
- 自籌經費措施方案
- 喀什非開挖頂管施工方案
- 智能制造與物聯網(IoT)應用的策略及實施方案
- 新型城鎮(zhèn)化中的農村振興與現代農業(yè)發(fā)展的策略
- 能源結構優(yōu)化與清潔能源轉型的策略
- 降碳減污擴綠增長的經濟學分析
- 文化交流與一帶一路人文合作的推動路徑
- 更大力度穩(wěn)定和擴大就業(yè)的策略及實施路徑
- SB-T 11238-2023 報廢電動汽車回收拆解技術要求
- 《商朝的發(fā)展》課件
- 開題報告-基于單片機的溫度控制系統(tǒng)設計
- 北師版四下數學數學好玩教材分析公開課課件教案
- 山羊傳染性胸膜肺炎的防治
- 設計交底與圖紙會審會議紀要
- 北師大版完整版英語完形填空練習題40篇
- 統(tǒng)編版語文三年級上冊期中課外閱讀大闖關(含答案)
- 多樣生態(tài)茶園建設方案
- 電子商務專升本考試(習題卷7)
- 莖木類中藥鑒定技術-通草、鉤藤的鑒定
評論
0/150
提交評論