課程設(shè)計(論文)數(shù)字溫度傳感器測溫顯示系統(tǒng)說明書_第1頁
課程設(shè)計(論文)數(shù)字溫度傳感器測溫顯示系統(tǒng)說明書_第2頁
課程設(shè)計(論文)數(shù)字溫度傳感器測溫顯示系統(tǒng)說明書_第3頁
課程設(shè)計(論文)數(shù)字溫度傳感器測溫顯示系統(tǒng)說明書_第4頁
課程設(shè)計(論文)數(shù)字溫度傳感器測溫顯示系統(tǒng)說明書_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、數(shù)字溫度傳感器測溫顯示系統(tǒng)說明書學(xué)院:機(jī)械與電子控制工程學(xué)院班級:組長:組員:時間:2011-7-1目錄任務(wù)書-3摘要-4正文-4總體設(shè)計方案第1章 主控制器1.1at89c51 特點及特性-41.2管腳功能說明-51.3振蕩器特性-71.4芯片擦除-7第2章 溫度采集部分設(shè)計2.1.ds18b20 技術(shù)性能描述-72.2.ds18b20 管腳排列及內(nèi)部結(jié)構(gòu)-82.3.ds18b20 工作原理-82.4.ds18b20 控制原理-112.5.ds18b20 與單片機(jī)地接口電路-12第3章 硬件電路與系統(tǒng)軟件的設(shè)計及分析3.1.主板電路-133.2.軟件程序分析(流程圖)-14第4章 總結(jié)與體會

2、-19參考文獻(xiàn)-20附錄-21任務(wù)書擴(kuò)展數(shù)字溫度傳感器ds18b20進(jìn)行溫度檢測,顯示器采用六位共陰極數(shù)碼管顯示,設(shè)計按鍵4個。控制系統(tǒng)能夠?qū)崿F(xiàn):1、系統(tǒng)實時檢測室內(nèi)溫度并在數(shù)碼管上顯示;2、采用按鍵對溫度控制的上下限進(jìn)行設(shè)定(用4個按鍵分別對最低限、最高限溫度值進(jìn)行增一減一操作);3、當(dāng)超過溫度上限時,蜂鳴器報警(或綠色發(fā)光二極管亮);低于下限時,紅色發(fā)光二極管亮。任務(wù)分配:工作分配表軟硬件設(shè)計及仿真,協(xié)調(diào)工作焊接電路板,上機(jī)調(diào)試課程設(shè)計論文的編寫ppt制作在設(shè)計過程中隨時需要查找資料摘要隨著現(xiàn)代社會的發(fā)展,單片機(jī)在我們的日常生活中扮演了越來越重要的角色。它已逐漸深入到我們生活,工作等各個領(lǐng)

3、域。其中,數(shù)字溫度傳感器就是一個很好的例子。與傳統(tǒng)溫度計相比,數(shù)字溫度傳感器具有讀數(shù)方便,測量范圍廣,測量準(zhǔn)確等特點。本次課程設(shè)計就為大家詳細(xì)介紹基于單片機(jī)控制的數(shù)字溫度傳感器控制系統(tǒng)。它可以設(shè)置溫度控制的上下限,當(dāng)溫度高于上限時,蜂鳴器報警,當(dāng)?shù)陀谙孪迺r,發(fā)光二極管發(fā)光。本文介紹了數(shù)字溫度傳感器ds18b20的結(jié)構(gòu)特征及控制方法,并對以此傳感器和89c51單片機(jī)為控制器構(gòu)成的溫度控制系統(tǒng)的工作原理及程序設(shè)計進(jìn)行了相關(guān)介紹。正文關(guān)鍵詞:蜂鳴器、發(fā)光二極管、數(shù)字溫度傳感器ds18b20、at89c51單片機(jī)第1章 主控制器1.1.at89c51 特點及特性4k字節(jié)flash存儲器的低電壓、高性能

4、cmos 8位微處理器。它是帶2k字節(jié)閃存可編程可擦除只讀存儲器的單片機(jī)。單片機(jī)的可擦除只讀存儲器可以反復(fù)擦除1000次。該器件采用atmel高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的mcs-51指令集和輸出管腳相兼容。由于將多功能8位cpu和閃爍存儲器組合在單個芯片中,atmel的at89c51是一種高效微控制器,at89c2051是它的一種精簡版本。at89c單片機(jī)為很多統(tǒng)嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。引腳排列如圖所示:主要特性:與mcs-51 兼容4k字節(jié)可編程flash存儲器壽命:1000寫/擦循環(huán)數(shù)據(jù)保留時間:10年全靜態(tài)工作:0hz-24mhz三級程序存儲器鎖定1

5、288位內(nèi)部ram32可編程i/o線兩個16位定時器/計數(shù)器5個中斷源可編程串行通道低功耗的閑置和掉電模式片內(nèi)振蕩器和時鐘電路1.2.管腳功能說明vcc:供電電壓。 gnd:接地。 p0口:p0口為一個8位漏極開路雙向i/o口,每腳可吸收8ttl門電流。當(dāng)p0口的管腳第一次寫1時,被定義為高阻輸入。p0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在fiash編程時,p0 口作為原碼輸入口,當(dāng)fiash進(jìn)行校驗時,p0輸出原碼,此時p0外部必須被拉高。 p1口:p1口是一個內(nèi)部提供上拉電阻的8位雙向i/o口,p1口緩沖器能接收輸出4ttl門電流。p1口管腳寫入1后,被內(nèi)部上拉為

6、高,可用作輸入,p1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在flash編程和校驗時,p1口作為第八位地址接收。 p2口:p2口為一個內(nèi)部上拉電阻的8位雙向i/o口,p2口緩沖器可接收,輸出4個ttl門電流,當(dāng)p2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,p2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。p2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,p2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,p2口輸出其特殊功能寄存器的內(nèi)容。p2口在flash編程和校驗時接收

7、高八位地址信號和控制信號。 p3口:p3口管腳是8個帶內(nèi)部上拉電阻的雙向i/o口,可接收輸出4個ttl門電流。當(dāng)p3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3口將輸出電流(ill)這是由于上拉的緣故。 p3口也可作為at89c51的一些特殊功能口,如下表所示: 口管腳 備選功能 p3.0 rxd(串行輸入口) p3.1 txd(串行輸出口) p3.2 /int0(外部中斷0) p3.3 /int1(外部中斷1) p3.4 t0(記時器0外部輸入) p3.5 t1(記時器1外部輸入) p3.6 /wr(外部數(shù)據(jù)存儲器寫選通) p3.7 /rd(外部數(shù)

8、據(jù)存儲器讀選通) p3口同時為閃爍編程和編程校驗接收一些控制信號。 rst:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持rst腳兩個機(jī)器周期的高電平時間。 ale/prog:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在flash編程期間,此引腳用于輸入編程脈沖。在平時,ale端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ale脈沖。如想禁止ale的輸出可在sfr8eh地址上置0。此時, ale只有在執(zhí)行movx,movc指令是ale才起作用。另外,該引腳被略微拉高。如

9、果微處理器在外部執(zhí)行狀態(tài)ale禁止,置位無效。 /psen:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機(jī)器周期兩次/psen有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/psen信號將不出現(xiàn)。 /ea/vpp:當(dāng)/ea保持低電平時,則在此期間外部程序存儲器(0000h-ffffh),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/ea將內(nèi)部鎖定為reset;當(dāng)/ea端保持高電平時,此間內(nèi)部程序存儲器。在flash編程期間,此引腳也用于施加12v編程電源(vpp)。 xtal1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。 xtal2:來自反向振蕩器的輸出。1.3.振蕩器特性:

10、xtal1和xtal2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,xtal2應(yīng)不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。1.4.芯片擦除:整個perom陣列和三個鎖定位的電擦除可通過正確的控制信號組合,并保持ale管腳處于低電平10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。 此外,at89c51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式

11、下,cpu停止工作。但ram,定時器,計數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存ram的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個硬件復(fù)位為止。 第2章 溫度采集部分設(shè)計2.1.ds18b20 技術(shù)性能描述獨特的單線接口方式,ds18b20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與ds18b20的雙向通訊。測溫范圍為55+125,固有測溫分辨率0.5。支持多點組網(wǎng)功能,多個ds18b20可以并聯(lián)在唯一的三線上,最多只能并聯(lián)8個,實現(xiàn)多點測溫,如果數(shù)量過多,會使供電電源電壓過低,從而造成信號傳輸?shù)牟环€(wěn)定。工作電源: 35v/dc。 在使用中不需要任何外圍元件;測量結(jié)果以

12、912位數(shù)字量方式串行傳送;不銹鋼保護(hù)管直徑 6 。適用于dn1525, dn40dn250各種介質(zhì)工業(yè)管道和狹小空間設(shè)備測溫。pvc電纜直接出線或德式球型接線盒出線,便于與其它電器設(shè)備連接。負(fù)壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀, 但不能正常工作。獨特的一線接口,只需要一條口線通信 多點能力,簡化了分布式溫度傳感應(yīng)用 無需外部元件 可用數(shù)據(jù)總線供電,電壓范圍為3.0 v至5.5 v 無需備用電源 測量溫度范圍為-55 c至+125 。華氏相當(dāng)于是-67 f到257華氏度 -10 c至+85 c范圍內(nèi)精度為0.5 c。ds18b20可以程序設(shè)定912位的分辨率,精度為0.5c,溫度轉(zhuǎn)換

13、為12位數(shù)字格式最大值為750毫秒。可選更小的封裝方式,更寬的電壓適用范圍。分辨率設(shè)定,及用戶設(shè)定的報警溫度存儲在eeprom中,掉電后依然保存。2.2.ds18b20 管腳排列及內(nèi)部結(jié)構(gòu)ds18b20引腳定義:(1)dq為數(shù)字信號輸入/輸出端; (2)gnd為電源地; (3)vdd為外接供電電源輸入端(在寄生電源接線方式時接地)。ds18b20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻rom、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器th和tl、配置寄存器。該裝置信號線高的時候,內(nèi)部電容器 儲存能量通由1線通信線路給片子供電,而且在低電平期間為片子供電直至下一個高電平的到來重新充電。 ds18b20的電源

14、也可以從外部3v-5 .5v的電壓得到。2.3.ds18b20 工作原理ds18b20的讀寫時序和測溫原理與ds1820相同,只是得到的溫度值的位數(shù)因分辨率不同而不同,且溫度轉(zhuǎn)換時的延時時間由2s 減為750ms。 ds18b20測溫原理如圖3所示。 ds18b20 內(nèi)部結(jié)構(gòu)圖圖中低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號送給計數(shù)器1。高溫度系數(shù)晶振 隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號作為計數(shù)器2的脈沖輸入。計數(shù)器1和溫度寄存器被預(yù)置在55所對應(yīng)的一個基數(shù)值。計數(shù)器1對 低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行減法計數(shù),當(dāng)計數(shù)器1的預(yù)置值減到0時,溫度寄存器的值將加1,計

15、數(shù)器1的預(yù)置將重新被裝入,計數(shù)器1重 新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行計數(shù),如此循環(huán)直到計數(shù)器2計數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即 為所測溫度。圖3中的斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正計數(shù)器1的預(yù)置值。 ds18b20測溫原理框圖ds18b20有4個主要的數(shù)據(jù)部件: (1)光刻rom中的64位序列號是出廠前被光刻好的,它可以看作是該ds18b20的地址序列碼。64位光刻rom的排列是:開始8位 (28h)是產(chǎn)品類型標(biāo)號,接著的48位是該ds18b20自身的序列號,最后8位是前面56位的循環(huán)冗余校驗碼(crc=x8+x5+x4+1)。光

16、刻rom的作用 是使每一個ds18b20都各不相同,這樣就可以實現(xiàn)一根總線上掛接多個ds18b20的目的。 (2)ds18b20中的溫度傳感器可完成對溫度的測量,以12位轉(zhuǎn)化為例:用16位符號擴(kuò)展的二進(jìn)制補碼讀數(shù)形式提供,以 0.0625/lsb形式表達(dá),其中s為符號位。 ds18b20溫度值格式表這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在18b20的兩個8比特的ram中,二進(jìn)制中的前面5位是符號位,如果測得的溫度大于0, 這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實際 溫度。 例如+125的數(shù)字輸出

17、為07d0h,+25.0625的數(shù)字輸出為0191h,-25.0625的數(shù)字輸出為fe6fh,-55的數(shù)字輸出為fc90h 。(3)ds18b20溫度傳感器的存儲器 ds18b20溫度傳感器的內(nèi)部存儲器包括一個高速暫存ram和一個非易失性的可電擦除的eepram,后者存放高溫度和低溫度觸發(fā)器 th、tl和結(jié)構(gòu)寄存器。 (4)配置寄存器 該字節(jié)各位的意義如下:r1r0分辨率溫度最大轉(zhuǎn)換時間009位93.75ms 0110位187.5ms 1011位375ms 1112位750ms 溫度分辨率設(shè)置表寄存器內(nèi)容 字節(jié)地址溫度值低位 (ls byte)0溫度值高位 (ms byte)1高溫限值(th)

18、2低溫限值(tl)3配置寄存器4保留5保留6保留7crc校驗值8ds18b20 暫存寄存器分布2.4.ds18b20 控制原理根據(jù)ds18b20的通訊協(xié)議,主機(jī)(單片機(jī))控制ds18b20完成溫度轉(zhuǎn)換必須經(jīng)過三個步驟:每一次讀寫之前都要對ds18b20進(jìn)行 復(fù)位操作,復(fù)位成功后發(fā)送一條rom指令,最后發(fā)送ram指令,這樣才能對ds18b20進(jìn)行預(yù)定的操作。復(fù)位要求主cpu將數(shù)據(jù)線下拉500微秒,然后 釋放,當(dāng)ds18b20收到信號后等待1660微秒左右,后發(fā)出60240微秒的存在低脈沖,主cpu收到此信號表示復(fù)位成功。指 令 約定代碼功 能讀rom33h讀ds1820溫度傳感器rom中的編碼(

19、即64位地址) 符合 rom55h發(fā)出此命令之后,接著發(fā)出 64 位 rom 編碼,訪問單總線上與該編碼相對應(yīng)的 ds1820 使之作出響應(yīng),為下一步對該 ds1820 的讀寫作準(zhǔn)備。 搜索 rom 0foh用于確定掛接在同一總線上 ds1820 的個數(shù)和識別 64 位 rom 地址。為操作各器件作好準(zhǔn)備。 跳過 rom0cch忽略 64 位 rom 地址,直接向 ds1820 發(fā)溫度變換命令。適用于單片工作。告警搜索命令0ech執(zhí)行后只有溫度超過設(shè)定值上限或下限的片子才做出響應(yīng)。 rom指令表指 令 約定代碼功 能溫度變換44h啟動ds1820進(jìn)行溫度轉(zhuǎn)換,12位轉(zhuǎn)換時最長為750ms(9位

20、為93.75ms)。結(jié)果存入內(nèi)部9字節(jié)ram中。 讀暫存器 0beh 讀內(nèi)部ram中9字節(jié)的內(nèi)容 寫暫存器 4eh 發(fā)出向內(nèi)部ram的3、4字節(jié)寫上、下限溫度數(shù)據(jù)命令,緊跟該命令之后,是傳送兩字節(jié)的數(shù)據(jù)。 復(fù)制暫存器 48h 將ram中第3 、4字節(jié)的內(nèi)容復(fù)制到eeprom中。 重調(diào) eeprom0b8h將eeprom中內(nèi)容恢復(fù)到ram中的第3 、4字節(jié)。 讀供電方式 0b4 讀ds1820的供電模式。寄生供電時ds1820發(fā)送“ 0 ”,外接電源供電 ds1820發(fā)送“ 1 ”。 ram指令表2.5.ds18b20 與單片機(jī)的接口電路 ds18b20可以采用兩種方式供電,一種是采用電源供電方

21、式,此時ds18b20的1腳接地,2腳作為信號線,3腳接電源。另一種是寄生電源供電方式,如所示單片機(jī)端口接單線總線,為保證在有效的ds18b20時鐘周期內(nèi)提供足夠的電流,可用一個mosfet管來完成對總線的上拉。當(dāng)ds18b20處于寫存儲器操作和溫度a/d轉(zhuǎn)換操作時,總線上必須有強(qiáng)的上拉,上拉開啟時間最大為10us。采用寄生電源供電方式時vdd端接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。由于ds18b20 是在一根i/o線上讀寫數(shù)據(jù),因此,對讀寫的數(shù)據(jù)位有著嚴(yán)格的時序要求。ds18b20 有嚴(yán)格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號的時序:初始化時序、讀

22、時序、寫時序。所有時序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動啟動寫時序開始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫命令后,主機(jī)需啟動讀時序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。ds18b20 與單片機(jī)的接口電路ds18b20 操作時序第3章 硬件電路與系統(tǒng)軟件的設(shè)計及分析硬件設(shè)計思路:1.p1.0與ds18b20的輸入/輸出口dq連接;2.p1.2、p1.3、p1.4、p1.5分別連接key1、key2、key3、key4,分別控制最低限溫度和最高限溫度值的增一和減一操作;3.p1.6用來控制蜂鳴器的開閉,p1.7用來控制紅色發(fā)光二極管的亮暗。軟

23、件的設(shè)計思想:1.當(dāng)對最低限賦得初值大于或等于最高限初值時,系統(tǒng)打開時會顯示錯誤“eroor”,通過直接更改可以消除錯誤;2.在更改溫度限值的時候,會控制最高限溫度值大于最低限溫度值,最低限溫度值小于最高限溫度值;應(yīng)用89c51(52)單片機(jī)設(shè)計并制作一個單片機(jī)最小系統(tǒng),達(dá)到如下基本要求: 1、具有上電復(fù)位和手動復(fù)位功能。 2、使用單片機(jī)片內(nèi)程序存儲器。 3、具有基本的人機(jī)交互接口。按鍵輸入、led顯示功能。 4、具有一定的可擴(kuò)展性,單片機(jī)i/o口可方便地與其他電路板連接。軟件設(shè)計的設(shè)計思路是:主程序進(jìn)行鍵盤掃描,判斷采用何種方式進(jìn)行顯示,初始化狀態(tài)為逐字顯示,判斷后進(jìn)入相應(yīng)額方式顯示子程序。

24、設(shè)置相應(yīng)的程序入口,反復(fù)調(diào)用顯示子程序,并在顯示過程中反復(fù)調(diào)用鍵盤掃描子程序進(jìn)行延遲,并通過判斷是否退出相應(yīng)的方式顯示子程序,進(jìn)入主程序。設(shè)計程序過程中能很好地提高按鍵響應(yīng)速度。3.1.主板電路3.2.軟件程序分析(流程圖)程序主要包括主程序、顯示子程序、鍵掃描程序、檢測程序等。主程序流程圖顯示子程序流程圖鍵掃描程序流程圖檢測程序流程圖第4章 總結(jié)與體會我們小組經(jīng)過近兩周的努力,終于完成了數(shù)字溫度傳感器課程設(shè)計的任務(wù)。在設(shè)計過程中我們遇到許多問題,以前只是單純的編寫一些程序或者說學(xué)習(xí)一些書本上的知識,但這次我們要將理論付諸于實踐,許多意想不到的問題便會接踵而至。 通過反復(fù)的調(diào)試與小組成員之間的

25、討論,我們終于將完成了課設(shè)中亮燈,蜂鳴,按鍵等內(nèi)容的任務(wù),還對89c51單片機(jī)和ds18b20溫度傳感器有了更加深入的了解。通過這次單片機(jī)課程設(shè)計,我們有了不少的收獲,總結(jié)了以下幾點:1、培養(yǎng)了我們查閱手冊和文獻(xiàn)資料的良好習(xí)慣2、培養(yǎng)了我們獨立分析和解決實際問題的能力。理論必須聯(lián)系實際才能發(fā)揮它真正的作用。學(xué)習(xí)知識不能只是紙上談兵,我們應(yīng)該以運用為目的。3、增強(qiáng)與同組的組員的團(tuán)結(jié)合作的精神團(tuán)。隊合作很重要。在一個小組中,每個人都有自己擅長的模塊,如果合理的分配任務(wù),那么整個工作就會事半功倍。4、更進(jìn)一步地熟悉了芯片的結(jié)構(gòu)及掌握了各芯片的工作原理和其具體的使用方法.總之,我們通過這次課設(shè)收獲頗多

26、,對于今后這方面的學(xué)習(xí)我們也會更加的努力!參考文獻(xiàn):1趙嘉蔚.單片機(jī)原理與接口技術(shù).北京:清華大學(xué)出版社,2010.22徐愛鈞.單片機(jī)原理實用教程:基于proteus虛擬仿真(第2版).北京:電子工業(yè)出版社,20113劉君華.傳感器技術(shù)及應(yīng)用實例.北京:電子工業(yè)出版社,20084侯國章.測試與傳感技術(shù)m.哈爾濱:哈爾濱工業(yè)大學(xué)出版社.2000:122-1245賈振國.ds1820及高精度測量的實現(xiàn)j.電子技術(shù)應(yīng)用.2000.6謝維成.單片機(jī)原理與應(yīng)用d.北京:清華大學(xué).20037黃賢,鄭筱霞,曲波等.傳感器實際應(yīng)用電路設(shè)計m.成都:電子科技大學(xué)出版社.1997附錄源程序key1 bit p1.

27、2key2 bit p1.3key3 bit p1.4key4 bit p1.5minh data 6chminl data 6dhmaxh data 6ehmaxl data 6fhdq bit p1.0 org 0000h ajmp main org 0030hmain: mov sp,#60h ; mov dptr,#0100h ;賦命令/狀態(tài)寄存器地址 mov a,#00001110b ;設(shè)置a、b口為基本輸入輸出口,并b口為輸出口,c口為輸出口 movx dptr,a mov 6ch,#09h ;給最低溫度限賦初值 mov 6dh,#05h mov 6eh,#09h ;給最高限溫度賦

28、初值 mov 6fh,#09h mov a,6ch mov b,#10 mul ab add a,6dh mov 30h,a mov a,6eh mov b,#10 mul ab add a,6fh mov 31h,a up: mov a,31h cjne a,30h,gonow ;比較最高限溫度與最低限溫度值up2: acall display2 ;兩溫度相等調(diào)用顯示錯誤程序 acall key acall check sjmp up ;不斷進(jìn)行比較gonow: jc up2 ;判斷進(jìn)位標(biāo)志是否為1,如果為1,即最高限溫度小于最低限溫度,也調(diào)用顯示錯誤程序 clr p1.6 ;位清零,燈滅

29、clr p1.7 ;start: lcall readt ;調(diào)用溫度值子程序 lcall prodata ;調(diào)用數(shù)據(jù)處理子程序,組合溫度數(shù)據(jù) mov 24h,#20h ;顯示溫度值并延時loop: acall key acall display ;調(diào)用顯示子程序 acall check ;調(diào)用檢測溫度是否超過范圍程序 djnz 24h,loop ajmp start ;轉(zhuǎn)至start循環(huán)readt: push acc push psw setb dq lcall ini ;ds18b20初始化 mov a,#0cch ;跳過rom序列碼匹配 lcall wr18b20 mov a,#44h ;

30、發(fā)送溫度轉(zhuǎn)換命令 lcall wr18b20 lcall ini ;ds18b20初始化 mov a,#0cch ;跳過rom序列碼匹配 lcall wr18b20 mov a,#0beh ;發(fā)送讀溫度命令 lcall wr18b20 lcall rd18b20 ;讀倆字節(jié)溫度值 pop psw pop acc ret;溫度轉(zhuǎn)換子程序prodata:push acc push psw ;取兩字節(jié)溫度值組合存入22h單元 mov a,20h anl a,#0f0h ;取第一字節(jié)的高4位 mov r5,a mov a,21h anl a,#0fh ;取第二字節(jié)的低4位 orl a,r5 swap

31、a mov 22h,a mov a,22h ;溫度值存入22h單元 mov b,#0ah ;將22h單元的溫度值轉(zhuǎn)換為bcd碼 div ab mov 70h,a ;十位數(shù)存入70h單元 mov 71h,b ;個位數(shù)存入71h單元 pop psw pop acc retini: setb dq ;ds18b20初始化子程序 nop clr dq mov r0,#0fbh djnz r0,$ setb dq mov r0,#24h djnz r0,$ jnb dq,tsr1 ;dq是否為一,有無應(yīng)答信號 ljmp tsr2tsr1: setb f0 ;置標(biāo)志位,表示ds18b20存在 ljmp t

32、sr3tsr2: clr f0 ;清標(biāo)志位,表示ds18b20不存在 ljmp tsr4tsr3: mov r0,#96h djnz r0,$tsr4: setb dq retwr18b20: mov r2,#08h ;編寫18b20子程序 clr cwr1: clr dq mov r3,#06h ;延時13us djnz r3,$ rrc a mov dq,c mov r3,#10h ;延時43us djnz r3,$ setb dq nop djnz r2,wr1 setb dq retrd18b20: mov r4,#02h ;讀18b20子程序 mov r1,#20h ;從18b20讀

33、兩字節(jié)數(shù)據(jù),存入20h和21h單元rd1: mov r2,#08hrd2: clr c setb dq nop nop clr dq nop nop nop setb dq mov r3,#07h ;延時15us djnz r3,$ mov c,dq mov r3,#16h ;延時45us djnz r3,$ rrc a djnz r2,rd2 mov r1,a inc r1 djnz r4,rd1 ret;鍵掃描程序key: jnb key1,kkkey2 ;判斷key1鍵是否按下,未按下則查看key2鍵是否按下 jb key1,$ ;等待key1鍵釋放 mov a,30h ;將溫度最低限值

34、送入累加器 add a,#01h ;給累加器值加一 cjne a,#100,next1 ;將累加器值與100相比,不相等執(zhí)行next1 mov a,#00h ;如果相等,將累加器重置為0next1: clr c ;清楚進(jìn)位標(biāo)志 cjne a,31h,dplay1 ;將累加器內(nèi)容與溫度最高限相比,不相等執(zhí)行dplay1 sjmp returndplay1: jc dplay3 ;判斷進(jìn)位標(biāo)志,為1即累加器內(nèi)容小于最高限溫度值,則dplay3 mov a,30h ;否則,將最低限溫度值仍給adplay3: mov 30h,a sjmp returnkkkey2: jnb key2,kkkey3 ;

35、判斷key2鍵是否按下,未按下則查看key3鍵是否按下 jb key2,$ ;等待key2鍵釋放 mov a,30h ;將溫度最低限值送入累加器 jz next3 ;判斷累加器內(nèi)容是否為0,為0執(zhí)行next3,即保持原值 clr c ;累加器內(nèi)容不為0,進(jìn)位標(biāo)志清零 subb a,#01h ;將累加器內(nèi)容減一 mov 30h,a ;將減一所得數(shù)送回最低限溫度單元 sjmp return ;next3: mov 30h,#00 ;累加器內(nèi)容為0,則讓最低限溫度單元內(nèi)容繼續(xù)保持0 sjmp return ;kkkey3: jnb key3,kkkey4 ;判斷key3鍵是否按下,未按下則查看key

36、4鍵是否按下 jb key3,$ ;等待key3鍵釋放 mov a,31h ;將溫度最高限值送入累加器 add a,#01h ;給累加器值加一 cjne a,#100,next2 ;將累加器內(nèi)容與100相比,不相等執(zhí)行next2 mov a,#99 ;如果相等,將99送給累加器next2: mov 31h,a ;將累加器內(nèi)容送給最高限溫度單元 sjmp return ;kkkey4: jnb key4,return ;判斷key4鍵是否按下,未按下則返回 jb key4,$ ;等待key4鍵釋放 mov a,31h ;將溫度最高限值送入累加器 jz return ;判斷累加器內(nèi)容是否為0,如果

37、為0,則返回,保持原值不變 clr c ;累加器內(nèi)容不為0,則將進(jìn)位標(biāo)志清零 subb a,#01h ;將累加器內(nèi)容減一 clr c ;再清除進(jìn)位標(biāo)志,準(zhǔn)備比較累加器內(nèi)容與最低限溫度單元內(nèi)容的大小關(guān)系 cjne a,30h,dplay2 ;將減一所得數(shù)與最低限溫度單元內(nèi)容比較,不相等執(zhí)行dplay2 mov a,31h ;如果相等,則將最高限溫度值保持 sjmp return ;dplay2: jc return ;判斷進(jìn)位標(biāo)志,進(jìn)位標(biāo)志為1,即保持原值 mov 31h,a ;進(jìn)位標(biāo)志為0,即累加器內(nèi)容(最高溫度限)大于最低限溫度值,則將累加器內(nèi)容送給 sjmp return ;return:

38、 ret;顯示子程序display:mov a,30h ;將30h(最低限溫度)內(nèi)容送入累加器 mov b,#10 ; div ab ; mov 6ch,a ;將十位數(shù)(最低限溫度高位)存入6ch單元 mov 6dh,b ;個位數(shù)(最低限溫度低位)存入6dh單元 mov a,31h ;將30h(最低限溫度)內(nèi)容送入累加器 mov b,#10 ; div ab ; mov 6eh,a ;將十位數(shù)(最高限溫度高位)存入6ch單元 mov 6fh,b ;個位數(shù)(最高限溫度低位)存入6dh單元 mov r0,#6ch ;將要顯示內(nèi)容首地址賦給r0movr2,#01h ;將控制最左一位亮的數(shù)賦給r2 mov a,r2 ;ld0:mov dptr,#0103h ;賦c口地址movx dptr,a ;將累加器(控制某位亮)內(nèi)容送到c口 mov dptr,#dtab ;將查表程序首地址給dptr mov

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論