




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
基于單片機(jī)溫度限制系統(tǒng)的設(shè)計(jì)中文摘要隨著微機(jī)測量和限制技術(shù)的迅猛開展與廣泛應(yīng)用,以單片機(jī)為核心的溫度采集與限制系統(tǒng)的研發(fā)與應(yīng)用在很大程度上提高了生產(chǎn)生活中對(duì)于溫度的限制水平。本設(shè)計(jì)論述了一種以STC89C52單片機(jī)為主限制單元,以DS18B20為溫度傳感器的溫度限制系統(tǒng)。該限制系統(tǒng)可以實(shí)時(shí)存儲(chǔ)相關(guān)的溫度數(shù)據(jù)并記錄當(dāng)前的時(shí)間。系統(tǒng)設(shè)計(jì)了相關(guān)硬件電路和相關(guān)應(yīng)用程序。硬件電路包括STC89C52單片機(jī)最小系統(tǒng),測溫電路、實(shí)時(shí)時(shí)鐘電路、LCD液晶顯示電路以及通訊模塊電路等。系統(tǒng)程序包括主程序,讀出溫度子程序,計(jì)算溫度子程序、按鍵處理程序和LCD顯示程序以及數(shù)據(jù)存儲(chǔ)程序等。[關(guān)鍵詞]STC89C52單片機(jī);DS18B20;顯示電路BasedonsinglechipmicrocomputertemperaturecontrolsystemdesignAbstractAlongwiththecomputermeasurementandcontroltechnologyoftherapiddevelopmentandwideapplication,basedonsinglechiptemperaturegatheringandcontrolsystemdevelopmentandapplicationgreatlyimprovetheproductionoftemperatureinlifelevelofcontrol.ThisdesignSTC89C52describesakindofmainlybyMCUcontrolunit,fortemperaturesensorDS18B20temperaturecontrolsystem.Thecontrolsystemcanreal-timestoragetemperaturedataandrecordrelatedtothecurrenttime.Systemdesignrelatedhardwarecircuitandrelatedapplications.STC89C52microcontrollerhardwarecircuitincludetemperaturedetectioncircuitsmallestsystem,andreal-timeclockcircuit,LCDdisplaycircuit,communicationmodulecircuit,etc.Systemprogrammingmainlyincludemainprogram,readtemperaturesubroutine,thecalculationoftemperaturesubroutines,keyprocessingprocedures,LCDdisplayproceduresanddatastorageprocedures,etc.[Keywords]STC89C52microcontroller;DS18B20;displaycircuit目錄一、引言 4(一)設(shè)計(jì)探究的背景 4(二)設(shè)計(jì)探究的目的和意義 5二、硬件電路的設(shè)計(jì) 5(一)系統(tǒng)設(shè)計(jì)的框架 5(二)單片機(jī)最小系統(tǒng)電路 6(三)單片機(jī)的選型 61.STC89C52單片機(jī)簡介 62.STC89C52單片機(jī)時(shí)序 73.STC89C52單片機(jī)引腳介紹 7(四)溫度傳感器電路 9(五)系統(tǒng)電源電路的設(shè)計(jì) 10(六)LCD顯示電路 11(七)串口通訊電路 12(八)按鍵接口電路 13(九)DS1302時(shí)鐘電路 13(十)存儲(chǔ)器接口電路 13三、系統(tǒng)軟件設(shè)計(jì) 14(一)計(jì)算溫度子程序 15(二)按鍵處理子程序 15(三)計(jì)算溫度子程序 16(四)顯示數(shù)據(jù)刷新子程序 17四、完畢語 18參考文獻(xiàn) 19致謝 20附件1:系統(tǒng)原理圖 21附件2:系統(tǒng)相關(guān)程序 22一、DS18B20底層驅(qū)動(dòng)程序 22二、DS1302時(shí)鐘底層驅(qū)動(dòng)程序 27三、數(shù)據(jù)存儲(chǔ)底層驅(qū)動(dòng)程序 33一、引言(一)設(shè)計(jì)探究的背景工業(yè)限制作為計(jì)算機(jī)的一個(gè)重要應(yīng)用領(lǐng)域,而計(jì)算機(jī)限制系統(tǒng)正是為了適應(yīng)這一領(lǐng)域的須要而開展起來的一門專業(yè)技術(shù),它主要探究如何將計(jì)算機(jī)技術(shù)、通過信息技術(shù)和自動(dòng)限制理論應(yīng)用于工業(yè)生產(chǎn)過程,并且設(shè)計(jì)出所須要的計(jì)算機(jī)限制系統(tǒng)。隨著微機(jī)測量和限制技術(shù)的快速開展與廣泛應(yīng)用,以單片機(jī)為核心的溫度采集與限制系統(tǒng)的研發(fā)與應(yīng)用在很大程度上提高了生產(chǎn)生活中對(duì)溫度的限制水平。本設(shè)計(jì)就是基于單片機(jī)STC89C52溫度限制系統(tǒng)的設(shè)計(jì),通過本次設(shè)計(jì)實(shí)踐,我們更加的明確了單片機(jī)的廣泛用途和運(yùn)用方法,以及其工作的原理。(二)設(shè)計(jì)探究的目的和意義伴隨著社會(huì)的開展,溫度的測量及限制的重要性更加凸顯。本文接受單片機(jī)STC89C52設(shè)計(jì)了溫度實(shí)時(shí)測量及限制系統(tǒng)。單片機(jī)STC89C52能夠依據(jù)溫度傳感器DS18B20所采集的溫度在液晶屏上實(shí)時(shí)顯示,通過限制從而把溫度限制在設(shè)定的范圍之內(nèi)。全部溫度數(shù)據(jù)均通過液晶顯示器LCD顯示出來。系統(tǒng)可以依據(jù)時(shí)鐘存儲(chǔ)相關(guān)的數(shù)據(jù)。通過該設(shè)計(jì)的學(xué)習(xí)使我們對(duì)計(jì)算機(jī)限制系統(tǒng)有一個(gè)全面的了解、駕馭常規(guī)限制算法的運(yùn)用方法、駕馭簡潔微型計(jì)算機(jī)應(yīng)用系統(tǒng)軟硬的設(shè)計(jì)方法,進(jìn)一步熬煉我們?cè)谖⑿陀?jì)算機(jī)應(yīng)用方面的實(shí)際工作實(shí)力。二、硬件電路的設(shè)計(jì)(一)系統(tǒng)設(shè)計(jì)的框架本設(shè)計(jì)的是一種以STC89C52單片機(jī)為主限制單元,DS18B20為溫度傳感器的溫度限制系統(tǒng)。該限制系統(tǒng)可以實(shí)時(shí)存儲(chǔ)相關(guān)的溫度數(shù)據(jù)并記錄當(dāng)前的時(shí)間。其主要包括:電源模塊、溫度采集模塊、按鍵處理模塊、實(shí)時(shí)時(shí)鐘模塊、數(shù)據(jù)存儲(chǔ)模塊、LCD顯示模塊、通訊模塊以及單片機(jī)最小系統(tǒng)。圖1系統(tǒng)設(shè)計(jì)框架(二)單片機(jī)最小系統(tǒng)電路在設(shè)計(jì)溫度限制系統(tǒng)設(shè)計(jì)中,限制核心是STC89C52單片機(jī),該單片機(jī)為51系列增加型8位單片機(jī),它擁有32個(gè)I/O口,片內(nèi)含有4KFLASH工藝的程序存儲(chǔ)器,更便利用電的方式瞬間擦除和改寫,而且價(jià)格廉價(jià),其外部晶振為12MHz,一個(gè)指令周期為1μS。運(yùn)用該單片機(jī)完全可以完成設(shè)計(jì)任務(wù),其最小的系統(tǒng)主要包括:復(fù)位電路、震蕩電路以及存儲(chǔ)器選擇模式〔EA腳的凹凸電平選擇〕,電路如下列圖2所示:圖2單片機(jī)最小系統(tǒng)(三)單片機(jī)的選型本設(shè)計(jì)的溫度限制系統(tǒng)主限制芯片選型為STC89C52單片機(jī),其特點(diǎn)如下:1.STC89C52單片機(jī)簡介目前,51系列單片機(jī)在工業(yè)檢測領(lǐng)域中得到了廣泛應(yīng)用,所以我們可以在許多單片機(jī)應(yīng)用領(lǐng)域中,配接各種類型語音接口,構(gòu)成具有合成語音輸出實(shí)力的綜合應(yīng)用系統(tǒng),用來增加人機(jī)對(duì)話的功能。STC89C52單片機(jī)是深圳宏晶科技有限公司生產(chǎn)的單片機(jī),在一小塊芯片上集成了一個(gè)微型計(jì)算機(jī)各個(gè)組成局部。每一個(gè)單片機(jī)包括:一個(gè)8位微型處理器CPU;一個(gè)512K片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM;4K片內(nèi)程序存儲(chǔ)器;四個(gè)8位并行I/O接口P0-P3,每個(gè)接口既可以輸入,也可以輸出;兩個(gè)定時(shí)器/記數(shù)器;有五個(gè)中斷源的中斷限制系統(tǒng);一個(gè)全雙工UART的串行I/O口;片內(nèi)振蕩器和時(shí)鐘產(chǎn)生電路,但石英晶體和微調(diào)電容須要外接。最高允許振蕩頻率是12MHZ。以上各個(gè)局部通過內(nèi)部總線相連接。2.STC89C52單片機(jī)時(shí)序STC89C52單片機(jī)的一個(gè)執(zhí)器周期由6個(gè)狀態(tài)(s1—s6)組成,每個(gè)狀態(tài)又持續(xù)2個(gè)震蕩周期,分為P1和P2兩個(gè)節(jié)拍。這樣,一個(gè)機(jī)器周期由12個(gè)振蕩周期組成。假設(shè)接受12MHz的晶體振蕩器,那么每個(gè)機(jī)器周期為1us,每個(gè)狀態(tài)周期為1/6us;在一數(shù)狀況下,算術(shù)和邏輯操作發(fā)生在N期間,而內(nèi)部存放器到存放器的傳輸發(fā)生在P2期間。而對(duì)于單周期指令,當(dāng)指令操作碼讀人指令存放器時(shí),從S1P2起先執(zhí)行指令。假設(shè)是雙字節(jié)指令,就在同一機(jī)器周期的s4讀人其次字節(jié)。假設(shè)為單字節(jié)指令,那么在51期間仍進(jìn)展讀,但所讀入的字節(jié)操作碼那么會(huì)被忽視,并且且程序計(jì)數(shù)據(jù)也不加1。在加完畢時(shí)完成指令操作。多數(shù)STC89C52指令周期為1—2個(gè)機(jī)器周期,只有乘法和除法指令須要兩個(gè)以上機(jī)器周期的指令,它們須要4個(gè)機(jī)器周期。對(duì)于雙字節(jié)單機(jī)器指令,通常在一個(gè)機(jī)器周期內(nèi)從程序存儲(chǔ)器中讀人兩個(gè)字節(jié),但是Movx指令例外,Movx指令是訪問外部數(shù)據(jù)存儲(chǔ)器單字節(jié)雙機(jī)器周期指令,在執(zhí)行Movx指令期間,外部數(shù)據(jù)存儲(chǔ)器被訪問并且被選通時(shí)跳過兩次取指操作。3.STC89C52單片機(jī)引腳介紹STC89C52單片機(jī)40個(gè)引腳中有2個(gè)專用于主電源引腳,2個(gè)外接晶振的引腳,4個(gè)限制或與其它電源復(fù)用的引腳,以及32條輸入輸出I/O引腳。下面按引腳功能分為4個(gè)局部表達(dá)個(gè)引腳的功能?!?〕電源引腳Vcc和VssVcc〔40腳〕:接+5V電源正端;Vss〔20腳〕:接+5V電源正端。〔2〕外接晶振引腳XTAL1和XTAL2XTAL1〔19腳〕:接外部石英晶體的一端。在單片機(jī)內(nèi)部,它是一個(gè)反相放大器的輸入端,這個(gè)放大器構(gòu)成接受外部時(shí)鐘時(shí),對(duì)于HMOS單片機(jī),該引腳接地;對(duì)于CHOMS單片機(jī),該引腳作為外部振蕩信號(hào)的輸入端。XTAL2〔18腳〕:接外部晶體的另一端。在單片機(jī)內(nèi)部,接至片內(nèi)振蕩器的反相放大器的輸出端。當(dāng)接受外部時(shí)鐘時(shí),對(duì)于HMOS單片機(jī),該引腳作為外部振蕩信號(hào)的輸入端。對(duì)于CHMOS芯片,該引腳懸空不接?!?〕限制信號(hào)或與其它電源復(fù)用引腳限制信號(hào)或與其它電源復(fù)用引腳有RST/VPD、ALE/P、PSEN和EA/VPP等4種形式。〔A〕.RST/VPD〔9腳〕:RST即為RESET,VPD為備用電源,所以該引腳為單片機(jī)的上電復(fù)位或掉電愛惜端。當(dāng)單片機(jī)振蕩器工作時(shí),該引腳上出現(xiàn)持續(xù)兩個(gè)機(jī)器周期的高電平,就可實(shí)現(xiàn)復(fù)位操作,使單片機(jī)復(fù)位到初始狀態(tài)。當(dāng)VCC發(fā)生故障,降低到低電平規(guī)定值或掉電時(shí),該引腳可接上備用電源VPD〔+5V〕為內(nèi)部RAM供電,以保證RAM中的數(shù)據(jù)不丟失?!睟〕.ALE/P〔30腳〕:當(dāng)訪問外部存儲(chǔ)器時(shí),ALE〔允許地址鎖存信號(hào)〕以每機(jī)器周期兩次的信號(hào)輸出,用于鎖存出此時(shí)此刻P0口的低〔C〕.PSEN(29腳):片外程序存儲(chǔ)器讀選通輸出端,低電平有效。當(dāng)從外部程序存儲(chǔ)器讀取指令或常數(shù)期間,每個(gè)機(jī)器周期PESN兩次有效,以通過數(shù)據(jù)總線口讀回指令或常數(shù)。當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器期間,PESN信號(hào)將不出現(xiàn)?!睤〕.EA/Vpp〔31腳〕:EA為訪問外部程序儲(chǔ)器限制信號(hào),低電平有效。當(dāng)EA端保持高電平常,單片機(jī)訪問片內(nèi)程序存儲(chǔ)器4KB〔MS—52子系列為8KB〕。假設(shè)超出該范圍時(shí),自動(dòng)轉(zhuǎn)去執(zhí)行外部程序存儲(chǔ)器的程序。當(dāng)EA端保持低電平常,無論片內(nèi)有無程序存儲(chǔ)器,均只訪問外部程序存儲(chǔ)器。對(duì)于片內(nèi)含有EPROM的單片機(jī),在EPROM編程期間,該引腳用于接21V的編程電源Vpp?!?〕輸入/輸出〔I/O〕引腳P0口、P1口、P2口及P3口(A).P0口〔39腳~22腳〕:P0.0~P0.7統(tǒng)稱為P0口。當(dāng)不接外部存儲(chǔ)器與不擴(kuò)展I/O接口時(shí),它可作為準(zhǔn)雙向8位輸入/輸出接口。當(dāng)接有外部程序存儲(chǔ)器或擴(kuò)展I/O口時(shí),P0口為地址/數(shù)據(jù)分時(shí)復(fù)用口。它分時(shí)供應(yīng)8位雙向數(shù)據(jù)總線。對(duì)于片內(nèi)含有EPROM的單片機(jī),當(dāng)EPROM編程時(shí),從P0口輸入指令字節(jié),而當(dāng)檢驗(yàn)程序時(shí),那么輸出指令字節(jié)。(B).P1口〔1腳~8腳〕:P1.0~P1.7統(tǒng)稱為P1口,可作為準(zhǔn)雙向I/O接口運(yùn)用。對(duì)于MCS—52子系列單片機(jī),P1.0和P1.1還有第2功能:P1.0口用作定時(shí)器/計(jì)數(shù)器2的計(jì)數(shù)脈沖輸入端T2;P1.1用作定時(shí)器/計(jì)數(shù)器2的外部限制端T2EX。對(duì)于EPROM編程和進(jìn)展程序校驗(yàn)時(shí),P0口接收輸入的低8位地址。(C).P2口〔21腳~28腳〕:P2.0~P2.7統(tǒng)稱為P2口,一般可作為準(zhǔn)雙向I/O接口。當(dāng)接有外部程序存儲(chǔ)器或擴(kuò)展I/O接口且尋址范圍超過256個(gè)字節(jié)時(shí),P2口用于高8位地址總線送出高8位地址。對(duì)于EPROM編程和進(jìn)展程序校驗(yàn)時(shí),P2口接收輸入的8位地址。(D).P3口〔10腳~17腳〕:P3.0~P3.7統(tǒng)稱為P3口。它為雙功能口,既可以作為一般的準(zhǔn)雙向I/O接口,也可以將每1位用于第2功能,而且P3口的每一條引腳均可獨(dú)立定義為第1功能的輸入輸出或第2功能。P3口的第2功能見下表表1單片機(jī)P3.0管腳含義引腳第2功能P3.0RXD〔串行口輸入端0〕P3.1TXD〔串行口輸出端〕P3.2INT0〔部中斷0請(qǐng)求輸入端,低電平有效〕P3.3INT1〔中斷1請(qǐng)求輸入端,低電平有效〕P3.4T0〔時(shí)器/計(jì)數(shù)器0計(jì)數(shù)脈沖端〕P3.5T1〔時(shí)器/計(jì)數(shù)器1數(shù)脈沖端〕P3.6WR〔部數(shù)據(jù)存儲(chǔ)器寫選通信號(hào)輸出端,低電平有效〕P3.7RD〔部數(shù)據(jù)存儲(chǔ)器讀選通信號(hào)輸出端,低電平有效〕綜上所述,MCS—51系列單片機(jī)的引腳作用可歸納為以下兩點(diǎn):1).單片機(jī)功能多,引腳數(shù)少,因而許多引腳具有第2功能;2).單片機(jī)對(duì)外呈3總線形式,由P2、P0口組成16位地址總線;由P0口分時(shí)復(fù)用作為數(shù)據(jù)總線。(四)溫度傳感器電路運(yùn)用一線制數(shù)字溫度傳感器DS18B20作為本設(shè)計(jì)的溫度傳感器。傳感器輸出信號(hào)進(jìn)4.7K的上拉電阻可以干脆接到單片機(jī)的P1.0引腳上。DS18B20溫度傳感器是美國達(dá)拉斯(DALLAS)半導(dǎo)體公司推出應(yīng)用單總線技術(shù)的數(shù)字溫度傳感器。該器件將半導(dǎo)體溫敏器件、A/D轉(zhuǎn)換器和存儲(chǔ)器等做在一個(gè)很小的集成電路芯片上。本設(shè)計(jì)中溫度傳感器之所以選擇單線數(shù)字器件DS18B20,是在經(jīng)過多方面比擬和考慮后確定的,主要有以下幾方面的緣由:〔1〕系統(tǒng)的特性:測溫范圍為-55℃~+125℃,測溫精度為士0.5℃;溫度轉(zhuǎn)換精度9~12位可變,能夠干脆將溫度轉(zhuǎn)換值以16位二進(jìn)制數(shù)碼的方式串行輸出;12位精度轉(zhuǎn)換的最大時(shí)間為750ms;可以通過數(shù)據(jù)線供電,擁有超低功耗工作方式。〔2〕系統(tǒng)本錢:由于計(jì)算機(jī)技術(shù)和微電子技術(shù)的開展,新型大規(guī)模集成電路功能越來越強(qiáng)大,體積越來越小,而價(jià)格也越來越低。一支DS18B20的體積與平凡三極管相差無幾,價(jià)位或許只有十元人民幣左右?!?〕系統(tǒng)困難度:因?yàn)镈S18B20是單總線器件,微處理器與其接口時(shí)僅需占用1個(gè)I/O端口且一條總線上可以掛接幾十個(gè)DS18B20,測溫時(shí)無需任何外部元件,因此,與模擬傳感器相比,可以大大削減接線的數(shù)量,降低系統(tǒng)的困難度,削減工程的施工量?!?〕系統(tǒng)的調(diào)試和維護(hù):由于引線削減,從而使系統(tǒng)接口大為簡化,給系統(tǒng)的調(diào)試帶來便利。而且DS18B20是全數(shù)字元器件,故障率很低,抗干擾性也強(qiáng),所以,也削減了系統(tǒng)的日常維護(hù)工作。DS18B20溫度傳感器只有三根外引線:單線數(shù)據(jù)傳輸總線端口DQ,外供電源線VDD,共用地線GND。DS18B20有兩種供電方式:一種為數(shù)據(jù)線供電方式,此時(shí)VDD接地,它是通過內(nèi)部電容在空閑時(shí)從數(shù)據(jù)線獲得能量,來完成溫度轉(zhuǎn)換,相應(yīng)的完成溫度轉(zhuǎn)換的時(shí)間較長。這種狀況下,用單片機(jī)的一個(gè)I/O口來完成對(duì)DS18B20總線的上拉。另一種是外部供電方式(VDD接+5V),相應(yīng)的完成溫度測量的時(shí)間較短。在本設(shè)計(jì)中接受外部供電方式實(shí)現(xiàn)DS18B20傳感器與單片機(jī)的連接,其接口電路如圖4所示。圖4溫度傳感器接口(五)系統(tǒng)電源電路的設(shè)計(jì)本系統(tǒng)接受電源穩(wěn)壓芯片是LM2596,該開關(guān)電壓調(diào)整器是降壓型電源管理單片集成電路,能夠輸出3A的驅(qū)動(dòng)電流,輸入電壓是+5v,輸入電壓是+24v,也具有很好的線性和負(fù)載調(diào)整特性。該器件內(nèi)部集成頻率補(bǔ)償和固定頻率發(fā)生器,開關(guān)頻率為150KHz,與低頻開關(guān)調(diào)整器相比擬,可以運(yùn)用更小規(guī)格的濾波元件。該器件還有其他特點(diǎn),比方說在特定的輸入電壓和輸出負(fù)載的條件下,輸出電壓的誤差可以保證在±4%的范圍內(nèi),振蕩頻率誤差在±15%的范圍內(nèi);可以用僅80μA的待機(jī)電流,實(shí)現(xiàn)外部斷電;具有自我愛惜電路〔一個(gè)兩級(jí)降頻限流愛惜和一個(gè)在異樣狀況下斷電的過溫完全愛惜電路〕等等。該溫度限制系統(tǒng)中,其電源電路設(shè)計(jì)如下列圖10所示。圖5系統(tǒng)電源模塊(六)LCD顯示電路本設(shè)計(jì)的溫度限制系統(tǒng)是接受液晶屏128*64作為顯示模塊,其接口原理圖如下列圖6所示:圖6液晶顯示接口電路(七)串口通訊電路本設(shè)計(jì)設(shè)計(jì)的通訊接受的是常見的串口通訊,協(xié)議轉(zhuǎn)換芯片是接受MAX232A,其接口原理圖如下列圖7所示:圖6串口通訊接口電路(八)按鍵接口電路本設(shè)計(jì)設(shè)計(jì)接受的鍵盤模塊,其接口原理圖如下列圖8所示:圖8鍵盤模塊電路(九)DS1302時(shí)鐘電路本設(shè)計(jì)設(shè)計(jì)的時(shí)鐘是接受時(shí)鐘芯片DS1302,其接口原理圖如下列圖9所示:圖9時(shí)鐘接口電路(十)存儲(chǔ)器接口電路本設(shè)計(jì)設(shè)計(jì)的存儲(chǔ)器接受的是AT24C256,其接口原理圖如下列圖十所示:圖10存儲(chǔ)器電路三、系統(tǒng)軟件設(shè)計(jì)系統(tǒng)的軟件主要是接受C語言,從而對(duì)單片機(jī)進(jìn)展變成實(shí)現(xiàn)各項(xiàng)功能。主程序?qū)δK進(jìn)展初始化,然后調(diào)用讀溫度、處理溫度、顯示、鍵盤等模塊。運(yùn)用循環(huán)查詢方式顯示和限制溫度,主程序的主要負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20的測量的當(dāng)前溫度值并負(fù)責(zé)調(diào)用各子程序,其程序流程如圖10系統(tǒng)程序流程圖。起先初始化起先初始化啟動(dòng)啟動(dòng)DB18B20讀溫度計(jì)算溫度LCD顯示圖10系統(tǒng)程序流程圖(一)計(jì)算溫度子程序讀出溫度子程序的主要功能包括初始化,判定DS18B20是否存在,假設(shè)存在那么進(jìn)展一系列的讀操,作假設(shè)不存在那么返回。其程序流程圖如圖11所示。圖11讀溫度流程圖(二)按鍵處理子程序按鍵處理子程序主要是負(fù)責(zé)參數(shù)的設(shè)置,主程序每循環(huán)一次都要對(duì)按鍵進(jìn)展掃描,判定是否有輸入鍵按下那么進(jìn)展一系列的按鍵輸入操作。其程序流程框圖如圖12所示。圖12溫度轉(zhuǎn)換流程圖(三)計(jì)算溫度子程序計(jì)算溫度子程序?qū)AM中讀取值進(jìn)展BCD碼的轉(zhuǎn)換運(yùn)算,并進(jìn)展溫度值正負(fù)的判定,其程序流程圖如圖13所示。起先溫度零下?溫度值取補(bǔ)碼置“—”標(biāo)記計(jì)算小數(shù)位溫度BCD值計(jì)算整數(shù)位溫度BCD值完畢置“+”標(biāo)記NY圖13計(jì)算溫度子程序(四)顯示數(shù)據(jù)刷新子程序顯示數(shù)據(jù)刷新子程序主要是對(duì)顯示緩沖器中的顯示數(shù)據(jù)進(jìn)展刷新操作,當(dāng)最高顯示位為0時(shí)將符號(hào)顯示位移入下一位。程序流程圖如圖14。溫度數(shù)據(jù)移入顯示存放器溫度數(shù)據(jù)移入顯示存放器十位數(shù)0?百位數(shù)0?十位數(shù)顯示符號(hào)百位數(shù)不顯示百位數(shù)顯示數(shù)據(jù)〔不顯示符號(hào)〕完畢NNYY圖14數(shù)據(jù)刷新子程序四、完畢語通過此次畢業(yè)論文的設(shè)計(jì)設(shè)計(jì),我們學(xué)會(huì)了怎樣把所學(xué)的書本學(xué)問應(yīng)用于實(shí)踐中去,并學(xué)會(huì)了如何去思索整個(gè)限制系統(tǒng)的軟硬件設(shè)計(jì)。實(shí)踐過程中我們遇到了一些困難,但在解決問題的過程中,我們學(xué)會(huì)了團(tuán)隊(duì)合作精神和怎樣發(fā)覺問題、分析問題,進(jìn)而解決問題。此次設(shè)計(jì)設(shè)計(jì)不僅增加了我們學(xué)習(xí)專業(yè)課的愛好,而且給了我們志氣和信念,更重要的是它為我們以后的學(xué)習(xí)指明白方向。參考文獻(xiàn)[1]李廣弟,朱月秀,王秀山.《單片機(jī)根底》北京航空航天高校出版社,2001(07).[2]蔡美琴,張為民等.《MCS-51系列單片機(jī)系統(tǒng)及其應(yīng)用》高等教化出版社,2004(06).[3]張毅剛,等.MCS-51單片機(jī)應(yīng)用設(shè)計(jì)[M].哈爾濱工業(yè)高校出版社,1997.[4]劉瑞星,胡健等.《ProtelDXP管用教程》機(jī)械工業(yè)出版社,2003(04).[5]于海生.《計(jì)算機(jī)限制技術(shù)》機(jī)械工業(yè)出版社2007(05).[6]譚浩強(qiáng).《C程序設(shè)計(jì)》清華高校出版社.[7]康華光.《電子技術(shù)根底模擬局部》高等教化出版社1998(08).[8]余錫存.《單片機(jī)原理與接口技術(shù)》西安電子科技高校出版社,2003.致謝本論文是在我的指導(dǎo)老師密切關(guān)切和悉心指導(dǎo)下完成的。老師在設(shè)計(jì)開題期間和論文寫作的過程中賜予了我許多指導(dǎo),導(dǎo)師總是以謹(jǐn)慎負(fù)責(zé)、一絲不茍的工作看法閱讀并修改文章中缺乏的地方,他優(yōu)良的作風(fēng)和嚴(yán)謹(jǐn)治學(xué)的看法深深影響著我,至此,向恩師致以最真摯的感謝和最崇高的敬意!同時(shí)我要感謝我的同學(xué),特別是我的室友們,正是他們?cè)谶@幾年里陪我一起成長,一起學(xué)習(xí),才讓我有了今日的成果。他們?cè)谄匠5膶W(xué)習(xí)和生活中他們賜予了我無私的關(guān)切和幫助,在此表示我最真誠的謝意。附件1:系統(tǒng)原理圖附件2:系統(tǒng)相關(guān)程序一、DS18B20底層驅(qū)動(dòng)程序//延時(shí)Nms//DS1820引腳定義sbitTMDAT=P1^0;voidDS1820_DelayCount(unsignedcharCoun){dataunsignedcharCount;Count=Coun;while(Count>0)Count--;Count=Coun;while(Count>0)Count--;}//復(fù)位DS18B20voidDS1820_Reset(void){TMDAT=0;DS1820_DelayCount(412);TMDAT=1;DS1820_DelayCount(16);}//等待DS18B20應(yīng)答unsignedcharDS1820_Answer(void){ dataunsignedinti; dataunsignedcharj;i=0xc000;while(TMDAT){ i--; if(i==0) return(aban_return);}i=0xffff; j=3;while(~TMDAT){ i--; if(i==0) if(j==0) return(aban_return); else { j--; i=0xffff; } }DS1820_DelayCount(16);return(done_return);}//等待DS18B20應(yīng)答//讀取位bitDS1820_Readbit(void){datainti=0;bitdat;TMDAT=0;i++;i++;i++;i++;TMDAT=1;i++;i++;i++;i++;i++;i++;i++;i++;dat=TMDAT;//DS1820_DelayCount(8);DS1820_DelayCount(32);returndat;}//讀取字節(jié)unsignedcharDS1820_Readbyte(void){dataunsignedchari,j,dat=0;for(i=1;i<=8;i++){j=DS1820_Readbit();dat=(j<<7)|(dat>>1);}returndat;}//寫一個(gè)字節(jié)voidDS1820_Writebyte(unsignedchardat){datasignedchari=0;dataunsignedcharj;bittestb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb){TMDAT=0;i++;i++;i++;i++;i++;i++;i++;i++;TMDAT=1;//DS1820_DelayCount(8);DS1820_DelayCount(32);}else{TMDAT=0;//DS1820_DelayCount(8);DS1820_DelayCount(32);TMDAT=1;i++;i++;i++;i++;i++;i++;i++;i++;}}}//讀操作起先unsignedcharDS1820_StartTem(void){EA=0;DS1820_Reset();if(DS1820_Answer()==aban_return){EA=Ea;return(aban_return);}//DS1820_Delayms(1);DS1820_Delayms(4);DS1820_Writebyte(0xcc);//DS1820_Writebyte(0x55);//for(i=0;i<8;i++)//DS1820_Writebyte(DS1820_temp[i]);DS1820_Writebyte(0x44);EA=Ea;return(done_return);}//讀全部傳感器intDS1820_ReadTem(void){dataunsignedchara,b;datainty3;datafloaty4;dataunsignedchari;EA=0;DS1820_Reset();if(DS1820_Answer()==aban_return){ EA=Ea;return(0xffff);}DS1820_Delayms(4);DS1820_Writebyte(0xcc);//跳過匹配傳感器//DS1820_Writebyte(0x55);//匹配傳感器//for(i=0;i<8;i++)//DS1820_Writebyte(run_inf.system_index.DS1820_temp[i]);DS1820_Writebyte(0xbe);//讀取溫度for(i=0;i<9;i++){ run_inf.system_index.DS1820_temp[i]=DS1820_Readbyte(); } if(CRC(9)!=0) { EA=1;return(0xffff); } //計(jì)算CRCa=run_inf.system_index.DS1820_temp[0];b=run_inf.system_index.DS1820_temp[1];DS1820_Reset();y3=(b<<8)|a;y4=y3;y4=(y4*25)/4;EA=1;return((int)(y4));}二、DS1302時(shí)鐘底層驅(qū)動(dòng)程序//DS1302引腳定義sbitrtc_sc=P3^4;sbitrtc_io=P3^5;sbitrst_1302=P3^6;bdataunsignedchartemp;sbittemp_0=temp^0;sbittemp_7=temp^7;/**************************************************************DS1302驅(qū)動(dòng)程序起先**************************************************************///功能:往DS1302寫入1Byte數(shù)據(jù)voidv_RTInputByte(unsignedcharucDa){unsignedchari;temp=ucDa;for(i=8;i>0;i--){rtc_io=temp_0;/*相當(dāng)于匯編中的RRC*/rtc_sc=1;rtc_sc=0;temp=temp>>1;}}//功能:從DS1302讀取1Byte數(shù)據(jù)unsignedcharuc_RTOutputByte(void){unsignedchari;rtc_io=1;for(i=8;i>0;i--){temp=temp>>1;/*相當(dāng)于匯編中的RRC*/temp_7=rtc_io;rtc_sc=1;rtc_sc=0;}return(temp);}//功能:往DS1302寫入數(shù)據(jù)voidwrite1302(unsignedcharucAddr,unsignedcharucDa){bitea;ea=EA;EA=0;rtc_rs_port&=(~rtc_rs_bit);rtc_sc=0;rtc_rs_port|=rtc_rs_bit;v_RTInputByte(ucAddr);/*地址,叮囑*/v_RTInputByte(ucDa);/*寫1Byte數(shù)據(jù)*/rtc_sc=1;rtc_rs_port&=(~rtc_rs_bit);EA=ea;}//功能:讀取DS1302某地址的數(shù)據(jù)unsignedcharread1302(unsignedcharucAddr){unsignedcharucDa;bitea;ea=EA;EA=0;rtc_rs_port&=(~rtc_rs_bit);rtc_sc=0;rtc_rs_port|=rtc_rs_bit;v_RTInputByte(ucAddr);/*地址,叮囑*/ucDa=uc_RTOutputByte();/*讀1Byte數(shù)據(jù)*/rtc_sc=1;rtc_rs_port&=(~rtc_rs_bit);EA=ea;return(ucDa);}//功能:設(shè)置初始時(shí)間voidSet1302(pTime_Stime_temp){unsignedchari=0x80;write1302(0x8e,0x00);/*限制叮囑,WP=0,寫操作*/write1302(i,time_temp->sec);i+=2;write1302(i,time_temp->min);i+=2;write1302(i,time_temp->hou);i+=2;write1302(i,time_temp->day);i+=2;write1302(i,time_temp->mon);i+=2;write1302(i,0x02);i+=2;write1302(i,time_temp->yea);i+=2;write1302(0x8e,0x80);/*限制叮囑,WP=1,寫愛惜*/}//功能:讀取DS1302當(dāng)前時(shí)間voidget1302(void){unsignedchari,time_bcd_temp[6];unsignedcharucAddr=0x81;for(i=0;i<7;i++){time_bcd_temp[i]=read1302(ucAddr);/*格式為:秒分時(shí)日月星期年*/ucAddr+=2;}sec=time_bcd_temp[0];min=time_bcd_temp[1];hou=time_bcd_temp[2];day=time_bcd_temp[3];mon=time_bcd_temp[4];yea=time_bcd_temp[6];}//連續(xù)6字節(jié)讀出程序voidds1302_read(unsignedchar*ptr,unsignedcharaddr){ unsignedchari; addr=addr*2+0x0c1; for(i=0;i<6;i++) { *(ptr+i)=read1302(addr); addr+=2; }}//連續(xù)6字節(jié)寫入程序voidds1302_write(unsignedchar*ptr,unsignedcharaddr){ unsignedchari; addr=addr*2+0x0c0; write1302(0x8e,0x00);//寫愛惜置低〔關(guān)閉〕 for(i=0;i<6;i++) { write1302(addr,*(ptr+i)); addr+=2; } write1302(0x8e,0x80);//寫愛惜置高(翻開)} voidStart1302(void){unsignedchartemp;bitea;ea=EA;EA=0;temp=read1302(0x81);temp&=0x7f;write1302(0x8e,0x00);/*限制叮囑,WP=0,寫操作*/write1302(0x80,temp);write1302(0x90,0);write1302(0x8e,0x80);/*限制叮囑,WP=1,寫愛惜*/EA=ea;}//DS1302驅(qū)動(dòng)程序完畢三、數(shù)據(jù)存儲(chǔ)底層驅(qū)動(dòng)程序//ATC256引腳定義sbitepr_sd=P3^3;sbitepr_sc=P3^2;bdataunsignedchartemp1;sbittemp1_0=temp1^0;sbittemp1_7=temp1^7;//存儲(chǔ)器驅(qū)動(dòng)程序起先voidnoack(void){epr_sd=1; epr_sc=1;epr_sc=1;epr_sc=1;epr_sc=0;}voidask(){unsignedchari=0xff;epr_sd=1;epr_sc=1;epr_sc=1;epr_sc=1;do{ i--;if(epr_sd==0){ epr_sc=0; i=0;}}while(i!=0);epr_sd=1;epr_sd=1;epr_sd=1;}voidstop(){epr_sd=0;epr_sd=0;epr_sd=0;epr_sc=1;epr_sc=1;epr_sc=1;epr_sd=1;epr_sd=1;epr_sd=1;epr_sd=1;}///24c256startvoidstart(){ epr_sc=1; epr_sd=1; epr_sd=1;epr_sd=0;epr_sd=0;epr_sc=0;}voidwrby(unsignedcharx){unsignedchari;epr_sc=0; temp1=x; for(i=0;i<8;i++)//從高位起先傳送數(shù)據(jù) { epr_sd=temp1_7; temp1=temp1<<1;//左移一位 epr_sc=1; epr_sc=1; epr_sc=1; epr_sc=1; epr_sc=0; }}//////////////24c256rdbyunsignedcharrdby()//從高位起先讀出數(shù)據(jù){ unsignedchari; epr_sd=1; epr_sd=1; epr_sd=1; for(i=0;i<8;i++) { epr_sc=1; epr_sc=1; temp1=temp1<<1; temp1_0=epr_sd; epr_sc=0; epr_sc=0; epr_sc=0; }return(temp1);}///////////////24c256waddrvoidwaddr(){ start();wrby(0xa0);ask();}///////////////24c256raddrunsignedcharraddr(){ start();wrby(0xa1);ask();temp1=rdby();noack();stop();return(temp1);}voidw16addr(unsignedintx){ union{ unsignedintint_type; unsignedcharchar_type[1]; }u_int_char; unsignedm,n; u_int__type=x;//將x的高位賦給m,低位賦給n m=u_int_char.char_type[0]; n=u_int_char.char_type[1];wrby(m);ask();wrby(n);ask();}/////////////////延時(shí)voidd5ms(){ unsignedchara,b;for(a=0;a<=15;a++){for(b=0;b<0x7f;b++){;}}}//24c256讀出一字節(jié)unsignedcharepr_read(unsignedintx){ bitea; ea=EA;EA=0;//關(guān)中斷 EPR_WEN; d5ms(); waddr();w16addr(x);temp1=raddr();EA=ea;//開中斷return(temp1);}//24c256寫入一字節(jié)voidepr_write(unsignedintf,unsignedcharx){ bitea; ea=EA;EA=0;//關(guān)中斷 d5ms(); waddr();w16addr(f);wrby(x);ask();stop();d5ms(); EA=ea;//開中斷}//存儲(chǔ)器驅(qū)動(dòng)程序完畢匯編局部:TEMPERATURE_LDATA31H;DS18B20低8位BufferTEMPERATURE_HDATA30H;DS18B20高8位Buffer
TEMPERATURE_HCDATA32H;計(jì)算后的百位和十位的BCD碼存放;BUFFER
TEMPERATURE_LCDATA33H;計(jì)算后的個(gè)位和小數(shù)位的BCD碼存放TEMPERATURE_ZHDATA34H;計(jì)算后十位和個(gè)位HEX碼的存放BUFFERDIS_BUF_XDATA35H;數(shù)碼管小數(shù)位Buffer
DIS_BUF_GDATA36H;數(shù)碼管個(gè)位Buffer
DIS_BUF_SDATA37H;數(shù)碼管十位Buffer
DIS_BUF_BDATA38H;數(shù)碼管百位Buffer
KEY_BUF_GDATA39H;鍵盤輸入后,的個(gè)位值
KEY_BUF_SDATA49H;鍵盤輸入后,的十位值
KEY_BUF_BDATA41H;鍵盤輸入后,的百位值
K_UPEQUP1.1;上調(diào)按鈕
K_DOWNEQUP1.2;下調(diào)按鈕
K_ENTEREQUP1.0;輸入數(shù)據(jù)確認(rèn)按鈕
P_DS18B20EQUP3.0;讀取DS18B20的輸入端口
P_SWITCHEQUP3.1;可控硅限制
FLAGEQU20H.0;標(biāo)記位,確定是否存在DS18B20
ENTER_FLAGEQU20H.1;鍵盤輸入的標(biāo)記位,ORG0000H
LJMPMAIN
ORG0100H
MAIN:MOVSP,#60H;初始化
MOVKEY_BUF_G,#00H;由于KEY_BUF是由用戶輸入的,所以先賦值初始化
MOVKEY_BUF_S,#00H
MOVKEY_BUF_B,#00H
NEXT:
LCALLREAD_TEMP;調(diào)用讀溫度子程序
JBFLAG,NORMAL;判定是否有DS18B20的存在
CALLERR;不存在時(shí)顯示錯(cuò)誤信息
AJMPNEXTNORMAL:LCALLDATA_DEA;處理從DS18B20得到的數(shù)據(jù)
LCALLSET_DIS_BUF;賦值給DIS_BUF_X,G,S,B
LCALLDISPLAY;調(diào)用數(shù)碼管顯示子程序
LCALLSCAN_KEY;掃描鍵盤
LCALLSWITCH;處理可控硅
AJMPNEXT
;程序名稱:ERR
;功能:程序出錯(cuò)處理,顯示四個(gè)8,即8888
;入口參數(shù):無
;出口參數(shù):DIS_BUF_X,DIS_BUF_G,DIS_BUF_S,DIS_BUF_B
ERR:MOVDIS_BUF_X,#08H;假設(shè)沒有找到DS18B20,那么就顯示錯(cuò)誤,錯(cuò)誤;顯示為888
MOVDIS_BUF_G,#08H
MOVDIS_BUF_S,#08H
MOVDIS_BUF_B,#08H
LCALLDISPLAY
RET;程序名稱:DATA_DEAL
;功能:處理采集后的的數(shù)據(jù);入口參數(shù):TEMPERATURE_L;出口參數(shù):DIS_BUF_G,DIS_BUF_S,DIS_BUF_DATA_DEAL:
MOVA,TEMPERATURE_H;判溫度是否零下
ANLA,#80H
JZTEMPC1;A為0,說明是正數(shù),假設(shè)是負(fù)數(shù),那么;對(duì)低8為進(jìn)展補(bǔ)碼處理CLRC
MOVA,TEMPERATURE_L;二進(jìn)制數(shù)求補(bǔ)〔雙字節(jié)〕
CPLA;取反加1
ADDA,#01H
MOVTEMPERATURE_L,A
MOVA,TEMPERATURE_H
CPLA
ADDCA,#00H
MOVTEMPERATURE_H,A;寫回TEMPERATURE_H
MOVTEMPERATURE_HC,#0BHSJMPTEMPC11TEMPC1:MOVTEMPERATURE_HC,#0AH
TEMPC11:MOVA,TEMPERATURE_HC
SWAPA
MOVTEMPERATURE_HC,A
MOVA,TEMPERATURE_L
ANLA,#0FH
MOVDPTR,#TEMPDOTTAB
MOVCA,@A+DPTR;查表
MOVTEMPERATURE_LC,A;TEMPERATURE_LCLOW=小數(shù)局部BCD
MOVDIS_BUF_X,A;小數(shù)位的BCD碼送入顯示buffer中
MOVA,TEMPERATURE_L;整數(shù)局部
ANLA,#0F0H;得到個(gè)位‘單個(gè)數(shù)值
SWAPA;SWAP后就得到個(gè)位真正的個(gè)位
MOVTEMPERATURE_L,A
MOVA,TEMPERATURE_H
ANLA,#0FH
SWAPA
ORLA,TEMPERATURE_L
MOVTEMPERATURE_ZH,A;組合后的值存入TEMPERATURE_ZH
LCALLHtoB;轉(zhuǎn)換HEx值成為BCD碼
MOVTEMPERATURE_L,AANLA,#0F0H
SWAPA
ORLA,TEMPERATURE_HC;TEMPERATURE_HCLOW位=十位數(shù)
MOVTEMPERATURE_HC,A
MOVA,TEMPERATURE_L
ANLA,#0FH
SWAPA
MOVR7,A
MOVA,TEMPERATURE_HC;TEMPERATURE_HCHI=百位數(shù)BCD
ANLA,#0FH
ORLA,R7
MOVTEMPERATURE_HC,A
TEMPC12:RET;小數(shù)局部碼表
TEMPDOTTAB:DB00H,01H,01H,02H,03H,03H,04H,04H,05H,06H,06H,07H,08H,08H,09H,09H
;0.0625->00H
;0.0625*2=0.125->01H
;0.0625*3=0.1875->01H
;0.0625*4=0.25->02H
;0.0625*5=0.3125->03H
;以此類推;程序名稱:HtoB
;功能:十六進(jìn)制轉(zhuǎn)BCD
;入口參數(shù):A
;出口參數(shù):R7
HtoB:MOVB,#064H;100
DIVAB;a/100
MOVR7,A;
MOVA,#0AH
XCHA,B
DIVAB
SWAPA
ORLA,B
RET
;程序名稱:INIT_TEMP
;功能:初始化DS18B20,確定DS18B20是否是存在的
;入口參數(shù):無
;出口參數(shù):FLAG
INIT_TEMP:
SETBP_DS18B20
NOP
CLRP_DS18B20;主機(jī)發(fā)出延時(shí)537微秒的復(fù)位低脈沖
MOVR0,#6BH
MOVR1,#04H
TSR1:DJNZR0,$
MOV40,#6BH
DJNZR1,TSR1
SETBP_DS18B20;然后拉高數(shù)據(jù)線,釋放總線進(jìn)入承受狀態(tài)
NOP
NOP
NOP
MOVR0,#32H
TSR2:JNBP_DS18B20,TSR3;等待DS18B20回應(yīng)
DJNZR0,TSR2
LJMPTSR4;延時(shí)
TSR3:SETBFLAG;置標(biāo)記位,表示DS1820存在
LJMPTSR5
TSR4:CLRFLAG;清標(biāo)記位,表示DS1820不存在
LJMPTSR7
TSR5:MOVR0,#06BH
TSR6:DJNZR0,TSR6;時(shí)序要求延時(shí)一段時(shí)間
TSR7:SETBP_DS18B20
RET
;程序名稱:READ_TEMP
;功能:讀取DS18B20的數(shù)據(jù)
;入口參數(shù):TEMPERATURE_L,TEMPERATURE_H
;出口參數(shù):無
READ_TEMP:
SETBP_DS18B20
LCALLINIT_TEMP;先復(fù)位DS18B20
JBFLAG,TSS2
RET;判定DS1820是否存在?假設(shè)DS18B20不存在那么返回
TSS2:MOVA,#0CCH;跳過ROM匹配
LCALLWRITE_18B20
MOVA,#44H;發(fā)出溫度轉(zhuǎn)換叮囑
LCALLWRITE_18B20
LCALLDISPLAY;等待AD轉(zhuǎn)換完畢,12位的話750微秒
LCALLINIT_TEMP;準(zhǔn)備讀溫度前先復(fù)位
MOVA,#0CCH;跳過ROM匹配
LCALLWRITE_18B20
MOVA,#0BEH;發(fā)出讀溫度叮囑
LCALLWRITE_18B20
LCALLREAD_18B20;將讀出的溫度數(shù)據(jù)保存到35H/36H
RET
程序名稱:WRITE_18B20
;功能:將A保存的數(shù)值寫入DS1820中,;入口參數(shù):A存放器
;出口參數(shù):無WRITE_18B20:
MOVR2,#8;一共8位數(shù)據(jù),串行通信
CLRCWR1:CLRP_DS18B20
MOVR3,#07
DJNZR3,$
RRCA;循環(huán)右移
MOVP_DS18B20,C
MOVR3,#3CH
DJNZR3,$;23*2=46微妙
SETBP_DS18B20
NOP
DJNZR2,WR1;A里面一共是8位,所以要送8次
SETBP_DS18B20;釋放總線
RET;程序名稱:READ_18B20;功能:讀取18B20中的數(shù)據(jù),由于是串行通信,每次讀取一個(gè),循環(huán)8次讀取;入口參數(shù):TEMPRATURE_L;出口參數(shù):無READ_18B20:
MOVR4,#4;將溫度高位和低位從DS18B20中讀出
MOVR1,#TEMPERATURE_LRE00:MOVR2,#8;數(shù)據(jù)一共有8位RE01:CLRC
SETBP_DS18B20
NOP
NOP
CLRP_DS18B20
NOP
NOP
NOP
SETBP_DS18B20
MOVR3,#09RE10:DJNZR3,RE10
MOVC,P_DS18B20
MOVR3,#3CHRE20:DJNZR3,RE20
RRCA
DJNZR2,RE01
MOV@R1,A
DECR1
DJNZR4,RE00
RET;程序名稱:SCAN_KEY;功能:掃描鍵盤;入口參數(shù):DIS_BUF_G,DIS_BUF_S,DIS_BUF_B;出口參數(shù):KEY_BUF_G,KEY_BUF_S,kEY_BUF_BSCAN_KEY:
JBK_ENTER,QUIT;假設(shè)又Enter鍵入,那么起先鍵盤輸入
LCALLK_DELAY
JBK_ENTER,QUIT
CLRENTER_FLAG;每次進(jìn)來都賦值輸入標(biāo)記,設(shè)置為0
MOVKEY_BUF_G,DIS_BUF_G;將當(dāng)前的溫度賦值給KEY_BUFMOVKEY_BUF_S,DIS_BUF_S
MOVKEY_BUF_B,DIS_BUF_BK_LOOP:
JBENTER_FLAG,QUIT;假設(shè)輸入完成,ENTER_FLAG那么為1,退出鍵盤程;序
JBK_ENTER,KUPCALLPRO_ENTERKUP:JBK_UP,KDOWN
CALLPRO_UPKDOWN:JBK_DOWN,LOOPA
CALLPRO_DOWNLOOPA:LCALLDISPLAY
SJMPK_LOOPQUIT:RET;程序名稱:PRO_ENTER;功能:確認(rèn)鍵盤輸入和退出鍵盤輸入;入口參數(shù):ENTER_FLAG;出口參數(shù):ENTER_FLAGPRO_ENTER:
CALLK_DELAY
JBK_ENTER,K_LOOP;按鈕抖動(dòng)處理
SETBENTER_FLAG
CALLK_DELAY
RET;程序名稱:PRO_UP;功能:數(shù)值上調(diào)處理;入口參數(shù):KEY_BUF_G,KEY_BUF_S,KEY_BUF_B;出口參數(shù):DIS_BUF_G,DIS_BUF_S,DIS_BUF_BPRO_UP:
CALLK_DELAY
JBK_UP,K_LOOP;按鈕抖動(dòng)處理
INCKEY_BUF_G;個(gè)位增一
MOVA,KEY_BUF_G
CJNEA,#0AH,UPNEXT;個(gè)位增加到10,回0
MOVKEY_BUF_G,#00H
INCKEY_BUF_S;十位加一
MOVA,KEY_BUF_S
CJNEA,#0AH,UPNEXT;十位超過99,溢出了
MOVR0,#200ERROR1:LCALLERR;出錯(cuò),顯示8888
DJNZR
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 濟(jì)南2025年山東濟(jì)南市歷下區(qū)所屬事業(yè)單位招聘初級(jí)綜合類崗位36人筆試歷年參考題庫附帶答案詳解-1
- 黑龍江旅游職業(yè)技術(shù)學(xué)院《機(jī)車車輛運(yùn)用與維修》2023-2024學(xué)年第二學(xué)期期末試卷
- 天津石油職業(yè)技術(shù)學(xué)院《信號(hào)與系統(tǒng)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 陜西電子信息職業(yè)技術(shù)學(xué)院《生物化學(xué)雙語》2023-2024學(xué)年第二學(xué)期期末試卷
- 漳州理工職業(yè)學(xué)院《應(yīng)用開發(fā)》2023-2024學(xué)年第二學(xué)期期末試卷
- 瓊臺(tái)師范學(xué)院《普通化學(xué)(Ⅰ)(上)》2023-2024學(xué)年第二學(xué)期期末試卷
- 西南民族大學(xué)《公差與測量技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 湛江幼兒師范??茖W(xué)?!抖嗝襟w課件設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 明達(dá)職業(yè)技術(shù)學(xué)院《學(xué)術(shù)文化與科研能力》2023-2024學(xué)年第二學(xué)期期末試卷
- 長江藝術(shù)工程職業(yè)學(xué)院《中學(xué)思想政治教育教學(xué)研究方法》2023-2024學(xué)年第二學(xué)期期末試卷
- 員工薪酬確認(rèn)書三篇
- DZ∕T 0148-2014 水文水井地質(zhì)鉆探規(guī)程(正式版)
- 新能源汽車電氣技術(shù) 課件 項(xiàng)目一 新能源汽車電氣維修基礎(chǔ)認(rèn)知
- 人教版初中九年級(jí)下學(xué)期體育教案全集(附教學(xué)計(jì)劃)
- 2024年湘潭醫(yī)衛(wèi)職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案解析
- 2024年黑龍江職業(yè)學(xué)院單招職業(yè)技能測試題庫及答案解析
- 礦山井架設(shè)計(jì)規(guī)范
- 空天地一體化公路智能巡查技術(shù)應(yīng)用與實(shí)踐
- CJJ129-2009 城市快速路設(shè)計(jì)規(guī)程
- punctuation-英語標(biāo)點(diǎn)的使用
- 股權(quán)糾紛案例分析申訴報(bào)告
評(píng)論
0/150
提交評(píng)論