基于單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)_第1頁(yè)
基于單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)_第2頁(yè)
基于單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)_第3頁(yè)
基于單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)_第4頁(yè)
基于單片機(jī)溫度控制系統(tǒng)的設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

-.z摘要隨著微機(jī)測(cè)量和控制技術(shù)的迅速開(kāi)展與廣泛應(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),測(cè)溫電路、實(shí)時(shí)時(shí)鐘電路、LCD液晶顯示電路以及通訊模塊電路等。系統(tǒng)程序主要包括主程序,讀出溫度子程序,計(jì)算溫度子程序、按鍵處理程序、LCD顯示程序以及數(shù)據(jù)存儲(chǔ)程序等。關(guān)鍵詞:STC89C52單片機(jī);DS18B20;顯示電路AbstractAlongwiththeputermeasurementandcontroltechnologyoftherapiddevelopmentandwideapplication,basedonsinglechiptemperaturegatheringandcontrolsystemdevelopmentandapplicationgreatlyimprovetheproductionoftemperatureinlifelevelofcontrol.ThisdesignSTC89C52describesakindofmainlybyMCUcontrolunit,fortemperaturesensorDS18B20temperaturecontrolsystem.Thecontrolsystemcanreal-timestoragetemperaturedataandrecordrelatedtothecurrenttime.Systemdesignrelatedhardwarecircuitandrelatedapplications.STC89C52microcontrollerhardwarecircuitincludetemperaturedetectioncircuitsmallestsystem,andreal-timeclockcircuit,LCDdisplaycircuit,municationmodulecircuit,etc.Systemprogrammingmainlyincludemainprogram,readtemperaturesubroutine,thecalculationoftemperaturesubroutines,keyprocessingprocedures,LCDdisplayproceduresanddatastorageprocedures,etc.Keywords:STC89C52microcontroller;DS18B20;displaycircuit目錄第1章前言11.1研究背景11.2研究目的和意義11.3未來(lái)開(kāi)展1第2章系統(tǒng)的總體設(shè)計(jì)32.1系統(tǒng)設(shè)計(jì)框架32.2STC89C52單片機(jī)簡(jiǎn)介32.2.1STC89C52單片機(jī)時(shí)序32.2.2STC89C52單片機(jī)引腳介紹4第3章硬件系統(tǒng)設(shè)計(jì)73.1單片機(jī)最小電路系統(tǒng)73.2溫度傳感器電路73.2.1系統(tǒng)的特性73.2.2系統(tǒng)的本錢(qián)83.2.3系統(tǒng)的復(fù)雜度83.2.4信號(hào)輸入電路83.3系統(tǒng)電源電路設(shè)計(jì)83.4LCD顯示電路93.5串口通訊電路103.6按鍵接口電路113.7DS1302時(shí)鐘電路113.8存儲(chǔ)器接口電路12第4章系統(tǒng)的軟件設(shè)計(jì)134.1系統(tǒng)程序流程圖134.2計(jì)算溫度子程序134.3按鍵處理子程序144.4軟件設(shè)計(jì)的特點(diǎn)154.5顯示數(shù)據(jù)刷新子程序16第5章總結(jié)17參考文獻(xiàn)18致謝19附錄20-.z第1章前言1.1研究背景工業(yè)控制是計(jì)算機(jī)的一個(gè)重要應(yīng)用領(lǐng)域,計(jì)算機(jī)控制系統(tǒng)正是為了適應(yīng)這一領(lǐng)域的需要而開(kāi)展起來(lái)的一門(mén)專(zhuān)業(yè)技術(shù),它主要研究如何將計(jì)算機(jī)技術(shù)、通過(guò)信息技術(shù)和自動(dòng)控制理論應(yīng)用于工業(yè)生產(chǎn)過(guò)程,并設(shè)計(jì)出所需要的計(jì)算機(jī)控制系統(tǒng)。隨著微機(jī)測(cè)量和控制技術(shù)的迅速開(kāi)展與廣泛應(yīng)用,以單片機(jī)為核心的溫度采集與控制系統(tǒng)的研發(fā)與應(yīng)用在很大程度上提高了生產(chǎn)生活中對(duì)溫度的控制水平。本設(shè)計(jì)就是基于單片機(jī)STC89C52溫度控制系統(tǒng)的設(shè)計(jì),通過(guò)本次設(shè)計(jì),我更加的明確了單片機(jī)的廣泛用途和使用方法,以及其工作的原理。STC89C52單片機(jī)是單時(shí)鐘/機(jī)器周期〔1T〕的兼容8051內(nèi)核單片機(jī),STC89C52單片機(jī)常用于控制的芯片,在智能儀器儀表、工業(yè)檢測(cè)控制、機(jī)電一體化等方面取得了令人矚目的成果,是高速/低功耗的新一代8051單片機(jī),用其作為溫度控制系統(tǒng)的實(shí)例也很多。使用STC89C52單片機(jī)能夠?qū)崿F(xiàn)溫度全程的自動(dòng)控制,而且易于學(xué)習(xí),掌握,性?xún)r(jià)比高。使用STC89C52型單片機(jī)設(shè)計(jì)溫度控制系統(tǒng),可以及時(shí)、準(zhǔn)確的反映室內(nèi)的溫度的變化。完成諸如升溫到特定溫度、降溫到特定溫度、在溫度上下限*圍內(nèi)保持恒溫等多種控制方式。1.2研究目的和意義隨著社會(huì)的開(kāi)展,溫度的測(cè)量及控制變得越來(lái)越重要。本設(shè)計(jì)采用單片機(jī)STC89C52設(shè)計(jì)了溫度實(shí)時(shí)測(cè)量及控制系統(tǒng)。單片機(jī)STC89C52能夠根據(jù)溫度傳感器DS18B20所采集的溫度在液晶屏上實(shí)時(shí)顯示,通過(guò)控制從而把溫度控制在設(shè)定的*圍之內(nèi)。所有溫度數(shù)據(jù)均通過(guò)液晶顯示器LDC顯示出來(lái)。系統(tǒng)可以根據(jù)時(shí)鐘存儲(chǔ)相關(guān)的數(shù)據(jù)。通過(guò)該設(shè)計(jì)的學(xué)習(xí)使我對(duì)計(jì)算機(jī)控制系統(tǒng)有一個(gè)全面的了解、掌握常規(guī)控制算法的使用方法、掌握簡(jiǎn)單微型計(jì)算機(jī)應(yīng)用系統(tǒng)軟硬的設(shè)計(jì)方法,進(jìn)一步鍛煉微型計(jì)算機(jī)應(yīng)用方面的實(shí)際工作能力。1.3未來(lái)開(kāi)展90年代后期至今單片機(jī)的開(kāi)展可以說(shuō)是進(jìn)入了一個(gè)新的階段,單片機(jī)正朝著高性能和多品種方向開(kāi)展,開(kāi)展趨勢(shì)將是進(jìn)一步向著CMOS化、低功耗、小體積、大容量、高性能、低價(jià)格和外圍電路內(nèi)裝化等幾個(gè)方面開(kāi)展。其開(kāi)展趨勢(shì)主要有以下幾個(gè)方面:1.CMOS化:近年,由于CHMOS技術(shù)的進(jìn)步,大大地促進(jìn)了單片機(jī)的CMOS化。CMOS芯片除了低功耗特性之外,還具有功耗的可控性,使單片機(jī)可以工作在功耗精細(xì)管理狀態(tài),這也是今后以80C51取代8051為標(biāo)準(zhǔn)MCU芯片的原因。因?yàn)閱纹瑱C(jī)芯片多數(shù)是采用CMOS〔金屬柵氧化物〕半導(dǎo)體工藝生產(chǎn)。CMOS電路的特點(diǎn)是低功耗、高密度、低速度、低價(jià)格。采用雙極型半導(dǎo)體工藝的TTL電路速度快,但功耗和芯片面積較大。隨著技術(shù)和工藝水平的提高,又出現(xiàn)了HMOS〔高密度、高速度MOS〕和CHMOS工藝,CMOS和HMOS工藝的結(jié)合。目前生產(chǎn)的CHMOS電路已到達(dá)LSTTL的速度,傳輸延遲時(shí)間小于2ns,它的綜合優(yōu)勢(shì)已在于TTL電路。因而,在單片機(jī)領(lǐng)域CMOS正在逐漸取代TTL電路。2.低功耗:?jiǎn)纹瑱C(jī)的功耗已到mA級(jí),甚至到1uA以下,使用電壓在3~6V之間,完全適應(yīng)電池工作。低功耗化的效應(yīng)不僅是功耗低,而且?guī)?lái)了產(chǎn)品的高可靠性、高抗干擾能力以及產(chǎn)品的便攜化、低電壓化。幾乎所有的單片機(jī)都有WAIT、STOP等省電運(yùn)行方式。允許使用的電壓*圍越來(lái)越寬,一般在3~6V*圍內(nèi)工作。低電壓供電的單片機(jī)電源下限已可達(dá)1~2V。目前0.8V供電的單片機(jī)已經(jīng)問(wèn)世。低噪聲與高可靠性為提高單片機(jī)的抗電磁干擾能力,使產(chǎn)品能適應(yīng)惡劣的工作環(huán)境,滿(mǎn)足電磁兼容性方面更高標(biāo)準(zhǔn)的要求,各單片機(jī)廠(chǎng)家在單片機(jī)內(nèi)部電路中都采用了新的技術(shù)措施。3.大容量化:傳統(tǒng)的單片機(jī)片內(nèi)程序存儲(chǔ)器一般為1K~8K,片內(nèi)數(shù)據(jù)存儲(chǔ)器為256字節(jié)以下。在*些復(fù)雜的應(yīng)用上,片內(nèi)不管是程序存儲(chǔ)器還是數(shù)據(jù)存儲(chǔ)器都是容量不夠,必須采用外接方式進(jìn)展擴(kuò)大。而新型單片機(jī)〔例如PHILIPSP89C66*〕片內(nèi)程序存儲(chǔ)器可達(dá)64K,片內(nèi)數(shù)據(jù)存儲(chǔ)器可達(dá)8K。今后,隨著工藝技術(shù)的不斷開(kāi)展,單片機(jī)片內(nèi)存儲(chǔ)器容量將進(jìn)一步擴(kuò)大。4.單片機(jī)的高性能化:主要是指進(jìn)一步提高CPU的性能,加快指令運(yùn)算速度,并加強(qiáng)了位處理功能、中斷、定時(shí)功能。其主頻從4MHz~12MHz向0MHz〔全靜態(tài)〕~40MHz以上開(kāi)展。同時(shí)采用流水線(xiàn)構(gòu)造,讓指令以隊(duì)列形式出現(xiàn)在CPU中,從而進(jìn)一步提高運(yùn)算速度。有的單片機(jī)根本采用了多流水線(xiàn)構(gòu)造,這類(lèi)單片機(jī)的運(yùn)算速度要比標(biāo)準(zhǔn)的單片機(jī)高出10倍以上。5.外圍電路內(nèi)裝化:這也是單片機(jī)開(kāi)展的一個(gè)主流方面。隨著集成度的不斷提高,使將各種功能器件集成在片內(nèi)成為可能。除了一般必須具有的CPU、ROM、RAM、定時(shí)器計(jì)數(shù)器等外,片內(nèi)還可以根據(jù)需要集成如串行口,AD、DA、EEPROM、PWM、看門(mén)狗〔WatchDog〕、液晶顯示〔LCD〕驅(qū)動(dòng)器等多種功能部件。6.增強(qiáng)IO口功能:為了減少外部驅(qū)動(dòng)芯片,進(jìn)一步增加單片機(jī)并行口的驅(qū)動(dòng)能力,現(xiàn)在有的單片機(jī)可直接輸出較大電流〔20mA〕和高電壓,以便直接驅(qū)動(dòng)顯示器。為進(jìn)一步加快IO的傳輸速度,有的單片機(jī)設(shè)置了高速I(mǎi)O口,能以最快的速度捕捉外部數(shù)據(jù)的變化,同時(shí)以最快的速度向片外輸出數(shù)據(jù)。以適合數(shù)據(jù)高速改變的場(chǎng)合。隨著集成工藝的不斷開(kāi)展,單片機(jī)一方面向集成度更高、體積更小、功能更強(qiáng)、功耗更低方向開(kāi)展,另一方面向32位以上及雙CPU方向開(kāi)展。-.z第2章系統(tǒng)的總體設(shè)計(jì)2.1系統(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)。LCDLCD顯示模塊數(shù)據(jù)存儲(chǔ)模塊通訊模塊電源模塊溫度采集模塊實(shí)時(shí)時(shí)鐘模塊按鍵處理模塊STC89C52單片機(jī)圖2-1系統(tǒng)設(shè)計(jì)框架2.2STC89C52單片機(jī)簡(jiǎn)介目前,51系列單片機(jī)在工業(yè)檢測(cè)領(lǐng)域中得到了廣泛的應(yīng)用,因此我們可以在許多單片機(jī)應(yīng)用領(lǐng)域中,配接各種類(lèi)型的語(yǔ)音接口,構(gòu)成具有合成語(yǔ)音輸出能力的綜合應(yīng)用系統(tǒng),以增強(qiáng)人機(jī)對(duì)話(huà)的功能。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è)局部通過(guò)內(nèi)部總線(xiàn)相連接【1】。2.2.1STC89C52單片機(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開(kāi)場(chǎng)執(zhí)行指令。如果是雙字節(jié)指令,則在同一機(jī)器周期的s4讀人第二字節(jié)。假設(shè)為單字節(jié)指令,則在51期間仍進(jìn)展讀,但所讀入的字節(jié)操作碼被忽略,且程序計(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é),但Mov*指令例外,Mov*指令是外部數(shù)據(jù)存儲(chǔ)器的單字節(jié)雙機(jī)器周期指令,在執(zhí)行Mov*指令期間,外部數(shù)據(jù)存儲(chǔ)器被且被選通時(shí)跳過(guò)兩次取指操作【2】。2.2.2STC89C52單片機(jī)引腳介紹STC89C52單片機(jī)的40個(gè)引腳中有2個(gè)專(zhuān)用于主電源引腳,2個(gè)外接晶振的引腳,4個(gè)控制或與其它電源復(fù)用的引腳,以及32條輸入輸出I/O引腳。下面按引腳功能分為4個(gè)局部表達(dá)個(gè)引腳的功能。電源引腳Vcc和VssVcc〔40腳〕:接+5V電源正端;Vss〔20腳〕:接+5V電源正端。外接晶振引腳*TAL1和*TAL2:*TAL1〔19腳〕:接外部石英晶體的一端。在單片機(jī)內(nèi)部,它是一個(gè)反相放大器的輸入端,這個(gè)放大器構(gòu)成采用外部時(shí)鐘時(shí),對(duì)于HMOS單片機(jī),該引腳接地;對(duì)于CHOMS單片機(jī),該引腳作為外部振蕩信號(hào)的輸入端。*TAL2〔18腳〕:接外部晶體的另一端。在單片機(jī)內(nèi)部,接至片內(nèi)振蕩器的反相放大器的輸出端。當(dāng)采用外部時(shí)鐘時(shí),對(duì)于HMOS單片機(jī),該引腳作為外部振蕩信號(hào)的輸入端。對(duì)于CHMOS芯片,該引腳懸空不接??刂菩盘?hào)或與其它電源復(fù)用引腳有RST/VPD、ALE/P、PSEN和EA/VPP等4種形式。RST/VPD〔9腳〕:RST即為RESET,VPD為備用電源,所以該引腳為單片機(jī)的上電復(fù)位或掉電保護(hù)端。當(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)輸出,用于鎖存出現(xiàn)在P0口的低。PSEN〔29腳〕:片外程序存儲(chǔ)器讀選通輸出端,低電平有效。當(dāng)從外部程序存儲(chǔ)器讀取指令或常數(shù)期間,每個(gè)機(jī)器周期PESN兩次有效,以通過(guò)數(shù)據(jù)總線(xiàn)口讀回指令或常數(shù)。當(dāng)外部數(shù)據(jù)存儲(chǔ)器期間,PESN信號(hào)將不出現(xiàn)。EA/Vpp〔31腳〕:EA為外部程序儲(chǔ)器控制信號(hào),低電平有效。當(dāng)EA端保持高電平時(shí),單片機(jī)片內(nèi)程序存儲(chǔ)器4KB〔MS-52子系列為8KB〕。假設(shè)超出該*圍時(shí),自動(dòng)轉(zhuǎn)去執(zhí)行外部程序存儲(chǔ)器的程序。當(dāng)EA端保持低電平時(shí),無(wú)論片內(nèi)有無(wú)程序存儲(chǔ)器,均只外部程序存儲(chǔ)器。對(duì)于片內(nèi)含有EPROM的單片機(jī),在EPROM編程期間,該引腳用于接21V的編程電源Vpp。輸入/輸出〔I/O〕引腳P0口、P1口、P2口及P3口:P0口〔39腳~22腳〕:P0.0~P0.7統(tǒng)稱(chē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í)提供8位雙向數(shù)據(jù)總線(xiàn)。對(duì)于片內(nèi)含有EPROM的單片機(jī),當(dāng)EPROM編程時(shí),從P0口輸入指令字節(jié),而當(dāng)檢驗(yàn)程序時(shí),則輸出指令字節(jié)。P1口〔1腳~8腳〕:P1.0~P1.7統(tǒng)稱(chēng)為P1口,可作為準(zhǔn)雙向I/O接口使用。對(duì)于MCS-52子系列單片機(jī),P1.0和P1.1還有第2功能:P1.0口用作定時(shí)器/計(jì)數(shù)器2的計(jì)數(shù)脈沖輸入端T2;P1.1用作定時(shí)器/計(jì)數(shù)器2的外部控制端T2E*。對(duì)于EPROM編程和進(jìn)展程序校驗(yàn)時(shí),P0口接收輸入的低8位地址。P2口〔21腳~28腳〕:P2.0~P2.7統(tǒng)稱(chēng)為P2口,一般可作為準(zhǔn)雙向I/O接口。當(dāng)接有外部程序存儲(chǔ)器或擴(kuò)展I/O接口且尋址*圍超過(guò)256個(gè)字節(jié)時(shí),P2口用于高8位地址總線(xiàn)送出高8位地址。對(duì)于EPROM編程和進(jìn)展程序校驗(yàn)時(shí),P2口接收輸入的8位地址。P3口〔10腳~17腳〕:P3.0~P3.7統(tǒng)稱(chēng)為P3口。它為雙功能口,可以作為一般的準(zhǔn)雙向I/O接口,也可以將每1位用于第2功能,而且P3口的每一條引腳均可獨(dú)立定義為第1功能的輸入輸出或第2功能。P3口的第2功能見(jiàn)下表:表2-1單片機(jī)P3.0管腳含義引腳第2功能P3.0R*D〔串行口輸入端0〕P3.1T*D〔串行口輸出端〕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ǔ)器寫(xiě)選通信號(hào)輸出端,低電平有效〕P3.7RD〔部數(shù)據(jù)存儲(chǔ)器讀選通信號(hào)輸出端,低電平有效〕綜上所述,MCS-51系列單片機(jī)的引腳作用可歸納為以下兩點(diǎn):?jiǎn)纹瑱C(jī)功能多,引腳數(shù)少,因而許多引腳具有第2功能。單片機(jī)對(duì)外呈3總線(xiàn)形式,由P2、P0口組成16位地址總線(xiàn),由P0口分時(shí)復(fù)用作為數(shù)據(jù)總線(xiàn)【3】。第3章硬件系統(tǒng)設(shè)計(jì)3.1單片機(jī)最小電路系統(tǒng)在本設(shè)計(jì)的溫度控制系統(tǒng)設(shè)計(jì)中,控制核心是STC89C52單片機(jī),該單片機(jī)為51系列增強(qiáng)型8位單片機(jī),它有32個(gè)I/O口,片內(nèi)含4KFLASH工藝的程序存儲(chǔ)器,便于用電的方式瞬間擦除和改寫(xiě),而且價(jià)格廉價(jià),其外部晶振為12MHz,一個(gè)指令周期為1μS。使用該單片機(jī)完全可以完成設(shè)計(jì)任務(wù),其最小系統(tǒng)主要包括:復(fù)位電路、震蕩電路以及存儲(chǔ)器選擇模式【4】〔EA腳的上下電平選擇〕,電路如下列圖3-1所示:圖3-1單片機(jī)最小系統(tǒng)圖3.2溫度傳感器電路采用一線(xiàn)制數(shù)字溫度傳感器DS18B20來(lái)作為本課題的溫度傳感器。DS18B20溫度傳感器是美國(guó)達(dá)拉斯〔DALLAS〕半導(dǎo)體公司推出的應(yīng)用單總線(xiàn)技術(shù)的數(shù)字溫度傳感器。該器件將半導(dǎo)體溫敏器件、A/D轉(zhuǎn)換器、存儲(chǔ)器等做在一個(gè)很小的集成電路芯片上。本設(shè)計(jì)中溫度傳感器之所以選擇單線(xiàn)數(shù)字器件DS18B20,是在經(jīng)過(guò)多方面比擬和考慮后決定的,主要有以下幾方面的原因:3.2.1系統(tǒng)的特性測(cè)溫*圍為-55℃~+125℃,測(cè)溫精度為士0.5℃3.2.2系統(tǒng)的本錢(qián)由于計(jì)算機(jī)技術(shù)和微電子技術(shù)的開(kāi)展,新型大規(guī)模集成電路功能越來(lái)越強(qiáng)大,體積越來(lái)越小,而價(jià)格也越來(lái)越低。一支DS18B20的體積與普通三極管相差無(wú)幾,價(jià)格只有十元人民幣左右。3.2.3系統(tǒng)的復(fù)雜度由于DS18B20是單總線(xiàn)器件,微處理器與其接口時(shí)僅需占用1個(gè)I/O端口且一條總線(xiàn)上可以?huà)旖訋资畟€(gè)DS18B20,測(cè)溫時(shí)無(wú)需任何外部元件。因此,與模擬傳感器相比,可以大大減少接線(xiàn)的數(shù)量,降低系統(tǒng)的復(fù)雜度,減少工程的施工量。3.2.4信號(hào)輸入電路由于引線(xiàn)的減少,使得系統(tǒng)接口大為簡(jiǎn)化,給系統(tǒng)的調(diào)試帶來(lái)方便。同時(shí)因?yàn)镈S18B20是全數(shù)字元器件,故障率很低,抗干擾性強(qiáng)。因此,減少了系統(tǒng)的日常維護(hù)工作。DS18B20溫度傳感器只有三根外引線(xiàn):?jiǎn)尉€(xiàn)數(shù)據(jù)傳輸總線(xiàn)端口DQ,外供電源線(xiàn)VDD,共用地線(xiàn)GND。DS18B20有兩種供電方式:一種為數(shù)據(jù)線(xiàn)供電方式,此時(shí)VDD接地,它是通過(guò)內(nèi)部電容在空閑時(shí)從數(shù)據(jù)線(xiàn)獲取能量,來(lái)完成溫度轉(zhuǎn)換,相應(yīng)的完成溫度轉(zhuǎn)換的時(shí)間較長(zhǎng)。這種情況下,用單片機(jī)的一個(gè)I/O口來(lái)完成對(duì)DS18B20總線(xiàn)的上拉。另一種是外部供電方式〔VDD接+5V〕,相應(yīng)的完成溫度測(cè)量的時(shí)間較短。在本設(shè)計(jì)中采用外部供電方式實(shí)現(xiàn)DS18B20傳感器與單片機(jī)的連接,傳感器輸出信號(hào)進(jìn)4.7K的上拉電阻直接接到單片機(jī)的P1.0引腳上。其接口電路如圖3-2所示:圖3-2溫度傳感器接口3.3系統(tǒng)電源電路設(shè)計(jì)本系統(tǒng)采用電源穩(wěn)壓芯片是LM2596,該開(kāi)關(guān)電壓調(diào)節(jié)器是降壓型電源管理單片集成電路,能夠輸出3A的驅(qū)動(dòng)電流,輸入電壓是+5v,輸入電壓是+24v,同時(shí)具有很好的線(xiàn)性和負(fù)載調(diào)節(jié)特性。該器件內(nèi)部集成頻率補(bǔ)償和固定頻率發(fā)生器,開(kāi)關(guān)頻率為150KHz,與低頻開(kāi)關(guān)調(diào)節(jié)器相比擬,可以使用更小規(guī)格的濾波元件。該器件還有其他一些特點(diǎn):在特定的輸入電壓和輸出負(fù)載的條件下,輸出電壓的誤差可以保證在±4%的*圍內(nèi),振蕩頻率誤差在±15%的*圍內(nèi);可以用僅80μA的待機(jī)電流,實(shí)現(xiàn)外部斷電;具有自我保護(hù)電路〔一個(gè)兩級(jí)降頻限流保護(hù)和一個(gè)在異常情況下斷電的過(guò)溫完全保護(hù)電路〕。在該溫度控制系統(tǒng)中,其電源電路設(shè)計(jì)如下列圖3-3所示:圖3-3系統(tǒng)電源模塊3.4LCD顯示電路液晶顯示屏〔LCD〕用于數(shù)字型鐘表和許多便攜式計(jì)算機(jī)的一種顯示器類(lèi)型。LCD顯示使用了兩片極化材料,在它們之間是液體水晶溶液。電流通過(guò)該液體時(shí)會(huì)使水晶重新排列,以使光線(xiàn)無(wú)法透過(guò)它們。因此,每個(gè)水晶就像百葉窗,既能允許光線(xiàn)穿過(guò)又能擋住光線(xiàn)。本設(shè)計(jì)的溫度控制系統(tǒng)是采用液晶屏128*64作為顯示模塊,其接口原理圖如下列圖3-4所示:圖3-4液晶顯示接口電路3.5串口通訊電路由于CPU與接口之間按并行方式傳輸,接口與外設(shè)之間按串行方式傳輸。因此,在串行接口中,必須要有“接收移位存放器〞〔串→并〕和“發(fā)送移位存放器〞〔并→串〕。在數(shù)據(jù)輸入過(guò)程中,數(shù)據(jù)1位1位地從外設(shè)進(jìn)入接口的“接收移位存放器〞,當(dāng)“接收移位存放器〞中已接收完1個(gè)字符的各位后,數(shù)據(jù)就從“接收移位存放器〞進(jìn)入“數(shù)據(jù)輸入存放器〞。CPU從“數(shù)據(jù)輸入存放器〞中讀取接收到的字符。〔并行讀取,即D7~D0同時(shí)被讀至累加器中〕?!敖邮找莆淮娣牌鳕暤囊莆凰俣扔伞敖邮諘r(shí)鐘〞確定。在數(shù)據(jù)輸出過(guò)程中,CPU把要輸出的字符〔并行地〕送入“數(shù)據(jù)輸出存放器〞,“數(shù)據(jù)輸出存放器〞的內(nèi)容傳輸?shù)健鞍l(fā)送移位存放器〞,然后由“發(fā)送移位存放器〞移位,把數(shù)據(jù)1位1位地送到外設(shè)。“發(fā)送移位存放器〞的移位速度由“發(fā)送時(shí)鐘〞確定。接口中的“控制存放器〞用來(lái)容納CPU送給此接口的各種控制信息,這些控制信息決定接口的工作方式?!盃顟B(tài)存放器〞的各位稱(chēng)為“狀態(tài)位〞,每一個(gè)狀態(tài)位都可以用來(lái)指示數(shù)據(jù)傳輸過(guò)程中的狀態(tài)或*種錯(cuò)誤。例如,用狀態(tài)存放器的D5位為“1〞表示“數(shù)據(jù)輸出存放器〞空,用D0位表示“數(shù)據(jù)輸入存放器滿(mǎn)〞,用D2位表示“奇偶檢驗(yàn)錯(cuò)〞等。本設(shè)計(jì)的通訊采用的是常見(jiàn)的串口通訊,協(xié)議轉(zhuǎn)換芯片是采用MA*232A,其接口原理圖如下列圖3-5所示:圖3-5串口通訊接口電路3.6按鍵接口電路本設(shè)計(jì)采用的鍵盤(pán)模塊,其接口原理圖如下列圖3-6所示:圖3-6鍵盤(pán)模塊電路3.7DS1302時(shí)鐘電路本設(shè)計(jì)的時(shí)鐘是采用時(shí)鐘芯片DS1302,DS1302工作時(shí)為了對(duì)任何數(shù)據(jù)傳送進(jìn)展初始化,需要將復(fù)位腳〔RST〕置為高電平且將8位地址和命令信息裝入移位存放器。數(shù)據(jù)在時(shí)鐘〔SCLK〕的上升沿串行輸入,前8位指定地址,命令字裝入移位存放器后,在之后的時(shí)鐘周期,讀操作時(shí)輸出數(shù)據(jù),寫(xiě)操作時(shí)輸出數(shù)據(jù)。時(shí)鐘脈沖的個(gè)數(shù)在單字節(jié)方式下為8+8〔8位地址+8位數(shù)據(jù)〕,在多字節(jié)方式下為8加最多可達(dá)248的數(shù)據(jù)。其接口原理圖如下列圖3-7所示:圖3-7時(shí)鐘接口電路3.8存儲(chǔ)器接口電路本設(shè)計(jì)的存儲(chǔ)器采用的是AT24C256,起始停頓信號(hào)的主器件控制的CAT24WC256是作為從器件被操作的。主器件和從器件都可以作為發(fā)送器或接收器,但由主器件控制傳送數(shù)據(jù)發(fā)送或接收的模式,管腳描述SCL串行時(shí)鐘CAT24WC256串行時(shí)鐘輸入管腳,用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收的時(shí)鐘。這是一個(gè)輸入管腳SDA串行數(shù)據(jù)地址雙向串行數(shù)據(jù),地址管腳用于器件所有數(shù)據(jù)的發(fā)送或接收SDA,是一個(gè)開(kāi)漏輸出管腳,可與其它開(kāi)漏輸出或集電極開(kāi)路輸出進(jìn)展線(xiàn)或wire-ORWP寫(xiě)保護(hù)。當(dāng)WP腳連接到VCC所有內(nèi)存變成寫(xiě)保護(hù)只能讀,當(dāng)WP引腳連接到VSS或懸空允許器件進(jìn)展讀。寫(xiě)操作A0-A1器件地址輸入,這些管腳為硬連線(xiàn)或者不連接對(duì)于單總線(xiàn)系統(tǒng)最多可尋址4個(gè)。CAT24WC256器件參閱器件尋址當(dāng)這些引腳沒(méi)有連接時(shí)其默認(rèn)值0【5】,其接口原理圖如下列圖3-8所示:圖3-8存儲(chǔ)器電路-.z第4章系統(tǒng)的軟件設(shè)計(jì)4.1系統(tǒng)程序流程圖系統(tǒng)的軟件主要是采用匯編語(yǔ)言,對(duì)單片機(jī)進(jìn)展變成實(shí)現(xiàn)各項(xiàng)功能。主程序?qū)δK進(jìn)展初始化,而后調(diào)用讀溫度、處理溫度、顯示、鍵盤(pán)等模塊。用的是循環(huán)查詢(xún)方式,來(lái)顯示和控制溫度,主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20的測(cè)量的當(dāng)前溫度值并負(fù)責(zé)調(diào)用各子程序,其程序流程如圖4-1系統(tǒng)程序流程圖:?jiǎn)?dòng)啟動(dòng)DB18B20LCD顯示開(kāi)場(chǎng)初始化計(jì)算溫度讀溫度圖4-1系統(tǒng)程序流程圖4.2計(jì)算溫度子程序讀出溫度子程序的主要功能包括初始化,判斷DS18B20是否存在,假設(shè)存在則進(jìn)展一系列的讀操,作假設(shè)不存在則返回。其程序流程圖如圖4-2所示:初始化初始化開(kāi)場(chǎng)DSB2180存在讀取溫度值存儲(chǔ)操作命令ROM操作命令返回否是圖4-2讀溫度流程圖4.3按鍵處理子程序按鍵處理子程序主要是負(fù)責(zé)參數(shù)的設(shè)置,主程序每循環(huán)一次都要對(duì)按鍵進(jìn)展掃描,判斷是否有輸入鍵按下則進(jìn)展一系列的按鍵輸入操作。其程序流程框圖如圖4-3所示:否否是是開(kāi)場(chǎng)ENTER鍵是否按下DISPLAY顯示退出子程序〔RET〕返回主程序ENTER_FLAG為1由ENTER鍵按下有UP按下有DOWN按下ENTER子程序flag=1UP子程序DOWN子程序否否否是是否是圖4-3溫度轉(zhuǎn)換流程圖4.4軟件設(shè)計(jì)的特點(diǎn)計(jì)算溫度子程序?qū)AM中讀取值進(jìn)展BCD碼的轉(zhuǎn)換運(yùn)算,并進(jìn)展溫度值正負(fù)的判定,其程序流程圖如圖4-4所示:開(kāi)場(chǎng)開(kāi)場(chǎng)溫度零下?溫度值取補(bǔ)碼置“—〞標(biāo)志計(jì)算小數(shù)位溫度BCD值計(jì)算整數(shù)位溫度BCD值完畢置“+〞標(biāo)志否是圖4-4計(jì)算溫度子程序4.5顯示數(shù)據(jù)刷新子程序顯示數(shù)據(jù)刷新子程序主要是對(duì)顯示緩沖器中的顯示數(shù)據(jù)進(jìn)展刷新操作,當(dāng)最高顯示位為0時(shí)將符號(hào)顯示位移入下一位【6】。程序流程圖如圖4-5:溫度數(shù)據(jù)移入顯示存放器溫度數(shù)據(jù)移入顯示存放器十位數(shù)0.百位數(shù)0.十位數(shù)顯示符號(hào)百位數(shù)不顯示百位數(shù)顯示數(shù)據(jù)〔不顯示符號(hào)〕完畢否否是是圖4-5數(shù)據(jù)刷新子程序-.z第5章總結(jié)通過(guò)此次畢業(yè)論文的設(shè)計(jì),我熟悉了單片機(jī)在控制系統(tǒng)中的運(yùn)用,并且在所學(xué)知識(shí)的根底上,將我原來(lái)所學(xué)的知識(shí)系統(tǒng)化、理論化、實(shí)用化。對(duì)如何使用已有的知識(shí)及獲取相關(guān)資料方面的能力也有了提高。并學(xué)會(huì)了如何去思考整個(gè)控制系統(tǒng)的軟硬件設(shè)計(jì)。實(shí)踐過(guò)程中我們遇到了一些困難,但在解決問(wèn)題的過(guò)程中,我學(xué)會(huì)了團(tuán)隊(duì)合作精神和怎樣發(fā)現(xiàn)問(wèn)題、分析問(wèn)題,進(jìn)而解決問(wèn)題。此次設(shè)計(jì)不僅增強(qiáng)了我對(duì)學(xué)習(xí)專(zhuān)業(yè)課的興趣,而且給了我們勇氣和信心,更重要的是它為我們以后的學(xué)習(xí)指明了方向。-.z參考文獻(xiàn)[1]李廣弟,朱月秀,王秀山.單片機(jī)根底[M].:航空航天大學(xué),2001:10-14.[2]蔡美琴,*為民.MCS-51系列單片機(jī)系統(tǒng)及其應(yīng)用[M].:高等教育.2004:20-22.[3]*毅剛,等.MCS-51單片機(jī)應(yīng)用設(shè)計(jì)[M].**:**工業(yè)大學(xué).1997:59-65.[4]*瑞星,胡健,等.ProtelD*P實(shí)用教程[M].:機(jī)械工業(yè).2003:47-70.[5]于海生.計(jì)算機(jī)控制技術(shù)[M].:機(jī)械工業(yè).2007:90-102.[6]康華光.電子技術(shù)根底模擬局部[M].:高等教育.1998:70-83.[7]韓志軍,王振波,等.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)[M].:機(jī)械工業(yè).2005:35-38.[8]何小艇.電子系統(tǒng)設(shè)計(jì)[M].**:**大學(xué).2004:20-27.[9]WilliamStallings.Dataandputermunications[M].:高等教育.2001:127-144.[10]吳京文,楊世忠,泰廷奎.溫度傳感器控制系統(tǒng)[J].電信技術(shù),2008,16(7):21-26.[11]胡義彪,*劍剛.ProtelD*P應(yīng)用技術(shù)[J].通信電源,2005,27(10):64-80.致謝通過(guò)這次畢業(yè)設(shè)計(jì)使我明白了自己原來(lái)知識(shí)比擬欠缺,自己要學(xué)習(xí)的東西太多,以前老是覺(jué)得自己什么東西都會(huì),什么東西都懂,有點(diǎn)眼高手低。通過(guò)這次課程設(shè)計(jì),我才明白學(xué)習(xí)是一個(gè)長(zhǎng)期積累的過(guò)程,在以后的工作、生活中都應(yīng)該不斷的學(xué)習(xí),努力提高自己知識(shí)和綜合素質(zhì)。最后,我要感謝趙國(guó)榮教師對(duì)我這次畢業(yè)設(shè)計(jì)的悉心指導(dǎo),使我不僅在知識(shí)方面有了更深一步的了解,并且在我設(shè)計(jì)東西的思路與邏輯方面有更深刻的影響,使我知道了設(shè)計(jì)思路與邏輯的重要性,讓我獲益匪淺。附錄系統(tǒng)程序TEMPERATURE_LDATA31H;DS18B20低8位BufferTEMPERATURE_HDATA30H;DS18B20高8位Buffer

TEMPERATURE_HCDATA32H;計(jì)算后的百位和十位的BCD碼存放Buffer

TEMPERATURE_LCDATA33H;計(jì)算后的個(gè)位和小數(shù)位的BCD碼存放BufferTEMPERATURE_ZHDATA34H;計(jì)算后十位和個(gè)位HE*碼的存放BufferDIS_BUF_*DATA35H;數(shù)碼管小數(shù)位BufferDIS_BUF_GDATA36H;數(shù)碼管個(gè)位Buffer

DIS_BUF_SDATA37H;數(shù)碼管十位Buffer

DIS_BUF_BDATA38H;數(shù)碼管百位Buffer

KEY_BUF_GDATA39H;鍵盤(pán)輸入后,的個(gè)位值KEY_BUF_SDATA49H;鍵盤(pán)輸入后,的十位值KEY_BUF_BDATA41H;鍵盤(pán)輸入后,的百位值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;鍵盤(pán)輸入的標(biāo)志位,ORG0000H

LJMPMAIN

ORG0100H

MAIN:MOVSP,*60H;初始化

MOVKEY_BUF_G,*00H;由于KEY_BUF是由用戶(hù)輸入的,所以先賦值初始化

MOVKEY_BUF_S,*00H

MOVKEY_BUF_B,*00H

NE*T:LCALLREAD_TEMP;調(diào)用讀溫度子程序

FLAG,NORMAL;判斷是否有DS18B20的存在

CALLERR;不存在時(shí)顯示錯(cuò)誤信息

AJMPNE*TNORMAL:LCALLDATA_DEA;處理從DS18B20得到的數(shù)據(jù)

LCALLSET_DIS_BUF;賦值給DIS_BUF_*,G,S,B

LCALLDISPLAY;調(diào)用數(shù)碼管顯示子程序

LCALLSCAN_KEY;掃描鍵盤(pán)

LCALLSWITCH;處理可控硅

AJMPNE*T

;程序名稱(chēng):ERR

;功能:程序出錯(cuò)處理,顯示四個(gè)8,即8888

;入口參數(shù):無(wú)

;出口參數(shù):DIS_BUF_*,DIS_BUF_G,DIS_BUF_S,DIS_BUF_B

ERR:MOVDIS_BUF_*,*08H;如果沒(méi)有找到DS18B20,則就顯示錯(cuò)誤,錯(cuò)誤;顯示為888

MOVDIS_BUF_G,*08H

MOVDIS_BUF_S,*08H

MOVDIS_BUF_B,*08H

LCALLDISPLAY

RET程序名稱(chēng):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,說(shuō)明是正數(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;寫(xiě)回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_*,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

CALLHtoB;轉(zhuǎn)換HE*值成為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

;以此類(lèi)推;程序名稱(chēng):HtoB

;功能:十六進(jìn)制轉(zhuǎn)BCD

;入口參數(shù):A

;出口參數(shù):R7

HtoB:MOVB,*064H;100

DIVAB;a/100

MOVR7,A;

MOVA,*0AH

*CHA,B

DIVAB

SWAPA

ORLA,B

RET

;程序名稱(chēng):INIT_TEMP

;功能:初始化DS18B20,確定DS18B20是否是存在的

;入口參數(shù):無(wú)

;出口參數(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ù)線(xiàn),釋放總線(xiàn)進(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

;程序名稱(chēng):READ_TEMP

;功能:讀取DS18B20的數(shù)據(jù)

;入口參數(shù):TEMPERATURE_L,TEMPERATURE_H

;出口參數(shù):無(wú)

READ_TEMP:

SETBP_DS18B20

LCALLINIT_TEMP;先復(fù)位DS18B20

FLAG,TSS2

RET;判斷DS1820是否存在?假設(shè)DS18B20不存在則返回

TSS2:MOVA,*0CCH;跳過(guò)ROM匹配

LCALLWRITE_18B20

MOVA,*44H;發(fā)出溫度轉(zhuǎn)換命令

LCALLWRITE_18B20

LCALLDISPLAY;等待AD轉(zhuǎn)換完畢,12位的話(huà)750微秒

LCALLINIT_TEMP;準(zhǔn)備讀溫度前先復(fù)位

MOVA,*0CCH;跳過(guò)ROM匹配

LCALLWRITE_18B20

MOVA,*0BEH;發(fā)出讀溫度命令

LCALLWRITE_18B20

LCALLREAD_18B20;將讀出的溫度數(shù)據(jù)保存到35H/36H

RET程序名稱(chēng):WRITE_18B20

;功能:將A保存的數(shù)值寫(xiě)入DS1820中,;入口參數(shù):A存放器

;出口參數(shù):無(wú)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;釋放總線(xiàn)

RET;程序名稱(chēng):READ_18B20;功能:讀取18B20中的數(shù)據(jù),由于是串行通信,每次讀取一個(gè),循環(huán)8次讀取;入口參數(shù):TEMPRATURE_L;出口參數(shù):無(wú)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

MOVR1,A

DECR1

DJNZR4,RE00

RET;程序名稱(chēng):SCAN_KEY;功能:掃描鍵盤(pán);入口參數(shù):DIS_BUF_G,DIS_BUF_S,DIS_BUF_B;出口參數(shù):KEY_BUF_G,KEY_BUF_S,kEY_BUF_BSCAN_KEY:

K_ENTER,QUIT;如果又Enter鍵入,則開(kāi)場(chǎng)鍵盤(pán)輸入

LCALLK_DELAY

K_ENTER,QUIT

CLRENTER_FLAG;每次進(jìn)來(lái)都賦值輸入標(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:

ENTER_FLAG,QUIT;如果輸入完成,ENTER_FLAG則為1,退出鍵盤(pán)程;序

K_ENTER,KUPCALLPRO_ENTERKUP:K_UP,KDOWN

CALLPRO_UPKDOWN:K_DOWN,LOOPA

CALLPRO_DOWNLOOPA:LCALLDISPLAY

SJMPK_LOOPQUIT:RET;程序名稱(chēng):PRO_ENTER;功能:確認(rèn)鍵盤(pán)輸入和退出鍵盤(pán)輸入;入口參數(shù):ENTER_FLAG;出口參數(shù):ENTER_FLAGPRO_ENTER:

CALLK_DELAY

K_ENTER,K_LOOP;按鈕抖動(dòng)處理

SETBENTER_FLAG

CALLK_DELAY

RET;程序名稱(chēng):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

K_UP,K_LOOP;按鈕抖動(dòng)處理

INCKEY_BUF_G;個(gè)位增一

MOVA,KEY_BUF_G

CJNEA,*0AH,UPNE*T;個(gè)位增加到10,回0

MOVKEY_BUF_G,*00H

INCKEY_BUF_S;十位加一

MOVA,KEY_BUF_S

CJNEA,*0AH,UPNE*T;十位超過(guò)99,溢出了

MOVR0,*200ERROR1:LCALLERR;出錯(cuò),顯示8888

DJNZR0,ERROR1

DECKEY_BUF_S;退回99

MOVKEY_BUF_G,*09HUPNE*T:

MOVDIS_BUF_G,KEY_BUF_G

MOVDIS_BUF_S,KEY_BUF_S

MOVDIS_BUF_B,KEY_BUF_B

CALLK_DELAYRET;程序名稱(chēng):PRO_DOWN;功能:數(shù)值下調(diào)處理;入口參數(shù):KEY_BUF_G,KEY_BUF_S,KEY_BUF_B;出口參數(shù):DIS_BUF_G,DIS_BUF_S,DIS_BUF_BPRO_DOWN:

CALLK_DELAY

K_DOWN,K_LOOP;按鈕抖動(dòng)處理

DECKEY_BUF_G;個(gè)位減一

MOVA,KEY_BUF_G

CJNEA,*0FFH,DOWNNE*T;個(gè)位減到0,回到9

MOVKEY_BUF_G,*09H

DECKEY_BUF_S;十位減一

MOVA,KEY_BUF_S

CJNEA,*0FFH,DOWNNE*T;十位低于0,溢出

溫馨提示

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

評(píng)論

0/150

提交評(píng)論