智能花盆澆水系統(tǒng)設(shè)計(jì)_第1頁(yè)
智能花盆澆水系統(tǒng)設(shè)計(jì)_第2頁(yè)
智能花盆澆水系統(tǒng)設(shè)計(jì)_第3頁(yè)
智能花盆澆水系統(tǒng)設(shè)計(jì)_第4頁(yè)
智能花盆澆水系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩41頁(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)介

題目盆花自動(dòng)澆水系統(tǒng)的設(shè)計(jì)學(xué)生姓名學(xué)號(hào)專業(yè)班級(jí)指導(dǎo)教師2012年6月5日畢業(yè)論文﹙設(shè)計(jì)﹚任務(wù)書院(系)專業(yè)班級(jí)學(xué)生姓名一、畢業(yè)論文﹙設(shè)計(jì)﹚題目盆花自動(dòng)澆水系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)二、畢業(yè)論文﹙設(shè)計(jì)﹚工作自___2012__年__2_月__27__日起至__2012_年6月__15日止三、畢業(yè)論文﹙設(shè)計(jì)﹚進(jìn)行地點(diǎn):電子信息工程系實(shí)驗(yàn)室四、畢業(yè)論文﹙設(shè)計(jì)﹚的內(nèi)容要求:本課題要求設(shè)計(jì)一個(gè)盆花自動(dòng)澆水系統(tǒng),要求:1.實(shí)現(xiàn)濕度與溫度的顯示;2.配合使雨水檢測(cè)器,即使你設(shè)定的澆水時(shí)間天突然下雨了,澆水控制器就會(huì)自動(dòng)關(guān)閥停止?jié)菜?.每天可設(shè)定八次定時(shí)澆水選擇,每次為1分鐘至9小時(shí)59分,也可以根據(jù)需要的時(shí)間設(shè)計(jì);4.采用電機(jī)閥技術(shù),澆水自動(dòng)控制器不受水壓影響,而且不易受水質(zhì)影響和堵塞。解決途徑:用51系列單片機(jī)作為主控芯片,配合溫、濕度傳感器、雨水檢測(cè)器以及對(duì)應(yīng)的測(cè)量電路完成對(duì)環(huán)境的檢測(cè),驅(qū)動(dòng)數(shù)碼管或LCD進(jìn)行溫、濕度顯示,驅(qū)動(dòng)澆水裝置實(shí)現(xiàn)自動(dòng)澆水。主要任務(wù):進(jìn)行硬件電路設(shè)計(jì)和軟件程序的編寫調(diào)試,燒錄程序并完成系統(tǒng)聯(lián)調(diào),最后撰寫畢業(yè)設(shè)計(jì)論文。進(jìn)度安排:2月27日-3月30日:查閱資料及方案論證4月2日-5月11日:編寫軟件、調(diào)試運(yùn)行及單元電路調(diào)試5月14日-5月25日:整體聯(lián)調(diào)5月28日-6月8日:整理數(shù)據(jù)及撰寫論文6月11日-6月15日:準(zhǔn)備辯論指導(dǎo)教師應(yīng)用電子技術(shù)教研室系(教研室主任簽名批準(zhǔn)日期學(xué)生簽名盆花自動(dòng)澆水系統(tǒng)的設(shè)計(jì)〔陜西理工學(xué)院物理與電信工程學(xué)院電子信息工程專業(yè)電子083班,陜西漢中723003〕指導(dǎo)教師:[摘要]本次設(shè)計(jì)的盆花自動(dòng)澆水系統(tǒng)包括土壤溫濕度的采集與顯示,和計(jì)數(shù)器的設(shè)置與顯示及澆水報(bào)警兩大局部。土壤溫濕度的采集與顯示局部,又包括了土壤溫濕度的采集和顯示、自動(dòng)澆水系統(tǒng)。土壤溫濕度的采集和顯示以ADC0809相連接配合兩個(gè)電位器作為感應(yīng)電路,將采集到的土壤溫濕度值送入AT89C51單片機(jī),再由其傳輸?shù)絃CD屏進(jìn)行顯示。自動(dòng)澆水系統(tǒng)設(shè)計(jì)為智能和手動(dòng)兩個(gè)局部:智能澆水局部是通過單片機(jī)程序設(shè)計(jì)澆水的上下限值與感應(yīng)電路送入單片機(jī)的土壤濕度值相比擬,當(dāng)?shù)陀谙孪拗禃r(shí),單片機(jī)輸出一個(gè)信號(hào)控制澆水,高于上限值時(shí)再由單片機(jī)輸出一個(gè)信號(hào)控制停止?jié)菜?手動(dòng)局部是由單片機(jī)從數(shù)碼管讀入月份與每天的實(shí)時(shí)時(shí)刻,通過軟件程序設(shè)定定時(shí)澆水的時(shí)間。[關(guān)鍵詞]AT89C51溫濕度的采集于顯示計(jì)數(shù)器LCDDesignofpottedflowerssautomaticwateringsystemGaoHuili(Grade08,Class3,Majorelectronicsandinformationengineering,SchoolofphysicsandTelecommunicationEngineering,ShaanxiUniversityofTechnology,Hanzhong723003,Shaanxi)Tutor:ZhuYaliAbstractthedesignofpottedplantautomaticwateringsystemincludessoiltemperatureandhumidityacquisitionanddisplay,andthecountersettinganddisplayandalarmtwopartswater.Soiltemperatureandhumidityacquisitionanddisplaypart,andcomprisesasoiltemperatureandhumidityacquisitionanddisplay,automaticwateringsystem.SoiltemperatureandhumidityacquisitionanddisplayinADC0809isconnectedwithtwopotentiometersasaninductioncircuit,thecollectedsoiltemperatureandhumidityvalueissendtotheAT89C51singlechip,thenbyitstransmissiontotheLCDscreendisplay.Automaticwateringsystemdesignforintelligentandmanualtwoparts:intelligentwateringsectionthroughtheMCUprogrammingwateringtheupperlimitandthelowerlimitandtheinductioncircuitintothemicrocontroller'ssoilhumidityvaluearecompared,whenlessthanthelowerlimitvalue,theMCUoutputasignaltocontrolthewatering,highintheupperlimitvaluebythemicrocontrolleroutputasignalcontrolstopwatering;manualpartiscomposedofsingle-chipdigitaltubeintothemonthanddayfromrealtime,throughthesoftwareprogrammedtimingwateringtime.Keywords:AT89C51temperatureandhumidityacquisitioninthedisplaycounterLCD引言1選題的目的和意義隨著社會(huì)的進(jìn)步,人們的生活質(zhì)量越來(lái)越高。在家里養(yǎng)養(yǎng)盆花可以陶冶情操,豐富生活。同時(shí)盆花可以通過光合作用吸收二氧化碳,凈化室內(nèi)空氣,在有花木的地方空氣中陰離子聚集較多,所以空氣也特別清新,而且許多花木還可以吸收空氣中的有害氣體,因此,養(yǎng)盆花如今被許多人喜愛。盆花澆水量是否能做到適時(shí)適量,是養(yǎng)花成敗的關(guān)鍵。但是,在生活中人們總是會(huì)有無(wú)暇顧及的時(shí)候,比方工作太忙,或者出差、旅游等。花草生長(zhǎng)問題80%以上是由花兒澆灌問題引起的;好不容易種植幾個(gè)月的花草,因?yàn)闈菜患皶r(shí),長(zhǎng)勢(shì)不好,用來(lái)美化環(huán)境的花草幾乎成了“雞肋”;不種植吧,家里沒有綠色襯托,感覺沒有生機(jī);保存吧,花草長(zhǎng)得不夠旺盛,還影響家庭裝飾效果。雖然市場(chǎng)上有賣盆花自動(dòng)澆水器,但價(jià)格十分昂貴,并且大多只能設(shè)定一個(gè)定時(shí)澆水的時(shí)間,很難做到給盆花自動(dòng)適時(shí)適量澆水。夜有較經(jīng)濟(jì)的盆花缺水報(bào)警器,可以提醒人們及時(shí)的給盆花澆水??墒沁@種報(bào)警器只能報(bào)警,澆水還需要人們親自動(dòng)手。當(dāng)家里無(wú)人時(shí),即使報(bào)警也無(wú)人澆水,就起不到應(yīng)有的作用了。因此,我想設(shè)計(jì)一種集盆花土壤濕度檢測(cè),自動(dòng)澆水以及蓄水箱自動(dòng)供水于一體的盆花自動(dòng)澆水系統(tǒng)。讓人們無(wú)暇顧及時(shí)也能得到及時(shí)的澆灌。2自動(dòng)澆水器的誕生背景及國(guó)內(nèi)外開展現(xiàn)狀微噴系統(tǒng)是近幾年利用國(guó)內(nèi)外先進(jìn)技術(shù)組裝的新型灌溉設(shè)施,主要是利用水流通過管道系統(tǒng)以一定速度從特制的噴頭噴出,在空氣中分散成細(xì)小的水滴著落在花草植物。作物及周圍的地面上,從而到達(dá)及時(shí)補(bǔ)充水分的目的。該系統(tǒng)具有用水量少、沖擊力小的灌溉特性,適用于栽培密度大、植被柔軟細(xì)嫩的植物。自動(dòng)澆水器的誕生時(shí)隨著人們生活水平的提高和生活節(jié)奏的加快而誕生的一種懶人園藝用品。它把微噴的概念應(yīng)有家庭盆花澆灌中,通過相應(yīng)地改良,到達(dá)合理給盆花自動(dòng)澆水的目的。早在很多年前,國(guó)外就已經(jīng)開始普及,國(guó)內(nèi)實(shí)用的電子類自動(dòng)澆水器多數(shù)從國(guó)外進(jìn)口的,價(jià)格昂貴,但質(zhì)量比擬可靠。不過這不太適用于國(guó)內(nèi),目前國(guó)內(nèi)外比擬流行的是玻璃制作的自動(dòng)澆水器。這種類型的澆水器多數(shù)在我國(guó)山西和浙江一帶生產(chǎn)的,價(jià)格比擬低廉,實(shí)用性沒有電子類自動(dòng)澆水器好。隨著國(guó)內(nèi)居民消費(fèi)水平和生活質(zhì)量的提高,居家園藝市場(chǎng)異?;鸨?,但是由于生活節(jié)奏加快,種花容易養(yǎng)花難,澆水問題就暴露出來(lái),因此國(guó)內(nèi)上加已經(jīng)看到了這種需求潛力。目前這類小居家用品的廠家主要集中在廣東,上海,浙江一帶?,F(xiàn)在市場(chǎng)上所出售的自動(dòng)澆水器主要有電子類自動(dòng)澆水器和玻璃、陶瓷類自動(dòng)澆水器。電子類自動(dòng)澆水器電子類自動(dòng)澆水器又叫時(shí)控噴淋裝置,系統(tǒng)構(gòu)成為:主機(jī)〔或者〕、主管〔可以是花園管也可以是七分之四毫米的微噴淋管〕、分水接頭〔3通、4通、5通、6通、分水器〕、副管〔五分之三毫米〕噴淋管〔霧化噴頭、旋轉(zhuǎn)噴頭、折射霧化噴頭等〕。電子類自動(dòng)澆水器根據(jù)電源的不同分為交流電自動(dòng)澆水器和電池自動(dòng)澆水器兩種??刂破鞯囊话阈阅苡校弘姶砰y控制;智能時(shí)控電路、微電腦芯片控制;適用電源為AC220V/50Hz;最適水壓0.3-0.6Mpa;待機(jī)功率〔4VA,澆水時(shí)小于12VA〕;可控制連續(xù)作業(yè)時(shí)間試1分鐘至168個(gè)小時(shí);可每天自動(dòng)完成十次以上澆水作業(yè),可每天、隔天、隔多天自動(dòng)循環(huán)進(jìn)行澆水,手動(dòng)自動(dòng)兩用;每天計(jì)時(shí)誤差小于正負(fù)3秒;電器適應(yīng)環(huán)境溫度為-10~50攝氏度;相對(duì)濕度小于90%RH。2)玻璃、陶瓷類自動(dòng)澆水器玻璃。陶瓷類自動(dòng)澆水器又叫自動(dòng)滲水裝置,它由本身材質(zhì)的物理結(jié)構(gòu)構(gòu)成,根據(jù)器具的物理滲水原理完成自動(dòng)澆灌,當(dāng)自動(dòng)澆水器內(nèi)部存水,自身形成一定的壓力,當(dāng)遇到枯燥的土壤,水就會(huì)自上而下的流出,當(dāng)土壤濕潤(rùn)以后,會(huì)形成一個(gè)堵塞壓力,從而導(dǎo)致水流速度變慢或者停止。器具工藝不同,效果也不一樣,當(dāng)然也因土壤的疏松情況決定器具內(nèi)水流的速度。當(dāng)前傳感器技術(shù)與單片機(jī)技術(shù)開展迅速,其應(yīng)用逐步由工業(yè)、軍事等領(lǐng)域向其它領(lǐng)域滲透,已經(jīng)和我們的日常生活息息相關(guān)。而且智能家居概念也越來(lái)越受到人們的推崇,因此,微電腦控制的電子類自動(dòng)澆水系統(tǒng)有很好的開展前景。3畢業(yè)設(shè)計(jì)所采用的研究方法和手段本次畢業(yè)設(shè)計(jì)是設(shè)計(jì)一種單片機(jī)控制的自動(dòng)澆水系統(tǒng),實(shí)現(xiàn)室內(nèi)盆花澆水的自動(dòng)化系統(tǒng)。該系統(tǒng)可對(duì)土壤的濕度進(jìn)行監(jiān)控,并對(duì)作物進(jìn)行適時(shí)適量的澆水。其核心是單片機(jī)和溫濕度采集和顯示電路以及澆水驅(qū)動(dòng)電路構(gòu)成的檢測(cè)控制局部。主要研究土壤濕度與澆水量之間的關(guān)系、澆灌控制技術(shù)及設(shè)備系統(tǒng)的硬件、軟件編程各個(gè)局部。檢測(cè)局部,單片機(jī)選用AT89C51單片機(jī),軟件選用C51語(yǔ)言編程。土壤溫濕度采集于顯示電路可將檢測(cè)到的土壤溫濕度模擬量放大轉(zhuǎn)換成數(shù)字量通過單片機(jī)內(nèi)程序控制精確的將溫度與濕度分別顯示在LCD顯示屏上,同時(shí)把程序發(fā)給另外一塊單片機(jī),通過單片機(jī)內(nèi)的中斷效勞程序判斷是否要給盆花澆水,假設(shè)需澆水,那么單片機(jī)系統(tǒng)發(fā)出澆水信號(hào),開始澆水,假設(shè)不需要澆水,那么進(jìn)行下一次循環(huán)檢測(cè)。在澆水系統(tǒng)中也同時(shí)設(shè)計(jì)一個(gè)定時(shí)澆水局部,通過按鍵開關(guān)設(shè)置不同的澆水時(shí)間段,在時(shí)間段以內(nèi)時(shí),單片機(jī)驅(qū)動(dòng)澆水系統(tǒng),開始澆水,如不在時(shí)間段內(nèi),那么不澆水。目錄1AT89C5111.1AT89C51的簡(jiǎn)介11.2AT89C51單片機(jī)的根本組成11.3AT89C51主要特性:21.4AT89C51的管腳說(shuō)明21.5AT89C51單片機(jī)的存儲(chǔ)器41.6振蕩電路和時(shí)鐘51.7AT89C51的中斷系統(tǒng)61.7.1中斷系統(tǒng)結(jié)構(gòu)和中斷控制61.7.2中斷響應(yīng)過程81.8定時(shí)器/計(jì)數(shù)器81.8.1定時(shí)器/計(jì)數(shù)器0和1簡(jiǎn)介81.8.2與定時(shí)器/計(jì)數(shù)器0和1相關(guān)的特殊功能存放器92液晶顯示器LCD112.1液晶顯示器的簡(jiǎn)介112.2液晶顯示器的分類112.3液晶顯示器160211管腳功能112.3.2LCD1602的特性122.3.3LCD1602特征及應(yīng)用123ADC0809133.1ADC0809的簡(jiǎn)介133.2ADC0809引腳圖133.3ADC0809的主要特性143.4ADC0809的內(nèi)部結(jié)構(gòu)143.5ADC0809的工作過程15474ls373164.174ls373引腳圖164.274ls373真值表165盆花自動(dòng)澆水系統(tǒng)的設(shè)計(jì)185.1土壤溫濕度采集與顯示185.1.1硬件電路設(shè)計(jì)18具體的土壤溫濕度采集于顯示系統(tǒng)硬件電路18系統(tǒng)軟件設(shè)計(jì)195.2定時(shí)器局部22按鍵開關(guān)操作簡(jiǎn)介22定時(shí)器局部硬件電路設(shè)計(jì)235.2.3.定時(shí)器局部硬件電路236總結(jié)247致謝258參考文獻(xiàn)269附錄27附錄AProtues仿真圖27附錄B溫濕度采集與顯示程序27附錄C計(jì)時(shí)器局部程序311AT89C511.1AT89C51的簡(jiǎn)介AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集合輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ALMEL的AT89C51是一種高效微控制器,AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且廉價(jià)的方案。1.2AT89C51單片機(jī)的根本組成AT89C51由一個(gè)8位的微處理器,128KB片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM,21個(gè)特殊功能存放器SFR,3KB片內(nèi)程序存儲(chǔ)器FlashROM,64KB可尋址片內(nèi)外一編址的ROM,64KB可尋址片外的RAM,4個(gè)8位并行I/O接口〔P0-P3〕,一個(gè)全雙工通用異步串行接口UART,兩個(gè)16位的定時(shí)器、計(jì)數(shù)器,具有位操作功能的布爾處理機(jī)及位尋址功能的五個(gè)中斷源、兩個(gè)優(yōu)先級(jí)的中斷控制系統(tǒng)以及片內(nèi)振蕩器和時(shí)鐘產(chǎn)生電路。其根本組成框圖如圖1.1所示。圖1.1AT89C51單片機(jī)的根本組成1.3AT89C51主要特性:與MCS-51兼容4K字節(jié)可編程閃爍存儲(chǔ)器壽命:1000寫、擦循環(huán)數(shù)據(jù)保存時(shí)間:10年全靜態(tài)工作:0Hz-24Hz三級(jí)程序存儲(chǔ)器鎖定128*8位內(nèi)部RAM32可編程I/O線兩個(gè)16位定時(shí)器、計(jì)數(shù)器5個(gè)中斷源可編程串行通道低功耗的閑置和掉電模式片內(nèi)振蕩器和時(shí)鐘電路1.4AT89C51的管腳說(shuō)明AT89C51的引腳圖如圖1.2所示。各引腳的具體說(shuō)明如下:VCC:供電電壓GND:接地P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P0口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的低八位。在FIASH編程時(shí),P0口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須接上拉電阻。P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為低八位地址接收。P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能存放器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流〔ILL〕這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下所示:各口管腳備選功能P3.0RXD〔串行輸入口〕P3.1TXD〔串行輸出口〕P3.2/INT0〔外部中斷0〕P3.3/INT1〔外部中斷1〕P3.4T0〔記時(shí)器0外部輸入〕P3.5T1〔記時(shí)器1外部輸入〕P3.6/WR〔外部數(shù)據(jù)存儲(chǔ)器寫選通〕P3.7/RD〔外部數(shù)據(jù)存儲(chǔ)器讀選通〕P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí),ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時(shí),那么在此期間外部程序存儲(chǔ)器〔0000H-FFFFH〕,不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源〔VPP〕。XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2:來(lái)自反向振蕩器的輸出。圖1.2AT89C51的引腳圖1.5AT89C51單片機(jī)的存儲(chǔ)器在單片機(jī)中,存儲(chǔ)器分為程序存儲(chǔ)器ROM和數(shù)據(jù)存儲(chǔ)器RAM,并且兩個(gè)存儲(chǔ)器是獨(dú)立編址的。AT89C51單片機(jī)芯片內(nèi)配置有8KB(0000H-1FFFH)的Flash程序存儲(chǔ)器和256字〔00H-FFH〕的數(shù)據(jù)存儲(chǔ)器RAM,根據(jù)需要可外擴(kuò)到最大64KB的程序存儲(chǔ)器和64KB的數(shù)據(jù)存儲(chǔ)器,因此AT89C51的存儲(chǔ)器結(jié)構(gòu)可分為4個(gè)局部:片內(nèi)程序存儲(chǔ)器、片外程序存儲(chǔ)器、片內(nèi)數(shù)據(jù)存儲(chǔ)器和片外程序存儲(chǔ)器。如果以最小系統(tǒng)使用單片機(jī),即不擴(kuò)展,那么AT89C51的存儲(chǔ)器結(jié)構(gòu)就較簡(jiǎn)單:只有單片機(jī)自身提供的8Flash程序存儲(chǔ)器和256字節(jié)數(shù)據(jù)存儲(chǔ)器RAM。圖1.3給出了AT89C51單片機(jī)的存儲(chǔ)器分布空間。左側(cè)框中為單片機(jī)自身提供的8KBFlash程序存儲(chǔ)器和256字節(jié)數(shù)據(jù)存儲(chǔ)器RAM。右側(cè)為可擴(kuò)展的64KB的程序存儲(chǔ)器ROM和64KB的數(shù)據(jù)存儲(chǔ)器RAM。圖1.3存儲(chǔ)器空間分布〔1〕程序存儲(chǔ)器AT89C51單片機(jī)出廠時(shí)片內(nèi)已帶有8KB的Flash程序存儲(chǔ)器,使用時(shí),引腳/EA要按高電平〔5V〕,這時(shí),復(fù)位后CPU從片內(nèi)ROM區(qū)0000H單元開始讀取指令代碼,一直運(yùn)行到1FFFH單元,如果外部擴(kuò)展有程序存儲(chǔ)器ROM,那么CPU會(huì)自動(dòng)轉(zhuǎn)移到片外ROM空間2000H-FFFH讀取指令代碼?!?〕數(shù)據(jù)存儲(chǔ)器AT89C51單片機(jī)出廠時(shí)片內(nèi)已帶有256字節(jié)的數(shù)據(jù)存儲(chǔ)器RAM,如果不夠用,可以在片外擴(kuò)展,最多可擴(kuò)展64KBRAM.單片機(jī)自帶的數(shù)據(jù)存儲(chǔ)器RAM結(jié)構(gòu)如圖2-4所示,此字節(jié)單元〔00H-FFH〕的低128字節(jié)〔00H-7FH〕單元為用戶使用區(qū),高128字節(jié)〔80H-FFH〕單元為特殊功能存放器SFR區(qū)。片內(nèi)數(shù)據(jù)存儲(chǔ)器的00H-7FH單元又劃分為3塊:00H-1FH塊是工作存放器所用;20-2FH塊是位尋址功能的單元區(qū);30H-3FH是普通RAM區(qū)。工作存放器又分為4組,在當(dāng)前的運(yùn)行程序中只有一組是被激活的,誰(shuí)被激活有程序狀態(tài)存放器PEW的RS1,RS0兩位決定。1.6振蕩電路和時(shí)鐘在AT89C51芯片內(nèi)部,有一個(gè)振蕩電路和時(shí)鐘發(fā)生器,引腳XTAL1和XTAL2之間接入晶體振蕩器和電容后構(gòu)成內(nèi)部時(shí)鐘方式。也可以使用外部振蕩器,由外部振蕩器產(chǎn)生的信號(hào)直接加載到振蕩器的輸入端,作為CPU的時(shí)鐘源,稱為外部時(shí)鐘方式。采用外部時(shí)鐘方式時(shí),外部振蕩器的輸出信號(hào)接至XTAL1,XTAL2懸空。兩種方式的電路連接圖1.6所示。大多數(shù)的單片機(jī)采用內(nèi)部時(shí)鐘方式,本次設(shè)計(jì)亦然。在AT89C51單片機(jī)內(nèi)部,引腳XTAL2和引腳XTAL1連接著一個(gè)高增益反相放大器,XTAL1引腳是反相放大器的輸入端,XTAL2引腳是反相放大器的輸出端。芯片內(nèi)部的時(shí)鐘發(fā)生器是一個(gè)二分頻觸發(fā)器,振蕩器的輸出fosc為其輸入,輸出為兩相時(shí)鐘信號(hào)(狀態(tài)時(shí)鐘信號(hào)),頻率為振蕩器輸出信號(hào)頻率fosc的二分之一。狀態(tài)時(shí)鐘經(jīng)三分頻后為低字節(jié)地址鎖存信號(hào)ALE,頻率為振蕩器輸出信號(hào)頻率fosc的六分之一,經(jīng)六分頻后為機(jī)器周期信號(hào),頻率為fosc/12。C1,C2一般取20-30pF的陶瓷電容器。圖1.4AT89C51振蕩器的連接方式1.7AT89C51的中斷系統(tǒng)為了提高系統(tǒng)的工作效率,AT89C51單片機(jī)設(shè)置了中斷系統(tǒng),采用中斷方式與外設(shè)進(jìn)行數(shù)據(jù)傳送。所謂“中斷”,是指單片機(jī)在執(zhí)行某一段程序的過程中,由于某種原因〔如異常情況或特殊請(qǐng)求〕,單片機(jī)暫時(shí)中止正在執(zhí)行的程序,而去執(zhí)行相應(yīng)的處理程序,待處理結(jié)束后,再返回到被打斷的程序除,繼續(xù)執(zhí)行原程序的過程。1.7.1中斷系統(tǒng)結(jié)構(gòu)和中斷控制AT89C51有六個(gè)固定的可屏蔽中斷源,分別是三個(gè)片內(nèi)定時(shí)器/計(jì)數(shù)器溢出中斷TF0、TF1和TF2,兩個(gè)外部中斷/INT0(P3.2)和/INT1(P3.3),一個(gè)片內(nèi)串行口中斷T1或RI。6個(gè)中斷源有兩個(gè)中斷優(yōu)先級(jí),可形成中斷嵌套。它們?cè)诔绦虼鎯?chǔ)器中各有固定的中斷入口地址,由此進(jìn)入相應(yīng)的中斷效勞程序。引起6個(gè)中斷源的符號(hào)、名稱及產(chǎn)生的條件如下:/INT0:外部中斷0,由P3.2端口線引入,低電平或下降沿引起;/INT1:外部中斷1,由P3.3端口線引入,低電平或下降沿引起;T0:定時(shí)器/計(jì)數(shù)器0中斷,由T0記滿回零引起;T1 :定時(shí)器/計(jì)數(shù)器1中斷,由T1記滿回零引起;T1/RI:串行口I/O中斷,串行口完成一幀字符發(fā)送/接收后引起中斷;T2:定時(shí)器/計(jì)數(shù)器2中斷,由T2記滿回零引起。在本次設(shè)計(jì)中采用了定時(shí)器/計(jì)數(shù)器0中斷,它的中斷控制存放器包括定時(shí)器/計(jì)數(shù)器0、1控制存放器TCON和中斷允許控制存放器IE。定時(shí)器控制存放器TCONTCON是定時(shí)器/計(jì)數(shù)器和外部中斷兩者合用的一個(gè)可尋址的特殊功能存放器,它的格式如下:D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0各控制位定義如下:TF1:定時(shí)器/計(jì)數(shù)器1溢出中斷請(qǐng)求標(biāo)志位。當(dāng)定時(shí)器/計(jì)數(shù)器1計(jì)數(shù)產(chǎn)生溢出時(shí),由內(nèi)部硬件置位TF1,向CPU響應(yīng)中斷并轉(zhuǎn)向該中斷效勞程序執(zhí)行時(shí),由硬件內(nèi)部自動(dòng)TF1清0。TR1:定時(shí)器/計(jì)數(shù)器1啟動(dòng)/停止位。由軟件置位/復(fù)位控制位/計(jì)數(shù)器1的啟動(dòng)或停止計(jì)數(shù)。TF0:定時(shí)器/計(jì)數(shù)器0溢出中斷請(qǐng)求標(biāo)志位。當(dāng)定時(shí)器/計(jì)數(shù)器0計(jì)數(shù)產(chǎn)生溢出時(shí),由內(nèi)部硬件置位TF0,向CPU響應(yīng)中斷并轉(zhuǎn)向該中斷效勞程序執(zhí)行時(shí),由硬件內(nèi)部自動(dòng)TF1清0.TR0:定時(shí)器/計(jì)數(shù)器0啟動(dòng)/停止位。由軟件置位/復(fù)位控制定時(shí)器/計(jì)數(shù)器0的啟動(dòng)或停止計(jì)數(shù)。IE1:外部中斷請(qǐng)求標(biāo)志位。當(dāng)CPU檢測(cè)到INT0低電平或下降沿且IT1=1時(shí),由內(nèi)部硬件置位IE1標(biāo)志位〔IE=1〕向CPU請(qǐng)求中斷,當(dāng)CPU響應(yīng)中斷并轉(zhuǎn)向該中斷效勞程序執(zhí)行時(shí),由硬件內(nèi)部將IE1清0。IE0:外部中斷請(qǐng)求標(biāo)志位。當(dāng)CPU檢測(cè)到INT0低電平或下降沿且IT0=1時(shí),由內(nèi)部硬件置位IE0標(biāo)志位〔IE0=1〕向CPU請(qǐng)求中斷,當(dāng)CPU響應(yīng)中斷并轉(zhuǎn)向該中斷效勞程序執(zhí)行時(shí),由硬件內(nèi)部將TE0清0。IT1:用軟件置位/復(fù)位IT1來(lái)選擇外部中斷INT1是下降沿觸發(fā)還是電平觸發(fā)中斷請(qǐng)求。當(dāng)IT1置1時(shí),那么外部中斷INT1為下降沿觸發(fā)中斷請(qǐng)求,即INT1端口由前一個(gè)機(jī)器周期的高電平跳變?yōu)橄乱粋€(gè)機(jī)器周期的低電平,那么觸發(fā)中斷請(qǐng)求;當(dāng)IT1復(fù)位清0,那么INT1的低電平觸發(fā)中斷請(qǐng)求。IT0:由軟件置位/復(fù)位IT0來(lái)選擇外部中斷INT0是下降沿觸發(fā)還是低電平觸發(fā)中斷請(qǐng)求,其控制原理同IT1。中斷允許控制存放器中斷允許控制存放器IE的格式如下:D7D6D5D4D3D2D1D0EAET2ESET1EX1ET0EX0各控制定義如下:EA:中斷總控制位,EA=1。CPU開中斷,它是CPU是否響應(yīng)中斷的前提,在此前提下,如果某中斷源的中斷允許置位1,才能響應(yīng)應(yīng)該中斷源的中斷請(qǐng)求。如果EA=0,無(wú)論哪個(gè)中斷源有請(qǐng)求,CPU都不予回應(yīng)。ET2:定時(shí)器/計(jì)數(shù)器T2中斷控制位,ET2=1,允許T2計(jì)數(shù)溢出中斷;ET=2,禁止T2中斷。ES:串行口中斷控制位,ES=1,允許串行口發(fā)送/接受中斷;ES=0禁止串行口中斷。ET1:定時(shí)器/計(jì)數(shù)器T1中斷控制位,ET1=1,允許T1計(jì)數(shù)溢出中斷;ET1=0,禁止T1中斷。EX1:外部中斷1控制位,EX1=1,允許中斷;EX=0,禁止外部中斷1中斷。ET0:定時(shí)器/計(jì)數(shù)器T0中斷控制位,ET0=1,允許T0計(jì)數(shù)溢出中斷;ET0=0,禁止T0中斷。EX0:外部中斷0控制位,EX0=1,允許中斷;EX0=0,禁止外部中斷0中斷。1.7.2中斷響應(yīng)過程CPU中斷處理從響應(yīng)中斷、控制程序轉(zhuǎn)向?qū)?yīng)的中斷矢量地址入口處執(zhí)行中斷效勞程序,到執(zhí)行返回〔RET1〕指令為止。中斷響應(yīng)可分為以下幾個(gè)步驟:〔1〕保護(hù)斷點(diǎn),即保存下一個(gè)將要執(zhí)行的指令的地址,把這個(gè)地址送入堆棧。〔2〕尋找中斷入口,根據(jù)6個(gè)不同的中斷源所產(chǎn)生的中斷,中斷系統(tǒng)必須能夠正確地識(shí)別中斷源,查找6個(gè)不同的入口地址。以上工作是由單片機(jī)自動(dòng)完成的,與編程者無(wú)關(guān)。在6個(gè)入口地址處存放有中斷處理程序。執(zhí)行中斷處理程序?!?〕中斷返回:執(zhí)行完中斷指令后,從中斷處返回到朱程序,繼續(xù)執(zhí)行。1.8定時(shí)器/計(jì)數(shù)器AT89C51單片機(jī)內(nèi)部設(shè)有兩個(gè)16位可編程定時(shí)器/計(jì)數(shù)器,即定時(shí)器/計(jì)數(shù)器0和定時(shí)器/計(jì)數(shù)器1。除此之外還有一個(gè)可編程定時(shí)器/計(jì)數(shù)器2。1.8.1定時(shí)器/計(jì)數(shù)器0和1簡(jiǎn)介定時(shí)器/計(jì)數(shù)器0和1內(nèi)部有一個(gè)計(jì)數(shù)存放器〔THx和TLx〕,它實(shí)際上是一個(gè)累加存放器加1計(jì)數(shù)。定時(shí)器和計(jì)數(shù)器共用這個(gè)存放器,但定時(shí)器/計(jì)數(shù)器同一時(shí)刻只能工作在其中一種方式下,不可能既工作在定時(shí)器方式,同時(shí)又工作在計(jì)數(shù)器方式。這兩個(gè)工作方式的根本區(qū)別是在于計(jì)數(shù)脈沖的來(lái)源不同。工作在定時(shí)器方式時(shí),對(duì)振蕩器12分頻的脈沖計(jì)數(shù),即每過一個(gè)機(jī)器周期〔1個(gè)機(jī)器周期在時(shí)間上和12個(gè)振蕩周期的時(shí)間相等〕,計(jì)數(shù)存放器中的值就加1。工作在計(jì)數(shù)器方式時(shí),計(jì)數(shù)器不是來(lái)自內(nèi)部的機(jī)器周期,而是來(lái)自外部輸入。對(duì)定時(shí)器/計(jì)數(shù)器0、定時(shí)器/計(jì)數(shù)器1,計(jì)數(shù)脈沖分別來(lái)自T0、T1引腳。當(dāng)這些引腳上輸入的信號(hào)產(chǎn)生高電平至低電平的負(fù)跳變時(shí),計(jì)數(shù)器存放器的值就加1。單片機(jī)每個(gè)機(jī)器周期都要對(duì)對(duì)外部輸入進(jìn)行采樣,如果在第一個(gè)周期,即第三個(gè)機(jī)器周期計(jì)數(shù)存放器的值才增加1。1.8.2與定時(shí)器/計(jì)數(shù)器0和1相關(guān)的特殊功能存放器〔1〕計(jì)數(shù)器存放器TH0、TL0和TH1、TL1計(jì)數(shù)存放器是16位的,再啟動(dòng)定時(shí)器時(shí)需要對(duì)它設(shè)定初始值。THx是計(jì)數(shù)器存放器的高8位,THx是計(jì)數(shù)存放器的低8位。TH0、TL0對(duì)應(yīng)T/C0,TH1,TL1對(duì)應(yīng)T/C1。定時(shí)器/計(jì)數(shù)器控制存放器TCON的格式如下:TF1TR1TF0TR1IE1IT1IE0IT0TF1為T/C1的溢出標(biāo)志,溢出時(shí)由硬件置1,進(jìn)入中斷后又由硬件自動(dòng)清0。TR1為T/C1的啟動(dòng)和停止位,由軟件控制。置1時(shí)啟動(dòng)T/C1;清0時(shí)停止T/C1。TF0和TR0的功能和使用方法以TF1、TR1類似,只是它們針對(duì)的是T/C0.(3)定時(shí)器/計(jì)數(shù)器方式控制存放器TMOD定時(shí)器/計(jì)數(shù)器方式控制存放器TMOD的格式如下所示。它的控制位都是由軟件控制的,其中高4位是針對(duì)T/C1的,低4位是針對(duì)T/C0的,其功能和使用方法相似。GATEM1M0GATEM1M0現(xiàn)在以T/C0來(lái)說(shuō)明各控制位的使用方法:GATE是一個(gè)選通位,當(dāng)GATE位置1時(shí),T/C0受到雙重控制,只有/INT0為高電平且TR0位置1是T/C0才開始工作,當(dāng)GATE位清0時(shí),T/C0僅受到TR0的控制。C//T用來(lái)選擇工作在定時(shí)器方式還是計(jì)數(shù)器方式。當(dāng)該位置1時(shí)工作在計(jì)數(shù)器方式,清0時(shí)工作在定時(shí)器方式。M1和M0聯(lián)合起來(lái)用于選擇操作模式,一共有四種操作模式,如表所示。表1.1定時(shí)器/計(jì)數(shù)器的四種模式M1M0操作模式計(jì)數(shù)器配置00模式013位計(jì)數(shù)器10模式2自動(dòng)重轉(zhuǎn)載的8位計(jì)數(shù)器10模式2自動(dòng)重轉(zhuǎn)載的8位計(jì)數(shù)器11模式3T0分為兩個(gè)8位計(jì)數(shù)器,T1停止計(jì)數(shù)2液晶顯示器LCD2.1液晶顯示器的簡(jiǎn)介液晶顯示器是一種低功能耗液晶顯示器件。工作電流小,適合于儀表和低功耗系統(tǒng)。常用的有筆畫型液晶顯示器、點(diǎn)陣字符型液晶顯示器和圖形點(diǎn)陣式液晶顯示器。LCD液晶顯示器的原理是利用液晶的物理特性,通過電壓對(duì)其顯示區(qū)域進(jìn)行控制。有電就顯示黑色,這樣就顯示出圖形。液晶顯示器適應(yīng)于大規(guī)模電路直接驅(qū)動(dòng),易于實(shí)現(xiàn)全彩色顯示的特點(diǎn)。目前被廣泛應(yīng)用于計(jì)算機(jī),數(shù)字?jǐn)z像機(jī)等眾多領(lǐng)域。2.2液晶顯示器的分類液晶顯示器按顯示圖案的不同可分為筆段型LCD、字符型LCD和點(diǎn)陣圖型LCD三種。筆段型筆段型是以長(zhǎng)條狀作為根本單位顯示。該類型主要用于數(shù)字顯示,也可用于顯示西文字或某些字符。這種段型顯示通常有6段。7段、8段、9段、14段和16段等,在形狀上與數(shù)碼管類似,總是圍繞“8”的結(jié)構(gòu)變化。其中以7段顯示器常用,常用于數(shù)字儀表、電子儀器中。字符型字符型液晶顯示器是專門用來(lái)顯示英文和其他拉丁字母、數(shù)字、符號(hào)等點(diǎn)陣型液晶顯示模塊。它一般由假設(shè)干個(gè)5乘8或5乘11點(diǎn)陣組成,每個(gè)點(diǎn)陣顯示一個(gè)字符。這類模塊一般應(yīng)用于數(shù)字尋呼機(jī)、數(shù)字儀表等電子設(shè)備中。點(diǎn)陣圖型點(diǎn)陣圖形型是在一平板上排版多行多列的矩陣式的晶格點(diǎn),點(diǎn)的大小可根據(jù)顯示精細(xì)度來(lái)設(shè)計(jì),可顯示數(shù)字、字母、漢字、圖像,甚至動(dòng)畫。這液晶顯示器廣泛應(yīng)用于、筆記本電腦等需要顯示大量信息的設(shè)備中。2.3液晶顯示器16021602液晶也叫1602字符型液晶它是一種專門用來(lái)顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊它有假設(shè)干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符。管腳功能圖2.1LCD1602引腳圖1602采用標(biāo)準(zhǔn)的16腳接口,其中:第1腳:VSS為電源地第2腳:VDD接5V電源正極第3腳:V0為液晶顯示器比照度調(diào)整端,接正電源時(shí)比照度最弱,接地電源時(shí)比照度最高〔比照度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整比照度〕。第4腳:RS為存放器選擇,高電平1時(shí)選擇數(shù)據(jù)存放器、低電平0時(shí)選擇指令存放器。第5腳:RW為讀寫信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫操作。第6腳:E(或EN)端為使能(enable)端。第7~14腳:D0~D7為8位雙向數(shù)據(jù)端。第15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負(fù)極。2.3.2LCD1602的特性〔1〕n+5V電壓,比照度可調(diào)〔2〕n內(nèi)含復(fù)位電路〔3〕n提供各種控制命令,如:清屏、字符閃爍、光標(biāo)閃爍、顯示移位等多種功能〔4〕n有80字節(jié)顯示數(shù)據(jù)存儲(chǔ)器DDRAM〔5〕n內(nèi)建有192個(gè)5X7點(diǎn)陣的字型的字符發(fā)生器CGROM〔6〕n8個(gè)可由用戶自定義的5X7的字符發(fā)生器CGRAM2.3.3LCD1602特征及應(yīng)用微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧,常用在袖珍式儀表和低功耗應(yīng)用系統(tǒng)中。3ADC08093.1ADC0809的簡(jiǎn)介ADC0809其實(shí)就是美國(guó)國(guó)家半導(dǎo)體公司生產(chǎn)的CMOS工藝8通道,8位逐次逼近式A/D模數(shù)轉(zhuǎn)換器。其內(nèi)部有一個(gè)8通道多路開關(guān),它可以根據(jù)地址碼鎖存譯碼后的信號(hào),只選通8路模擬輸入信號(hào)中的一個(gè)進(jìn)行A/D轉(zhuǎn)換。是目前國(guó)內(nèi)應(yīng)用最廣泛的8位通用A/D芯片。3.2ADC0809引腳圖圖3.1ADC0809引腳圖ADC0809主要信號(hào)引腳的功能說(shuō)明如下:IN7~I(xiàn)N0——模擬量輸入通道ALE——地址鎖存允許信號(hào)。對(duì)應(yīng)ALE上跳沿,A、B、C地址狀態(tài)送入地址鎖存器中。START——轉(zhuǎn)換啟動(dòng)信號(hào)。START上升沿時(shí),復(fù)位ADC0809;START下降沿時(shí)啟動(dòng)芯片,開始進(jìn)行A/D轉(zhuǎn)換;在A/D轉(zhuǎn)換期間,START應(yīng)保持低電平。本信號(hào)有時(shí)簡(jiǎn)寫為ST.A、B、C——地址線。通道端口選擇線,A為低地址,C為高地址,引腳圖中為ADDA,ADDB和ADDC。其地址狀態(tài)與通道對(duì)應(yīng)關(guān)系見表1。CLK——時(shí)鐘信號(hào)。ADC0809的內(nèi)部沒有時(shí)鐘電路,所需時(shí)鐘信號(hào)由外界提供,因此有時(shí)鐘信號(hào)引腳。通常使用頻率為500KHz的時(shí)鐘信號(hào)EOC——轉(zhuǎn)換結(jié)束信號(hào)。EOC=0,正在進(jìn)行轉(zhuǎn)換;EOC=1,轉(zhuǎn)換結(jié)束。使用中該狀態(tài)信號(hào)即可作為查詢的狀態(tài)標(biāo)志,又可作為中斷請(qǐng)求信號(hào)使用。D7~D0——數(shù)據(jù)輸出線。為三態(tài)緩沖輸出形式,可以和單片機(jī)的數(shù)據(jù)線直接相連。D0為最低位,D7為最高OE——輸出允許信號(hào)。用于控制三態(tài)輸出鎖存器向單片機(jī)輸出轉(zhuǎn)換得到的數(shù)據(jù)。OE=0,輸出數(shù)據(jù)線呈高阻;OE=1,輸出轉(zhuǎn)換得到的數(shù)據(jù)。Vcc——+5V電源。Vref——參考電源參考電壓用來(lái)與輸入的模擬信號(hào)進(jìn)行比擬,作為逐次逼近的基準(zhǔn)。其典型值為+5V(Vref(+)=+5V,Vref(-)=-5V)3.3ADC0809的主要特性(1)8路8位A/D轉(zhuǎn)換器,即分辨率8位。(2)具有轉(zhuǎn)換起??刂贫?。(3)轉(zhuǎn)換時(shí)間為100μs(4)單個(gè)+5V電源供電(5)模擬輸入電壓范圍0~+5V,不需零點(diǎn)和滿刻度校準(zhǔn)。(6)工作溫度范圍為-40~+85攝氏度(7)低功耗,約15mW。3.4ADC0809的內(nèi)部結(jié)構(gòu)ADC0809是CMOS單片型逐次逼近式A/D轉(zhuǎn)換器,內(nèi)部結(jié)構(gòu)如下圖,它由8路模擬開關(guān)、地址鎖存與譯碼器、比擬器、8位開關(guān)樹型D/A轉(zhuǎn)換器、逐次逼近圖3.2ADC0809的內(nèi)部結(jié)構(gòu)3.5ADC0809的工作過程首先輸入3位地址,并使ALE=1,將地址存入地址鎖存器中。此地址經(jīng)譯碼選通8路模擬輸入之一到比擬器。START上升沿將逐次逼近存放器復(fù)位。下降沿啟動(dòng)A/D轉(zhuǎn)換,之后EOC輸出信號(hào)變低,指示轉(zhuǎn)換正在進(jìn)行。直到A/D轉(zhuǎn)換完成,EOC變?yōu)楦唠娖?,指示A/D轉(zhuǎn)換結(jié)束,結(jié)果數(shù)據(jù)已存入鎖存器,這個(gè)信號(hào)可用作中斷申請(qǐng)。當(dāng)OE輸入高電平時(shí),輸出三態(tài)門翻開,轉(zhuǎn)換結(jié)果的數(shù)字量輸出到數(shù)據(jù)總線上。3.6四位共陰數(shù)碼管圖3.3四位七段共陰數(shù)碼管474ls3734.174ls373引腳圖圖4.174ls373引腳圖373的輸出端O0~O7可直接與總線相連。當(dāng)三態(tài)允許控制端OE為低電平時(shí),Q0~Q7為正常邏輯狀態(tài),可用來(lái)驅(qū)動(dòng)負(fù)載或總線。當(dāng)OE為高電平時(shí),Q0~Q7呈高阻態(tài),即不驅(qū)動(dòng)總線,也不為總線的負(fù)載,但鎖存器內(nèi)部的邏輯操作不受影響。當(dāng)鎖存允許端LE為高電平時(shí),Q隨數(shù)據(jù)D而變。當(dāng)LE為低電平時(shí),D被鎖存在已建立的數(shù)據(jù)電平。當(dāng)LE端施密特觸發(fā)器的輸入滯后作用,使交流和直流噪聲抗擾度被改善400mV。引出端符號(hào):D0~D7數(shù)據(jù)輸入端OE三態(tài)允許控制端〔低電平有效〕LE鎖存允許端Q0~Q7輸出端4.274ls373真值表圖4.274ls373真值表L——低電平;H——高電平;X——不定態(tài);Q0——建立穩(wěn)態(tài)前Q的電平;G——輸入端,與8031ALE連高電平:暢通無(wú)阻低電平:關(guān)門鎖存。圖中OE——使能端,接地。當(dāng)G=“1”時(shí),74LS373輸出端1Q—8Q與輸入端1D—8D相同;當(dāng)G為下降沿時(shí),將輸入數(shù)據(jù)鎖存。5盆花自動(dòng)澆水系統(tǒng)的設(shè)計(jì)該系統(tǒng)包括土壤溫濕度采集與顯示系統(tǒng)和定時(shí)器的設(shè)置與顯示系統(tǒng)兩個(gè)系統(tǒng)。5.1土壤溫濕度采集與顯示土壤溫濕度采集與顯示系統(tǒng)以單片機(jī)AT89C51為控制核心,通過軟件設(shè)置到達(dá)具體動(dòng)作實(shí)現(xiàn)。土壤的溫濕度是由ADC0809和兩個(gè)點(diǎn)位器進(jìn)行模擬并送入單片機(jī),通過單片機(jī)的I/O口把檢測(cè)到的土壤溫濕度值用LCD顯示出來(lái)。同時(shí),如果系統(tǒng)在智能澆水設(shè)置情況下,那么該值與設(shè)定的澆水上下限值相比擬,假設(shè)低于下限值,那么單片機(jī)發(fā)出一個(gè)控制信號(hào),開始澆水。假設(shè)高于上限值時(shí),單片機(jī)再發(fā)出一個(gè)控制信號(hào)控制,停止?jié)菜H绻到y(tǒng)設(shè)置在手動(dòng)澆水情況下,那么按照設(shè)定好的定時(shí)澆水時(shí)間進(jìn)行澆水,溫濕度檢測(cè)電路把檢測(cè)到的土壤溫濕度值顯示在LCD上,以到達(dá)對(duì)土壤溫濕度實(shí)時(shí)監(jiān)測(cè)的目的。5.1.1硬件電路設(shè)計(jì)土壤溫濕度檢測(cè)與控制系統(tǒng)由AT89C51單片機(jī)、ADC0809、電位器、LCD顯示屏、電阻等組成。對(duì)于LCD顯示屏將D0-D7通過排阻RESPACK8連接到單片機(jī)的P0.0-P0.7上,E、R/W、RS與P3.7、P3.6、P3.5連接。5.1.2具體的土壤溫濕度采集于顯示系統(tǒng)硬件電路圖5.1土壤溫濕度采集于顯示系統(tǒng)硬件電路連接圖5.1.3系統(tǒng)軟件設(shè)計(jì)土壤溫濕度檢測(cè)與控制系統(tǒng)有自動(dòng)和手動(dòng)兩種澆水方式。通過設(shè)置鍵來(lái)選擇澆水方式,土壤溫濕度的檢測(cè)后在LCD液晶屏上顯示由定時(shí)器/計(jì)數(shù)器1中斷實(shí)現(xiàn)。在本次設(shè)計(jì)中定時(shí)器/計(jì)數(shù)器均工作在計(jì)數(shù)器方式的模式1。為方便時(shí)間計(jì)算,設(shè)定中斷一次為50ms,這樣計(jì)數(shù)20次就是一秒??梢砸源祟愅朴?jì)算出所要設(shè)定的時(shí)間。計(jì)時(shí)器局部程序如下:#include<at89x51.h>#defineuintunsignedint#defineucharunsignedchar#defineSTARTP3_4 #defineEOCP3_3 #defineOUTPORTP2uchard1[]="Humidity:(RH)";uchard2[]="Temperature:";sbitlcdrs=P3^5; sbitlcdrw=P3^6;sbitlcden=P3^7;sbitIN=P3^0;voiddelay(uintz) //液晶用延時(shí)函數(shù){ ucharx,y; for(x=1000;x>1;x--) for(y=z;y>1;y--);}voidwrite_com(ucharcom) //寫命令函數(shù){ lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0;}voidwrite_date(uchardate) //寫數(shù)據(jù)函數(shù){ lcdrs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0;}voidinit_lcd() //初始化函數(shù){ lcden=0; lcdrw=0; //選擇狀態(tài)為寫 write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); }unsignedintHumidity(){ unsignedintuiResult; IN=0; START=1; //啟動(dòng)AD轉(zhuǎn)換。 START=0; while(EOC==0); //等待轉(zhuǎn)換結(jié)束。 uiResult=OUTPORT; //出入轉(zhuǎn)換結(jié)果。 //uiResult=(100*uiResult); uiResult=(20*uiResult)/51; //處理運(yùn)算結(jié)果。 returnuiResult;}unsignedintTemperature(){ unsignedinttt; IN=1; START=1; //啟動(dòng)AD轉(zhuǎn)換。 START=0; while(EOC==0); //等待轉(zhuǎn)換結(jié)束。 tt=OUTPORT; //出入轉(zhuǎn)換結(jié)果。 tt=(100*tt)/51; //處理運(yùn)算結(jié)果。 returntt;}voidHumidity_show(unsignedintuiNumber){ unsignedcharucaNumber[3],ucCount; if(uiNumber>99) uiNumber=99; ucaNumber[0]=uiNumber/10; ucaNumber[1]=uiNumber%10; //ucaNumber[2]=uiNumber%10; for(ucCount=0;ucCount<2;ucCount++) { write_date((ucaNumber[ucCount])|0x30); }}voidTemperature_show(uintuiNumber){ unsignedcharucaNumber[3],ucCount; ucaNumber[0]=uiNumber/100; ucaNumber[1]=uiNumber/10%10; ucaNumber[2]=uiNumber%10; for(ucCount=0;ucCount<3;ucCount++) { write_date((ucaNumber[ucCount])|0x30); if(ucCount==1) write_date('.'); }}ucharuc_Clock=0; //定時(shí)器0中斷計(jì)數(shù)bitb_DATransform=0;uchari,j;voidmain(){ TMOD=0x01; //定時(shí)器0,模式1。 TH0=0x0c; TL0=0xb0; TR0=1; //啟動(dòng)定時(shí)器。 ET0=1; //開定時(shí)器中斷。 EA=1; //開總中斷 init_lcd(); write_com(0x80); for(i=0;i<16;i++) { write_date(d1[i]); } write_com(0xc0); for(i=0;i<12;i++) { write_date(d2[i]); } while(1) { if(b_DATransform==1) { b_DATransform=0; write_com(0x89); Humidity_show(Humidity()); //delay(2000); write_com(0xcc); Temperature_show(Temperature()); } }}voidTime0()interrupt1{ if(uc_Clock==0) { uc_Clock=5; b_DATransform=1; } else uc_Clock--; TH0=0x0c; //恢復(fù)定時(shí)器0。 TL0=0xb0;}5.2定時(shí)器局部定時(shí)器局部以單片機(jī)AT89C51為控制核心,通過軟件設(shè)置到達(dá)具體動(dòng)作實(shí)現(xiàn)。通過按鍵開關(guān)對(duì)當(dāng)前時(shí)間以及定時(shí)澆水時(shí)間進(jìn)行設(shè)置,共陰數(shù)碼管顯示,當(dāng)時(shí)間處在所設(shè)置的澆水時(shí)間內(nèi)時(shí),單片機(jī)發(fā)出控制信號(hào),開始澆水。否那么,停止?jié)菜?.2.1按鍵開關(guān)操作簡(jiǎn)介運(yùn)行仿真電路,八位數(shù)碼管會(huì)顯示00-00-00;通過P1口八個(gè)按鍵,分別可以調(diào)節(jié)總時(shí)間和定時(shí)時(shí)間,調(diào)節(jié)方法如下:P10,P11,P12,P13,是用來(lái)控制八段計(jì)時(shí)時(shí)間的,P14,P15,P16,P17是用來(lái)控制和調(diào)節(jié)總時(shí)間的,以下分別加以介紹。按下P14,數(shù)碼管上會(huì)顯示時(shí)鐘的運(yùn)行,即P14是控制總時(shí)間的開始和暫停的,按第一下,啟動(dòng)時(shí)鐘,按第二下,暫停時(shí)鐘,按第三下,啟動(dòng)時(shí)鐘……當(dāng)時(shí)間處于暫停時(shí)態(tài)時(shí),按P15,可進(jìn)行時(shí)間調(diào)整設(shè)置,按第一下,設(shè)置“時(shí)”,按第二下,設(shè)置“分”,按第三下設(shè)置“秒”,即P15為總時(shí)鐘設(shè)置鍵。P16和P17分別為“加”“減”控制鍵,配合P15使用,設(shè)置總是中的加減。當(dāng)總時(shí)間的時(shí)分秒設(shè)置完成,按一下P14,即啟動(dòng)時(shí)鐘,時(shí)鐘便開始運(yùn)行。按P10鍵,便可查詢或設(shè)置定時(shí)時(shí)間,當(dāng)P10按第一下,數(shù)碼管便顯示第一個(gè)定時(shí)時(shí)間點(diǎn),按第二下,顯示第二個(gè)定時(shí)時(shí)間點(diǎn)……當(dāng)P10鍵按下時(shí),顯示相應(yīng)的定時(shí)時(shí)間點(diǎn),再按一下P11,即可對(duì)相應(yīng)的時(shí)間點(diǎn)進(jìn)行設(shè)置,按第一下,設(shè)置“時(shí)”,按第二下,設(shè)置“分”,按第三下,設(shè)置“秒”,配合P12和P13鍵,P12和P13鍵為定時(shí)時(shí)間的“加”“減”調(diào)節(jié)鍵。5.2.2定時(shí)器局部硬件電路設(shè)計(jì)定時(shí)器局部局部由AT89C51、74LS373、四位共陰數(shù)碼管、電阻等組成5.2.3.定時(shí)器局部硬件電路圖5.2定時(shí)器硬件連接電路圖6總結(jié)本次設(shè)計(jì)的盆花自動(dòng)澆水系統(tǒng)以電子類的自動(dòng)澆花器的工作原理為參考,運(yùn)用溫濕度采集電路及單片機(jī)控制技術(shù)構(gòu)成一個(gè)土壤溫濕度采集與控制系統(tǒng)。再用數(shù)字電路控制自動(dòng)給水系統(tǒng)及時(shí)的澆水系統(tǒng)供水。整個(gè)盆花自動(dòng)澆水系統(tǒng)包括土壤溫濕度的采集和顯示、計(jì)數(shù)器的設(shè)置與顯示兩個(gè)個(gè)局部。土壤溫濕度的采集和顯示以ADC0809配合兩個(gè)電位器為感應(yīng)電路,將檢測(cè)到的土壤溫濕度值送入AT89C51單片機(jī),再由單片機(jī)的I/O口輸出到LCD液晶顯示屏進(jìn)行顯。同時(shí)此濕度值也是是否給盆花澆水的參考值。它設(shè)計(jì)為智能和手動(dòng)兩個(gè)局部:智能澆水系統(tǒng)是通過單片機(jī)程序設(shè)定澆水的上下限值并與溫濕度采集電路送入單片機(jī)的土壤濕度值相比擬,當(dāng)傳感器檢測(cè)到的濕度值低于設(shè)定的下限值時(shí),單片機(jī)輸出一個(gè)信號(hào),開始澆水,高于設(shè)定的上限值時(shí)再由單片機(jī)輸出一個(gè)信號(hào),停止?jié)菜皇謩?dòng)局部是由單片機(jī)從數(shù)碼管讀入月份與每天的實(shí)時(shí)時(shí)刻,通過軟件程序設(shè)定定時(shí)澆水的時(shí)間。通過按鍵開關(guān)對(duì)當(dāng)前時(shí)間以及定時(shí)澆水時(shí)間進(jìn)行設(shè)置,共陰數(shù)碼管顯示,當(dāng)時(shí)間處在所設(shè)置的澆水時(shí)間內(nèi)時(shí),單片機(jī)發(fā)出控制信號(hào),開始澆水。否那么,停止?jié)菜?。過本次畢業(yè)設(shè)計(jì),讓我進(jìn)一步熟悉了一些元器件的功能和屬性。也使我真正接觸到了控制系統(tǒng)的設(shè)計(jì),雖然是一個(gè)人們?nèi)粘I畹男∠到y(tǒng),但也讓我明白了很多設(shè)計(jì)上應(yīng)該注意的問題。比方實(shí)用性。經(jīng)濟(jì)性以及安裝條件等。7致謝本畢業(yè)論文是在我的導(dǎo)師朱亞莉老師的親切關(guān)心和悉心指導(dǎo)下完成的。她嚴(yán)肅的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,精益求精的工作作風(fēng),深深地感染和鼓勵(lì)著我。從課題的選擇到工程的最終完成,朱亞莉等老師都始終給予我細(xì)心的指導(dǎo)和不懈的支持。在課題的整個(gè)研究工作期間,我曾遇到不少的困難和挫折,是他們給予我的幫助和鼓勵(lì),讓我重新獲得了繼續(xù)前進(jìn)的勇氣和信心,在此期間,他們對(duì)我的論文提出了許多珍貴的修改意見,從而進(jìn)一步增強(qiáng)了本論文的可讀性和嚴(yán)密性。在此謹(jǐn)向朱老師致以衷心的感謝和深深的敬意!在此,我還要感謝在一起愉快的工作的各位同組人員,正是由于他們的幫助和支持團(tuán)結(jié)配合克服一個(gè)一個(gè)的困難和疑惑,直至本文的順利完成。在論文即將完成之際,我的心情無(wú)法平靜,從開始進(jìn)入課題到論文的順利完成,有多少可敬的師長(zhǎng)、同學(xué)、朋友給了我無(wú)言的幫助,在這里請(qǐng)接受我誠(chéng)摯的謝意!感謝我的同學(xué)、我的室友,在大學(xué)四年里,他們給我許多的關(guān)心和幫助,伴我度過許多快樂時(shí)光。和他們?cè)谝黄鸲冗^的日子永遠(yuǎn)值得回味。感謝各級(jí)領(lǐng)導(dǎo)對(duì)我的教育培養(yǎng)。他們細(xì)心指導(dǎo)我的學(xué)習(xí)與研究,在此,我要向諸位老師深深地鞠上一躬。感謝我的父母親和所有家人,焉得諼草,言樹之背,養(yǎng)育之恩,無(wú)以回報(bào)。正是你們的無(wú)私愛心和殷殷期盼使得我終于能夠走到今天,你們永遠(yuǎn)健康快樂就是我最大的心愿。8參考文獻(xiàn)[1]李泉溪.單片機(jī)原理與應(yīng)用實(shí)例仿真[M].北京:北京航天大學(xué)出版社,2009.8.[2]李敏.孟臣.數(shù)字式溫濕度傳感器及其應(yīng)用技術(shù)[J].電子元器件應(yīng)用,2004,11.[3]孫榮超.孫德超,數(shù)字溫濕度數(shù)據(jù)記錄儀的設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2005.7[4]黃鴻,吳石增.傳感器及其應(yīng)用技術(shù)[M]北京理工大學(xué)出版社,2008.7[5]劉燦軍.實(shí)用傳感器[M].北京:國(guó)防工業(yè)出版社,2004,6.[6]孫惠芹.單片機(jī)工程設(shè)計(jì)教程[M],北京:電子工業(yè)出版社,2009,6[7]宗光華,李大寨.多單片機(jī)系統(tǒng)應(yīng)用技術(shù)[M].北京:國(guó)防工業(yè)出版社,2003.10.[8]王芳琴.單片機(jī)控制的節(jié)水灌溉系統(tǒng)的研究[J].華中農(nóng)業(yè)大學(xué).[9]趙振德.單片機(jī)原理及實(shí)驗(yàn)/實(shí)訓(xùn)[M].西安:西安電子科技大學(xué)出版社,2009.[10]艾永樂,付子儀.數(shù)字電子技術(shù)根底[M].北京:中國(guó)電力出版社,2008.9附錄附錄AProtues仿真圖附錄B溫濕度采集與顯示程序#include<at89x51.h>#defineuintunsignedint#defineucharunsignedchar#defineSTARTP3_4 //ATART,ALE接口。0->1->0:啟動(dòng)AD轉(zhuǎn)換。#defineEOCP3_3 //轉(zhuǎn)換完畢由0變1.#defineOUTPORTP2uchard1[]="Humidity:(RH)";uchard2[]="Temperature:";sbitlcdrs=P3^5; //液晶控制引腳sbitlcdrw=P3^6;sbitlcden=P3^7;sbitIN=P3^2;voiddelay(uintz) //液晶用延時(shí)函數(shù){ ucharx,y; for(x=1000;x>1;x--) for(y=z;y>1;y--);}voidwrite_com(ucharcom) //寫命令函數(shù){ lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0;}voidwrite_date(uchardate) //寫數(shù)據(jù)函數(shù){ lcdrs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0;}voidinit_lcd() //初始化函數(shù){ lcden=0; //默認(rèn)開始狀態(tài)為關(guān)使能端,見時(shí)序圖 lcdrw=0; //選擇狀態(tài)為寫 write_com(0x38); write_com(0x0c); write_com(0x06); //顯示模式設(shè)置,默認(rèn)為0x38,不用變。 //顯示清屏,將上次的內(nèi)容去除,默認(rèn)為0x01. //顯示功能設(shè)置0x0f為開顯示,顯示光標(biāo),光標(biāo)閃爍;0x0c為開顯示,不顯光標(biāo),光標(biāo)不閃 //設(shè)置光標(biāo)狀態(tài)默認(rèn)0x06,為讀一個(gè)字符光標(biāo)加1. write_com(0x01); //設(shè)置初始化數(shù)據(jù)指針,是在讀指令的操作里進(jìn)行的} //AD轉(zhuǎn)換函數(shù),返回轉(zhuǎn)換結(jié)果。 //轉(zhuǎn)換結(jié)果是3位數(shù),小數(shù)點(diǎn)在百位與十位之間。unsignedintHumidity(){ unsignedintuiResult; IN=0; START=1; //啟動(dòng)AD轉(zhuǎn)換。 START=0; while(EOC==0); //等待轉(zhuǎn)換結(jié)束。 uiResult=OUTPORT; //出入轉(zhuǎn)換結(jié)果。 //uiResult=(100*uiResult); uiResult=(20*uiResult)/51; //處理運(yùn)算結(jié)果。 returnuiResult;}unsignedintTemperature(){ unsignedinttt; IN=1; START=1; //啟動(dòng)AD轉(zhuǎn)換。 START=0; while(EOC==0); //等待轉(zhuǎn)換結(jié)束。 tt=OUTPORT; //出入轉(zhuǎn)換結(jié)果。 tt=(100*tt)/51; //處理運(yùn)算結(jié)果。 returntt;}//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<把電壓顯示在LCD上>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>voidHumidity_show(unsignedintuiNumber){ unsignedcharucaNumber[3],ucCount; if(uiNumber>99) uiNumber=99; ucaNumber[0]=uiNumber/10; //把計(jì)算數(shù)字的每個(gè)位存入數(shù)組。 ucaNumber[1]=uiNumber%10; //ucaNumber[2]=uiNumber%10; for(ucCount=0;ucCount<2;ucCount++) { write_date((ucaNumber[ucCount])|0x30); //從首位到末位逐一輸出。 }}voidTemperature_show(uintuiNumber){ unsignedcharucaNumber[3],ucCount; ucaNumber[0]=uiNumber/100; ucaNumber[1]=uiNumber/10%10; ucaNumber[2]=uiNumber%10; for(ucCount=0;ucCount<3;ucCount++) { write_date((ucaNumber[ucCount])|0x30); if(ucCount==1) write_date('.'); }}ucharuc_Clock=0; //定時(shí)器0中斷計(jì)數(shù)bitb_DATransform=0;uchari,j;voidmain(){ TMOD=0x01; //定時(shí)器0,模式1。 TH0=0x0c; TL0=0xb0; TR0=1; //啟動(dòng)定時(shí)器。 ET0=1; //開定時(shí)器中斷。 EA=1; //開總中斷 init_lcd(); write_com(0x80); for(i=0;i<16;i++) { write_date(d1[i]); } write_com(0xc0); for(i=0;i<12;i++) { write_date(d2[i]); } while(1) { if(b_DATransform==1) { b_DATransform=0; write_com(0x89); Humidity_show(Humidity()); //delay(2000); write_com(0xcc); Temperature_show(Temperature()); } }}//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定時(shí)器0中斷函數(shù)>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>voidTime0()interrupt1{ if(uc_Clock==0) { uc_Clock=5; b_DATransform=1; } else uc_Clock--; TH0=0x0c; //恢復(fù)定時(shí)器0。 TL0=0xb0;}附錄C計(jì)時(shí)器局部程序#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitlay1=P2^0;sbitlay2=P2^1;sbitkey0=P1^0;sbitkey1=P1^1;sbitkey2=P1^2;sbitkey3=P1^3;sbitkey4=P1^4;sbitkey5=P1^5;sbitkey6=P1^6;sbitkey7=P1^7;sbitkey32=P3^2;sbitkey33=P3^3;sbitkey34=P3^4;sbitkey35=P3^5;sbitbeep=P3^5;uchartime[3];ucharjt[8][3]={0,21,30,3,10,25, 6,12,43, 9,45,24, 12,26,19, 15,34,54, 18,25,57, 21,43,0};bitflag;ucharduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};ucharwei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};uchartemp[8];uchart[8];ucharaa;voiddelay(uchart){while(--t);}voiddelayy(uchart){while(t--){delay(245); delay(245);}}voiddisplay(){staticuchari=0;temp[0]=duan[time[0]/10]; temp[1]=duan[time[0]%10];temp[2]=0x40; temp[3]=duan[time[1]/10];temp[4]=duan[time[1]%10];temp[5]=0x40;temp[6]=duan[time[2]/10];//秒temp[7]=duan[time[2]%10]; P0=0;//清空數(shù)據(jù),防止有交替重影l(fā)ay1=1;//段鎖存lay1=0;P0=wei[i];//取位碼lay2=1;//位鎖存lay2=0;P0=temp[i];//取顯示數(shù)據(jù),段碼lay1=1;//段鎖存lay1=0; i++;if(i==8) i=0;}voidInit(){TMOD|=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256; EA=1;ET0=1;TR0=1;}voidTimer0_isr(void)interrupt1{unsignedintnum;TH0=(65536-50000)/256;TL0=(65536-50000)%256;num++;if(num==20)//大致1s{num=0; if(time[2]==59)//秒到60,分鐘加1 { time[2]=0; if(time[1]==59)//分鐘到60,小時(shí)加1 { time[1]=0; if(time[0]==23)//小時(shí)到24,回零 time[0]=0; elsetime[0]++; } elsetime[1]++; } elsetime[2]++;}}voidKeyScan(){ uchara,c,d; uchara0,a1,a2; if(!key0) { delayy(10);if(!key0) { {a0++; if(a0==10) a0=0; } while(!key0) display(); } } if(!key1) { delayy(10);if(!key1) { {a1++; if(a1==4) a1=0;} while(!key1) display(); } } if(!key2) { delayy(10);if(!key2) { a2=1; while(!key2) display(); } } if(!key3) { delayy(10);if(!key3) { a2=2; while(!key3) display(); } } if(!key4) { delayy(10);if(!key4) { {a++; if(a==2) a=0; } while(!key4) display(); } }if(!key5) { delayy(10);if(!key5) { {c++; if(c==4) c=0; } while(!key5) display(); } } if(!key6) { delayy(10);if(!key6) d=1; while(!key6) display(); } if(!key7) { delayy(10);if(!key7) d=2; while(!key7) display(); }switch(a0){case0:break;case1:{TR0=0;aa=time[0];time[0]=jt[0][0];jt[0][0]=aa;aa=time[1];time[1]=jt[0][1];jt[0][1]=aa;aa=time[2];time[2]=jt[0][2];jt[0][2]=aa;switch(a1){case0:break;case1:{if(a2==1){a2=0;time[0]+=1; if(time[0]>=24)time[0]=0;display(); }if(a2==2){a2=0; time[0]-=1;if(time[0]==255)time[0]=23;display(); } break;}case2:if(a2==1){a2=0;time[1]+=1; if(time[1]>=60)time[1]=0;display(); }if(a2==2){a2=0; time[1]-=1;if(time[1]==255)time[1]=59;display(); }break;case3:if(a2==1){a2=0;time[2]+=1; if(time[2]>=60)time[2]=0;display(); }if(a2==2){a2=0; time[2]-=1;if(time[2]==255)time[2]=59;

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論