基于89c51單片機(jī)空調(diào)變頻器的設(shè)計(jì)畢業(yè)設(shè)計(jì)論文_第1頁(yè)
基于89c51單片機(jī)空調(diào)變頻器的設(shè)計(jì)畢業(yè)設(shè)計(jì)論文_第2頁(yè)
基于89c51單片機(jī)空調(diào)變頻器的設(shè)計(jì)畢業(yè)設(shè)計(jì)論文_第3頁(yè)
基于89c51單片機(jī)空調(diào)變頻器的設(shè)計(jì)畢業(yè)設(shè)計(jì)論文_第4頁(yè)
基于89c51單片機(jī)空調(diào)變頻器的設(shè)計(jì)畢業(yè)設(shè)計(jì)論文_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

畢業(yè)設(shè)計(jì)課題基于單片機(jī)的空調(diào)變頻器設(shè)計(jì)學(xué)生姓名學(xué)號(hào)專業(yè)電子信息工程班級(jí)院(系)機(jī)械與電子信息工程學(xué)院指導(dǎo)教師職稱二0一四年十一月三十日畢業(yè)設(shè)計(jì)真實(shí)性承諾及指導(dǎo)教師聲明學(xué)生畢業(yè)設(shè)計(jì)真實(shí)性承諾本人鄭重聲明:所提交的畢業(yè)設(shè)計(jì)是本人在指導(dǎo)教師的指導(dǎo)下,獨(dú)立進(jìn)行研究工作所取得的成果,內(nèi)容真實(shí)可靠,不存在抄襲、造假等學(xué)術(shù)不端行為。除文中已經(jīng)注明引用的內(nèi)容外,本設(shè)計(jì)不含其他個(gè)人或集體已經(jīng)發(fā)表或撰寫(xiě)過(guò)的研究成果。對(duì)本文的研究做出重要貢獻(xiàn)的個(gè)人和集體,均已在文中以明確方式標(biāo)明。如被發(fā)現(xiàn)設(shè)計(jì)中存在抄襲、造假等學(xué)術(shù)不端行為,本人愿承擔(dān)相應(yīng)的法律責(zé)任和一切后果。學(xué)生(簽名): 日期:指導(dǎo)教師關(guān)于學(xué)生畢業(yè)設(shè)計(jì)真實(shí)性審核的聲明本人鄭重聲明:已經(jīng)對(duì)學(xué)生畢業(yè)設(shè)計(jì)所涉及的內(nèi)容進(jìn)行嚴(yán)格審核,確定其成果均由學(xué)生在本人指導(dǎo)下取得,對(duì)他人論文及成果的引用已經(jīng)明確注明,不存在抄襲等學(xué)術(shù)不端行為。指導(dǎo)教師(簽名): 日期: 注:此聲明由指導(dǎo)教師和學(xué)生本人親筆簽名。摘要傳統(tǒng)定速空調(diào)的壓縮機(jī)轉(zhuǎn)速是恒定不變的,所以制冷量大小也是始終一樣的,壓縮機(jī)依靠其不斷地“開(kāi)、停”來(lái)調(diào)整室內(nèi)溫度,其一開(kāi)一停之間容易造成室溫忽冷忽熱,消耗較多電能,從而我們用到了變頻器。變頻器(Variable-frequencyDrive,VFD)是應(yīng)用變頻技術(shù)與微電子技術(shù),通過(guò)改變電機(jī)工作電源頻率方式來(lái)控制交流電動(dòng)機(jī)的電力控制設(shè)備。變頻器主要由整流(交流變直流)、濾波、逆變(直流變交流)、制動(dòng)單元、驅(qū)動(dòng)單元、檢測(cè)單元微處理單元等組成。變頻器靠?jī)?nèi)部IGBT的開(kāi)斷來(lái)調(diào)整輸出電源的電壓和頻率,根據(jù)電機(jī)的實(shí)際需要來(lái)提供其所需要的電源電壓,進(jìn)而達(dá)到節(jié)能、調(diào)速的目的,另外,變頻器還有很多的保護(hù)功能,如過(guò)流、過(guò)壓、過(guò)載保護(hù)等等。同時(shí)也就克服了定速空調(diào)的不足。變頻空調(diào)則依靠壓縮機(jī)轉(zhuǎn)速的快慢達(dá)到控制室溫的目的,室溫波動(dòng)小、電能消耗少,其舒適度大大提高。而運(yùn)用變頻控制技術(shù)的變頻空調(diào),可根據(jù)環(huán)境溫度自動(dòng)選擇制熱、制冷和除濕運(yùn)轉(zhuǎn)方式,使居室在短時(shí)間內(nèi)迅速達(dá)到所需要的溫度并在低轉(zhuǎn)速、低能耗狀態(tài)下以較小的溫差波動(dòng),實(shí)現(xiàn)了快速、節(jié)能和舒適控溫效果。同時(shí)運(yùn)用STC89C52單片機(jī),用編寫(xiě)好的程序,和溫度傳感器DS18B20所采集的溫度,把數(shù)據(jù)傳輸?shù)絃CD18B20液晶顯示屏上面,從而到達(dá)到目的。關(guān)鍵詞STC89C52LCD1602DS18B20abstractTraditional

fixedspeedair-conditioning

compressorspeed

isconstant,

so

therefrigeratingoutput

is

always

thesame,

compressoronitscontinuing"open,stop"toadjusttheindoortemperature,

theopeningbetweenthestopis

easytocausethetemperature

sometimeshotandsometimescold,

consumemorepower,

so

we

usethe

frequencyconverter.Thefrequencyconverter

(Variable-frequency

Drive,

VFD)

istheapplicationoffrequencyconversiontechnology

andmicroelectronictechnology,

electricalcontrolequipment

bychangingthemotorpowerfrequency

tocontrolACmotor.

Theconverter

ismainlycomposedofarectifying

(ACtoDC),

filter,inverter

(DCtoACconverter),

braking

unit,

driveunit,

detectionunit,

amicroprocessingunit

etc..

Theinverter

byinternal

IGBT

onvoltageand

frequencyoff

toadjusttheoutput

ofpowersupply,

thepowersupplyvoltage

needed

toprovide

accordingtotheactualneed

ofthemotor,

andthepurposesofenergysaving,

thepurposeofspeed,

inaddition,

inverter

and

many

protectionfunctions,

suchas

over-current,

over-voltage,

overloadprotection

andsoon.Atthesametimealso

overcomestheshortcomingsof

fixedspeedair-conditioning.Inverterairconditionerwilldependonthe

rotationalspeedofthecompressorspeed

tocontrolroomtemperature,

roomtemperaturefluctuationissmall,

lowpowerconsumption,

comfortgreatly

improved.

Whiletheuseof

variablefrequency

airconditioning

frequencyconversioncontroltechnology,itcanautomaticallyselect

heating,

refrigerating

and

dehumidifyingoperation

modeaccordingtothe

environment

temperature,

theroomquicklyinashorttime

toreachtherequiredtemperatureandat

lowspeed,

lowenergy

statetoasmallertemperaturefluctuations,

realizesfast,

energy-savingandcomfortabletemperaturecontrol

effect.Atthesametime,

theuseofSTC89C52microcontroller,

usingthe

compiledprogram,

andthetemperaturesensor

DS18B20acquisitionofthetemperature,

thedatatransmissiontothe

LCD18B20liquidcrystal

screenabove,

soasto

achievethepurposeof.KeywordsSTC89C52

LCD1602

DS18B20目錄摘要1Abstract2第一章方案的論證與設(shè)計(jì)51.1設(shè)計(jì)目標(biāo)和實(shí)現(xiàn)方法51.2方案論證與設(shè)計(jì)5第二章硬件的介紹62.1運(yùn)算模塊62.2基于STC89C52單片機(jī)72.3DS18B20溫度傳感器92.4LCD1602各個(gè)引腳及作用142.5輸入模塊17第三章軟件的設(shè)計(jì)183.1各個(gè)頭文件的源代碼主程序18第四章仿真及調(diào)試25第五章總結(jié)26參考文獻(xiàn)27附錄28附錄1原理圖28附錄2PCB圖29附錄3實(shí)物圖30致謝31第一章方案的論證與設(shè)計(jì)1.1設(shè)計(jì)目標(biāo)和實(shí)現(xiàn)方法為了制作一個(gè)簡(jiǎn)易的空調(diào)變頻器,我從單片機(jī)和電路作手,沒(méi)有選擇以往的空調(diào)變頻,而是采用了用單片機(jī)和電機(jī),溫度傳感器,以及液晶顯示器,蜂鳴器為核心,來(lái)實(shí)現(xiàn)其工程的。設(shè)計(jì)仿真和調(diào)試要用到Protues、Keil等軟件。1.2方案論證與設(shè)計(jì)根據(jù)功能和指標(biāo)要求,本系統(tǒng)選用MCS52單片機(jī)為主控機(jī)。通過(guò)擴(kuò)展必要的外圍接口電路,實(shí)現(xiàn)對(duì)抽獎(jiǎng)機(jī)的設(shè)計(jì)。主要設(shè)計(jì)方法如下:第一步:畫(huà)好原理圖及PCB圖第二部:用PROTEUS進(jìn)行軟件仿真第三部:焊接第四步:軟件及硬件調(diào)試根據(jù)需要我們可以采用自上而下的程序設(shè)計(jì)方法,此方法先從主程序開(kāi)始設(shè)計(jì),然后再編制各從屬程序和子程序,層層細(xì)化逐步求精,最終完成一個(gè)復(fù)雜程序的設(shè)計(jì)。這種方法比較符合人們的日常思維,缺點(diǎn)是一級(jí)的程序錯(cuò)誤會(huì)對(duì)整個(gè)程序產(chǎn)生影響第二章硬件的介紹本電路主要由主要分這幾大模塊電路,分別是電源模塊,單片機(jī)主控制電路模塊,DS18B20模塊,1602顯示模塊,LED顯示燈模塊,運(yùn)算模塊。下面我對(duì)各個(gè)模塊或芯片一一介紹,電源模塊主要是USB供電。2.1運(yùn)算模塊MCS-52單片機(jī)是在一塊芯片中集成了CPU、RAM、ROM、定時(shí)器/計(jì)數(shù)器和多功能I/O等一臺(tái)計(jì)算機(jī)所需要的基本功能部件。如果按功能劃分,它由如下功能部件組成,即微處理器(CPU)、數(shù)據(jù)存儲(chǔ)器(RAM)、程序存儲(chǔ)器(ROM/EPROM)、并行I/O口、串行口、定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)及特殊功能寄存器(SFR)。單片機(jī)是靠程序運(yùn)行的,并且可以修改。通過(guò)不同的程序?qū)崿F(xiàn)不同的功能,尤其是特殊的獨(dú)特的一些功能,通過(guò)使用單片機(jī)編寫(xiě)的程序可以實(shí)現(xiàn)高智能,高效率,以及高可靠性!因此我們采用單片機(jī)作為計(jì)算器的主要功能部件,可以進(jìn)行很快地實(shí)現(xiàn)運(yùn)算功能,如圖2-1所示:圖2-1AT89C51芯片2-2單片機(jī)外觀圖2.2基于STC89C52單片機(jī)單片機(jī)是我們電子產(chǎn)品實(shí)現(xiàn)自動(dòng)化、智能化必不可少的電子元器件,它的外觀如圖2-2所示:上圖是它們的引腳配置:40個(gè)引腳中,正電源和地線兩根,外置石英振蕩器的時(shí)鐘線兩根,4組8位共32個(gè)I/O口,中斷口線與P3口線復(fù)用。電源引腳:Vcc40腳正電源腳,工作電壓為5V,另有AT89C51工作電壓則是2.7-6V,引腳功能一樣。GND20腳接地端。外接晶體引腳。外接晶體引腳如圖2-3所示:圖2-3外接晶體管引腳Pin19:時(shí)鐘XTAL1腳,Pin18:時(shí)鐘XTAL2腳,XTAL1是片內(nèi)振蕩器的反相放大器輸入端,XTAL2則是輸出端,使用外部振蕩器時(shí),外部振蕩信號(hào)應(yīng)直接加到XTAL1,而XTAL2懸空。內(nèi)部方式時(shí),時(shí)鐘發(fā)生器對(duì)振蕩脈沖二分頻,如晶振為12MHz,時(shí)鐘頻率就為6MHz。晶振的頻率可以在1MHz-24MHz內(nèi)選擇。電容取30PF左右。

型號(hào)同樣為AT89C51的芯片,在其后面還有頻率編號(hào),有12,16,20,24MHz可選。大家在購(gòu)買(mǎi)和選用時(shí)要注意了。如AT89C5112PC就是最高振蕩頻率為12MHz,40P6封裝的普通商用芯片。復(fù)位:在振蕩器運(yùn)行時(shí),有兩個(gè)機(jī)器周期(24個(gè)振蕩周期)以上的高電平出現(xiàn)在此引腳時(shí),將使單片機(jī)復(fù)位,只要這個(gè)腳保持高電平,51芯片便循環(huán)復(fù)位。復(fù)位后P0-P3口均置1引腳表現(xiàn)為高電平,程序計(jì)數(shù)器和特殊功能寄存器SFR全部清零。當(dāng)復(fù)位腳由高電平變?yōu)榈碗娖綍r(shí),芯片為ROM的0000H處開(kāi)始運(yùn)行程序。常用的復(fù)位電路如下圖2-4所示。復(fù)位操作不會(huì)對(duì)內(nèi)部RAM有所影響。當(dāng)8051通電,時(shí)鐘電路開(kāi)始工作,在RESET引腳上出現(xiàn)24個(gè)時(shí)鐘周期以上的高電平,系統(tǒng)即初始復(fù)位。什么叫復(fù)位?復(fù)位是單片機(jī)重新執(zhí)行程序代碼的意思。8051的復(fù)位方式可以是自動(dòng)復(fù)位,也可以是手動(dòng)復(fù)位,如圖2-5所示。此外,RESET/Vpd還是一復(fù)用腳,Vcc掉電期間,此腳可接上備用電源,以保證單片機(jī)內(nèi)部RAM的數(shù)據(jù)不丟失,在本電路中我們不用復(fù)位電路,因?yàn)閺?fù)位電路對(duì)自己目標(biāo)的功能沒(méi)有什么意義。圖2-4復(fù)位電路圖圖2-5復(fù)位方式輸入輸出(I/O)引腳:P39-P32為P0.0-P0.7輸入輸出腳,稱為P0口,是一個(gè)8位漏極開(kāi)路型雙向I/O口。內(nèi)部不帶上拉電阻,當(dāng)外接上拉電阻時(shí),P0口能以吸收電流的方式驅(qū)動(dòng)八個(gè)LSTTL負(fù)載電路。通常在使用時(shí)外接上拉電阻,用來(lái)驅(qū)動(dòng)LCD1602的數(shù)據(jù)口。在訪問(wèn)外部程序和外部數(shù)據(jù)存儲(chǔ)器時(shí),P0口是分時(shí)轉(zhuǎn)換的地址(低8位)/數(shù)據(jù)總線,不需要外接上拉電阻。P1-P8為P1.0-P1.7輸入輸出腳,稱為P1口,是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/0口。P1口能驅(qū)動(dòng)4個(gè)LSTTL負(fù)載。通常在使用時(shí)外不需要外接上拉電阻,就可以直接驅(qū)動(dòng)發(fā)光二極管。端口置1時(shí),內(nèi)部上拉電阻將端口拉到高電平,作輸入用。P21-P28為P2.0-P2.7輸入輸出腳,稱為P2口,是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P2口能驅(qū)動(dòng)4個(gè)LSTTL負(fù)載。端口置1時(shí),內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對(duì)內(nèi)部Flash程序存儲(chǔ)器編程時(shí),接收高8位地址和控制信息。在訪問(wèn)外部程序和16位外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口送出高8位地址。而在訪問(wèn)8位地址的外部數(shù)據(jù)存儲(chǔ)器時(shí)其引腳上的內(nèi)容在此期間不會(huì)改變。P10-P17為P3.0-P3.7輸入輸出腳,稱為P3口,是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P2口能驅(qū)動(dòng)4個(gè)LSTTL負(fù)載,這8個(gè)引腳還用于專門(mén)的第二功能。端口置1時(shí),內(nèi)部上拉電阻將端口拉到高電平,作輸入用。P1-P3端口在做輸入使用時(shí),因內(nèi)部有上接電阻,被外部拉低的引腳會(huì)輸出一定的電流。除此之外P3端口還用于一些專門(mén)功能,具體請(qǐng)看下表3-1:P3引腳兼用功能P3.0串行通訊輸入(RXD)P3.1串行通訊輸出(TXD)P3.2外部中斷0(INT0)P3.3外部中斷1(INT1)P3.4定時(shí)器0輸入(T0)P3.5定時(shí)器1輸入(T1)P3.6外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通WRP3.7外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通RD表3-1P3口功能表其它的控制或復(fù)用引腳:(1)ALE/PROG30訪問(wèn)外部存儲(chǔ)器時(shí),ALE(地址鎖存允許)的輸出用于鎖存地址的低位字節(jié)。即使不訪問(wèn)外部存儲(chǔ)器,ALE端仍以不變的頻率輸出脈沖信號(hào)(此頻率是振蕩器頻率的1/6)。在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),出現(xiàn)一個(gè)ALE脈沖。對(duì)Flash存儲(chǔ)器編程時(shí),這個(gè)引腳用于輸入編程脈沖PROG(2)PSEN29該引是外部程序存儲(chǔ)器的選通信號(hào)輸出端。當(dāng)AT89C51由外部程序存儲(chǔ)器取指令或常數(shù)時(shí),每個(gè)機(jī)器周期輸出2個(gè)脈沖即兩次有效。但訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),將不會(huì)有脈沖輸出。(3)EA/Vpp31外部訪問(wèn)允許端。當(dāng)該引腳訪問(wèn)外部程序存儲(chǔ)器時(shí),應(yīng)輸入低電平。要使AT89S51只訪問(wèn)外部程序存儲(chǔ)器(地址為0000H-FFFFH),這時(shí)該引腳必須保持低電平。對(duì)Flash存儲(chǔ)器編程時(shí),用于施加Vpp編程電壓。2.3DS18B20溫度傳感器DS18B20數(shù)字溫度測(cè)量傳感器,網(wǎng)上介紹很多,我就不羅嗦了。見(jiàn)圖DS18B20與前產(chǎn)品DS1820的不同:DS18B20繼承了DS1820的全部?jī)?yōu)點(diǎn),并做了如下改進(jìn)1.供電范圍擴(kuò)大為3.0--5.5V。2.溫度分辨力可編程。3.轉(zhuǎn)換速率有很大提高.4.內(nèi)部存儲(chǔ)器映射關(guān)系發(fā)生變化。5.具有電源反接保護(hù)電路。5.體積減小一半。對(duì)我們使用來(lái)說(shuō)最大的不同就是DS18B20可以程序設(shè)定9~12位的分辨率數(shù)字值,而DS1820為固定的9位數(shù)字值,且溫度轉(zhuǎn)換時(shí)的延時(shí)時(shí)間由2s減為750ms。。電路的接法:DS18B20說(shuō)明書(shū)上介紹了幾種電路的接法,但我這里就說(shuō)最常用的一種先介紹一下DS18B20內(nèi)部的結(jié)構(gòu):常規(guī)的內(nèi)部邏輯圖我就不說(shuō)了,只說(shuō)說(shuō)跟我們使用直接相關(guān)的內(nèi)容。

DS18B20的內(nèi)部存儲(chǔ)資源分為8個(gè)字節(jié)的ROM、9個(gè)字節(jié)的RAM、3個(gè)字節(jié)的EEPROM如下圖:ROM:

在DS18B20內(nèi)部光刻了一個(gè)長(zhǎng)度為64bit的ROM,這個(gè)編碼是器件的身份識(shí)別標(biāo)志。如下圖64位光刻ROM的排列是:開(kāi)始(最低)8位是產(chǎn)品類型標(biāo)號(hào),對(duì)于DS18B20來(lái)說(shuō)就是(28H),接著的48位是該DS18B20自身的序列號(hào),最后8位是前面56位的循環(huán)冗余校驗(yàn)碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個(gè)DS18B20都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個(gè)DS18B20的目的。RAM:

高速暫存存儲(chǔ)器(RAM)由9個(gè)字節(jié)組成,包含了8個(gè)連續(xù)字節(jié),前兩個(gè)字節(jié)是測(cè)得的溫度信息,第一個(gè)字節(jié)的內(nèi)容是溫度溫度的低八位,第二個(gè)字節(jié)是溫度的高八位。第三個(gè)和第四個(gè)字節(jié)是溫度高限TH、溫度低限TL暫存區(qū),第五個(gè)字節(jié)是配置寄存器暫存區(qū),第6、7、8字節(jié)是系統(tǒng)保留用,就相當(dāng)于DS18B20的運(yùn)算內(nèi)存,第九個(gè)字節(jié)是冗余檢驗(yàn)字節(jié)。其分配如下表所示。對(duì)DS18B20的寫(xiě)和讀操作;接下來(lái)就是主機(jī)發(fā)出各種操作命令,但各種操作命令都是向DS18B20寫(xiě)0和寫(xiě)1組成的命令字節(jié),接收數(shù)據(jù)時(shí)也是從DS18B20讀取0或1的過(guò)程。因此首先要搞清主機(jī)是如何進(jìn)行寫(xiě)0、寫(xiě)1、讀0和讀1的。

寫(xiě)周期最少為60微秒,最長(zhǎng)不超過(guò)120微秒。寫(xiě)周期一開(kāi)始做為主機(jī)先把總線拉低1微秒表示寫(xiě)周期開(kāi)始。隨后若主機(jī)想寫(xiě)0,則繼續(xù)拉低電平最少60微秒直至寫(xiě)周期結(jié)束,然后釋放總線為高電平。若主機(jī)想寫(xiě)1,在一開(kāi)始拉低總線電平1微秒后就釋放總線為高電平,一直到寫(xiě)周期結(jié)束。而做為從機(jī)的DS18B20則在檢測(cè)到總線被拉底后等待15微秒然后從15us到45us開(kāi)始對(duì)總線采樣,在采樣期內(nèi)總線為高電平則為1,若采樣期內(nèi)總線為低電平則為0。讀寫(xiě)時(shí)序圖對(duì)于讀數(shù)據(jù)操作時(shí)序也分為讀0時(shí)序和讀1時(shí)序兩個(gè)過(guò)程。讀時(shí)隙是從主機(jī)把單總線拉低之后,在1微秒之后就得釋放單總線為高電平,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在檢測(cè)到總線被拉低1微秒后,便開(kāi)始送出數(shù)據(jù),若是要送出0就把總線拉為低電平直到讀周期結(jié)束。若要送出1則釋放總線為高電平。主機(jī)在一開(kāi)始拉低總線1微秒后釋放總線,然后在包括前面的拉低總線電平1微秒在內(nèi)的15微秒時(shí)間內(nèi)完成對(duì)總線進(jìn)行采樣檢測(cè),采樣期內(nèi)總線為低電平則確認(rèn)為0。采樣期內(nèi)總線為高電平則確認(rèn)為1。完成一個(gè)讀時(shí)序過(guò)程,至少需要60us才能完成。(為什么不可以像寫(xiě)時(shí)序那樣將采樣時(shí)間放在讀周期開(kāi)始后的第15微秒到45微秒之間呢。

DS18B20的說(shuō)明書(shū)上也說(shuō),由于主機(jī)拉低總線電平時(shí)間Tint、釋放總線時(shí)的恢復(fù)時(shí)間TRC與采樣時(shí)間Tsample之和必須小于15微秒。如下圖13。為了使讀出數(shù)據(jù)更可靠,說(shuō)明書(shū)上建議Tint和TRC保持時(shí)間盡可能小,把控制器采樣時(shí)間放到15微秒周期的最后。如下圖14??刂破髯x取”1”時(shí)序弄清了如何復(fù)位,如何寫(xiě)1寫(xiě)0和讀1讀0,我們現(xiàn)在就要看看在總線上如何進(jìn)行實(shí)際的運(yùn)用。

例如,我們做兩個(gè)操作,第一個(gè)是讓DS18B20進(jìn)行一次溫度的轉(zhuǎn)換。第二是讀取RAM內(nèi)的溫度。

①讓DS18B20進(jìn)行一次溫度的轉(zhuǎn)換。前面已經(jīng)講過(guò)每一個(gè)對(duì)DS18B20的操作都要有三個(gè)步驟。一是復(fù)位操作。二是對(duì)ROM的操作。三是對(duì)RAM的操作?,F(xiàn)在我們要做的是讓DS18B20進(jìn)行一次溫度的轉(zhuǎn)換,那具體的操作就是:1、主機(jī)先作個(gè)復(fù)位操作,2、主機(jī)再寫(xiě)跳過(guò)ROM的操作(CCH)命令,3、然后主機(jī)接著寫(xiě)個(gè)轉(zhuǎn)換溫度的操作命令,后面釋放總線至少一秒,讓DS18B20完成轉(zhuǎn)換的操作。在這里要注意的是每個(gè)命令字節(jié)在寫(xiě)的時(shí)候都是低字節(jié)先寫(xiě),例如CCH的二進(jìn)制為11001100,在寫(xiě)到總線上時(shí)要從低位開(kāi)始寫(xiě),寫(xiě)的順序是“零、零、壹、壹、零、零、壹、壹”。整個(gè)操作的總線狀態(tài)如下圖。②讀取RAM內(nèi)的溫度數(shù)據(jù)。同樣,這個(gè)操作也要接照三個(gè)步驟。1、主機(jī)發(fā)出復(fù)位操作并接收DS18B20的應(yīng)答(存在)脈沖。2、主機(jī)發(fā)出跳過(guò)對(duì)ROM操作的命令(CCH)。3、主機(jī)發(fā)出讀取RAM的命令(BEH),隨后主機(jī)依次讀取DS18B20發(fā)出的從第0一第8,共九個(gè)字節(jié)的數(shù)據(jù)。如果只想讀取溫度數(shù)據(jù),那在讀完第0和第1個(gè)數(shù)據(jù)后就不再理會(huì)后面DS18B20發(fā)出的數(shù)據(jù)即可。同樣讀取數(shù)據(jù)也是低位在前的。整個(gè)操作的總線狀態(tài)如下圖:在這里得說(shuō)明一下,第二步跳過(guò)對(duì)ROM操作的命令是在總線上只有一個(gè)器件時(shí),為節(jié)省時(shí)間而簡(jiǎn)化的操作,若總線上不止一個(gè)器件,那么跳過(guò)ROM操作命令將會(huì)使幾器件同時(shí)響應(yīng),這樣就會(huì)出現(xiàn)數(shù)據(jù)沖突。2.4LCD1602各個(gè)引腳及作用LCD1602做主要顯示模塊是因?yàn)轱@示方便,電路連接簡(jiǎn)單,程序更簡(jiǎn)單,在程序上與數(shù)碼管相比LCD1602不需要考慮段選與段選的間隔時(shí)間,再加上價(jià)格也不算太貴。功能簡(jiǎn)介L(zhǎng)CD1602是單片機(jī)應(yīng)用系統(tǒng)中的一宗簡(jiǎn)單而常用的輸出設(shè)備,其在系統(tǒng)中的主要作用是顯示單片機(jī)的輸出數(shù)據(jù)、狀態(tài)等。因而作為典型的外圍器件,LCD1602顯示單元是反映系統(tǒng)輸出和操作輸入的有效器件。LCD1602具備數(shù)字接口可以方便的和大年紀(jì)系統(tǒng)連接;它的優(yōu)點(diǎn)是價(jià)格低,壽命長(zhǎng),能顯示多種字符,并且程序控制簡(jiǎn)單。因而在單片機(jī)應(yīng)用系統(tǒng)中獲得了廣泛的應(yīng)用,所以在此設(shè)計(jì)中我首先選用了LCD1602作為顯示器件。如圖3-10所示:圖3-2LCD1602顯示模塊1602液晶也叫1602字符型液晶,它是一種專門(mén)用來(lái)顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊。它由若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符,每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因?yàn)槿绱怂运荒芎芎玫仫@示圖形(用自定義CGRAM,顯示效果也不好)。LCD1602是指顯示的內(nèi)容為16X2,即可顯示兩行,每行16個(gè)字符液晶模塊(顯示字符和數(shù)字)。市面上字符液晶大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780寫(xiě)的控制程序可以很方便地應(yīng)用于市面上大部分的字符型液晶。1602液晶也叫1602字符型液晶,它是一種專門(mén)用來(lái)顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊。它由若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符,每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因?yàn)槿绱怂运荒芎芎玫仫@示圖形(用自定義CGRAM,顯示效果也不好)。LCD1602是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個(gè)字符液晶模塊(顯示字符和數(shù)字)。市面上字符液晶大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780寫(xiě)的控制程序可以很方便地應(yīng)用于市面上大部分的字符型液晶。管腳功能:1602采用標(biāo)準(zhǔn)的16腳接口,其中:第1腳:VSS為電源地。第2腳:VCC接5V電源正極。第3腳:V0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高(對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度)。第4腳:RS為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。第5腳:RW為讀寫(xiě)信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫(xiě)操作。第6腳:E(或EN)端為使能(enable)端,高電平(1)時(shí)讀取信息,負(fù)跳變時(shí)執(zhí)行指令。第7~14腳:D0~D7為8位雙向數(shù)據(jù)端。第15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負(fù)極。操作控制:1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫(xiě)、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫(xiě)的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來(lái),我們就能看到字母“A”。指令集如圖所示:在單片機(jī)編程中還可以用字符型常量或變量賦值,如'A’。因?yàn)镃GROM儲(chǔ)存的字符代碼與我們PC中的字符代碼是基本一致的,因此我們?cè)谙駾DRAM寫(xiě)C51字符代碼程序時(shí)甚至可以直接用P1=‘A’這樣的方法。PC在編譯時(shí)就把'A'先轉(zhuǎn)換為41H代碼了。字符代碼0x00~0x0F為用戶自定義的字符圖形RAM(對(duì)于5X8點(diǎn)陣的字符,可以存放8組,5X10點(diǎn)陣的字符,存放4組),就是CGRAM了。0x20~0x7F為標(biāo)準(zhǔn)的ASCII碼,0xA0~0xFF為日文字符和希臘文字符,其余字符碼(0x10~0x1F及0x80~0x9F)沒(méi)有定義。以下是1602的16進(jìn)制ASCII碼表地址:讀的時(shí)候,先讀左邊那列,再讀上面那行,如:感嘆號(hào)!的ASCII為0x21,字母B的ASCII為0x42(前面加0x表示十六進(jìn)制)。2.5輸入模塊計(jì)算器輸入數(shù)字和其他功能按鍵要用到很多按鍵,因?yàn)榘存I較少,所以使用獨(dú)鍵的方式。而且這里獨(dú)立鍵盤(pán)掃描也相對(duì)簡(jiǎn)單。每個(gè)按鍵都有它的行值和列值,行值和列值的組合就是識(shí)別這個(gè)按鍵的編碼。矩陣的行線和列線分別通過(guò)兩并行接口和CPU通信。鍵盤(pán)的一端通過(guò)電阻接GND而接地是通過(guò)程序輸出數(shù)字“0”實(shí)現(xiàn)的。鍵盤(pán)處理程序的任務(wù)是:確定有無(wú)鍵按下,判斷哪一個(gè)鍵按下,鍵的功能是什么?還要消除按鍵在閉合或斷開(kāi)時(shí)的抖動(dòng)。兩個(gè)并行口中,一個(gè)輸出掃描碼,使按鍵逐行動(dòng)態(tài)接地;另一個(gè)并行口輸入按鍵狀態(tài),由行掃描值和回饋信號(hào)共同形成鍵編碼而識(shí)別按鍵,通過(guò)軟件查表,查出該鍵的功能。當(dāng)無(wú)按鍵閉合時(shí),P1.0~P1.1之間開(kāi)路;當(dāng)有鍵閉合時(shí),與閉合鍵相連的兩條I/O口線之間短路。圖3-1鍵盤(pán)電路第三章軟件的設(shè)計(jì)在LCD1602顯示以及LED燈顯示程序本人就不過(guò)多講解講解,對(duì)于這次的畢業(yè)設(shè)計(jì)我只是做了一個(gè)簡(jiǎn)易的空調(diào)變頻,結(jié)合實(shí)際我將變頻這一塊實(shí)際化,變成了用STC89C52單片機(jī)控制,結(jié)合溫度傳感器DS18B20和LCD1602液晶顯示器為核心,同時(shí)采用蜂鳴器來(lái)檢測(cè)溫度,來(lái)簡(jiǎn)易完成的室溫測(cè)試。當(dāng)然我也也采用了一個(gè)小型電機(jī),進(jìn)行驅(qū)動(dòng),雖然不是那么理想化,但是還是能較完善的實(shí)現(xiàn)其功能的。3.1各個(gè)頭文件的源代碼主程序LCD1602.h頭文件#include<regX52.h>#defineucharunsignedchar#defineuintunsignedintsbitlcden=P2^2;//LCD控制端口sbitlcdrs=P2^0;#definelcd_data_portP0voiddelay(uintz){ uintx,y; for(x=z;x>0;x--)for(y=110;y>0;y--);}voidwrite_com(ucharcom)/*LCD1602命令字寫(xiě)入*/ { lcdrs=0; lcd_data_port=com; delay(5); lcden=1; delay(5); lcden=0;}voidwrite_data(uchardate) /*LCD1602數(shù)據(jù)字寫(xiě)入*/{ lcdrs=1;lcd_data_port=date; delay(5); lcden=1; delay(5); lcden=0;}voidLCD1602_init() /*LCD1602初始化*/{ lcden=0; write_com(0x38);//顯示模式設(shè)置 write_com(0x0c); write_com(0x06);//顯示光標(biāo)移動(dòng) write_com(0x01);//顯示清屏 write_com(0x80+0x1);}delay.h頭文件/*************************************************************************************函數(shù)名:N微秒延時(shí)函數(shù)調(diào)用:delay_nus(i);參數(shù):1~65535返回值:無(wú)結(jié)果:占用CPU方式延時(shí)備注:應(yīng)用于普通89C(S)51單片機(jī),系統(tǒng)晶振11.0592MHz/*************************************************************************************/voiddelay_nus(unsignedinti) //延時(shí):i>=12,i的最小延時(shí)單12us{ i=i/10; while(--i);}/************************************************************************************函數(shù)名:N毫秒延時(shí)函數(shù)調(diào)用:delay_nms(i);參數(shù):1~65535返回值:無(wú)結(jié)果:占用CPU方式延時(shí)備注:應(yīng)用于普通89C(S)51單片機(jī),系統(tǒng)晶振11.0592MHz/************************************************************************************/voiddelay_nms(unsignedintn) //延時(shí)nms { n=n+1; while(--n) delay_nus(900); //延時(shí)1ms,同時(shí)進(jìn)行補(bǔ)償}特殊說(shuō)明:本來(lái)這里要求的晶振的時(shí)鐘頻率要求的是11.0592MHZ但是筆者已經(jīng)買(mǎi)了12MHZ的晶振,而且設(shè)計(jì)要求對(duì)時(shí)鐘也不是很精確,所以用這個(gè)頭文件是可取的。DS18B20頭文件源程序/*DS18B20_3.H*/sbitDQ=P1^3;//定義DQ引腳為P1.3/*******************************延時(shí)函數(shù)*********************************功能:在11.059MHz的晶振條件下調(diào)用本函數(shù)需要24μs,然后每次計(jì)數(shù)需16μs**************************************************************************/voidDS18_delay(intuseconds){ints;for(s=0;s<useconds;s++);}/*******************************復(fù)位函數(shù)********************************功能:完成單總線的復(fù)位操作。*復(fù)位時(shí)間為480μs,因此延時(shí)時(shí)間為(480-24)/16=28.5,取29μs。*經(jīng)過(guò)70μs之后檢測(cè)存在脈沖,因此延時(shí)時(shí)間為(70-24)/16=2.875,取3μs。**************************************************************************/unsignedcharow_reset(void){unsignedcharpresence;DQ=0;//將DQ線拉低DS18_delay(29);//保持480μsDQ=1;//DQ返回高電平DS18_delay(3);//等待存在脈沖presence=DQ;//獲得存在信號(hào)DS18_delay(25);//等待時(shí)間隙結(jié)束return(presence);//返回存在信號(hào),0=器件存在,1=無(wú)器件}/******************************位寫(xiě)入函數(shù)********************************功能:向單總線寫(xiě)入1位值:bitval*************************************************************************/voidwrite_bit(charbitval){DQ=0;//將DQ拉低開(kāi)始寫(xiě)時(shí)間隙if(bitval==1)DQ=1;//如果寫(xiě)1,DQ返回高電平DS18_delay(5);//在時(shí)間隙內(nèi)保持電平值,DQ=1;//DS18_delay函數(shù)每次循環(huán)延時(shí)16μs,因此DS18_delay(5)=104μs}/****************************字節(jié)寫(xiě)入函數(shù)********************************功能:向單總線寫(xiě)入一個(gè)字節(jié)值:val*************************************************************************/voidds18write_byte(charval){unsignedchari;unsignedchartemp;for(i=0;i<8;i++){//寫(xiě)入字節(jié),每次寫(xiě)入一位temp=val>>i;temp&=0x01;write_bit(temp);}DS18_delay(5);}/****************************位讀取函數(shù)*********************************功能:從單總線上讀取一位信號(hào),所需延時(shí)時(shí)間為15μs,因此無(wú)法調(diào)用前面定義*的DS18_delay()函數(shù),而采用一個(gè)for()循環(huán)來(lái)實(shí)現(xiàn)延時(shí)。************************************************************************/unsignedcharread_bit(void){unsignedchari;DQ=0;//將DQ拉低開(kāi)始讀時(shí)間隙DQ=1;//thenreturnhighfor(i=0;i<3;i++);//延時(shí)15μsreturn(DQ);//返回DQ線上的電平值}/****************************字節(jié)讀取函數(shù)********************************功能:從單總線讀取一個(gè)字節(jié)的值*************************************************************************/unsignedcharDSread_byte(void){unsignedchari;unsignedcharvalue=0;for(i=0;i<8;i++){//讀取字節(jié),每次讀取一個(gè)字節(jié)if(read_bit())value|=0x01<<i;//然后將其左移DS18_delay(6);}return(value);}/*******************************讀取溫度函數(shù)******************************功能:如果單總線節(jié)點(diǎn)上只有一個(gè)器件則可以直接掉用本函數(shù)。如果節(jié)點(diǎn)上有多個(gè)器*件,為了避免數(shù)據(jù)沖突,應(yīng)使用MatchROM函數(shù)來(lái)選中特定器件。*注:本函數(shù)是根據(jù)DS1820的溫度數(shù)據(jù)格式編寫(xiě)的,若用于DS18B20,必須根據(jù)*DS18B20的溫度數(shù)據(jù)格式作適當(dāng)修改。**************************************************************************/unsignedintReadTemperature(void){unsignedcharget[10];unsignedchartemp_lsb,temp_msb;unsignedintt;unsignedchark;ow_reset();ds18write_byte(0xCC);//跳過(guò)ROMds18write_byte(0x44);//啟動(dòng)溫度轉(zhuǎn)換DS18_delay(5);ow_reset();ds18write_byte(0xCC);//跳過(guò)ROMds18write_byte(0xBE);//讀暫存器for(k=0;k<2;k++){get[k]=DSread_byte();}temp_msb=get[1];//Signbyte+lsbittemp_lsb=get[0];//Tempdatapluslsbt=temp_msb*256+temp_lsb;t=t&0x0ff0;if(t<0xff&&t>0xf0)t=(-1)*t;returnt>>4;//temp_f=(((int)temp_c)*9)/5+32;//輸出華氏溫度值第四章仿真及調(diào)試在程序設(shè)計(jì)方法上,模塊化程序設(shè)計(jì)是單片機(jī)應(yīng)用中最常用的程序設(shè)計(jì)方法。設(shè)計(jì)的中心思想是把一個(gè)復(fù)雜應(yīng)用程序按整體功能劃分成若干相對(duì)獨(dú)立的程序模塊,各模

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論