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

下載本文檔

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

文檔簡介

畢業(yè)設(shè)計(jì)課題基于單片機(jī)的空調(diào)變頻器設(shè)計(jì)學(xué)生姓名學(xué)號專業(yè)電子信息工程班級院(系)機(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ì)不含其他個人或集體已經(jīng)發(fā)表或撰寫過的研究成果。對本文的研究做出重要貢獻(xiàn)的個人和集體,均已在文中以明確方式標(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)對學(xué)生畢業(yè)設(shè)計(jì)所涉及的內(nèi)容進(jìn)行嚴(yán)格審核,確定其成果均由學(xué)生在本人指導(dǎo)下取得,對他人論文及成果的引用已經(jīng)明確注明,不存在抄襲等學(xué)術(shù)不端行為。指導(dǎo)教師(簽名): 日期: 注:此聲明由指導(dǎo)教師和學(xué)生本人親筆簽名。摘要傳統(tǒng)定速空調(diào)的壓縮機(jī)轉(zhuǎn)速是恒定不變的,所以制冷量大小也是始終一樣的,壓縮機(jī)依靠其不斷地“開、停”來調(diào)整室內(nèi)溫度,其一開一停之間容易造成室溫忽冷忽熱,消耗較多電能,從而我們用到了變頻器。變頻器(Variable-frequencyDrive,VFD)是應(yīng)用變頻技術(shù)與微電子技術(shù),通過改變電機(jī)工作電源頻率方式來控制交流電動機(jī)的電力控制設(shè)備。變頻器主要由整流(交流變直流)、濾波、逆變(直流變交流)、制動單元、驅(qū)動單元、檢測單元微處理單元等組成。變頻器靠內(nèi)部IGBT的開斷來調(diào)整輸出電源的電壓和頻率,根據(jù)電機(jī)的實(shí)際需要來提供其所需要的電源電壓,進(jìn)而達(dá)到節(jié)能、調(diào)速的目的,另外,變頻器還有很多的保護(hù)功能,如過流、過壓、過載保護(hù)等等。同時也就克服了定速空調(diào)的不足。變頻空調(diào)則依靠壓縮機(jī)轉(zhuǎn)速的快慢達(dá)到控制室溫的目的,室溫波動小、電能消耗少,其舒適度大大提高。而運(yùn)用變頻控制技術(shù)的變頻空調(diào),可根據(jù)環(huán)境溫度自動選擇制熱、制冷和除濕運(yùn)轉(zhuǎn)方式,使居室在短時間內(nèi)迅速達(dá)到所需要的溫度并在低轉(zhuǎn)速、低能耗狀態(tài)下以較小的溫差波動,實(shí)現(xiàn)了快速、節(jié)能和舒適控溫效果。同時運(yùn)用STC89C52單片機(jī),用編寫好的程序,和溫度傳感器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各個引腳及作用142.5輸入模塊17第三章軟件的設(shè)計(jì)183.1各個頭文件的源代碼主程序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)方法為了制作一個簡易的空調(diào)變頻器,我從單片機(jī)和電路作手,沒有選擇以往的空調(diào)變頻,而是采用了用單片機(jī)和電機(jī),溫度傳感器,以及液晶顯示器,蜂鳴器為核心,來實(shí)現(xiàn)其工程的。設(shè)計(jì)仿真和調(diào)試要用到Protues、Keil等軟件。1.2方案論證與設(shè)計(jì)根據(jù)功能和指標(biāo)要求,本系統(tǒng)選用MCS52單片機(jī)為主控機(jī)。通過擴(kuò)展必要的外圍接口電路,實(shí)現(xiàn)對抽獎機(jī)的設(shè)計(jì)。主要設(shè)計(jì)方法如下:第一步:畫好原理圖及PCB圖第二部:用PROTEUS進(jìn)行軟件仿真第三部:焊接第四步:軟件及硬件調(diào)試根據(jù)需要我們可以采用自上而下的程序設(shè)計(jì)方法,此方法先從主程序開始設(shè)計(jì),然后再編制各從屬程序和子程序,層層細(xì)化逐步求精,最終完成一個復(fù)雜程序的設(shè)計(jì)。這種方法比較符合人們的日常思維,缺點(diǎn)是一級的程序錯誤會對整個程序產(chǎn)生影響第二章硬件的介紹本電路主要由主要分這幾大模塊電路,分別是電源模塊,單片機(jī)主控制電路模塊,DS18B20模塊,1602顯示模塊,LED顯示燈模塊,運(yùn)算模塊。下面我對各個模塊或芯片一一介紹,電源模塊主要是USB供電。2.1運(yùn)算模塊MCS-52單片機(jī)是在一塊芯片中集成了CPU、RAM、ROM、定時器/計(jì)數(shù)器和多功能I/O等一臺計(jì)算機(jī)所需要的基本功能部件。如果按功能劃分,它由如下功能部件組成,即微處理器(CPU)、數(shù)據(jù)存儲器(RAM)、程序存儲器(ROM/EPROM)、并行I/O口、串行口、定時器/計(jì)數(shù)器、中斷系統(tǒng)及特殊功能寄存器(SFR)。單片機(jī)是靠程序運(yùn)行的,并且可以修改。通過不同的程序?qū)崿F(xiàn)不同的功能,尤其是特殊的獨(dú)特的一些功能,通過使用單片機(jī)編寫的程序可以實(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)自動化、智能化必不可少的電子元器件,它的外觀如圖2-2所示:上圖是它們的引腳配置:40個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4組8位共32個I/O口,中斷口線與P3口線復(fù)用。電源引腳:Vcc40腳正電源腳,工作電壓為5V,另有AT89C51工作電壓則是2.7-6V,引腳功能一樣。GND20腳接地端。外接晶體引腳。外接晶體引腳如圖2-3所示:圖2-3外接晶體管引腳Pin19:時鐘XTAL1腳,Pin18:時鐘XTAL2腳,XTAL1是片內(nèi)振蕩器的反相放大器輸入端,XTAL2則是輸出端,使用外部振蕩器時,外部振蕩信號應(yīng)直接加到XTAL1,而XTAL2懸空。內(nèi)部方式時,時鐘發(fā)生器對振蕩脈沖二分頻,如晶振為12MHz,時鐘頻率就為6MHz。晶振的頻率可以在1MHz-24MHz內(nèi)選擇。電容取30PF左右。

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

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

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

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

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

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

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

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

溫馨提示

  • 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

提交評論