191基于51單片機(jī)的教室智能照明控制系統(tǒng)資料
191基于51單片機(jī)的教室智能照明控制系統(tǒng)資料,基于,51,單片機(jī),教室,智能,照明,控制系統(tǒng),資料
封面目錄摘 要 1一. 緒論 .2二. 系統(tǒng)硬件的具體設(shè)計(jì)與實(shí)現(xiàn) .31. 系統(tǒng)原理和框圖 .32. 功能模塊的設(shè)計(jì) .32.1 單片機(jī)介紹 32.1.1 STC89C52 管腳說明 .42.1.2 STC89C52 主要特性 .52.1.3 芯片擦除 .62.2 DS1302 時(shí)鐘芯片 .62.2.1 芯片原理 62.2.2 芯片管腳說明 72.3 液晶顯示屏 LCD1602.82.3.1. 引腳說明 82.3.2 字符顯示地址說明 .82.3.3. 讀寫時(shí)序操作 92.3.4. 仿真電路圖 10三. 系統(tǒng)軟件設(shè)計(jì) .111. 程序描述 .112. 程序流程圖 .113. 程序 .12四. 總結(jié) .13五. 致謝 .14六. 參考文獻(xiàn) .15七.附錄 161.仿真圖 .162.原理圖 .173.主程序 .17水域全自動(dòng)增氧喂料系統(tǒng) 1摘 要本系統(tǒng)以單片機(jī) STC89C52、時(shí)鐘芯片 DS1302 和 LCD1602 液晶顯示為核心,具備調(diào)節(jié)時(shí)間,設(shè)置定時(shí)增氧和喂料。正常情況下,顯示實(shí)時(shí)日期和時(shí)間,外設(shè) 4 個(gè)調(diào)節(jié)按鍵,可以調(diào)節(jié)實(shí)時(shí)時(shí)間,還可以分別設(shè)置開始和結(jié)束時(shí)間,當(dāng)時(shí)間到達(dá)開始時(shí)間,啟動(dòng)繼電器、蜂鳴器和 LED 燈,表示正處于增氧和喂料狀態(tài),時(shí)間到達(dá)結(jié)束時(shí)間則關(guān)閉繼電器、蜂鳴器和 LED 燈。關(guān)鍵詞:增氧和喂養(yǎng);STC89C52;DS1302;LCD1602AbstractThis system make MCU STC89C52 , clock chip DS1302 , LCD1602 LCD display as the core, with the function of adjusting time, seting the lock time and the timer increases oxygen and feeding. Under normal circumstances, displays real-time date and time. You can Adjust the real time and set up the starting time and ending time of by four keys. When the time between the starting time and the ending time, the relay and the buzzer will be opened and the LED will lit up, said it was in a state of increasing oxygen and feeding, or they will be closed.Keywords: Increasing oxygen and feeding; STC89C52; DS1302; LCD1602水域全自動(dòng)增氧喂料系統(tǒng) 2一. 緒論隨著我國(guó)水產(chǎn)養(yǎng)殖業(yè)的不斷發(fā)展,養(yǎng)殖密度不斷加大,一味追求高產(chǎn)高效的養(yǎng)殖措施對(duì)養(yǎng)殖水環(huán)境造成很大的污染,同時(shí)增加了人工成本。魚塘池水氧濃度偏低及餌料無法及時(shí)供應(yīng)是兩大主要問題。很多魚塘采用供養(yǎng)機(jī)器及人工投料解決此類問題。傳統(tǒng)的作業(yè)方式費(fèi)時(shí)費(fèi)力,這就需要單片機(jī)系統(tǒng)來完成工作,提高效率,釋放勞動(dòng)力。養(yǎng)魚機(jī)械在淡水養(yǎng)魚中的應(yīng)用,促使養(yǎng)魚技術(shù)有了新的發(fā)展,養(yǎng)魚技術(shù)的發(fā)展又對(duì)養(yǎng)魚設(shè)備提出了更新更高的要求。例如,在魚塘內(nèi),要提高單位面積產(chǎn)量,就必須增加魚苗的投放尾數(shù)。但是,魚苗多了,魚池內(nèi)的天然飼料不能滿足魚類生長(zhǎng)的需要,就需要補(bǔ)充人工飼料。飼料充足了、合理了,魚類生長(zhǎng)速度加快,但水中的含氧量是有限的,當(dāng)水中氧氣含量不夠魚群正常生活時(shí),就需要補(bǔ)充氧氣,于是要解決水體增氧設(shè)備的合理運(yùn)用。另外,魚料的合理投放,能夠使魚苗在不撐到的情況下,生長(zhǎng)發(fā)育得到良好的管控,提高喂養(yǎng)質(zhì)量。隨著半導(dǎo)體技術(shù)的飛速發(fā)展,以及移動(dòng)通信、網(wǎng)絡(luò)技術(shù)、多媒體技術(shù)在嵌入式系統(tǒng)設(shè)計(jì)中的應(yīng)用,單片機(jī)從 4 位、8 位、16 位到 32 位,其發(fā)展歷程一直受到廣大電子愛好者的極大關(guān)注。單片機(jī)功能越來越強(qiáng)大,價(jià)格卻不斷下降的優(yōu)勢(shì)無疑成為嵌入式系統(tǒng)方案設(shè)計(jì)的首選,同時(shí)單片機(jī)應(yīng)用領(lǐng)域的擴(kuò)大也使得更多人加入到基于單片機(jī)系統(tǒng)的開發(fā)行列中,推動(dòng)著單片機(jī)技術(shù)的創(chuàng)新進(jìn)步。然而傳統(tǒng)的單片機(jī)系統(tǒng)開發(fā)除了需要購置諸如仿真器、編程器、示波器等價(jià)格不菲的電子設(shè)備外,開發(fā)過程也較繁瑣。來自英國(guó) Labcenter Electronics 公司的 Proteus 軟件很好地詮釋了利用現(xiàn)代 EDA 工具方便快捷開發(fā)單片機(jī)系統(tǒng)的優(yōu)勢(shì)。它包括 PROTEUS VSM(Virtual System Modelling)、PROTEUS PCB DESIGN 兩大組成部分,在 PC 機(jī)上就能實(shí)現(xiàn)原理圖電路設(shè)計(jì)、電路分析與仿真、單片機(jī)代碼級(jí)調(diào)試與仿真、系統(tǒng)測(cè)試與功能驗(yàn)證以及形成 PCB 文件的完整嵌入式系統(tǒng)設(shè)計(jì)與研發(fā)過程?;诳萍佳该桶l(fā)展的今日,勢(shì)必開發(fā)一款能夠在設(shè)定時(shí)間內(nèi)自動(dòng)喂養(yǎng)和增氧的設(shè)備。水域全自動(dòng)增氧喂料系統(tǒng) 3二. 系統(tǒng)硬件的具體設(shè)計(jì)與實(shí)現(xiàn)1. 系統(tǒng)原理和框圖水域全自動(dòng)增氧喂料系統(tǒng)的硬件組成如圖 2-1 所示。本系統(tǒng)主要由STC89C52 單片機(jī)及其外圍電路、DS1302 時(shí)鐘電路、繼電器控制電路、蜂鳴器控制電路、顯示模塊、按鍵控制部分和電源等七部分組成。圖2-1 系統(tǒng)設(shè)計(jì)框圖單片機(jī)不斷請(qǐng)求時(shí)鐘電路回復(fù)數(shù)據(jù),并經(jīng)過處理后送LCD1602顯示,同時(shí),按鍵若按下則執(zhí)行相應(yīng)的操作,當(dāng)條件成立時(shí),繼電器和蜂鳴器得電后開啟,表示正處于增氧和喂料狀態(tài),否則,顯示屏一直顯示實(shí)時(shí)的日期和時(shí)間。 2. 功能模塊的設(shè)計(jì)2.1 單片機(jī)介紹單片機(jī)是把微型計(jì)算機(jī)主要部分都集成在一個(gè)芯片上的單芯片微型計(jì)算機(jī),即將運(yùn)算器,控制器,輸入輸出接口,部分存儲(chǔ)器以及其他一些邏輯部件集成在一個(gè)芯片上,故可以把單片機(jī)看成是一個(gè)不帶外部設(shè)備的微型計(jì)算機(jī),相當(dāng)于一個(gè)沒有顯示器,沒有鍵盤,不帶監(jiān)控程序的單板機(jī)。 由于單片計(jì)算機(jī)具有體積小,重量輕,耗電少,功能強(qiáng)和價(jià)格低等特點(diǎn),又由于數(shù)據(jù)大多是在芯片內(nèi)傳送處理,所以運(yùn)行速度快,抗干擾能力強(qiáng)。單片機(jī)從七十年代問世以來,在二十多年的時(shí)間里,發(fā)展異常迅速,并已廣泛應(yīng)用于各種領(lǐng)域。單片機(jī)具有通訊接口,用單片機(jī)進(jìn)行接口的控制與管理,單片機(jī)與主機(jī)可并行工作,大大地提高了系統(tǒng)的運(yùn)行速度,所以在網(wǎng)絡(luò)通訊領(lǐng)域也得STC89C52時(shí)鐘電路顯示模塊電路繼電器控制電路獨(dú)立按鍵操作電路蜂鳴器控制電路水域全自動(dòng)增氧喂料系統(tǒng) 4到了越來越多的應(yīng)用。STC89C52是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī),與普遍的AT89C51功能基本一樣,管腳完全兼容。AT89C2051是一種帶2K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU 和閃爍存儲(chǔ)器組合在單個(gè)芯片中,宏晶科技的STC89C52是一種高效微控制器,AT89C2051是它的一種精簡(jiǎn)版本。STC89C52單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。STC89C52外形及引腳排列如圖2-1-1所示(與AT89C51管腳相同) 。圖2.1 STC89C52外形及引腳圖2.1.1 STC89C52 管腳說明VCC:供電電壓。GND:接地。P0口:P0口為一個(gè)8位漏級(jí)開路雙向 I/O口,每腳可吸收8TTL 門電流。當(dāng)P1口的管腳第一次寫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)部上拉電阻拉高,且作為水域全自動(dòng)增氧喂料系統(tǒng) 5輸入。并因此作為輸入時(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)這是由于上拉的緣故。在實(shí)際應(yīng)用中,大多數(shù)情況下都使用P3口的第二功能。P3.0 —RXD:串行輸入口P3.1 —TXD:串行輸出口P3.2 —/INT0:外部中斷0P3.3 —/INT1:外部中斷1P3.4 —T0:記時(shí)器0外部輸入P3.5 —T1:記時(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禁止,置位無效。/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:來自反向振蕩器的輸出。容并且凍結(jié)振蕩器,禁止所用其他芯片水域全自動(dòng)增氧喂料系統(tǒng) 6功能,直到下一個(gè)硬件復(fù)位為止。2.1.2 STC89C52 主要特性* 與MCS-51 兼容* 4K字節(jié)可編程閃爍存儲(chǔ)器* 壽命:1000寫/擦循環(huán)* 數(shù)據(jù)保留時(shí)間:10年* 全靜態(tài)工作:0Hz-24Hz* 三級(jí)程序存儲(chǔ)器鎖定* 128*8位內(nèi)部RAM* 32可編程I/O線* 兩個(gè)16位定時(shí)器/計(jì)數(shù)器* 5個(gè)中斷源* 可編程串行通道* 低功耗的閑置和掉電模式* 片內(nèi)振蕩器和時(shí)鐘電路2.1.3 芯片擦除整個(gè)PEROM陣列和三個(gè)鎖定位的電擦除可通過正確的控制信號(hào)組合,并保持ALE管腳處于低電平 10ms 來完成。在芯片擦除操作中,代碼陣列全被寫“1”且在任何非空存儲(chǔ)字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。此外,STC89C52設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時(shí)器,計(jì)數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個(gè)硬件復(fù)位為止。2.2 DS1302 時(shí)鐘芯片現(xiàn)在流行的串行時(shí)鐘電路很多,如DS1302、 DS1307、PCF8485 等。這些電路的接口簡(jiǎn)單、價(jià)格低廉、使用方便,被廣泛地采用。本文介紹的實(shí)時(shí)時(shí)鐘電路DS1302是 DALLAS公司的一種具有涓細(xì)電流充電能力的電路,主要特點(diǎn)是采用串行數(shù)據(jù)傳輸,可為掉電保護(hù)電源提供可編程的充電功能,并且可以關(guān)閉充電功能。采用普通32.768kHz晶振。2.2.1 芯片原理DS1302 是美國(guó)DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31×8水域全自動(dòng)增氧喂料系統(tǒng) 7的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級(jí)產(chǎn)品,與DS1202兼容,但增加了主電源/后備電源雙電源引腳,同時(shí)提供了對(duì)后備電源進(jìn)行涓細(xì)電流充電的能力。DS1302 有 12 個(gè)寄存器,其中有 7 個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為 BCD 碼形式,其日歷、時(shí)間寄存器及其控制字見表 1。此外,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(讀)。日歷和時(shí)間寄存器及其控制字如圖 2.3.1 所示:圖 2.2.1 日歷和時(shí)間寄存器及其控制字2.2.2 芯片管腳說明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 供電。X1和 X2是振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線,通過把RST 輸入驅(qū)動(dòng)置高電平來啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST 接通控制邏輯,允許地址/命令序列送入 移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)傳送的方法。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc2.0V之前,RST必須保持低電平。只有在SCLK 為低電平時(shí),才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向),后面有詳細(xì)說明。SCLK 為時(shí)鐘輸入端。 圖2.3.2水域全自動(dòng)增氧喂料系統(tǒng) 8為DS1302的引腳功能圖:圖 2.2.2 DS1302的引腳功能圖2.3 液晶顯示屏 LCD16022.3.1. 引腳說明本設(shè)計(jì)中用到的液晶屏,其管腳圖如圖 2.3.1 所示。圖 2.3.1 LCD1602 管腳圖2.3.2 字符顯示地址說明水域全自動(dòng)增氧喂料系統(tǒng) 9圖 2.3.2 LCD1602 字符顯示地址如上圖所示,LCD1602 總共有兩行 16 個(gè)字符的位置可供顯示,首行首字符地址為 0x80,第二行首字符地址是 0x80+0x40,比如要在第二行第二個(gè)位置顯示,則可將寫指令地址設(shè)為 0x80+0x40+1 即可。2.3.3. 讀寫時(shí)序操作單片機(jī)需要編寫驅(qū)動(dòng)程序,必須嚴(yán)格按照 LCD1602 的讀寫時(shí)序來操作,才能實(shí)現(xiàn)數(shù)據(jù)的更新和顯示,還要進(jìn)行初始化設(shè)置等。單片機(jī)分別控制 LCD1602的 RS、RW 、 E 端,再進(jìn)行 DB0~DB7 的數(shù)據(jù)操作,具體讀寫時(shí)序圖如圖2.3.3.1 和圖 2.3.3.2 所示。① 讀操作時(shí)序圖 2.3.3.1 LCD1602 讀操作時(shí)序圖② 寫操作時(shí)序圖 2.3.3.2 LCD1602 寫操作時(shí)序圖水域全自動(dòng)增氧喂料系統(tǒng) 102.3.4. 仿真電路圖圖 2.3.4 LCD1602 仿真圖水域全自動(dòng)增氧喂料系統(tǒng) 11三. 系統(tǒng)軟件設(shè)計(jì)1. 程序描述程序中主要用到的知識(shí)點(diǎn)有:DS1302 的操作、LCD1602 顯示屏的操作、按鍵掃描的應(yīng)用。單片機(jī)通過時(shí)序操作,讀取 DS1302 發(fā)過來的數(shù)據(jù),并經(jīng)過一定的運(yùn)算和轉(zhuǎn)換,最終再由單片機(jī)送到液晶屏顯示。液晶屏的操作也需要嚴(yán)格按照時(shí)序來做,先初始化,再不斷更新數(shù)據(jù),當(dāng)有按鍵按下時(shí),程序判斷按鍵按下接口,分別操作不同的功能,比如選擇鍵,可以選擇設(shè)置實(shí)時(shí)日期和時(shí)間,還能選擇設(shè)置開關(guān)鎖開啟時(shí)間, “UP”和“DOWN”按鍵則是設(shè)置各個(gè)參數(shù)的大小。當(dāng)實(shí)時(shí)時(shí)間超過開始時(shí)間并且在結(jié)束時(shí)間之內(nèi),啟動(dòng)蜂鳴器和繼電器提示。 2. 程序流程圖水域全自動(dòng)增氧喂料系統(tǒng) 12開始器件和端口初始化更新時(shí)間數(shù)據(jù)選擇鍵按下點(diǎn)亮 LED回復(fù)數(shù)據(jù)啟動(dòng)蜂鳴器設(shè)置喂養(yǎng)、增氧時(shí)間設(shè)置時(shí)間YYNN向 DS1302 發(fā)送請(qǐng)求設(shè)實(shí)時(shí)時(shí)間?Y到達(dá)設(shè)定時(shí)間繼電器吸合Y熄滅 LED關(guān)閉蜂鳴器繼電器斷開N圖 3-2 全自動(dòng)增氧喂養(yǎng)系統(tǒng)主程序流程圖3. 程序具體程序見附錄。水域全自動(dòng)增氧喂料系統(tǒng) 13四. 總結(jié)在此次水域全自動(dòng)增氧喂料系統(tǒng)的設(shè)計(jì),讓我感覺到了電子電路復(fù)雜深度性,它很貼切我們的日常生活,無所不在,應(yīng)用無處不有,它并不是想象中的那么簡(jiǎn)單,也并非是無法克服的堡壘。一份耕耘,一份收獲。通過畢業(yè)設(shè)計(jì),使我對(duì) C 語言有了進(jìn)一步的認(rèn)識(shí)。我深深地感到要有科學(xué)的思維方法和學(xué)習(xí)方法是極其重要的。由于對(duì)微機(jī)原理的課程有點(diǎn)茫然,所以拿到這個(gè)題目時(shí)不知道是如何下手,一下子沒有頭緒。于是去圖書館查找了相關(guān)資料后開始理清了設(shè)計(jì)的思路。電路設(shè)計(jì)部分應(yīng)該有的精神就是廣集資料。只憑借自己頭腦中的知識(shí)是遠(yuǎn)遠(yuǎn)不夠的。哪里出現(xiàn)了問題,就要翻書本,或上網(wǎng)查資料。當(dāng)然也要開動(dòng)自己的腦筋怎樣使系統(tǒng)電路更完美。例如我的設(shè)計(jì)題目是基于單片機(jī)的定時(shí)開關(guān)鎖系統(tǒng)設(shè)計(jì)。有定時(shí)開關(guān),自然會(huì)用到時(shí)鐘控制,可以采用時(shí)鐘芯片或者單片機(jī)內(nèi)部定時(shí)器進(jìn)行計(jì)時(shí),這時(shí)候就要綜合分析,結(jié)合設(shè)計(jì)的實(shí)現(xiàn)功能進(jìn)行選擇了。還比如對(duì)顯示器件的選擇,你就要選擇你所熟悉的,所了解的。從程序設(shè)計(jì)到上機(jī)調(diào)試以及說明書的編寫,都花費(fèi)了不少的時(shí)間。設(shè)計(jì)的每一步進(jìn)展,都給了我自己很大的信心。這其中也出現(xiàn)了不少的問題,比如調(diào)試過程中,使我花費(fèi)了不少工夫重溫系統(tǒng)軟件的應(yīng)用,真是有種“才下眉頭,又上心頭”的感覺。盡管在設(shè)計(jì)當(dāng)中遇到了不少的問題,但在老師及同學(xué)的幫助下迎刃而解了。做完設(shè)計(jì)我進(jìn)一步認(rèn)識(shí)到,任何事情,開始的時(shí)候,都感覺很難。但,只要有信心克服困難,堅(jiān)持到底,永不氣餒,就能達(dá)到勝利的彼岸。還有,在做設(shè)計(jì)的時(shí)候,查閱資料也是很重要的, “他山之石,可以攻玉” ,掌握足夠的信息,就是掌握成功的關(guān)鍵。總之,這次畢業(yè)設(shè)計(jì)相對(duì)來說比較成功,要感謝各位老師的耐心指導(dǎo),我相信不管做什么事,只要自己刻苦鉆研,都將會(huì)有所收獲,并且讓你學(xué)到平時(shí)在課堂上學(xué)不到的知識(shí)。水域全自動(dòng)增氧喂料系統(tǒng) 14五. 致謝感謝我的指導(dǎo)老師,她嚴(yán)謹(jǐn)細(xì)致、一絲不茍的作風(fēng)一直是我工作、學(xué)習(xí)中的榜樣;她循循善誘的教導(dǎo)和不拘一格地思路給了我無盡的啟迪。在整個(gè)畢業(yè)設(shè)計(jì)的完成過程中,我得到了老師的精心指導(dǎo)。老師她治學(xué)嚴(yán)謹(jǐn),思想深邃,為我營(yíng)造了一種良好的精神氛圍。在老師那里,我不僅接受了全新的思想觀念,學(xué)會(huì)了基本的思考方式,掌握了通用的研究方法,而且還明白了許多待人接物與為人處世的道理。相信她的思想和工作作風(fēng)會(huì)給我以后的工作和學(xué)習(xí)帶來重大的幫助。再此,請(qǐng)?jiān)试S我對(duì)老師們?cè)俅伪硎疚疑钌畹闹x意。如今,大學(xué)將盡,我們即將離開母校,踏上新的征程?;仡櫞髮W(xué)歷程,老師和同學(xué)給予我太多的支持,太多的幫助。在此,我對(duì)老師表示感謝,并祝你們身體健康,工作順利!也祝我的所有同學(xué)事業(yè)早成,萬事如意!最后,我要向百忙之中抽時(shí)間對(duì)本文進(jìn)行審閱,評(píng)議和參與本人論文答辯的各位老師真心地表示感謝,謝謝你們!水域全自動(dòng)增氧喂料系統(tǒng) 15六. 參考文獻(xiàn)[1] 田良.綜合電子設(shè)計(jì)與實(shí)踐[M].南京:東南大學(xué)出版社,2008.[2] 黃根春.電子設(shè)計(jì)教程[M].北京:電子工業(yè)出版社,2008.[3] 黃智偉.全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽制作實(shí)訓(xùn)[M].北京:北京航空航天大學(xué)出版社,2007.[4] 張華林,周小方.電子設(shè)計(jì)競(jìng)賽實(shí)訓(xùn)教程[M].北京:北京航空航天大學(xué)出版社,2007.[5] 高有堂, 翟天嵩, 朱清慧.電子設(shè)計(jì)與實(shí)戰(zhàn)指導(dǎo)[M] .北京:電子工業(yè)出版社,2007.[6] Louis Scheffer 等.集成電路實(shí)現(xiàn)、電路設(shè)計(jì)與工藝[M].北京:科學(xué)出版社,2008.[7] WATANABEKT,KAROUJIK.Cost-effective approach in LDMOS with partial 0.35 Ⅲ design intoconventional 0.6 Fm process.Proc IEEE 15thInt Symp Power Semicond Dev and IC.2005:245—248.[8] 何寶祥,朱正偉,劉訓(xùn)非,儲(chǔ)開斌.模擬電路及其應(yīng)用[M].北京:清華大學(xué)出版社,2008.[9] 別文群,王留芳.基于凌陽SPCE061A單片機(jī)的智能充電器的設(shè)計(jì)[J] .廣東輕工職業(yè)技術(shù)學(xué)院學(xué)報(bào),2006,5(1):4—7.[10] 宋鏡波,羅楚新,張貴林.等.電動(dòng)自行車智能快速充電系統(tǒng)的研制[A].第八屆電工理論學(xué)術(shù)年會(huì) It].2007.水域全自動(dòng)增氧喂料系統(tǒng) 16七.附錄1.仿真圖圖 7.1 水域全自動(dòng)增氧喂料系統(tǒng)仿真圖水域全自動(dòng)增氧喂料系統(tǒng) 172.原理圖圖 7.2 水域全自動(dòng)增氧喂料系統(tǒng)原理圖3.主程序#include #include #define uchar unsigned char#define uint unsigned int//uchar time_data[7]={13,5,10,18,0,30,50}; //年周月日時(shí)分秒 ,初始化uchar time_data[7];uchar write_add[7]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80}; //數(shù)據(jù)的地址uchar read_add[7]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81};uchar disp[14];uchar code table1[]=“ 2000/00/00 “;uchar code table2[]=“ 00:00:00 00“;uchar code table3[]=“ “; //清屏內(nèi)容uchar code table4[]=“ Set Real Time “;uchar code table5[]=“ Set Lock Time “;水域全自動(dòng)增氧喂料系統(tǒng) 18uchar code table6[]=“ Start Time: “;uchar code table7[]=“ 00:00:00 “;uchar code table8[]=“ End Time: “;bit Adjust; //調(diào)節(jié)標(biāo)志位,=1 表示進(jìn)入調(diào)節(jié)模式, =0 是正常模式sbit sck=P2^1; //時(shí)鐘端口sbit io=P2^2; //時(shí)鐘端口sbit rst=P2^3; //時(shí)鐘端口sbit rs=P1^0; //LCD1602sbit rw=P1^1; //LCD1602sbit e=P1^2; //LCD1602sbit SELT =P3^0; //選擇鍵sbit ENTER=P3^1; //確認(rèn)鍵sbit UP =P3^2; //加鍵sbit DOWN =P3^3; //減鍵sbit JDQ =P2^0; //繼電器uchar Select_num; //選擇按鍵按下次數(shù)uchar Enter_num; //確認(rèn)按鍵按下次數(shù)float Year,Month,Day,Hour,Minute,Second,Week; //時(shí)間設(shè)置值float Hour_H,Minute_H,Second_H; //設(shè)置開始時(shí)間float Hour_L,Minute_L,Second_L; //設(shè)置結(jié)束時(shí)間void read_rtc();/*********************************************************************************************************************/void delay1(uint z) //延時(shí)函數(shù){uint x,y;for(x=z;x0;x--)for(y=10;y0;y--);}void write_com(uchar com) //寫指令函數(shù){rw=0;delay1(5);rs=0;delay1(5);e=1;delay1(5);水域全自動(dòng)增氧喂料系統(tǒng) 19P0=com;delay1(5);e=0;delay1(5);}void write_date(uchar date) //寫數(shù)據(jù)函數(shù){rw=0;delay1(5);rs=1;delay1(5);e=1;delay1(5);P0=date;delay1(5);e=0;delay1(5);}void init() //初始化函數(shù){uchar num;Year=13;Month=10;Day=18;Hour=0;Minute=30;Second=50;Week=5;e=0; // 時(shí)序表 e 初始為 0write_com(0x38); //設(shè)置 16*2 顯示,5*7 點(diǎn)陣,8 位數(shù)據(jù)接口write_com(0x0c); //設(shè)置光標(biāo)write_com(0x06); //光標(biāo)自動(dòng)加 1,光標(biāo)輸入方式write_com(0x01); //清屏write_com(0x80); //設(shè)置初始顯示位置for(num=0;num1;sck=1;}}void write_ds1302(uchar add,uchar dat){rst=0;_nop_(); //CPU 原地踏步sck=0;_nop_();rst=1;_nop_();write_ds1302_byte(add); //傳地址write_ds1302_byte(dat); //傳數(shù)據(jù)rst=0; //不受其他影響_nop_();io=1; //釋放sck=1;}uchar read_ds1302(uchar add){uchar i,value;rst=0;_nop_(); //CPU 原地踏步sck=0;_nop_();rst=1;_nop_();write_ds1302_byte(add);for(i=0;i1;sck=0;if(io)value=value|0x80;水域全自動(dòng)增氧喂料系統(tǒng) 23sck=1;}rst=0;_nop_();sck=0;_nop_();sck=1;io=1;return value;}void set_rtc() //設(shè)置時(shí)間{uchar i,j;for(i=0;iwrite_date(0x3e);write_com(0x80+1); //寫 write_date(0x3e);Enter_num=0;}if(Select_num==2){LCD_Clean(1);LCD_Clean(2);LCD_Display_String(1,table4);LCD_Display_String(2,table5);write_com(0x80+0x40+0); //寫 write_date(0x3e);write_com(0x80+0x40+1); //寫 write_date(0x3e);Enter_num=0;}if(Select_num==3){LCD_Clean(1);LCD_Clean(2);LCD_Display_String(1,table1);LCD_Display_String(2,table2);Select_num=0;Enter_num=0;Adjust=0;}write_com(0x0c); //光標(biāo)不再閃爍Enter_num=0;}水域全自動(dòng)增氧喂料系統(tǒng) 25if(ENTER==0){delay1(5);if(ENTER==0){while(!ENTER);Enter_num++;}if(Select_num==1) //設(shè)置實(shí)時(shí)時(shí)間{if(Enter_num==1){LCD_Clean(1);LCD_Clean(2);LCD_Display_String(1,table1);LCD_Display_String(2,table2);SetTime_dispaly(0x80+5,Year);SetTime_dispaly(0x80+8,Month);SetTime_dispaly(0x80+11,Day);SetTime_dispaly(0x80+0x40+3,Hour);SetTime_dispaly(0x80+0x40+6,Minute);SetTime_dispaly(0x80+0x40+9,Second);SetTime_dispaly(0x80+0x40+14,Week);write_com(0x80+5); //光標(biāo)閃爍地址,停留在年的位置上write_com(0x0f); //光標(biāo)閃爍}if(Enter_num==2){write_com(0x80+8); //光標(biāo)閃爍地址,停留在月的位置上write_com(0x0f); //光標(biāo)閃爍}if(Enter_num==3){write_com(0x80+11); //光標(biāo)閃爍地址,停留在日的位置上write_com(0x0f); //光標(biāo)閃爍}if(Enter_num==4){write_com(0x80+0x40+3); //光標(biāo)閃爍地址,停留在時(shí)的位置上write_com(0x0f); //光標(biāo)閃爍水域全自動(dòng)增氧喂料系統(tǒng) 26}if(Enter_num==5){write_com(0x80+0x40+6); //光標(biāo)閃爍地址,停留在分的位置上write_com(0x0f); //光標(biāo)閃爍}if(Enter_num==6){write_com(0x80+0x40+9); //光標(biāo)閃爍地址,停留在秒的位置上write_com(0x0f); //光標(biāo)閃爍}if(Enter_num==7){write_com(0x80+0x40+15); //光標(biāo)閃爍地址,停留在星期的位置上write_com(0x0f); //光標(biāo)閃爍}if(Enter_num==8){Enter_num=0;write_com(0x0c); //光標(biāo)不再閃爍LCD_Clean(1);LCD_Clean(2);LCD_Display_String(1,table1);LCD_Display_String(2,table2);time_data[0]=Year;///10*16+Year%10;time_data[1]=Week;///10*16+Week%10;time_data[2]=Month;///10*16+Month%10;time_data[3]=Day;///10*16+Day%10;time_data[4]=Hour;///10*16+Hour%10;time_data[5]=Minute;///10*16+Minute%10;time_data[6]=Second;///10*16+Second%10;set_rtc(); //設(shè)置時(shí)間Select_num=0;Adjust=0;}}if(Select_num==2) //設(shè)置開關(guān)鎖時(shí)間{if(Enter_num==1){水域全自動(dòng)增氧喂料系統(tǒng) 27LCD_Clean(1);LCD_Clean(2);LCD_Display_String(1,table6);LCD_Display_String(2,table7);SetTime_dispaly(0x80+0x40+4,Hour_L);SetTime_dispaly(0x80+0x40+7,Minute_L);SetTime_dispaly(0x80+0x40+10,Second_L);write_com(0x80+0x40+4); //光標(biāo)閃爍地址,停留在時(shí)的位置上write_com(0x0f); //光標(biāo)閃爍}if(Enter_num==2){write_com(0x80+0x40+7); //光標(biāo)閃爍地址,停留在分的位置上write_com(0x0f); //光標(biāo)閃爍}if(Enter_num==3){write_com(0x80+0x40+10); //光標(biāo)閃爍地址,停留在秒的位置上write_com(0x0f); //光標(biāo)閃爍}if(Enter_num==4){write_com(0x0c); //光標(biāo)不再閃爍LCD_Clean(1);LCD_Clean(2);LCD_Display_String(1,table8);LCD_Display_String(2,table7);SetTime_dispaly(0x80+0x40+4,Hour_H);SetTime_dispaly(0x80+0x40+7,Minute_H);SetTime_dispaly(0x80+0x40+10,Second_H);write_com(0x80+0x40+4); //光標(biāo)閃爍地址,停留在時(shí)的位置上write_com(0x0f); //光標(biāo)閃爍}if(Enter_num==5){write_com(0x80+0x40+7); //光標(biāo)閃爍地址,停留在分的位置上write_com(0x0f); //光標(biāo)閃爍}if(Enter_num==6)水域全自動(dòng)增氧喂料系統(tǒng) 28{write_com(0x80+0x40+10); //光標(biāo)閃爍地址,停留在秒的位置上write_com(0x0f); //光標(biāo)閃爍}if(Enter_num==7){Enter_num=0;write_com(0x0c); //光標(biāo)不再閃爍LCD_Clean(1);LCD_Clean(2);LCD_Display_String(1,table1);LCD_Display_String(2,table2);Select_num=0;Adjust=0;}}}if(UP==0){delay1(5);if(UP==0){while(!UP);if(Select_num==1){if(Enter_num==1){Year++;if(Year99)Year=0;SetTime_dispaly(0x80+5,Year);write_com(0x80+5);write_com(0x0f);}if(Enter_num==2){Month++;if(Month12)Month=1;SetTime_dispaly(0x80+8,Month);write_com(0x80+8);write_com(0x0f);
收藏