




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
汽車水溫表設(shè)計(jì)基于單片機(jī)的汽車水溫表設(shè)計(jì)作者張旭覃慶環(huán)摘要隨著汽車工業(yè)的迅速發(fā)展和人們生活水平及需要的不斷提高,越來越多的汽車走入了大眾的生活,而在汽車的發(fā)展過程中對(duì)汽車水溫表的設(shè)計(jì)和實(shí)現(xiàn)技術(shù)要求又尤為重要本論文是主要介紹基于51單片機(jī)汽車水溫表的設(shè)計(jì)思路、流程及應(yīng)用;論文結(jié)合且參考各類有關(guān)汽車水溫表書籍,主要闡述汽車水溫表的總體原理設(shè)計(jì)、硬件設(shè)計(jì)和軟件設(shè)計(jì),以及水溫表顯示調(diào)試方法。關(guān)鍵詞:?jiǎn)纹瑱C(jī),汽車,DS18B20,水溫表;目錄1前言.............................................................-0-2汽車水溫表簡(jiǎn)介......................................................-1-2.1汽車水溫表概述.................................................-2-2.2常見汽車水溫表的工作原理.......................................-2-3水溫表總體原理及設(shè)計(jì)................................................-4-3.1硬件的總體設(shè)計(jì).................................................-4-3.1.1硬件系統(tǒng)子模塊...........................................-4-3.2軟件的總體設(shè)計(jì).................................................-4-4水溫表的硬件設(shè)計(jì).....................................................-5-4.1單片機(jī)最小系統(tǒng)電路...............................................-5-4.2數(shù)碼管顯示電路....................................................-5-4.3溫度采集電路...................................................-6-5水溫表的軟件設(shè)計(jì)....................................................-10-5.1主流程圖.......................................................-11-5.2讀取溫度DS18B20模塊的流程....................................-11-6水溫表的調(diào)試......................................................-13-6.1硬件電路調(diào)試.................................................-13-6.2軟件調(diào)試.....................................................-13-7總結(jié)..............................................................-14-8參考文獻(xiàn)...........................................................-15-附錄壹水溫表程序前言從第壹輛汽車誕生到當(dāng)下已有壹百多年的歷史,隨著社會(huì)和科學(xué)技術(shù)的發(fā)展,如今汽車已經(jīng)走進(jìn)了尋常百姓家,成為人們必備的交通工具之壹;而且我國經(jīng)濟(jì)發(fā)展水平和汽車產(chǎn)業(yè)發(fā)展水平有著密切的關(guān)系,汽車產(chǎn)業(yè)是衡量我國經(jīng)濟(jì)發(fā)展水平的重要指標(biāo),汽車工業(yè)在我國已經(jīng)X公司廠商都運(yùn)用大量的電子技術(shù)和計(jì)算機(jī)技術(shù),從而改善汽車經(jīng)濟(jì)性、安全性和舒適性,且且提高了汽車技術(shù)性能。然而汽車水溫表測(cè)量準(zhǔn)確、顯示正確,對(duì)汽車發(fā)動(dòng)機(jī)來說尤為重要。2汽車水溫表簡(jiǎn)介2.1汽車水溫表概述汽車水溫表是用來指示汽車發(fā)動(dòng)機(jī)冷卻水的工作溫度,且向司乘人員顯示發(fā)動(dòng)機(jī)工作水溫是否工作正常。它由裝在氣缸蓋上的溫度傳感器和轉(zhuǎn)在儀表盤上的水溫表組成。2.2常見汽車水溫表的工作原理常見的汽車水溫表有電熱式、電磁式和蒸氣壓力是三類,它們和不同的感應(yīng)器相配合,進(jìn)行水溫測(cè)定。2.2.1電熱式水溫表工作原理水溫降低時(shí),觸電壓力增大,平均電流增大,水溫表的雙金屬片彎曲怎大,指針指向低溫。如圖2-1所示;圖2-1電熱式水溫表2.2.2電磁式水溫表工作原理電磁式水溫表內(nèi)有倆個(gè)鐵芯式線圈,在線圈交叉位置上,裝有小磁片、配重和指針等組成的1000L2和大電阻串聯(lián),L132150L2L1相對(duì)減少,磁場(chǎng)的綜合作用是指針向高溫100℃刻度移動(dòng)。如圖2-2所示;圖2-2電磁式水溫表3.1.1蒸氣壓力式水溫表工作原理當(dāng)水溫表的感溫包受熱時(shí),充灌在其中的介質(zhì)(氯乙烷或乙醚等)受熱蒸發(fā)(乙醚液體在大氣壓力下的沸點(diǎn)是34管的自由端和連桿的壹頭銷釘連接,連桿的另壹端和扇形齒輪固定。傳動(dòng)機(jī)構(gòu)中,扇形齒輪和中心齒輪嚙合傳動(dòng),且使裝在中心齒輪軸上的指針在刻度盤上指出被測(cè)介質(zhì)溫度值。感溫包內(nèi)液體體積受感溫包和彈簧管相對(duì)位置影響。如圖2-3所示;圖2-3蒸氣壓力式水溫表3水溫表總體原理及設(shè)計(jì)3.1硬件總體設(shè)計(jì)設(shè)計(jì)且制作壹個(gè)基于單片機(jī)的汽車水溫表的電路,其結(jié)構(gòu)框圖如圖2-1:圖3-1系統(tǒng)結(jié)構(gòu)框圖3.1.1硬件系統(tǒng)子模塊(1)單片機(jī)最小系統(tǒng)電路部分(2)溫度采集電路部分(3)數(shù)碼管溫度顯示電路部分3.2軟件總體設(shè)計(jì)良好的設(shè)計(jì)方案能夠減少軟件設(shè)計(jì)的工作量,提高軟件的通用性,擴(kuò)展性和可讀性。本系統(tǒng)的設(shè)計(jì)方案和步驟如下:(1)根據(jù)需求按照系統(tǒng)的功能要求,逐級(jí)劃分模塊。(2)編制和調(diào)試。(3)確定軟件開發(fā)環(huán)境,選擇設(shè)計(jì)語言,完成模塊功能設(shè)計(jì),且分別調(diào)試通過。(4)按照開發(fā)式軟件設(shè)計(jì)結(jié)構(gòu),將各模塊有機(jī)的結(jié)合起來,即成壹個(gè)較完善的系統(tǒng)。首先接通電源系統(tǒng)開始工作,系統(tǒng)開始工作后,通過溫度傳感器開始實(shí)時(shí)檢測(cè),調(diào)用顯示子程序顯示檢測(cè)結(jié)果。4水溫表硬件設(shè)4.1單片機(jī)最小系統(tǒng)電路因?yàn)?9S52單片機(jī)內(nèi)部自帶8K的ROM和256字節(jié)的RAM,因此不必構(gòu)建單片機(jī)系統(tǒng)的擴(kuò)展電路。如圖3-1,單片機(jī)最小系統(tǒng)有復(fù)位電路和振蕩器電路。值得注意的壹點(diǎn)是單片機(jī)的31腳必須接高電平,否則系統(tǒng)將不能運(yùn)行。因?yàn)樵撃_不接時(shí)為低電平,單片機(jī)將直接VCC電解電容,濾除交流干擾,增加系統(tǒng)抗干擾能力。圖4-1單片機(jī)最小系統(tǒng)圖4.2數(shù)碼管顯示電路(1)數(shù)碼管顯示說明各個(gè)數(shù)碼管的段碼都是單片機(jī)的數(shù)據(jù)口輸出,即各個(gè)數(shù)碼管輸入的段碼都是壹樣的,為了使其分別顯示不同的數(shù)字,可采用動(dòng)態(tài)顯示的方式,即先只讓最低位顯示0(含點(diǎn)),經(jīng)過壹段延時(shí),再只讓次低位顯示1,如此類推。由視覺暫留,只要我們的延時(shí)時(shí)間足夠短,就能夠使得數(shù)碼的顯示見起來非常的穩(wěn)定清楚,過程如表3-1。表4-1數(shù)碼管編碼表段碼位碼顯示器狀態(tài)08H01H□□□□□□□0abH02H□□□□□□1□12H22Ha1H24H04HaaH04H08H10H20H40H80H□□□□□2□□□□□□3□□□□□□4□□□□□□5□□□□□□6□□□□□□7□□□□□□□本論文中使用了3候,倆個(gè)數(shù)碼管是閃爍,以提示目前處在溫度設(shè)置狀態(tài)。第三位數(shù)碼管靜態(tài)顯示符號(hào)“℃”。4.3溫度采集電路(1)DS18B20介紹Dallas最新單線數(shù)字溫度傳感器DS18B20簡(jiǎn)介新的“壹線器件”體積更小、適用電壓更寬、更經(jīng)濟(jì)。Dallas半導(dǎo)體X公司的數(shù)字化溫度傳感器DS1820是世界上第壹片支持“壹線總線”接口的溫度傳感器。壹線總線獨(dú)特而且經(jīng)濟(jì)的特點(diǎn),使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測(cè)量系統(tǒng)的構(gòu)建引入全新概念。DS18B20DS1822“壹線總線”數(shù)字化溫度傳感器同DS18B20壹樣,DS18B20”-55℃~+125-10℃~+85℃范圍內(nèi),精度為±0.5℃。DS1822的精度較差為±2℃。現(xiàn)場(chǎng)溫度直接以“壹線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。其DS18B20的管腳配置和封裝結(jié)構(gòu)如圖3-4所示。圖4-2DS18B20封裝引腳定義:①DQ為數(shù)字信號(hào)輸入/輸出端;②GND為電源地;③VDD(2)DS18B20的單線(1-wirebus)系統(tǒng)單線總線結(jié)構(gòu)是DS18B20的突出特點(diǎn),也是理解和編程的難點(diǎn)。從倆個(gè)角度來理解單線總線:第壹,單線總線只定義了壹個(gè)信號(hào)線,而且DS18B20智能程度較低(這點(diǎn)能夠和微控制器和SPIDS18B20和處理器之間的通信必然要通過嚴(yán)格的時(shí)序控制來完成。第二,DS18B20的輸出口是漏級(jí)開路輸出,這里給出壹個(gè)微控制器和DS18B20連接原理圖。這種設(shè)計(jì)使總線上的器件在合適的時(shí)間驅(qū)動(dòng)它。顯然,總線上的器件和(wiredAND1)微控制器不能單方面控制總線狀態(tài)。之所以提出I/O口的置1操作是為了給DS18B20壹個(gè)發(fā)送數(shù)據(jù)的信號(hào)。這是壹個(gè)錯(cuò)誤的觀點(diǎn)。如果當(dāng)前DS18b20發(fā)送0,即使微控制器I/O口置1,總線狀態(tài)仍是0;置1操作是為了是I/O口截止(cutoff2DS18B20發(fā)送0動(dòng)截止。自動(dòng)截止是為確保:1時(shí),在總線操作的間隙總線處于空閑狀態(tài),即高態(tài)。2時(shí),確保微控制器在寫1的時(shí)候DS18B20能夠正確讀入。由于DS18B20采用的是1-Wire對(duì)AT89S52單片機(jī)來說,硬件上且不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時(shí)序來完成對(duì)DS18B20芯片的訪問。DS18B20的復(fù)位時(shí)序,如圖3-5圖4-3DS18B20的復(fù)位時(shí)序圖②DS18B20的讀時(shí)序?qū)τ贒S18B20的讀時(shí)序分為讀0時(shí)序和讀1時(shí)序倆個(gè)過程。對(duì)于DS18B20的讀時(shí)隙是從主機(jī)把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓DS18B20DS18B2060us才能完成。DS18B20的讀時(shí)序圖如圖3-6所示。圖4-4DS18B20的讀時(shí)序③DS18B20的寫時(shí)序?qū)τ贒S18B20的寫時(shí)序仍然分為寫0時(shí)序和寫1時(shí)序倆個(gè)過程。對(duì)于DS18B20寫0時(shí)序和寫1060us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當(dāng)要寫1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)就得釋放單總線。如圖3-7所示。圖4-5DS18B20的寫時(shí)序圖(3)DS18B20的供電方式在圖3-8中示出了DS18B20的寄生電源電路。當(dāng)DQ或VDD引腳為高電平時(shí),這個(gè)電路便“取”的電源。寄生電路的優(yōu)點(diǎn)是雙重的,遠(yuǎn)程溫度控制監(jiān)測(cè)無需本地電源,缺少正常電源條件下也能夠讀ROM。為了使DS18B20能完成準(zhǔn)確的溫度變換,當(dāng)溫度變換發(fā)生時(shí),DQ線上必須提供足夠的功率。有倆種方法確保DS18B20在其有效變換期內(nèi)得到足夠的電源電流。第壹種方法是發(fā)生溫度DQ3-8所MOSFET把DQDS18B20工作在寄生電源工作方式,在該方式下VDD引腳必須連接到地。圖4-6DS18B20供電方式1另壹種方法是DS18B203-9DQ線上不要求強(qiáng)的上拉,總線上主機(jī)不需要連接其它的外圍器件便在溫度變換期間使總線保持高電平,這樣也允許在變換期間其它數(shù)據(jù)在單總線上傳送。此外,在單總線上能夠且聯(lián)多個(gè)DS18B20完成溫度變換。圖4-7DS18B20供電方式2(4)DS18B20設(shè)計(jì)中應(yīng)注意的幾個(gè)問題DS18B20具有測(cè)溫系統(tǒng)簡(jiǎn)單、測(cè)溫精度高、連接方便、占用接口線少等優(yōu)點(diǎn),但在實(shí)際應(yīng)用中也應(yīng)注意以下幾方面的問題:較小的硬件開銷需要相對(duì)復(fù)雜的軟件進(jìn)行補(bǔ)償,由于DS18B20和微處理器間采用串行數(shù)據(jù)傳送。因此,在對(duì)DS18B20進(jìn)行讀寫編程時(shí),必須嚴(yán)格的保證讀寫時(shí)序,否則將無法讀取測(cè)溫結(jié)果。在DS18B20有關(guān)資料中均未提及1Wire上所掛DS18B20數(shù)量問題,容易使人誤認(rèn)為能夠掛任意多個(gè)DS18B20,在實(shí)際應(yīng)用中且1Wire上所掛DS18B20超過8壹點(diǎn)在進(jìn)行多點(diǎn)測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要加以注意。連接DS18B20的總線電纜是有長(zhǎng)度限制的。4VCC和地線,屏蔽層在源端單點(diǎn)接地。本文以廣泛應(yīng)用的數(shù)字溫度傳感器DS18B201Wire總線的操作過程和基本原理。事實(shí)上,基于1Wire總線的產(chǎn)品仍有很多種,如1Wire總線的E2PROM、實(shí)時(shí)時(shí)鐘、電子標(biāo)簽等。他們都具有節(jié)省I/O優(yōu)點(diǎn),因此有廣闊的應(yīng)用空間,具有較大的推廣價(jià)值。本設(shè)計(jì)將溫度傳感器DS18B20和單片機(jī)TXDDS18B20和單片機(jī)連接圖如圖所示4-8所示。圖4-8DS18B20和單片機(jī)連接圖5水溫表的軟件設(shè)計(jì)DS18B20讀溫度程序,數(shù)碼管的驅(qū)動(dòng)程序,鍵盤掃描程序,以及抱經(jīng)處理程序。5.1主程序流程圖開始初始化讀D18B20溫度轉(zhuǎn)換顯示溫度返回圖5-1主程序流程圖5.2讀取溫度DS18B20模塊的流程圖由于DS18B20采用的是壹根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,而對(duì)AT89S52單片機(jī)來說,硬件上且不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時(shí)序來完成對(duì)DS18B20芯片的訪問。DS18B20單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念。因此系統(tǒng)對(duì)DS18B20的各DS18B20(發(fā)復(fù)位脈沖)→發(fā)ROM功能命令→發(fā)存儲(chǔ)器操作命令→處理數(shù)據(jù)DS18B20占用口線少等優(yōu)點(diǎn),DS18B2012位轉(zhuǎn)換,則應(yīng)該是最大750mS,另外在對(duì)DS18B20超作時(shí),時(shí)序要求非常嚴(yán)格,因此最好禁止系統(tǒng)中斷。由于DS18B20是在壹根I/O線上讀寫數(shù)據(jù),因此,對(duì)讀寫的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求。DS18B20有嚴(yán)格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號(hào)的時(shí)序:初始化時(shí)序、讀時(shí)序、寫時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè)備,而每壹次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動(dòng)啟動(dòng)寫時(shí)序開始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫命令后,主機(jī)需啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。DS18B20的讀時(shí)序:(1)對(duì)于DS18B20的讀時(shí)序分為讀0時(shí)序和讀1時(shí)序倆個(gè)過程。(2)對(duì)于DS18B20的讀時(shí)隙是從主機(jī)把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓DS18B20DS18B2060us才能完成。DS18B20的寫時(shí)序:(1)對(duì)于DS18B20的寫時(shí)序仍然分為寫0時(shí)序和寫1時(shí)序倆個(gè)過程。(2)對(duì)于DS18B20寫0時(shí)序和寫1時(shí)序的要求不同,當(dāng)要寫0時(shí)序時(shí),單總線要被拉低至少60usDS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當(dāng)要寫1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)就得釋放單總線。系統(tǒng)程序設(shè)計(jì)主要包括三部分:讀出溫度子程序、溫度轉(zhuǎn)換命令子程序、顯示溫度子程序。圖5-2讀取溫度DS18B20模塊的流程圖程序代碼為:unsignedintReadTemperature(void){unsignedchara=0;unsignedintb=0;unsignedintt=0;Init_DS18B20();WriteOneChar(0xCC);//跳過讀序號(hào)列號(hào)的操作WriteOneChar(0x44);//啟動(dòng)溫度轉(zhuǎn)換DelayMs(10);Init_DS18B20();WriteOneChar(0xCC);//跳過讀序號(hào)列號(hào)的操作WriteOneChar(0xBE);//讀取溫度寄存器等a=ReadOneChar();//低位b=ReadOneChar();//高位b<<=8;t=a+b;return(t);}6水溫表的系統(tǒng)調(diào)試6.1硬件電路調(diào)試仔細(xì)檢查所接電路,按照硬件原理圖接線,理論上是能實(shí)現(xiàn)的,如果數(shù)碼管不顯示,則應(yīng)該檢查線路是否正確,或是因?yàn)閱纹瑱C(jī)沒有工作,仍有集電極和發(fā)射極是否接對(duì)。如果只顯示倆個(gè)八,則可能是DS18B20沒有接正確,檢查上拉電路是否接好。如果能注意這些問題,電路基本不會(huì)出錯(cuò)。6.2軟件調(diào)試如果硬件電路檢查后,沒有問題卻實(shí)現(xiàn)不了設(shè)計(jì)要求,則可能是軟件編程的問題,首先應(yīng)檢查初始化程序,然后是讀溫度程序,顯示程序,對(duì)這些分段程序,要注意邏輯順序,調(diào)用關(guān)系,除此之外,仍要熟悉各語句的用法,以免出錯(cuò)。仍有壹個(gè)容易忽略的問題就是,源程序生成的代碼是否燒入到單片機(jī)中,如果這壹過程出錯(cuò),那不能實(shí)現(xiàn)設(shè)計(jì)要求也是情理之中的事。硬件和軟件調(diào)試相結(jié)合,仔細(xì)檢查各個(gè)模塊的設(shè)計(jì),舊能順利完成任務(wù),實(shí)現(xiàn)設(shè)計(jì)要求,在調(diào)試過程中必須認(rèn)真耐心,不能有壹點(diǎn)馬虎,否則遺漏壹個(gè)小的問題就會(huì)導(dǎo)致整個(gè)設(shè)計(jì)的失敗??偨Y(jié)通過本次的設(shè)計(jì),使我們不僅對(duì)單片機(jī)這門課程有了更深刻的認(rèn)識(shí),懂得了如何運(yùn)用課本知識(shí)結(jié)合實(shí)際來完成定時(shí)器的顯示和編程方法以及數(shù)碼顯示電路的驅(qū)動(dòng)方法,使我們能夠很快的適應(yīng)現(xiàn)代控制技術(shù)發(fā)展的需求,同時(shí)也提高了我們的思維能力和實(shí)際操作能力,為以后更好的走上工作崗位奠定了堅(jiān)實(shí)的基礎(chǔ)。AT89S51等芯片的引腳功能以及使用方法,使我學(xué)會(huì)了應(yīng)用不同的芯片來配合完成整個(gè)設(shè)計(jì)的操作。在做硬件電路的這段時(shí)間里,從思考設(shè)計(jì)到對(duì)電路的調(diào)試經(jīng)過了壹些困難。同樣在對(duì)軟件進(jìn)行設(shè)計(jì)時(shí),也可為壹路坎坷??墒峭ㄟ^對(duì)軟硬件不斷撞墻,不斷思考解決問題的過程中,我學(xué)會(huì)了很多東西,同時(shí)對(duì)單片機(jī)也有了更深的認(rèn)識(shí)。在做設(shè)計(jì)的時(shí)候,很需要耐心和對(duì)事物的細(xì)心,很多時(shí)候壹個(gè)簡(jiǎn)單問題的壹個(gè)簡(jiǎn)單的疏忽就會(huì)導(dǎo)致整個(gè)電路的不工作,只有不斷的檢查不斷的調(diào)試,才能真正完成壹個(gè)設(shè)計(jì)的制作。只有不斷的發(fā)現(xiàn)問題解決問題,才能從問題中改變自己,提升自己對(duì)單片機(jī)的能力。此設(shè)計(jì)雖然能夠完成溫度的顯示,但功能和精度有待于進(jìn)壹步提高。以后能夠通過加入壹些算法優(yōu)化控制功能,且通過液晶顯示屏實(shí)時(shí)顯示溫度,增加、拓展壹些功能。參考文獻(xiàn)[l]樂建波編著《溫度控制系統(tǒng)》化學(xué)工業(yè)出版社[2]謝自美編著《電子線路設(shè)計(jì)·實(shí)驗(yàn)·2000[3]陳東光編著《單片微型計(jì)算機(jī)原理及C語言程序設(shè)計(jì)》華中科技大學(xué)出版社2004.4[4]武慶生仇梅編著《單片機(jī)原理和應(yīng)用》電子科技大學(xué)出版社1998.2[5]譚浩強(qiáng)編著《C程序設(shè)計(jì)》.北京:清華大學(xué)出版社1999年[6]華中理工大學(xué)電子學(xué)教研室編《電子技術(shù)基礎(chǔ)模擬部分(第四版)》高等教育出版社1999.6[7]華中理工大學(xué)電子學(xué)教研室編《電子技術(shù)基礎(chǔ)數(shù)字部分(第四版)》高等教育出版社2000.6[8]王彬任艷穎編著《DigitalICSystemDesign》西安電子科技大學(xué)出版社2005.9[9]趙麗娟邵欣編著《基于單片機(jī)的溫度監(jiān)控系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)》機(jī)械制造[10]趙仁杰編著《汽車電器設(shè)備》人民交通出版社1998.10附錄壹:系統(tǒng)源程序#include<reg52.h>//包含頭文件,壹般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義#defineDataPortP0//定義數(shù)據(jù)端口程序中遇到DataPort則用P0替換sbitLATCH1=P2^2;//定義鎖存使能端口段鎖存sbitLATCH2=P2^3;//位鎖存sbitDQ=P1^3;bitReadTempFlag;//定義讀時(shí)間標(biāo)志unsignedcharcodedofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//顯示段碼值0~9unsignedcharcodedofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分別對(duì)應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮,即位碼unsignedcharTempData[8];//存儲(chǔ)顯示值的全局變量/*------------------------------------------------uS延時(shí)函數(shù),含有輸入?yún)?shù)unsignedchart,無返回值unsignedchar是定義無符號(hào)字符變量,其值的范圍是0~255這里使用晶振12M,精確延時(shí)請(qǐng)使用匯編,大致延時(shí)長(zhǎng)度如下T=tx2+5uS------------------------------------------------*/voidDelayUs2x(unsignedchart){while(--t);}/*------------------------------------------------mS延時(shí)函數(shù),含有輸入?yún)?shù)unsignedchart,無返回值unsignedchar是定義無符號(hào)字符變量,其值的范圍是0~255這里使用晶振12M,精確延時(shí)請(qǐng)使用匯編------------------------------------------------*/voidDelayMs(unsignedchart){while(t--){//大致延時(shí)1mSDelayUs2x(245);DelayUs2x(245);}}/*------------------------------------------------18b20初始化------------------------------------------------*/bitInit_DS18B20(void){bitdat=0;DQ=1;//DQ復(fù)位DelayUs2x(5);//稍做延時(shí)DQ=0;//單片機(jī)將DQ拉低DelayUs2x(200);//精確延時(shí)大于480us小于960usDelayUs2x(200);DQ=1;//拉高總線DelayUs2x(50);//15~60us后接收60-240us的存在脈沖dat=DQ;//如果x=0則初始化成功,x=1則初始化失敗DelayUs2x(25);//稍作延時(shí)返回returndat;}/*------------------------------------------------讀取壹個(gè)字節(jié)------------------------------------------------*/unsignedcharReadOneChar(void){unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i--){DQ=0;//給脈沖信號(hào)dat>>=1;DQ=1;//給脈沖信號(hào)if(DQ)dat|=0x80;DelayUs2x(25);}return(dat);}/*------------------------------------------------寫入壹個(gè)字節(jié)------------------------------------------------*/voidWriteOneChar(unsignedchardat){unsignedchari=0;for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;DelayUs2x(25);DQ=1;dat>>=1;}DelayUs2x(25);}/*------------------------------------------------讀取溫度------------------------------------------------*/unsignedintReadTemperature(void){unsignedchara=0;unsignedintb=0;unsignedintt=0;Init_DS18B20();WriteOneChar(0xCC);//跳過讀序號(hào)列號(hào)的操作WriteOneChar(0x44);//啟動(dòng)溫度轉(zhuǎn)換DelayMs(10);Init_DS18B20();WriteOneChar(0xCC);//跳過讀序號(hào)列號(hào)的操作WriteOneChar(0xBE);//讀取溫度寄存器等(共可讀9個(gè)寄存器)前倆個(gè)就是溫度a=ReadOneChar();//低位b=ReadOneChar();//高位b<<=8;t=a+b;return(t);}voidDisplay(unsignedcharFirstBit,unsignedcharNum);//數(shù)碼管顯示函數(shù)voidInit_Timer0(void);//定時(shí)器初始化/*------------------------------------------------主函數(shù)------------------------------------------------*/voidmain(void){unsignedintTempH,TempL,temp;Init_Timer0();while(1)//主循環(huán){if(ReadTempFlag==1){ReadTempFlag=0;temp=ReadTemperature();if(temp&0x8000){TempData[0]=0x40;//負(fù)號(hào)標(biāo)志temp=~temp;//取反加1temp+=1;}elseTempData[0]=0;TempH=temp>>4;TempL=temp&0x0F;TempL=TempL*6/10;//小數(shù)近似處理TempData[1]=dofly_DuanMa[(TempH%1000)/100];//十位溫度if((TempH/1000==0)&&((TempH%1000)/100==0))/
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 豐田買車銷售合同范本
- 合同范本租房
- 增強(qiáng)民營企業(yè)發(fā)展活力促進(jìn)經(jīng)濟(jì)高質(zhì)量增長(zhǎng)
- 吊裝租賃搬運(yùn)合同范本
- 合同范本不需審查
- 合同范本電子版
- 公路工程竣工檢測(cè)合同范本
- 醫(yī)療美容項(xiàng)目合同范例
- 兄弟之間借款合同范例
- 語文-2025年江西省中考第一次模擬考試(全解全析)
- 2024年陜西省初中學(xué)業(yè)水平考試·數(shù)學(xué)
- 統(tǒng)編版九年級(jí)道德與法治上冊(cè)期中考試卷帶答案
- 火電廠汽機(jī)車間安全培訓(xùn)
- 2025初級(jí)會(huì)計(jì)理論考試100題及解析
- 社區(qū)網(wǎng)格員消防安全培訓(xùn)
- 中華人民共和國統(tǒng)計(jì)法
- 某部勞務(wù)派遣服務(wù) 投標(biāo)方案(技術(shù)標(biāo) )
- 運(yùn)用PDCA降低住院患者跌倒、墜床發(fā)生率課件
- 剪刀式登高車安全技術(shù)交底
- 部編人教版小學(xué)4四年級(jí)《道德與法治》下冊(cè)全冊(cè)教案
- 新疆2022年中考數(shù)學(xué)試卷(含答案)
評(píng)論
0/150
提交評(píng)論