基于DS18B20的溫度采集系統(tǒng)數(shù)碼管顯示的設(shè)計(jì)_第1頁
基于DS18B20的溫度采集系統(tǒng)數(shù)碼管顯示的設(shè)計(jì)_第2頁
基于DS18B20的溫度采集系統(tǒng)數(shù)碼管顯示的設(shè)計(jì)_第3頁
基于DS18B20的溫度采集系統(tǒng)數(shù)碼管顯示的設(shè)計(jì)_第4頁
基于DS18B20的溫度采集系統(tǒng)數(shù)碼管顯示的設(shè)計(jì)_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 課 程 設(shè) 計(jì) 任 務(wù) 書題 目 基于DS18B20的溫度采集系統(tǒng)(數(shù)碼管顯示)的設(shè)計(jì)系 (部) 職業(yè)技術(shù)學(xué)院 專 業(yè) 電氣自動化 班 級 電氣1132 學(xué)生姓名 劉珊珊 學(xué) 號 1120863219 指導(dǎo)教師(簽字) 系 主 任(簽字) 年 月 日 目錄摘要2一、設(shè)計(jì)任務(wù)和要求4二、芯片資料41、DS18B2041.1 DS18B20的工作原理41.2 DS18B20的使用方法62、AT89C5182.1 AT89C51簡介82.2 AT89C51功能82.3 AT89C51引腳9三、系統(tǒng)流程101、讀轉(zhuǎn)換溫度子程序102、讀、寫DS18B20的子程序11四、電路與程序設(shè)計(jì)121、程序12

2、2、電路圖17五、系統(tǒng)調(diào)試與分析19六、設(shè)計(jì)體會及參考文獻(xiàn)19 摘要隨著人們生活水平的不斷提高,單片機(jī)技術(shù)已經(jīng)普及到我們生活,工作,科研等各個領(lǐng)域。單片機(jī)控制無疑是人們追求的目標(biāo)之一,它所給人帶來的方便是不可否定的,其中數(shù)字溫度計(jì)就是一個典型的例子,但人們對它的要求越來越高,要為現(xiàn)代人工作、科研、生活提供更好的更方便的設(shè)施就需要從數(shù)單片機(jī)技術(shù)入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。本文利用單片機(jī)結(jié)合傳感器技術(shù)開發(fā)設(shè)計(jì),把傳感器理論與單片機(jī)實(shí)際應(yīng)用有機(jī)結(jié)合,詳細(xì)地講述了利用溫度傳感器DS18B20測量環(huán)境溫度,設(shè)置上下報(bào)警溫度,當(dāng)溫度不在設(shè)置范圍內(nèi)是,可以報(bào)警。同時51單片機(jī)在現(xiàn)代電子產(chǎn)品

3、中廣泛應(yīng)用以及其技術(shù)已經(jīng)非常成熟,DS18B20可以直接讀出被測溫度值,而且采用一線制與單片機(jī)相連,減少了外部的硬件電路,具有低成本和易使用的特點(diǎn) 關(guān)鍵詞: 單片機(jī)控制、溫度檢測、溫度傳感器、溫度報(bào)警、低成本、易使用 Abstract With the continuous improvement of living standard, single chip technology has spread to our lives, work, research and other fields.SCM is undoubtedly one of the goals people pursue,

4、 the convenience it brings is not negative, in which digital thermometer is a typical example, but it requires more and more people to work for the modern man, research, provide a better life, more convenient facilities need to start from a few microcontroller technology, all toward the digital cont

5、rol, intelligent control direction.In this paper, combined with sensor technology development and design of single chip, the sensor application of theory and practical combination of SCM in detail about the use of temperature sensors measure the ambient temperature DS18B20, set the upper and lower a

6、larm temperature range when the temperature is not set is for the police. 51 Micro also widely used in modern electronic products and its technology is well established. DS18B20 can directly read the measured temperature, and the use of front-line system is connected with the microcontroller, reduci

7、ng the external hardware circuit, the characteristics of low cost and ease of use.Keywards: SCM control 、temperature measure、temperature sensors temperature alarming 、low cost 、 ease of use 一、設(shè)計(jì)內(nèi)容及要求利用DS18B20實(shí)現(xiàn)溫度采集,并用數(shù)碼管顯示(用proteus實(shí)現(xiàn))。二、芯片資料1、DS18B201.1 DS18B20的工作原理DS18B20的讀寫時序和測溫原理與DS1820相同,只是得到的溫度

8、值的位數(shù)因分辨率不同而不同,且溫度轉(zhuǎn)換時的延時時間由2s 減為750ms。 DS18B20測溫原理如圖3所示。圖中低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號送給計(jì)數(shù)器1。高溫度系數(shù)晶振 隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號作為計(jì)數(shù)器2的脈沖輸入。計(jì)數(shù)器1和溫度寄存器被預(yù)置在55所對應(yīng)的一個基數(shù)值。計(jì)數(shù)器1對 低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行減法計(jì)數(shù),當(dāng)計(jì)數(shù)器1的預(yù)置值減到0時,溫度寄存器的值將加1,計(jì)數(shù)器1的預(yù)置將重新被裝入,計(jì)數(shù)器1重 新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行計(jì)數(shù),如此循環(huán)直到計(jì)數(shù)器2計(jì)數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即 為

9、所測溫度。圖3中的斜率累加器用于補(bǔ)償和修正測溫過程中的非線性,其輸出用于修正計(jì)數(shù)器1的預(yù)置值。   DS18B20有4個主要的數(shù)據(jù)部件: (1)光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是產(chǎn)品類型標(biāo)號,接著的48位是該DS18B20自身的序列號,最后8位是前面56位的循環(huán)冗余校驗(yàn)碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個DS18B20的目的。(2)DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉(zhuǎn)化為

10、例:用16位符號擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以0.0625/LSB形式表達(dá),其中S為符號位。表1: DS18B20溫度值格式表這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在18B20的兩個8比特的RAM中,二進(jìn)制中的前面5位是符號位,如果測得的溫度大于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實(shí)際溫度。例如+125的數(shù)字輸出為07D0H,+25.0625的數(shù)字輸出為0191H,-25.0625的數(shù)字輸出為FF6FH,-55的數(shù)字輸出為FC90H。表2: DS18B20溫度數(shù)據(jù)表(3)DS18B20溫

11、度傳感器的存儲器DS18B20溫度傳感器的內(nèi)部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的EEPRAM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結(jié)構(gòu)寄存器。(4)配置寄存器該字節(jié)各位的意義如下:TMR1R011111 表3: 配置寄存器結(jié)構(gòu)低五位一直都是"1",TM是測試模式位,用于設(shè)置DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設(shè)置為0,用戶不要去改動。R1和R0用來設(shè)置分辨率,如下表所示:(DS18B20出廠時被設(shè)置為12位)R1R0分辨率溫度最大轉(zhuǎn)換時間009位93.75ms0110位187.5ms1011位375ms1112位750

12、ms 表4: 溫度分辨率設(shè)置表序號名稱引腳功能描述1GND地信號2DQ數(shù)據(jù)輸入/輸出引腳。開漏單總線接口引腳。當(dāng)被用著在寄生電源下,也可以向器件提供電源。3VDD可選擇的VDD引腳。當(dāng)工作于寄生電源時,此引腳必須接地。1.2 DS18B20的使用方法由于DS18B20采用的是1Wire總線協(xié)議方式,即在一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,而對AT89S51單片機(jī)來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時序來完成對DS18B20芯片的訪問。 由于DS18B20是在一根I/O線上讀寫數(shù)據(jù),因此,對讀寫的數(shù)據(jù)位有著嚴(yán)格的時序要求。DS18B20有嚴(yán)格的通信協(xié)議來保證各

13、位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號的時序:初始化時序、讀時序、寫時序。所有時序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動啟動寫時序開始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫命令后,主機(jī)需啟動讀時序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。 DS18B20的初始化 (1) 先將數(shù)據(jù)線置高電平“1”。 (2) 延時(該時間要求的不是很嚴(yán)格,但是盡可能的短一點(diǎn)) (3) 數(shù)據(jù)線拉到低電平“0”。 (4) 延時750微秒(該時間的時間范圍可以從480到960微秒)。 (5) 數(shù)據(jù)線拉到高電平“1”。 (6) 延時等待(如果初始化成功則在15到60

14、毫秒時間之內(nèi)產(chǎn)生一個由DS18B20所返回的低電平“0”。據(jù)該狀態(tài)可以來確定它的存在,但是應(yīng)注意不能無限的進(jìn)行等待,不然會使程序進(jìn)入死循環(huán),所以要進(jìn)行超時控制)。 (7) 若CPU讀到了數(shù)據(jù)線上的低電平“0”后,還要做延時,其延時的時間從發(fā)出的高電平算起(第(5)步的時間算起)最少要480微秒。 (8) 將數(shù)據(jù)線再次拉高到高電平“1”后結(jié)束。 DS18B20的寫操作 (1) 數(shù)據(jù)線先置低電平“0”。 (2) 延時確定的時間為15微秒。 (3) 按從低位到高位的順序發(fā)送字節(jié)(一次只發(fā)送一位)。 (4) 延時時間為45微秒。 (5) 將數(shù)據(jù)線拉到高電平。 (6) 重復(fù)上(1)到(6)的操作直到所有

15、的字節(jié)全部發(fā)送完為止。 (7) 最后將數(shù)據(jù)線拉高。 DS18B20的讀操作 (1)將數(shù)據(jù)線拉高“1”。 (2)延時2微秒。 (3)將數(shù)據(jù)線拉低“0”。 (4)延時3微秒。 (5)將數(shù)據(jù)線拉高“1”。 (6)延時5微秒。 (7)讀數(shù)據(jù)線的狀態(tài)得到1個狀態(tài)位,并進(jìn)行數(shù)據(jù)處理。 (8)延時60微秒。 ROM指令表 指 令 約定代碼功 能讀ROM33H讀DS1820溫度傳感器ROM中的編碼(即64位地址) 符合 ROM 55H發(fā)出此命令之后,接著發(fā)出 64 位 ROM 編碼,訪問單總線上與該編碼相對應(yīng)的 DS1820 使之作出響應(yīng),為下一步對該 DS1820 的讀寫作準(zhǔn)備。 搜索 ROM 0FOH用于

16、確定掛接在同一總線上 DS1820 的個數(shù)和識別 64 位 ROM 地址。為操作各器件作好準(zhǔn)備。 跳過 ROM 0CCH忽略 64 位 ROM 地址,直接向 DS1820 發(fā)溫度變換命令。適用于單片工作。 告警搜索命令 0ECH執(zhí)行后只有溫度超過設(shè)定值上限或下限的片子才做出響應(yīng)。 RAM指令表 指 令 約定代碼功 能溫度變換44H啟動DS1820進(jìn)行溫度轉(zhuǎn)換,12位轉(zhuǎn)換時最長為750ms(9位為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ù)。

17、 復(fù)制暫存器 48H 將RAM中第3 、4字節(jié)的內(nèi)容復(fù)制到EEPROM中。 重調(diào) EEPROM 0B8H 將EEPROM中內(nèi)容恢復(fù)到RAM中的第3 、4字節(jié)。 讀供電方式 0B4H 讀DS1820的供電模式。寄生供電時DS1820發(fā)送“ 0 ”,外接電源供電 DS1820發(fā)送“ 1 ”。 2、AT89C512.1 AT89C51簡介AT89S51美國ATMEL公司生產(chǎn)的低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含4K BytesISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)制造,兼容標(biāo)準(zhǔn)MC

18、S-51指令系統(tǒng)及AT89C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲單元。單片機(jī)AT89S51強(qiáng)大的功能可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。2.2 AT89C51功能 AT89S51提供以下標(biāo)準(zhǔn)功能:40個引腳、4K Bytes Flash片內(nèi)程序存儲器、128 Bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM)、32個外部雙向輸入/輸出(I/O)口、5個中斷優(yōu)先級2層中斷嵌套中斷、2個數(shù)據(jù)指針、2個16位可編 程定時/計(jì)數(shù)器、2個全雙工串行通信口、看門狗(WDT)電路、片內(nèi)振蕩器及時鐘電路。此外,AT89S51可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)

19、電工作模式,空閑模式,CPU暫停工作,而RAM、定時/計(jì)數(shù)器、串行通信口、外中斷系統(tǒng)可繼續(xù)工作。掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求2.3 AT89C51引腳P0口:P0口為一個8位漏級開路雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時,能驅(qū)動8個TTL邏輯門電路。對端口寫“1”時,被定義為高阻輸入。在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。在Flash編程時,P0口接收指令字節(jié),而在程序校驗(yàn)時,

20、輸出指令字節(jié),校驗(yàn)時,要求外接上拉電阻。P1口:P1口是一個帶內(nèi)部上拉電阻的8位雙向I/O口,P1口的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因?yàn)閮?nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(I)。P2口:P2口是一個帶有內(nèi)部上拉電阻的8位雙向I/O口, P2口的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因?yàn)閮?nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(I)。在訪問外部程序存

21、儲器或16位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行MOVXDPTR指令)時,P2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)寄存器(例如執(zhí)行MOVXRi指令)時,P2口線上的內(nèi)容(也即特殊功能寄存器(SFR)區(qū)中P2寄存器的內(nèi)容),在整個訪問期間不改變。P3口: P3口是一個帶有內(nèi)部上拉電阻的雙向8位I/O口, P3口的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對P3口寫“1”時,它們被內(nèi)部的上拉電阻拉高并可作為輸入端口。作輸入口使用時,被外部信號拉低的P3口將用上拉電阻輸出電流(I)。RST:復(fù)位輸入。當(dāng)振蕩器工作時,RST引腳出現(xiàn)兩個機(jī)器周期以上的高電平時間將使單片機(jī)復(fù)位。WDT溢

22、出將使該引腳輸出高電平,設(shè)置SFR AUXR的DISRTO位(地址8EH)可打開或關(guān)閉該功能。 DISRTO位缺省為RESET輸出高電平打開狀態(tài)。 ALE/:當(dāng)訪問外部存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部寄存器,ALE仍以時鐘振蕩頻率的1/6輸出固定的正脈沖信號,因此它可對外輸出時鐘或用于定時目的。值得注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。對Flash存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只要一條MOVX

23、和MOVC指令才會激活A(yù)LE。此外,該引腳會被微弱拉高,單片機(jī)執(zhí)行外部程序時,應(yīng)設(shè)置ALE無效。:程序存儲允許()輸出是外部程序存儲器的讀選通信號,當(dāng)AT89S51由外部程序存儲器取指令(或數(shù)據(jù))時,每個機(jī)器周期兩次有效,即輸出兩個脈沖。當(dāng)訪問外部數(shù)據(jù)存儲器時,沒有兩次有效的信號。EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需要注意的是:如果加密位LB1被編程,復(fù)位時內(nèi)部會鎖存EA端狀態(tài)。如EA端保持高電平(接VCC端),CPU則執(zhí)行內(nèi)部程序存儲器中的指令。三、系統(tǒng)流程1、讀DS18B20的子程序 2、讀轉(zhuǎn)換溫度子程

24、序Y發(fā)DS18B20復(fù)位命令發(fā)跳過ROM命令發(fā)讀取溫度命令讀取操作,CRC校驗(yàn)9字節(jié)完?結(jié)束CRC校驗(yàn)正確?移入溫度暫存器NYN3、寫DS18B20的子程序復(fù)位延時16us以上把一個字節(jié)DATA 分成8個BIT環(huán)移給C 寫入一個BIT等待100微妙重新釋放總線置R2為8寫入下一個BIT寫完8 BIT重新釋放總線返回四、電路與程序設(shè)計(jì) 1、程序設(shè)計(jì)TEMP1 EQU 5AH ;符號位和耗電量位公用的存放單元 TEMP2 EQU 5BH ;十位存放單元 TEMP3 EQU 5CH ;個位存放單元 TEMP4 EQU 5DH TEMP5 EQU 5EH ;數(shù)據(jù)臨時存放單元 TEMP6 EQU 5FH

25、 TEMP7 EQU 60H TEMP8 EQU 61H ORG 0000H AJMP MAIN ORG 0030HMAIN: MOV SP,#70H LCALL INT ;調(diào)用DS18B20初始化函數(shù)MAIN1: LCALL GETTEMP ;調(diào)用溫度轉(zhuǎn)換函數(shù) LCALL CHULI ;調(diào)用溫度計(jì)算函數(shù) LCALL DISP ;調(diào)用溫度顯示函數(shù) AJMP MAIN1 ;循環(huán)INT:L0: SETB P3. 6 ;先釋放DQ總線 MOV R2,#250 ;給R2賦延時初值,同時可讓DQ保持高電平2USL1: CLR P3.6 ;給DQ一個復(fù)位低電平 DJNZ R2,L1 ;保持低電平的時間至少

26、為480US SETB P3.6 ;再次拉高DQ釋放總線 MOV R2,#25L2: DJNZ R2,L2 ;保持15US-60US CLR C ORL C,P3.6 ;判斷是否收到低脈沖 JC L0 MOV R6,#100L3: ORL C,P3.6 DJNZ R6,L3 ;存在低脈沖保持60US-240US ;JC L0 ;否則繼續(xù)從頭開始,繼續(xù)判斷 SETB P3.6 RET ;調(diào)用溫度轉(zhuǎn)換函數(shù)GETTEMP: CLR PSW.4 SETB PSW.3 ;設(shè)置工作寄存器當(dāng)前所在的區(qū)域 CLR EA ;使用DS18B20前一定要禁止任何中斷 LCALL INT ;初始化DS18B20 MO

27、V A,#0CCH ;送入跳過ROM命令 LCALL WRITE MOV A,#44H ;送入溫度轉(zhuǎn)換命令 LCALL WRITE NOP LCALL DELAY LCALL INT ;溫度轉(zhuǎn)換完成,再次初始化 MOV A,#0CCH ;送入跳過ROM命令 LCALL WRITE MOV A,#0BEH ;送入讀溫度暫存器命令 LCALL WRITE LCALL READ MOV TEMP4,A ;讀出溫度的低字節(jié)存在TEMP4 LCALL READ MOV TEMP5,A ;讀出溫度的高字節(jié)存在TEMP5 SETB EA RETCHULI: MOV A, TEMP5 ;將溫度的高字節(jié)取出 J

28、NB ACC.7,ZHENG ;判斷最高們是否為0,為則表示溫度為正,則轉(zhuǎn)到ZHENG否則溫度為負(fù),將溫度的低字節(jié)取出 MOV A, TEMP4 CPL A ;求反 INC A ;加工廠 MOV TEMP8,A ;存到TEMP8 ANL A,#0FH ;保留低四位 LCALL MULD ;調(diào)用乘以625子程序 LCALL HB2 ;調(diào)用雙字節(jié)16進(jìn)制數(shù)轉(zhuǎn)成BCD碼子程序 MOV A,R4 ;將結(jié)果的千位百位取出 ANL A,#0F0H ;保留千位 SWAP A MOV TEMP7,A ;把小數(shù)結(jié)果保存在TEMP7中 MOV A,TEMP4 ;再次取出溫度低字節(jié) ANL A,#0FFH ;判斷是

29、否為0 JZ XX ;為何則轉(zhuǎn)到XX執(zhí)行 MOV A,TEMP5 CPL A ;不為則直接將溫度的高字節(jié)取反 SJMP YYXX: MOV A,TEMP5 ;為0則求補(bǔ)碼 CPL A INC AYY: ANL A,#0F0H ;保留高字節(jié)的低四位 SWAP A ;將其換到高4位 MOV R5,A ;暫時保存于R5中 MOV A,TEMP8 ;取出求反后的低位字節(jié) ANL A,#0F0H ;取其高四位 SWAP A ;將其換到低四位 ORL A,R5 ;合并成溫度的整數(shù)部分 MOV TEMP6,A ;將整數(shù)部分存到TEMP6中 LCALL HBCD ;調(diào)用一字節(jié)的16進(jìn)制轉(zhuǎn)換BCD數(shù)的子程序 M

30、OV TEMP1,#0BH ;將號的段選值存到符號位 MOV A,TEMP2 ;取出十位 CJNE A,#00H,NEXT MOV TEMP2,#0CH ;十位為0不顯示 RETZHENG: MOV A,TEMP4 ;將溫度的低字節(jié)取出 ANL A,#0FH ;保留低四位 LCALL MULD ;調(diào)用乘以625子程序 LCALL HB2 ;調(diào)用雙字節(jié)16進(jìn)制數(shù)轉(zhuǎn)換成BCD碼子程序 MOV A,R4 ;將結(jié)果的千位百位取出 ANL A,#0F0H ;保留千位 SWAP A MOV TEMP7,A ;把小數(shù)結(jié)果保存在TEMP7中 MOV A,TEMP4 ;再次取出溫度的低字節(jié) ANL A,#0F0

31、H SWAP A ;換到低4位 MOV R5,A ;暫時保存于R5中 MOV A,TEMP5 ;取出溫度的高字節(jié) ANL A,#0FH ;保留低4位 SWAP A ;換到高4位 ORL A,R5 ;合并成溫度的整數(shù)部分 MOV TEMP6,A ;整數(shù)部分存到TEMP6中 LCALL HBCD ;單字節(jié)的16進(jìn)制轉(zhuǎn)換成BCD碼 MOV A,TEMP1 ;取出百位 CJNE A,#00H,NEXT ;百位不為0則轉(zhuǎn)NEXT MOV TEMP1,#0CH ;為0則不顯 MOV A,TEMP2 ;取出十位 CJNE A,#00H,NEXT MOV TEMP2,#0CH ;十位為0也不是NEXT: RE

32、TMULD: MOV R3,A MOV B,#71H MUL AB MOV R7,A MOV R6,B MOV B,#02H MOV A,R3 MUL AB ADD A,R6 MOV R6,A RETWRITE: MOV R3,#8 ;一個字節(jié)共8位WR1: SETB P3.6 ;先釋放總線 MOV R4,#8 RRC A ;把要寫的字節(jié)的最低位右環(huán)移到C中 CLR P3.6 ;把C中的位寫到DQ總線中WR3: DJNZ R4,WR3 ;保持低電平0-15US MOV P3.6, C; MOV R4 ,#20 DJNZ R4,$ DJNZ R3,WR1 SETB P3.6 RETREAD: M

33、OV R6,#8RE1: SETB P3.6 ;先釋放總線 NOP CLR P3.6 ;把要寫的字節(jié)的最低位右環(huán)移到C中 NOP ;寫開始 MOV R4,#4 ;保持低電平0-15US SETB P3.6 ;將C中的位寫到DQ總線上RE2: DJNZ R4,RE2 ;產(chǎn)生讀時間 MOV C,P3.6 ;將總線上的位讀到C MOV R5,#30 DJNZ R5,$ ;持續(xù)60US RRC A ;將C里的位右環(huán)移到A里 DJNZ R6,RE1 ;讀下一位 SETB P3.6 RET HBCD: MOV A,TEMP6 MOV B,#10 DIV AB MOV TEMP3,B ;將個位存到TEMP3

34、 MOV B,#10 DIV AB MOV TEMP2,B ;將十位存到TEMP2 MOV TEMP1,A ;將百位存到TEMP1 RET HB2: CLR A MOV R3,A MOV R4,A MOV R5,A MOV R2,#10H HB3: MOV A,R7 RLC A MOV R7,A MOV A,R6 RLC A MOV R6,A MOV A,R5 ADDC A,R5 DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A MOV A,R3 ADDC A,R3 MOV R3,A DJNZ R2,HB3 RETDISP: MOV DPTR,#DI

35、SPTAB MOV R0,#4DP1: MOV R1,#140LOOP: MOV A,TEMP7 ;取出小數(shù)部分 MOVC A,A+DPTR ;取出相應(yīng)的字型碼 MOV P0,A ;顯示在數(shù)碼管上 SETB P2.5 ;數(shù)碼管位選 ACALL DELAY100 ;延時 CLR P2.5 ;清數(shù)碼管位選 MOV A,TEMP3 ;取個位 MOVC A,A+DPTR ANL A,#7FH ;顯示小數(shù)點(diǎn) MOV P0,A SETB P2.4 ACALL DELAY100 ;取十位 CLR P2.4 MOV A,TEMP2 MOVC A,A+DPTR MOV P0,A SETB P2.3 ACALL DELAY100 CLR P2.3 MOV A,TEMP1 ;取

溫馨提示

  • 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

提交評論