版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
-.zPAGE1摘要隨著人們生活水平的不斷提高,全球人口和經(jīng)濟(jì)規(guī)模的不斷增長(zhǎng),單片機(jī)控制無(wú)疑是人們追求的目標(biāo)之一,它所給人帶來(lái)的方便也是不可否認(rèn)的,其中,能源使用帶來(lái)的環(huán)境問(wèn)題及其誘因逐漸為人們所認(rèn)識(shí),“低碳經(jīng)濟(jì)〞這一概念開場(chǎng)進(jìn)入人們的視野。太陽(yáng)能具有儲(chǔ)量的“無(wú)限性〞、存在的普遍性,并且?guī)缀醪划a(chǎn)生任何污染。鑒于此,人們?cè)诖罅Φ拈_展太陽(yáng)能產(chǎn)業(yè)。太陽(yáng)能熱水器順應(yīng)時(shí)代開展的要求,滿足人們對(duì)環(huán)保綠色產(chǎn)品的需求。在人類文明程度日益提高的今天,它是現(xiàn)代文明社會(huì)的最正確選擇。本文提出了一種新型的太陽(yáng)能熱水器控制系統(tǒng)設(shè)計(jì)方案。本設(shè)計(jì)采用MSC-51系列單片機(jī)AT89S52作為中央處理器,采用DS1302實(shí)時(shí)時(shí)鐘,12864點(diǎn)陣式液晶顯示屏等模塊,完成時(shí)間溫度水位的顯示,以及時(shí)間和溫度的設(shè)定等功能。關(guān)鍵字:太陽(yáng)能熱水器;單片機(jī);實(shí)時(shí)時(shí)鐘;液晶顯示屏-.z目錄TOC\o"1-3"\h\u128861智能儀器儀表的簡(jiǎn)介1326571.1智能儀器儀表簡(jiǎn)介1146771.2智能儀器儀表的作用179021.3本課題的背景和意義141512系統(tǒng)設(shè)計(jì)簡(jiǎn)介317912.1方案論證3287022.2總體設(shè)計(jì)46512.2.1太陽(yáng)能熱水器的組成與工作原理4326002.2.2系統(tǒng)總體流程圖5216003太陽(yáng)能熱水器控制系統(tǒng)的硬件設(shè)計(jì)317293.1主控芯片模塊6139433.1.1主控芯片模塊電路6173193.1.2主控芯片簡(jiǎn)介7134363.2實(shí)時(shí)時(shí)鐘模塊278423.2.1實(shí)時(shí)時(shí)鐘模塊電路9265813.2.2實(shí)時(shí)時(shí)鐘簡(jiǎn)介10323443.3溫度傳感器模塊1123753.3.1溫度傳感器模塊電路1130783.3.2溫度傳感器簡(jiǎn)介12113503.4液晶顯示模塊14225703.4.1液晶顯示模塊電路14233153.4.2液晶顯示屏簡(jiǎn)介15310013.5鍵盤輸入模塊17156104設(shè)計(jì)語(yǔ)言及軟件介紹1984294.1匯編語(yǔ)言介紹1925644.2wave6000軟件介紹19258215系統(tǒng)軟件設(shè)計(jì)20212855.1概述2021135.2系統(tǒng)程序設(shè)計(jì)模塊20132525.3初始化程序21124535.4按鍵檢測(cè)及處理程序22235415.5讀取溫度的程序24214085.6控制源程序2585695.7調(diào)試及仿真2929777結(jié)論3330163參考文獻(xiàn)34-.z1智能儀器儀表的簡(jiǎn)介1.1智能儀器儀表簡(jiǎn)介儀器儀表〔英文:instrumentation〕儀器儀表是用以檢出、測(cè)量、觀察、計(jì)算各種物理量、物質(zhì)成分、物性參數(shù)等的器具或設(shè)備。真空檢漏儀、壓力表、測(cè)長(zhǎng)儀、顯微鏡、乘法器等均屬于儀器儀表。廣義來(lái)說(shuō),儀器儀表也可具有自動(dòng)控制、報(bào)警、信號(hào)傳遞和數(shù)據(jù)處理等功能,例如用于工業(yè)生產(chǎn)過(guò)程自動(dòng)控制中的氣動(dòng)調(diào)節(jié)儀表,和電動(dòng)調(diào)節(jié)儀表,以及集散型儀表控制系統(tǒng)也皆屬于儀器儀表。1.2智能儀器儀表的作用隨著全球人口和經(jīng)濟(jì)規(guī)模的不斷增長(zhǎng),能源使用帶來(lái)的環(huán)境問(wèn)題及其誘因逐漸為人們所認(rèn)識(shí),“低碳經(jīng)濟(jì)〞這一概念開場(chǎng)進(jìn)入人們的視野。人們?cè)诖罅Φ拈_展太陽(yáng)能產(chǎn)業(yè)。能源問(wèn)題將更為突出:①?gòu)拈L(zhǎng)遠(yuǎn)來(lái)看,全球已探明的石油儲(chǔ)量只能用到2020年,天然氣也只能延續(xù)到2040年左右,即使儲(chǔ)量豐富的煤炭資源也只能維持二三百年。②環(huán)境污染③溫室效應(yīng)引起全球氣候變化。因此,人類在解決上述能源問(wèn)題,實(shí)現(xiàn)可持續(xù)開展,只能依靠科技進(jìn)步,大規(guī)模地開發(fā)利用可再生干凈能源。太陽(yáng)能具有:①儲(chǔ)量的“無(wú)限性〞太陽(yáng)每秒鐘放射的能量大約是1.6×10的23次方kW,一年內(nèi)到達(dá)地球外表的太陽(yáng)能總量折合標(biāo)準(zhǔn)煤共約1.892×10的13次方千億t。②太陽(yáng)能對(duì)于地球上絕大多數(shù)地區(qū)具有存在的普遍性,可就地取用。在世界*圍內(nèi),太陽(yáng)能熱水器技術(shù)已很成熟,并已形成行業(yè),正在以優(yōu)良的性能不斷地沖擊電熱水器市場(chǎng)和燃?xì)鉄崴魇袌?chǎng)。2000年太陽(yáng)能熱水器取代47000套家用電熱水器;2000年日本太陽(yáng)能熱水器的擁有量將翻一番;以色列更是明文規(guī)定,所有新建房屋必須配備太陽(yáng)能熱水器。目前,我國(guó)是世界上太陽(yáng)能熱水器生產(chǎn)量和銷售量最大的國(guó)家。然而,目前市場(chǎng)上太陽(yáng)能熱水器的控制系統(tǒng)大多存在功能單一、操作復(fù)雜、控制不方便等問(wèn)題,很多控制器具有溫度和水位顯示功能,卻不具有溫度控制功能,致使熱水器陰天的時(shí)候不能方便使用。即使熱水器具有輔助加熱功能,也可能由于加熱時(shí)間不能控制而產(chǎn)生過(guò)燒,從而浪費(fèi)電能。1.3本課題的背景和意義資源是社會(huì)經(jīng)濟(jì)開展的物質(zhì)根底,經(jīng)濟(jì)愈開展,對(duì)資源的依賴性愈強(qiáng)。許多資源〔如煤、石油、天然氣等〕是不可再生的,而且在利用過(guò)程中給人類生存環(huán)境帶來(lái)極大污染,人類繁衍生息的物質(zhì)和環(huán)境根底受到嚴(yán)峻挑戰(zhàn)。加強(qiáng)清潔、可再生資源的開發(fā)利用,已引起全世界的普遍重視。太陽(yáng)能作為一種取之不盡、用之不竭的可再生資源,有節(jié)能、環(huán)保、平安和永續(xù)利用等優(yōu)點(diǎn),理應(yīng)成為開發(fā)利用的首選。其中太陽(yáng)能熱水器作為家庭生活用品,其開發(fā)利用在我國(guó)已走過(guò)了二十多年的歷程,生產(chǎn)技術(shù)成熟,具有明顯優(yōu)點(diǎn):〔一〕從節(jié)能環(huán)保的角度講,使用太陽(yáng)能熱水器不會(huì)對(duì)環(huán)境造成污染,同時(shí)為國(guó)家節(jié)約了大量能源,社會(huì)效益明顯,是國(guó)家重點(diǎn)推廣工程,使用前景廣闊。〔二〕太陽(yáng)能熱水器的使用壽命較長(zhǎng),使用太陽(yáng)能熱水器經(jīng)濟(jì)實(shí)惠。假設(shè)使用合理,其壽命可達(dá)15年甚至更長(zhǎng)。據(jù)測(cè)算,使用1平方米太陽(yáng)能熱水器,相當(dāng)于每年節(jié)約310度電。太陽(yáng)能熱水器的費(fèi)用只有燃?xì)鉄崴鞯钠叻种?,電熱水器的六分之一。?gòu)置太陽(yáng)能熱水器一次性投資3000元左右,使用5至6年就可實(shí)現(xiàn)與其熱水器的支出比照平衡。按照裝置壽命15年計(jì)算,其經(jīng)濟(jì)效益是十清楚顯的?!踩程?yáng)能熱水器集熱效果好,集熱時(shí)間更長(zhǎng)。只要陽(yáng)光能照射到的地方,就可以使用太陽(yáng)能熱水器,即使在高寒地區(qū)一年四季也可以正常使用。在我國(guó)**、**、**等地,太陽(yáng)能熱水器的研發(fā)和生產(chǎn)已形成規(guī)模,應(yīng)用太陽(yáng)能熱水器的場(chǎng)所也由家居使用擴(kuò)展到醫(yī)院、學(xué)校、賓館、飯店、游泳池、洗浴場(chǎng)所等。2系統(tǒng)設(shè)計(jì)簡(jiǎn)介2.1方案論證〔1〕方案一在單片機(jī)學(xué)習(xí)課程中,就遇到過(guò)一種方案,稱其為方案一。它通過(guò)三極管的導(dǎo)通截止特性來(lái)判斷液位的位置,并且可以通過(guò)按鍵切換檢測(cè)壓力。但是在過(guò)程中只能檢測(cè)三點(diǎn),雖然可以擴(kuò)展,但是占了太多的I/O口,容易造成資源的浪費(fèi)。而且僅顯示單元就占用了12個(gè)I/O口,同樣屬于資源浪費(fèi)。在電機(jī)電路設(shè)計(jì)方面,方案一采用的三極管的導(dǎo)通截止來(lái)控制點(diǎn)擊的正轉(zhuǎn)與反轉(zhuǎn),雖然設(shè)計(jì)簡(jiǎn)單,但是過(guò)多的使用三極管以及二極管類的元器件,也會(huì)使本錢升高。而且,既然是太陽(yáng)能熱水器的自動(dòng)控制裝置,則必不可少的就是溫度的檢測(cè),而方案一中卻忽略了這點(diǎn),造成了最大的殘缺。〔2〕方案二方案二主要解決了方案一中資源浪費(fèi)及過(guò)于使用分立元件的缺陷。在液位檢測(cè)方面,通過(guò)利用兩片CD4051芯片,它相當(dāng)于一個(gè)單刀八擲開關(guān),當(dāng)INH制止端為低電平即“0〞時(shí),開關(guān)接通哪一通道由輸入的3位地址碼ABC來(lái)決定。這樣就簡(jiǎn)單的解決了16個(gè)點(diǎn)檢測(cè)的問(wèn)題,并且在最大程度上減少了I/O口的使用。僅使用了8個(gè)I/O口即可控制16個(gè)點(diǎn)的檢測(cè),如果是方案一,則需要使用16個(gè)I/O口。而且在方案二中,使用目前比擬流行51系列單片機(jī)AT89S52。AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。使用Atmel公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得AT89S52在眾多嵌入式控制應(yīng)用系統(tǒng)中的優(yōu)勢(shì)明顯。在方案二中還解決了方案一種不能檢測(cè)溫度缺點(diǎn),使用了先進(jìn)的DS18B20芯片,DS18B20數(shù)字溫度傳感器是Dallas公司生產(chǎn)的1-Wire,即單總線器件,具有線路簡(jiǎn)單、體積小的特點(diǎn)。因此用他組成一個(gè)測(cè)溫系統(tǒng),具有線路簡(jiǎn)單,在1根通信線可以掛很多這樣的數(shù)字溫度傳感器,十分方便?!?〕方案選擇通過(guò)上述兩個(gè)方案的比擬,便能發(fā)現(xiàn)方案二設(shè)計(jì)的電路比方案一的電路有極大的優(yōu)勢(shì),性能全面,使用方便,而且簡(jiǎn)單、穩(wěn)定。應(yīng)選擇方案二。2.2總體設(shè)計(jì)2.2.1太陽(yáng)能熱水器的組成與工作原理1-集熱器2-下降水管3-循環(huán)水管4-補(bǔ)給水箱5-上升水管6-自來(lái)水管7-熱水出水管圖2.1熱水器的組成熱水器主要由集熱器、循環(huán)管道和水箱等組成,圖中為典型的熱水器裝置圖。圖中集熱器1按最正確傾角放置,下降水管2的一端與循環(huán)水箱3的下部相連,另一端與集熱器1的下集管接通。上升水管5與循環(huán)水箱3上部相連,另一端與集熱器1的上集管相接。補(bǔ)給水箱4供應(yīng)循環(huán)水箱3所需的冷水。集熱器吸收太陽(yáng)輻射后,集熱器內(nèi)溫度上升,水溫也隨之升高。水溫升高后,水的比重減輕,便經(jīng)上升水管進(jìn)入循環(huán)水箱上部。而循環(huán)水箱下部的冷水比重較大,就由水箱下流到集熱器下方,在集熱器內(nèi)受熱后又上升。這樣不斷對(duì)流循環(huán),水溫逐漸提高,直到集熱器吸收的熱量與散失的熱量相平衡時(shí),水溫不再升高。這種熱水利用循環(huán)加熱的原理,因此又稱循環(huán)熱水器。集熱器是一種利用溫室效應(yīng),將太陽(yáng)能輻射轉(zhuǎn)換為熱能的裝置,該裝置與一般熱水交換器不一樣,熱交換器通常只是液體到液體,或是液體到氣體的熱交換過(guò)程,而平板行集熱器時(shí)直接將太陽(yáng)輻射傳給液體或氣體,是一個(gè)復(fù)雜的傳熱過(guò)程。平板型集熱器構(gòu)造形式很多,世界上已實(shí)用的集熱器就有直管式、瓦楞式、扁管式、鋁翼式等二十多種。2.2.2系統(tǒng)總體流程圖開場(chǎng)初始化掃描鍵盤,是否有按鍵開場(chǎng)初始化掃描鍵盤,是否有按鍵N調(diào)用鍵盤處理子程序Y讀取水位信息和水箱溫度調(diào)用顯示子程序顯示水溫時(shí)間圖2.2系統(tǒng)總體流程圖3太陽(yáng)能熱水器控制系統(tǒng)的硬件設(shè)計(jì)3.1主控芯片模塊3.1.1主控芯片模塊電路單片機(jī)系統(tǒng)由AT89S52和一定功能的外圍電路組成,包括為單片機(jī)提供復(fù)位電壓的復(fù)位電路,提供系統(tǒng)頻率的晶振。這局部電路主要負(fù)責(zé)程序的存儲(chǔ)和運(yùn)行。對(duì)外接電容的值雖然沒(méi)有嚴(yán)格的要求,但電容的大小會(huì)影響振蕩器頻率的上下、諧振器的穩(wěn)定性、起振的快速性和溫度的穩(wěn)定性。晶體可在1.2MHz~12MHz之間任選,電容C1和C2的典型值在20pF~100pF之間選擇,但在60pF~70pF時(shí)振蕩器具有較高的頻率穩(wěn)定性。典型值通常選擇為30pF左右,但本電路采用30pF。AT89S52的復(fù)位是由外部的復(fù)位電路來(lái)實(shí)現(xiàn)的。復(fù)位電路通常采用上電自動(dòng)復(fù)位和按鈕復(fù)位兩種方式。本設(shè)計(jì)中所用到的是上電按鈕復(fù)位,如圖3.1所示。圖3.1單片機(jī)系統(tǒng)3.1.2主控芯片簡(jiǎn)介AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。使用ATMEL公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、有效的解決方案。AT89S52具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷構(gòu)造,全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停頓工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停頓,直到下一個(gè)中斷或硬件復(fù)位為止。8位微控制器8K字節(jié)在系統(tǒng)可編程FlashAT89S52。圖3.2為AT89S52的引腳圖圖3.2AT89S52的引腳圖AT89S52引腳功能說(shuō)明如下:VCC:電源電壓GND:地P0口:P0口是一個(gè)8位漏極開路的雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電平。對(duì)P0端口寫“1〞時(shí),引腳用作高阻抗輸入。當(dāng)外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0內(nèi)部上拉電阻被激活。在flash編程時(shí),P0口也用來(lái)接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn)時(shí),需要外部上拉電阻。P1口:P1口是一個(gè)具有內(nèi)部上拉電阻的8位雙向I/O口,P1輸出緩沖器能驅(qū)動(dòng)〔吸收或輸出電流〕4個(gè)TTL邏輯門電平。對(duì)P1端口寫“1〞時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流〔TTL〕。此外,P1.0和P1.2分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入〔P1.0/T2〕和時(shí)器/計(jì)數(shù)器2的觸發(fā)輸入〔P1.1/T2E*〕,具體如表3-1所示。在flash編程和校驗(yàn)P1口接收低8位地址字節(jié)。端口引腳第二功能P1.0T2〔定時(shí)器/計(jì)數(shù)器T2的外部計(jì)數(shù)輸入〕,時(shí)鐘輸出P1.1T2E*〔定時(shí)器/計(jì)數(shù)器T2的捕捉/重載觸發(fā)信號(hào)和方向控制〕P1.5MOSI〔在系統(tǒng)編程用〕P1.6MISO〔在系統(tǒng)編程用〕P1.7SCK〔在系統(tǒng)編程用〕表3-1P1口第二功能P2口:P2口是一個(gè)具有內(nèi)部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅(qū)動(dòng)4個(gè)TTL邏輯電平。對(duì)P2端口寫“1〞時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流〔IIL〕。在外部程序存儲(chǔ)器或用16位地址讀取外部數(shù)據(jù)存儲(chǔ)器〔例如執(zhí)行MOV*DPTR〕時(shí),P2口送出高八位地址。在這種應(yīng)用中,P2口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用8位地址〔如MOV*RI〕外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口輸出P2鎖存器的內(nèi)容。在flash編程和校驗(yàn)時(shí),P2口也接收高8位地址字節(jié)和一些控制信號(hào)。端口引腳第二功能端口引腳第二功能P3.0R*D(串行輸入口)P3.4TO(定時(shí)/計(jì)數(shù)器0)P3.1T*D(串行輸出口)P3.5T1(定時(shí)/計(jì)數(shù)器1)P3.2INTO(外中斷0)P3.6WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.3INT1(外中斷1)P3.7RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)表3-2P3口的第二功能此外,P3口還接收一些用于FLASH閃存編程和程序校驗(yàn)的控制信號(hào)。RST——復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將是單片機(jī)復(fù)位。WDT溢出將使該引腳輸出高電平,設(shè)置SFRAU*R的DISRTO位〔地址8EH〕可翻開或關(guān)閉該功能。DISRTO位缺省為RESET輸出高電平翻開狀態(tài)。ALE/PROG——當(dāng)外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE〔地址鎖存允許〕輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過(guò)一個(gè)ALE脈沖。如有必要,可通過(guò)對(duì)特殊功能存放器〔SFR〕區(qū)中的8EH單元的D0位置位,可制止ALE操作。該位置位后,只有一條MOV*和MOVC指令才能將ALE激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE制止位無(wú)效。PSEN——程序儲(chǔ)存允許〔PSEN〕輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89C52由外部程序存儲(chǔ)器取指令〔或數(shù)據(jù)〕時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸出兩個(gè)脈沖,在此期間,當(dāng)外部數(shù)據(jù)存儲(chǔ)器,將有兩次有效的PSEN信號(hào)。EA/VPP——外部允許,欲使CPU僅外部程序存儲(chǔ)器〔地址為0000H-FFFFH〕,EA端必須保持低電平〔接地〕。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。如EA端為高電平〔接Vcc端〕,CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器的指令。FLASH存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。*TAL1:振蕩器反相放大器及內(nèi)部時(shí)鐘發(fā)生器的輸入端。*TAL2:振蕩器反相放大器的輸出端。3.2實(shí)時(shí)時(shí)鐘模塊3.2.1實(shí)時(shí)時(shí)鐘模塊電路從古代的滴漏更鼓到近代的機(jī)械鐘,從電子表到目前的數(shù)字時(shí)鐘,為了準(zhǔn)確的測(cè)量和記錄時(shí)間,人們一直在努力改良計(jì)時(shí)工具。鐘表的數(shù)字化,大力推動(dòng)了計(jì)時(shí)的準(zhǔn)確性和可靠性。在單片機(jī)構(gòu)成的裝置中,實(shí)時(shí)時(shí)鐘是必不可少的部件。目前常用的實(shí)時(shí)時(shí)鐘,很多采用單片機(jī)的中斷效勞來(lái)實(shí)現(xiàn),這種方式一方面需要采用計(jì)數(shù)器,占用硬件資源,另一方面需要設(shè)置中斷、查詢等,同樣消耗單片機(jī)的資源,而且*些測(cè)控系統(tǒng)可能不允許;有的則使用并行接口的時(shí)鐘芯片,如MC146818、DS12887等,它們雖然能滿足單片機(jī)系統(tǒng)對(duì)實(shí)時(shí)時(shí)鐘的要求,但是這些芯片與單片機(jī)接口復(fù)雜,占用地址、數(shù)據(jù)總線多,芯片體積大,占用空間多,給其它設(shè)計(jì)帶來(lái)諸多不便。本設(shè)計(jì)選取串行接口時(shí)鐘芯片DS1302與單片機(jī)同步通信構(gòu)成數(shù)字時(shí)鐘電路,如圖3.3。其簡(jiǎn)單的三線接口能為單片機(jī)節(jié)省大量資源,DS1302的后背電源及對(duì)后背電源進(jìn)展涓細(xì)電流充電的能力保證電路斷電后仍能保存時(shí)間和數(shù)據(jù)信息等。這些優(yōu)點(diǎn)解決了目前常用的實(shí)時(shí)時(shí)鐘所無(wú)法解決的問(wèn)題。該時(shí)鐘電路強(qiáng)大的功能和優(yōu)越的性能,在很多領(lǐng)域的應(yīng)用中,尤其是*些自動(dòng)化控制、長(zhǎng)時(shí)間無(wú)人看守的測(cè)控系統(tǒng)等對(duì)時(shí)鐘準(zhǔn)確性和可靠性有較高要求的場(chǎng)合,具有很高的使用價(jià)值。圖3.3DS1302與單片機(jī)接口電路3.2.2實(shí)時(shí)時(shí)鐘簡(jiǎn)介DS1302是美國(guó)DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘芯片,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)展計(jì)時(shí),且具有閏年補(bǔ)償功能,工作電壓寬達(dá)2.5~5.5V。時(shí)鐘可工作在24小時(shí)格式或12小時(shí)〔AM/PM〕格式。DS1302與單片機(jī)的接口使用同步串行通信,僅用3條線與之相連接。可采用一次傳送一個(gè)字節(jié)或突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM存放器。DS1302是DS1202的升級(jí)產(chǎn)品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,同時(shí)提供了對(duì)后背電源進(jìn)展細(xì)電流充電的能力。DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc1+0.2V時(shí),Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。*1和*2是振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線,通過(guò)把RST輸入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位存放器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)展操作。如果在傳送過(guò)程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc>2.0V之前,RST必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向),后面有詳細(xì)說(shuō)明。SCLK為時(shí)鐘輸入端。控制字節(jié)的最高有效位〔位7〕必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入到DS1302中。位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位〔位0〕如為0表示要進(jìn)展寫操作,為1表示進(jìn)展讀操作,控制字節(jié)總是從最低位開場(chǎng)輸出。DS1302的復(fù)位引腳:通過(guò)把RST輸入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送.RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位存放器;其次,RST提供了終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)展操作。如果在傳送過(guò)程中置RST為低電平,則會(huì)終止此次數(shù)據(jù)傳送,并且I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc≥2.5V之前,RST必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。在控制指令字輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí)數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開場(chǎng)。同樣,在緊跟8位的控制指令字后的下一個(gè)SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位至高位7。DS1302共有12個(gè)存放器,其中有7個(gè)存放器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式。其日歷、時(shí)間存放器及其控制字見表3-3。存放器名命令字取值*圍各位內(nèi)容寫操作讀操作76543210秒存放器80H81H00--59CH10SECSEC分存放器82H83H00--59010MINMIN時(shí)存放器84H85H01-12或00-2312/24010HRHR日存放器86H87H01-28,29,30,310010DATEDATE月存放器88H89H01--1200010MMONTH周存放器8AH8BH01--0700000DAY年存放器8CH8DH00--9910YEARYEAR表3-3DS1302的日歷、時(shí)鐘存放器及其控制字此外,DS1302還有年份存放器、控制存放器、充電存放器、時(shí)鐘突發(fā)存放器及與RAM相關(guān)的存放器等。時(shí)鐘突發(fā)存放器可一次性順序讀寫除充電存放器外的所有存放器的內(nèi)容。DS1302與RAM相關(guān)的存放器分為兩類,一類是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0H--FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;再一類為突發(fā)方式下的RAM存放器,此方式下可一次性讀寫所有的RAM的31個(gè)字節(jié),命令控制字為FEH〔寫〕、FFH〔讀〕。3.3溫度傳感器模塊3.3.1溫度傳感器模塊電路基于DS18B20多點(diǎn)溫度測(cè)量系統(tǒng)以AT89C51為中心器件,以KEIL為系統(tǒng)開發(fā)平臺(tái),用C語(yǔ)言進(jìn)展程序設(shè)計(jì),以PROTEUS作為仿真軟件設(shè)計(jì)而成的。DS18B20是智能溫度傳感器,它的輸入/輸出采用數(shù)字量,以單總線技術(shù),接收主機(jī)發(fā)送的命令,根據(jù)DS18B20內(nèi)部的協(xié)議進(jìn)展相應(yīng)的處理,將轉(zhuǎn)換的溫度以串口發(fā)送給主機(jī)。主機(jī)按照通信協(xié)議用一個(gè)IO口模擬DS18B20的時(shí)序,發(fā)送命令〔初始化命令、ROM命令、功能命令〕給DS18B20,并讀取溫度值,在內(nèi)部進(jìn)展相應(yīng)的數(shù)值處理,用圖形液晶模塊顯示各點(diǎn)的溫度。在系統(tǒng)啟動(dòng)之時(shí),可以通過(guò)4×4鍵盤設(shè)置各點(diǎn)溫度的上限值,當(dāng)*點(diǎn)溫度超過(guò)設(shè)置值時(shí),報(bào)警器開場(chǎng)報(bào)警,從而實(shí)現(xiàn)了對(duì)各點(diǎn)溫度的實(shí)時(shí)監(jiān)控。每個(gè)DS18B20有自己的序列號(hào),因此本系統(tǒng)可以在一根總線上掛接了4個(gè)DS18B20,通過(guò)CRC校驗(yàn),對(duì)各個(gè)DS18B20的ROM進(jìn)展尋址,地址符合的DS18B20才作出響應(yīng),接收主機(jī)的命令,向主機(jī)發(fā)送轉(zhuǎn)換的溫度。采用這種DS18B20尋址技術(shù),使系統(tǒng)硬件電路更加簡(jiǎn)單,圖3.4所示。圖3.4系統(tǒng)硬件電路3.3.2溫度傳感器簡(jiǎn)介DS18B20數(shù)字溫度計(jì)是DALLAS公司生產(chǎn)的1-Wire,即單總線器件,具有線路簡(jiǎn)單,體積小的特點(diǎn)。因此用它來(lái)組成一個(gè)測(cè)溫系統(tǒng),具有線路簡(jiǎn)單,在一根通信線,可以掛很多這樣的數(shù)字溫度計(jì),十分方便。DS18B20產(chǎn)品的特點(diǎn):只要求一個(gè)端口即可實(shí)現(xiàn)通信。在DS18B20中的每個(gè)器件上都有獨(dú)一無(wú)二的序列號(hào)。實(shí)際應(yīng)用中不需要外部任何元器件即可實(shí)現(xiàn)測(cè)溫。測(cè)量溫度*圍在-55.C到+125.C之間。數(shù)字溫度計(jì)的分辨率用戶可以從9位到12位選擇。內(nèi)部有溫度上、下限告警設(shè)置。其引腳功能描述見表3-4。序號(hào)名稱引腳功能描述1GND地信號(hào)2DQ數(shù)字輸入輸出引腳,開漏單總線接口引腳,當(dāng)使用寄生電源時(shí),可向電源提供電源3VDD可選擇的VDD引腳,當(dāng)工作于寄生電源時(shí),該引腳必須接地表3-4DS18B20詳細(xì)引腳功能描述64位ROM存儲(chǔ)器件獨(dú)一無(wú)二的序列號(hào)。暫存器包含兩字節(jié)〔0和1字節(jié)〕的溫度存放器,用于存儲(chǔ)溫度傳感器的數(shù)字輸出。暫存器還提供一字節(jié)的上線警報(bào)觸發(fā)〔TH〕和下線警報(bào)觸發(fā)〔TL〕存放器〔2和3字節(jié)〕,和一字節(jié)的配置存放器〔4字節(jié)〕,使用者可以通過(guò)配置存放器來(lái)設(shè)置溫度轉(zhuǎn)換的精度。暫存器的5、6和7字節(jié)器件內(nèi)部保存使用。第八字節(jié)含有循環(huán)冗余碼〔CRC〕。DS18B20加電后,處在空閑狀態(tài)。要啟動(dòng)溫度測(cè)量和模擬到數(shù)字的轉(zhuǎn)換,處理器須向其發(fā)出ConvertT[44h]命令;轉(zhuǎn)換完后,DS18B20回到空閑狀態(tài)。溫度數(shù)據(jù)是以帶符號(hào)位的16-bit補(bǔ)碼存儲(chǔ)在溫度存放器中的。符號(hào)位說(shuō)明溫度是正值還是負(fù)值,正值時(shí)S=0,負(fù)值時(shí)S=1。DS18B20必須嚴(yán)格遵守這一命令序列,如果喪失任何一步或序列混亂,DS18B20都不會(huì)響應(yīng)主機(jī)〔除了SearchROM和AlarmSearch這兩個(gè)命令,在這兩個(gè)命令后,主機(jī)都必須返回到第一步〕。a.初始化:DS18B20所有的數(shù)據(jù)交換都由一個(gè)初始化序列開場(chǎng)。由主機(jī)發(fā)出的復(fù)位脈沖和跟在其后的由DS18B20發(fā)出的應(yīng)答脈沖構(gòu)成。當(dāng)DS18B20發(fā)出響應(yīng)主機(jī)的應(yīng)答脈沖時(shí),即向主機(jī)說(shuō)明它已處在總線上并且準(zhǔn)備工作。b.ROM命令:ROM命令通過(guò)每個(gè)器件64-bit的ROM碼,使主機(jī)指定*一特定器件〔如果有多個(gè)器件掛在總線上〕與之進(jìn)展通信。DS18B20的ROM如表3-5所示,每個(gè)ROM命令都是8bit長(zhǎng)。指令協(xié)議功能讀ROM33H讀DS18B20中的編碼(即64位地址)符合ROM55H發(fā)出此命令后,接著發(fā)出64位ROM編碼,單總線上與該編碼相對(duì)應(yīng)的DS18B20,使之作出響應(yīng),為下一步對(duì)該DS18B20的讀寫作準(zhǔn)備搜索ROM0F0H用于確定掛接在同一總線上DS18B20的個(gè)數(shù)和識(shí)別64位ROM地址,為操作各器件作好準(zhǔn)備跳過(guò)ROM0CCH忽略64位ROM地址,直接向DS18B20V溫度轉(zhuǎn)換命令,適用于單個(gè)DS18B20工作告警搜索命令0ECH執(zhí)行后,只有溫度超過(guò)廟宇值上限或下限的片子才做出響應(yīng)溫度轉(zhuǎn)換44H啟動(dòng)DS18B20進(jìn)展溫度轉(zhuǎn)換,轉(zhuǎn)換時(shí)間最長(zhǎng)為500ms(典型為200ms),結(jié)果豐入內(nèi)部9字節(jié)RAM中讀暫存器BEH讀內(nèi)部RAM中9字節(jié)的內(nèi)容寫暫存器4EH發(fā)出向內(nèi)部RAM的第3、4字節(jié)寫上、下溫度數(shù)據(jù)命令,緊該溫度命令之后,傳達(dá)兩字節(jié)的數(shù)據(jù)復(fù)制暫存器48H將RAM中第3、4字內(nèi)容復(fù)制到E2PROM中重調(diào)E2PROM0B8H將E2PROM中內(nèi)容恢復(fù)到RAM中的第3、4字節(jié)讀供電方式0B4H讀DS18B20的供電模式,寄生供電時(shí)DS18B20發(fā)送“0〞,外部供電時(shí)DS18B20發(fā)送“1〞表3-5ROM命令3.4液晶顯示模塊3.4.1液晶顯示模塊電路液晶顯示模塊以其微功耗、體積小、顯示內(nèi)容豐富、模塊化、接口電路簡(jiǎn)單等諸多優(yōu)點(diǎn)得到廣泛應(yīng)用。液晶顯示模塊分字符型和點(diǎn)陣型兩種,前者只能顯示常用的字符,點(diǎn)陣型液晶顯示模塊除顯示字符外還能顯示各種圖形和漢字。如圖3.5所示,為液晶顯示屏與單片機(jī)的連接電路圖。3.5液晶顯示屏與單片機(jī)的連接電路3.4.2液晶顯示屏簡(jiǎn)介12864是一種具有4位/8位并行、2線或3線串行多種接口方式,內(nèi)部含有國(guó)標(biāo)一級(jí)、二級(jí)簡(jiǎn)體中文字庫(kù)的點(diǎn)陣圖形液晶顯示模塊;其顯示分辨率為128×64,內(nèi)置8192個(gè)16*16點(diǎn)漢字,和128個(gè)16*8點(diǎn)ASCII字符集。該模塊靈活的接口方式和簡(jiǎn)單、方便的操作指令,可構(gòu)成全中文人機(jī)交互圖形界面??梢燥@示8×4行16×16點(diǎn)陣的漢字。可完成圖形顯示。電壓低功耗是其又一顯著特點(diǎn)。由該模塊構(gòu)成的液晶顯示方案與同類型的圖形點(diǎn)陣液晶顯示模塊相比,不管硬件電路構(gòu)造或顯示程序都要簡(jiǎn)潔得多,且該模塊的價(jià)格也略低于一樣點(diǎn)陣的圖形液晶模塊。圖3.6LCD構(gòu)造尺寸根本特性:低電源電壓〔VDD:+3.0--+5.5V〕顯示分辨率:128×64點(diǎn)內(nèi)置漢字字庫(kù),提供8192個(gè)16×16點(diǎn)陣漢字(簡(jiǎn)繁體可選)內(nèi)置128個(gè)16×8點(diǎn)陣字符2MHZ時(shí)鐘頻率顯示方式:STN、半透、正顯驅(qū)動(dòng)方式:1/32DUTY,1/5BIAS視角方向:6點(diǎn)背光方式:側(cè)部高亮白色LED,功耗僅為普通LED的1/5—1/10通訊方式:串行、并口可選內(nèi)置DC-DC轉(zhuǎn)換電路,無(wú)需外加負(fù)壓無(wú)需片選信號(hào),簡(jiǎn)化軟件設(shè)計(jì)工作溫度:0℃-+55℃,存儲(chǔ)溫度:-20℃-+60℃控制器接口信號(hào)說(shuō)明:如表3-6,3-7RSR/W功能說(shuō)明LLMPU寫指令到指令暫存器〔IR〕LH讀出忙標(biāo)志〔BF〕及地址記數(shù)器〔AC〕的狀態(tài)HLMPU寫入數(shù)據(jù)到數(shù)據(jù)暫存器〔DR〕HHMPU從數(shù)據(jù)暫存器〔DR〕中讀出數(shù)據(jù)表3-6RS和R/W的配合選擇決定控制界面的4種模式E狀態(tài)執(zhí)行動(dòng)作結(jié)果高——>低I/O緩沖——>DR配合/W進(jìn)展寫數(shù)據(jù)或指令高DR——>I/O緩沖配合R進(jìn)展讀數(shù)據(jù)或指令低/低——>高無(wú)動(dòng)作表3-7E信號(hào)忙標(biāo)志:BF。BF標(biāo)志提供內(nèi)部工作情況.BF=1表示模塊在進(jìn)展內(nèi)部操作,此時(shí)模塊不承受外部指令和數(shù)據(jù).BF=0時(shí),模塊為準(zhǔn)備狀態(tài),隨時(shí)可承受外部指令和數(shù)據(jù)。利用STATUSRD指令,可以將BF讀到DB7總線,從而檢驗(yàn)?zāi)K之工作狀態(tài)。字型產(chǎn)生ROM〔CGROM〕:字型產(chǎn)生ROM〔CGROM〕提供8192個(gè)此觸發(fā)器是用于模塊屏幕顯示開和關(guān)的控制。DFF=1為開顯示〔DISPLAYON),DDRAM的內(nèi)容就顯示在屏幕上,DFF=0為關(guān)顯示〔DISPLAYOFF)。DFF的狀態(tài)是指令DISPLAYON/OFF和RST信號(hào)控制的。顯示數(shù)據(jù)RAM〔DDRAM〕:模塊內(nèi)部顯示數(shù)據(jù)RAM提供64×2個(gè)位元組的空間,最多可控制4行16字〔64個(gè)字〕的中文字型顯示,當(dāng)寫入顯示數(shù)據(jù)RAM時(shí),可分別顯示CGROM與CGRAM的字型;此模塊可顯示三種字型,分別是半角英數(shù)字型(16*8)、CGRAM字型及CGROM的中文字型,三種字型的選擇,由在DDRAM中寫入的編碼選擇,在0000H—0006H的編碼中〔其代碼分別是0000、0002、0004、0006共4個(gè)〕將選擇CGRAM的自定義字型,02H—7FH的編碼中將選擇半角英數(shù)字的字型,至于A1以上的編碼將自動(dòng)的結(jié)合下一個(gè)位元組,組成兩個(gè)位元組的編碼形成中文字型的編碼BIG5〔A140—D75F〕,GB〔A1A0-F7FFH〕。字型產(chǎn)生RAM(CGRAM):字型產(chǎn)生RAM提供圖象定義(造字)功能,可以提供四組16×16點(diǎn)的自定義圖象空間,使用者可以將內(nèi)部字型沒(méi)有提供的圖象字型自行定義到CGRAM中,便可和CGROM中的定義一樣地通過(guò)DDRAM顯示在屏幕中。地址計(jì)數(shù)器AC:地址計(jì)數(shù)器是用來(lái)貯存DDRAM/CGRAM之一的地址,它可由設(shè)定指令暫存器來(lái)改變,之后只要讀取或是寫入DDRAM/CGRAM的值時(shí),地址計(jì)數(shù)器的值就會(huì)自動(dòng)加一,當(dāng)RS為“0〞時(shí)而R/W為“1〞時(shí),地址計(jì)數(shù)器的值會(huì)被讀取到DB6——DB0中。光標(biāo)/閃爍控制電路:此模塊提供硬體光標(biāo)及閃爍控制電路,由地址計(jì)數(shù)器的值來(lái)指定DDRAM中的光標(biāo)或閃爍位置。3.5鍵盤輸入模塊一般具有人機(jī)對(duì)話的單片機(jī)系統(tǒng)少不了會(huì)有鍵盤。本設(shè)計(jì)采用三個(gè)按鍵,最正確的接口方案是獨(dú)立式接法,即每一個(gè)I/O口上只接一個(gè)按鍵,按鍵的另一端接地。獨(dú)立式鍵盤的實(shí)現(xiàn)方法是利用單片機(jī)I/O口讀取口的電平上下來(lái)判斷是否有鍵按下。我們將按鍵的一端接地,另一端接一個(gè)I/O口,程序開場(chǎng)時(shí)將此I/O口置于高電平,平時(shí)無(wú)按鍵按下時(shí)I/O口保護(hù)高電平。當(dāng)有鍵按下時(shí),此I/O口與地短路迫使I/O口為低電平。按鍵釋放后,與單片機(jī)連接的上拉電阻使I/O口仍然保持高電平。本設(shè)計(jì)所要做的就是在程序中查詢此I/O口的電平狀態(tài)就可以了解是否有按鍵動(dòng)作了。值得注意的是,本設(shè)計(jì)在用單片機(jī)對(duì)鍵盤處理的時(shí)候涉及到了一個(gè)重要的過(guò)程,那就是鍵盤的去抖動(dòng)。這里說(shuō)的抖動(dòng)是機(jī)械的抖動(dòng),是當(dāng)鍵盤在未按到按下的臨界區(qū)產(chǎn)生的電平不穩(wěn)定正?,F(xiàn)象,并不是我們?cè)诎存I時(shí)通過(guò)注意可以防止的。這種抖動(dòng)一般在10~200毫秒之間,這種不穩(wěn)定電平的抖動(dòng)時(shí)間對(duì)于人來(lái)說(shuō)太快了,而對(duì)于時(shí)鐘是微秒級(jí)的單片機(jī)而言則是漫長(zhǎng)的。為了提高系統(tǒng)的穩(wěn)定性,必須去除或避開它。此處我采用軟件去抖動(dòng),實(shí)現(xiàn)方法是先查詢按鍵當(dāng)有低電平出現(xiàn)時(shí)立即延時(shí)10~200毫秒以避開抖動(dòng),延時(shí)完畢再讀一次I/O口的值。按鍵分工,從左至右依次為1、2、3號(hào)按鍵,一號(hào)鍵模式鍵,二號(hào)三號(hào)鍵為加減鍵。圖3.7鍵盤接口電路-.z4設(shè)計(jì)語(yǔ)言及軟件介紹4.1匯編語(yǔ)言介紹匯編語(yǔ)言是一種功能很強(qiáng)的程序設(shè)計(jì)語(yǔ)言,也是利用計(jì)算機(jī)所有硬件特性并能直接控制硬件的語(yǔ)言。匯編語(yǔ)言〞作為一門語(yǔ)言,對(duì)應(yīng)于高級(jí)語(yǔ)言的編譯器,需要一個(gè)“匯編器〞來(lái)把匯編語(yǔ)言原文件匯編成機(jī)器可執(zhí)行的代碼。4.2wave6000軟件介紹這個(gè)軟件是**偉福公司的單片機(jī)開發(fā)軟件,一般就是用在C51單片機(jī)。不需要購(gòu)置仿真器,使用軟件模擬器就可以了,使用很方便的。也支持KEILC,但最好不要在WAVE內(nèi)使用C,如果想用C編寫,還是用KEILC方便。WAVE6000編譯軟件,采用中文界面。用戶源程序大小不受限制,有豐富的窗口顯示方式,能夠多方位、動(dòng)態(tài)地展示程序的執(zhí)行過(guò)程。其工程管理功能強(qiáng)大,可使單片機(jī)程序化大為小,化繁為簡(jiǎn),便于管理。另外,其書簽、斷點(diǎn)管理功能以及外設(shè)管理功能等為51單片機(jī)的仿真帶來(lái)極大的便利。5系統(tǒng)軟件設(shè)計(jì)5.1概述單片機(jī)開發(fā)中除必要的硬件外,同樣離不開軟件,本系統(tǒng)的軟件編程設(shè)計(jì)是在Keil軟件環(huán)境中完成的。我們寫的C語(yǔ)言、匯編語(yǔ)言源程序要變?yōu)镃PU可以執(zhí)行的機(jī)器碼有兩種方法,一種是手工匯編,另一種是機(jī)器匯編,目前已極少使用手工匯編的方法了。機(jī)器匯編是通過(guò)匯編軟件將源程序變?yōu)闄C(jī)器碼,用于MCS-51單片機(jī)的匯編軟件有早期的A51,隨著單片機(jī)開發(fā)技術(shù)的不斷開展,從普遍使用匯編語(yǔ)言到逐漸使用高級(jí)語(yǔ)言開發(fā),單片機(jī)的開發(fā)軟件也在不斷開展,Keil軟件是目前最流行開發(fā)51系列單片機(jī)的軟件,這從近年來(lái)各仿真機(jī)廠商紛紛宣布全面支持Keil即可看出。Keil提供了包括C編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過(guò)一個(gè)集成開發(fā)環(huán)境〔uVision〕將這些部份組合在一起。掌握這一軟件的使用對(duì)于使用51系列單片機(jī)的愛好者來(lái)說(shuō)是十分必要的,如果使用C語(yǔ)言編程,則Keil幾乎就是不二之選。即使不使用C語(yǔ)言而僅用匯編語(yǔ)言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令人事半功倍。KeilC51是美國(guó)KeilSoftware公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、構(gòu)造性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。用過(guò)匯編語(yǔ)言后再使用C來(lái)開發(fā),體會(huì)更加深刻。
KeilC51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到KeilC51生成的目標(biāo)代碼效率非常之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能表達(dá)高級(jí)語(yǔ)言的優(yōu)勢(shì)。5.2系統(tǒng)程序設(shè)計(jì)模塊本課題設(shè)計(jì)的太陽(yáng)能熱水器控制系統(tǒng)的軟件程序設(shè)計(jì)主要由〔1〕初始化程序,〔2〕掃描按鍵程序,〔3〕按鍵處理子程序,〔4〕讀取水位信息、水箱溫度和時(shí)間程序,〔6〕調(diào)用顯示子程序,六個(gè)局部組成。系統(tǒng)總體流程圖如圖5.1所示。開場(chǎng)開場(chǎng)初始化掃描鍵盤,是否有按鍵N調(diào)用鍵盤處理子程序Y讀取水位信息和水箱溫度調(diào)用顯示子程序顯示水溫時(shí)間圖5.1系統(tǒng)總體流程圖5.3初始化程序太陽(yáng)能熱水器控制系統(tǒng)在接通電源后,首先要對(duì)系統(tǒng)進(jìn)展初始化。初始化的過(guò)程包括啟動(dòng)DS1302,啟動(dòng)12864,對(duì)12864進(jìn)展清屏。初始化流程圖如下:初始化開場(chǎng)初始化開場(chǎng)啟動(dòng)DS1302啟動(dòng)12864清屏圖5.2系統(tǒng)初始化流程圖voidstart(void)//初始化函數(shù){unsignedchari;set_time(0*8e,0*00);//取消寫保護(hù)set_time(0*80,0*00);//啟動(dòng)時(shí)鐘set_time(0*84,0*00);//設(shè)置24小時(shí)模式set_time(0*90,0*a5);//時(shí)鐘時(shí)鐘充電模式set_time(0*8e,0*80);//啟動(dòng)寫保護(hù)RES1=0;RES1=1;dis_write_cmd(0*af);//啟動(dòng)12864clean();//清屏5.4按鍵檢測(cè)及處理程序在太陽(yáng)能熱水器初始化完成之后,系統(tǒng)便會(huì)進(jìn)入鍵盤掃描狀態(tài),此狀態(tài)下,主控芯片AT89S52會(huì)不斷掃描是否有鍵按下,即等待用戶輸入。在檢測(cè)到有鍵按下后,根據(jù)按下的次數(shù)〔按一下設(shè)置“分〞,按兩下設(shè)置“時(shí)〞,三下設(shè)置“星期〞,以此類推〕,在運(yùn)用“加〞“減〞分別設(shè)置。按鍵檢測(cè)及處理流程圖如下圖:〔以按下“一下〞為例〕開場(chǎng)掃描開場(chǎng)掃描是否有鍵按下否是一下〔設(shè)置分〕是否為“+〞鍵是“分〞加1否“分〞減1圖5.3按鍵檢測(cè)及處理程序流程圖按鍵檢測(cè)及處理程序清單如下:while(1)//總循環(huán){while(state_button==0)//狀態(tài)0循環(huán){…//無(wú)鍵按下的處理程序…}while(state_button!=0)//狀態(tài)非0循環(huán){set_time(0*80,0*80);//啟動(dòng)時(shí)鐘set_time(0*8e,0*00);//啟動(dòng)保護(hù)位if(state_button==1)//狀態(tài)1設(shè)置分{if(time_jia==1)//判斷按鈕加是否按下過(guò){minute0++;//分操作下面所有的加減同理if(minute0>9)//minute0最大為9,minute1最大為5{minute1++;minute0=0;if(minute1>5){minute1=0;}}time_jia=0;//按鍵清零表示已經(jīng)執(zhí)行完}if(time_jian==1){minute0--;if(minute0<0){minute1--;minute0=9;if(minute1<0){minute1=5;}}time_jian=0;}}5.5讀取溫度的程序本設(shè)計(jì)采用while循環(huán),在沒(méi)有鍵按下時(shí),跳出while循環(huán),進(jìn)展下邊的語(yǔ)句,即讀取溫度,并將其顯示在12864上。在讀取的過(guò)程中,要注意溫度的正負(fù)。讀取溫度的流程圖如圖3.4所示:復(fù)位復(fù)位讀取溫度數(shù)據(jù)判斷正負(fù)正轉(zhuǎn)為十進(jìn)制負(fù)取反后,轉(zhuǎn)十進(jìn)制圖5.4讀取溫度流程圖讀取溫度程序清單:wendu_reset();//溫度復(fù)位wendu_write(0*cc);//跳過(guò)ROM搜索命令wendu_write(0*44);//啟動(dòng)一次轉(zhuǎn)換wendu_reset();//復(fù)位wendu_write(0*cc);//跳過(guò)ROM搜索命令wendu_write(0*be);//發(fā)送讀命令a=wendu_read();//讀高字節(jié)8位b=wendu_read();//讀低字節(jié)8位pn=b&0*80;//判斷溫度正負(fù)if(pn==0)//如果溫度為正{t=((b*256)+a)/16;//直接轉(zhuǎn)化為十進(jìn)制數(shù)}if(pn==0*80)//如果溫度為負(fù){a=~a;//將數(shù)據(jù)取反b=~b;c=a+1;//低位加1if(c==0*00)//當(dāng)?shù)臀粸?55時(shí),加1后為0,這時(shí)需進(jìn)位{b++;}//向高位進(jìn)1t=((b*256)+c)/16;//再進(jìn)展轉(zhuǎn)換十進(jìn)制5.6控制源程序*include"at89*51.h"*include"intrins.h"sbitRES1=P2^0;//12864復(fù)位sbitA0=P2^1;//命令數(shù)據(jù)選擇sbitRW=P2^2;//讀寫選擇sbitE=P2^3;//使能信號(hào)sbitB0=P0^0;//狀態(tài)按鈕sbitB1=P0^1;//執(zhí)行加按鈕sbitB2=P0^2;//執(zhí)行減按鈕sbitDQ=P3^0;//溫度線sbitIO=P3^3;//DS1302IO口設(shè)置sbitSCLK=P3^2;//時(shí)鐘線設(shè)置sbitCE=P3^1;//復(fù)位/片選腳設(shè)置unsignedcharstate_button,time_jia,time_jian;//按鈕參數(shù)voiddelay(unsignedinti)//延遲程序{while(i--);//12MHz下跳轉(zhuǎn)到延遲函數(shù)需2微妙,while循環(huán)一次4.5微秒。}/*DS18B20*/voidwendu_reset(void)//DS18B20復(fù)位程序{unsignedcharr=0;DQ=1;//致高電平,為下面復(fù)位時(shí)總線下拉準(zhǔn)備delay(8);DQ=0;//總線下拉,開場(chǎng)復(fù)位delay(90);//復(fù)位延遲,不得小于480微秒DQ=1;//總線拉高,復(fù)位過(guò)程完畢delay(14);//延遲一段時(shí)間,等待回應(yīng)r=DQ;//假設(shè)回應(yīng)為低電平,則復(fù)位成功,為高電平則失敗delay(20);//延遲一段時(shí)間完畢return(r);//可以根據(jù)需要返回復(fù)位結(jié)果}voidwendu_write(unsignedchardate)//寫字節(jié)程序{unsignedchari=0;for(i=8;i>0;i--){DQ=0;//總線拉低DQ=date&0*01;//發(fā)送最低位字節(jié)到DS18B20delay(7);//延遲30微秒左右,等DS18B20采樣DQ=1;//將總線拉高date>>=1;//寫入數(shù)據(jù)右移一位}}signedintwendu_read(void)//讀溫度字節(jié)程序{unsignedchari=0,t=0,pn=0;//t為暫存變量for(i=8;i>0;i--){DQ=0;//總線為低電平準(zhǔn)備讀操作,然后在1微秒內(nèi)釋放總線,以便讓DS18B20將數(shù)據(jù)反響t>>=1;//將變量右移一位,剛好可以抵消讀所需的延遲時(shí)間DQ=1;//總線拉為高電平后,執(zhí)行下面代碼if(DQ==1)//如果總線反響為高電平{t|=0*80;//則將變量最高位置1}//如果反響為0,則變量最高位為0delay(4);//延遲一頓時(shí)間,然后開場(chǎng)下次循環(huán)}return(t);//反響讀取的字節(jié)}/*DS1302*/voidtime_write(unsignedchartime_wd)//寫溫度函數(shù){unsignedchari,j;//設(shè)置循環(huán)變量for(i=0;i<8;i++)//連續(xù)寫8bit{j=time_wd&0*01;//取寫入數(shù)據(jù)最低位IO=0;//先設(shè)置數(shù)據(jù)為0SCLK=0;//拉低時(shí)鐘信號(hào)if(j==1)//判斷待發(fā)送的數(shù)據(jù)位是0或1{IO=1;//待發(fā)送數(shù)據(jù)位是1就發(fā)送1}time_wd=time_wd>>1;//待發(fā)送的數(shù)據(jù)右移1位SCLK=1;//拉高時(shí)鐘信號(hào)}SCLK=0;//寫完一個(gè)字節(jié),拉低時(shí)鐘信號(hào)}unsignedchartime_read()//讀時(shí)間函數(shù){unsignedchartime_rd;//設(shè)置返回變量unsignedchari;//設(shè)置循環(huán)變量IO=1;//設(shè)置數(shù)據(jù)口方向?yàn)檩斎雈or(i=0;i<8;i++)//連續(xù)讀取8bit{SCLK=0;//拉低時(shí)鐘信號(hào)time_rd=time_rd>>1;//接收存放器右移1位if(IO==1)//判斷信號(hào)是1還是0{time_rd=time_rd|0*80;//把接收到的數(shù)據(jù)放到接收存放器的最高位}SCLK=1;//拉高時(shí)鐘信號(hào)}SCLK=0;//拉低時(shí)鐘信號(hào)return(time_rd);//返回讀取到的數(shù)據(jù)}unsignedcharget_time(unsignedcharord)//讀取時(shí)間函數(shù){unsignedchardd=0;//設(shè)置返回變量SCLK=0;//拉低時(shí)鐘信號(hào)〔只有在時(shí)鐘信號(hào)為低時(shí)才可拉高CE〕CE=0;//拉低CE〔只有在CE為高電平時(shí)才可對(duì)DS1302進(jìn)展操作〕CE=1;//啟動(dòng)寫數(shù)據(jù)操作time_write(ord);//寫入命令dd=time_read();//讀取時(shí)間CE=0;//拉低CEreturn(dd);//返回讀取到的時(shí)間}voidset_time(unsignedcharord,unsignedchardd)//寫時(shí)間函數(shù){SCLK=0;//和讀時(shí)間函數(shù)一樣CE=0;CE=1;time_write(ord);//寫入命令time_write(dd);//寫入時(shí)間數(shù)據(jù)CE=0;}voidstart(void)//初始化函數(shù){unsignedchari;set_time(0*8e,0*00);//取消寫保護(hù)set_time(0*80,0*00);//啟動(dòng)時(shí)鐘set_time(0*84,0*00);//設(shè)置24小時(shí)模式set_time(0*90,0*a5);//時(shí)鐘時(shí)鐘充電模式set_time(0*8e,0*80);//啟動(dòng)寫保護(hù)RES1=0;RES1=1;dis_write_cmd(0*af);//啟動(dòng)12864clean();//清屏jianjie();//關(guān)鍵函數(shù),不可刪除for(i=1;i<20;i++){delay(10000);}clean();tu*iang();//寫入初始圖像}/*溫度*/wendu_reset();//溫度復(fù)位wendu_write(0*cc);//跳過(guò)ROM搜索命令wendu_write(0*44);//啟動(dòng)一次轉(zhuǎn)換wendu_reset();//復(fù)位wendu_write(0*cc);//跳過(guò)ROM搜索命令wendu_write(0*be);//發(fā)送讀命令a=wendu_read();//讀高字節(jié)8位b=wendu_read();//讀低字節(jié)8位pn=b&0*80;//判斷溫度正負(fù)if(pn==0)//如果溫度為正{t=((b*256)+a)/16;//直接轉(zhuǎn)化為十進(jìn)制數(shù)}if(pn==0*80)//如果溫度為負(fù){a=~a;//將數(shù)據(jù)取反b=~b;c=a+1;//低位加1if(c==0*00)//當(dāng)?shù)臀粸?55時(shí),加1后為0,這時(shí)需進(jìn)位{b++;//向高位進(jìn)1}t=((b*256)+c)/16;//再進(jìn)展轉(zhuǎn)換十進(jìn)制}wendu_display(t,pn);//將溫度寫入到12864中5.7調(diào)試及仿真系統(tǒng)的硬件電路設(shè)計(jì)與軟件程序設(shè)計(jì)都完成之后,首先,在硬件電路的仿真環(huán)境Proteus中,將經(jīng)過(guò)編輯、編譯、匯編、連接幾步生成的.HE*文件加載到單片機(jī)AT89S52中,然后對(duì)系統(tǒng)進(jìn)展整體調(diào)試。以下是調(diào)試過(guò)程中遇到的主要問(wèn)題及相應(yīng)的解決方法:1、問(wèn)題描述:在控制系統(tǒng)中,涉及到了電加熱模塊,即當(dāng)室外光強(qiáng)缺乏〔陰天、下雨〕時(shí),對(duì)水箱的水進(jìn)展電加熱是很必要的,然而仿真中無(wú)法顯示出是否在執(zhí)行加熱過(guò)程。解決方法:用一個(gè)等來(lái)仿真加熱過(guò)程,燈亮?xí)r表示加熱,圖中的三極
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- “雙減”政策下我國(guó)中小學(xué)課后延時(shí)體育服務(wù)的演進(jìn)歷程、機(jī)遇挑戰(zhàn)及實(shí)現(xiàn)路徑
- “雙減”背景下的小學(xué)語(yǔ)文大單元作業(yè)設(shè)計(jì)策略
- 臨床CT識(shí)別肺炎支原體肺炎影像學(xué)特征
- 專題一第2課二、《文檔的編輯》說(shuō)課稿 2023-2024學(xué)年青島版(2018)初中信息技術(shù)七年級(jí)下冊(cè)
- Unit 7 have用法小結(jié)(說(shuō)課稿)-2024-2025學(xué)年人教新目標(biāo)Go For It!英語(yǔ)八年級(jí)上冊(cè)
- 購(gòu)物袋、30萬(wàn)套帳篷、收納盒及防塵罩項(xiàng)目可行性研究報(bào)告寫作模板-備案審批
- 二零二五年度安全生產(chǎn)責(zé)任追究制度合同2篇
- Unit 2 My week Part A Lets spell大單元整體說(shuō)課稿表格式-2024-2025學(xué)年人教PEP版英語(yǔ)五年級(jí)上冊(cè)
- 全國(guó)人教版信息技術(shù)八年級(jí)上冊(cè)第三單元第12課三、《制作按鈕并設(shè)置動(dòng)作腳本》說(shuō)課稿設(shè)計(jì)
- 貴州商學(xué)院《機(jī)器學(xué)習(xí)與深度學(xué)習(xí)理論雙語(yǔ)教學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- DB22T 277-2011 建筑電氣防火檢驗(yàn)規(guī)程
- DB52T 1696-2022 口腔綜合治療臺(tái)用水衛(wèi)生管理規(guī)范
- 2025屆上海市復(fù)旦附中浦東分校物理高二上期末教學(xué)質(zhì)量檢測(cè)試題含解析
- 快樂(lè)讀書吧:童年(專項(xiàng)訓(xùn)練)-2023-2024學(xué)年六年級(jí)語(yǔ)文上冊(cè)(統(tǒng)編版)(含答案)
- 2023-2024學(xué)年廣東省廣州市海珠區(qū)九年級(jí)(上)期末英語(yǔ)試卷
- 紅色蛇年大吉年終總結(jié)匯報(bào)
- 農(nóng)業(yè)機(jī)械培訓(xùn)課件
- 河南省鄭州市2023-2024學(xué)年高二上學(xué)期期末考試英語(yǔ)試題 附答案
- 2024年度心理輔導(dǎo)合作協(xié)議模板版
- GB/T 22723-2024天然氣能量的測(cè)定
- 能源崗位招聘筆試題與參考答案(某大型國(guó)企)2024年
評(píng)論
0/150
提交評(píng)論