魚(yú)缸自動(dòng)換水系統(tǒng)設(shè)計(jì) 電氣自動(dòng)化專(zhuān)業(yè)畢業(yè)設(shè)計(jì) 畢業(yè)論文
《魚(yú)缸自動(dòng)換水系統(tǒng)設(shè)計(jì) 電氣自動(dòng)化專(zhuān)業(yè)畢業(yè)設(shè)計(jì) 畢業(yè)論文》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《魚(yú)缸自動(dòng)換水系統(tǒng)設(shè)計(jì) 電氣自動(dòng)化專(zhuān)業(yè)畢業(yè)設(shè)計(jì) 畢業(yè)論文(32頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 河南農(nóng)業(yè)職業(yè)學(xué)院 畢業(yè)設(shè)計(jì)報(bào)告 課題:魚(yú)缸自動(dòng)換水系統(tǒng)設(shè)計(jì) 系 部: 電子信息工程系 專(zhuān) 業(yè): 電氣自動(dòng)化 班 級(jí): 07-1 姓 名: xxx 指導(dǎo)老師: xxx 2011年6月26日 目 錄: 第一章 總體方案設(shè)計(jì)……………………………………………………3 第二章 硬件設(shè)計(jì) …………………………………………………4 2.1 控制核心AT89S52單片機(jī)…………………………………………4 2.2 八段四位共陽(yáng)極數(shù)碼管 …………………………
2、………………7 2.3穩(wěn)壓電路設(shè)計(jì) ……………………………………………………9 2.4電磁閥的結(jié)構(gòu)原理 ………………………………………………10 2.5熱繼電器 …………………………………………………………10 2.6微型水泵 …………………………………………………………11 2.7水位器的選擇 ……………………………………………………11 第三章 軟件設(shè)計(jì) …………………………………………………………12 3.1換水時(shí)間及換水量選擇 …………………………………………12 3.2控制過(guò)程 …………………………………………………………12 3.3程序設(shè)置 ………
3、…………………………………………………14 3.4編程程序 …………………………………………………………16 第四章 系統(tǒng)安裝與調(diào)試 …………………………………………………26 4.1軟件調(diào)試 …………………………………………………………26 4.2系統(tǒng)調(diào)試 …………………………………………………………26 結(jié)束語(yǔ) ……………………………………………………………………27 辭謝 ………………………………………………………………………27 參考文獻(xiàn) …………………………………………………………………28 附錄1 ………………………………………………………………………2
4、9 附錄2 ………………………………………………………………………30 摘 要: 養(yǎng)魚(yú)的朋友都知道,水質(zhì)對(duì)魚(yú)兒影響是最嚴(yán)重的,好的水質(zhì)可以使你的魚(yú)兒健康生長(zhǎng),怎樣才能保證水質(zhì)呢?只有經(jīng)常換水,對(duì)現(xiàn)在上班族來(lái)說(shuō)換水是很麻煩的,占用很長(zhǎng)的時(shí)間,對(duì)魚(yú)缸的市場(chǎng)前景考慮,分析自動(dòng)換水魚(yú)缸實(shí)現(xiàn)的必要性和可行性,選用合適的單片機(jī)芯片和多種外圍器件,完成硬件和軟件的整體設(shè)計(jì),最終實(shí)現(xiàn)了一個(gè)每天按時(shí)定量換水控制系統(tǒng) 關(guān)鍵詞:自動(dòng)換水系統(tǒng);定時(shí)控制;實(shí)時(shí)顯示 第一章 總體方案設(shè)計(jì) 魚(yú)缸自動(dòng)換水系統(tǒng)的原理圖如圖1-1所
5、示: 圖1-1 魚(yú)缸自動(dòng)換水系統(tǒng)原理圖 原理圖中的電磁閥(2)和水位器主要控制水位起到雙保險(xiǎn),用單片機(jī)控制更精確。有效防止水流出缸外。電磁閥(1)和抽水馬達(dá)是把想要換的沉水抽出,換水的多少由單片機(jī)設(shè)定,流量的大小是用微量調(diào)控運(yùn)行的情況。 工作過(guò)程為:用單片機(jī)控制電磁閥.電源接通電磁閥就開(kāi)起,水管就通了。反之電磁閥電源關(guān)閉水管斷流。進(jìn)水管直接接在自來(lái)水管子上。進(jìn)水的多少要看想要換多少水(抽掉的水)這也是用單片機(jī)控制電磁閥和抽水馬達(dá)。排水管接在抽水馬達(dá)噴水口只要接通電源水就會(huì)往外排,如果每天按排水一小時(shí)30升水來(lái)計(jì)算的話(huà),一個(gè)星期能換掉210升水(定時(shí)器控制排水電磁閥開(kāi)起電源一小時(shí))。方
6、法是用定時(shí)器設(shè)定時(shí)間比如下午1-2點(diǎn)排水 2-3點(diǎn)進(jìn)水 ,這個(gè)過(guò)程就是自動(dòng)循環(huán)的換水。定時(shí)器設(shè)定時(shí)間長(zhǎng)短和調(diào)節(jié)電磁閥上的微調(diào)是控制換水的多少和水的流量。水位器是控制水位的高度,進(jìn)水管接在水位器上起到雙重保護(hù),以防水溢出魚(yú)缸。 第二章 硬件設(shè)計(jì) 本章中,我主要介紹組成自動(dòng)換水魚(yú)缸的硬件,以及它們之間的聯(lián)系,在這個(gè)系統(tǒng)中起到的作用。 2. 1 控制核心AT89S52單片機(jī) 2.1.1功能特性概述 AT89S52是一種低功耗、高性能CMOS8位微控制器,在系統(tǒng)可編程Flash中擁有8k容量的存儲(chǔ)器。它是使用Atmel 公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C
7、51 產(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存儲(chǔ)器,256字節(jié)RAM,32 位I/O 口線(xiàn),看門(mén)狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工UART串行通道,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、
8、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。 2.1.2 單片機(jī)的特點(diǎn)主要有一下幾點(diǎn): l 與MCS-51單片機(jī)產(chǎn)品兼容; l 1000次擦寫(xiě)周期; l 全靜態(tài)操作:0Hz~33Hz; l 三級(jí)加密程序存儲(chǔ)器; l 八個(gè)中斷源; l 低功耗空閑和掉電模式; l 掉電后中斷可喚醒; l 掉電標(biāo)識(shí)符; 2.1.3 AT89S52的芯片管腳圖如圖2-1 圖2-1 AT89S52芯片管腳圖 各引腳的功能說(shuō)明: VCC:電源 GND: 接地點(diǎn) P0 口:P0口是一個(gè)8
9、位漏極開(kāi)路的雙向I/O口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電平。對(duì)P0端口寫(xiě)“1”時(shí),引腳用作高阻抗輸入。 當(dāng)訪問(wèn)外部程序和數(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ū);為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。 此外,P1.0和P1.2分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(P1.0/T2)和時(shí)器/計(jì)數(shù)器2
10、的觸發(fā)輸入(P1.1/T2EX),含義如下: P1.0 T2(定時(shí)器/計(jì)數(shù)器T2的外部計(jì)數(shù)輸入),時(shí)鐘輸出 P1.1 T2EX(定時(shí)器/計(jì)數(shù)器T2的捕捉/重載觸發(fā)信號(hào)和方向控制) P2 口:P2 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對(duì)P2 端口寫(xiě)“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。 在訪問(wèn)外部程序存儲(chǔ)器或用16位地址讀取外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX@DPTR)時(shí),P2 口送出高八位地址。在這種應(yīng)用中,P2 口使用很強(qiáng)的內(nèi)部上拉發(fā)送
11、1。在使用8位地址(如MOVX @RI)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口輸出P2鎖存器的內(nèi)容。 在flash編程和校驗(yàn)時(shí),P2口也接收高8位地址字節(jié)和一些控制信號(hào)。 P3 口:P3 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,p2 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對(duì)P3 端口寫(xiě)“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。 P3口亦作為AT89S52特殊功能(第二功能)使用;在flash編程和校驗(yàn)時(shí),P3口也接收一些控制信號(hào)。引腳的功能如表2-1所示: 表2-1 P3口的特殊功能 引腳名
12、稱(chēng) 含義 P3.0 RXD 串行輸入 P3.1 TXD 串行輸出 P3.2 INT0 外部中斷0 P3.3 INT0 外部中斷0 P3.4 T0 定時(shí)器0外部輸入 P3.5 T1 定時(shí)器1外部輸入 P3.6 WR 外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通 P3.7 RD 外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通 RST: 復(fù)位輸入。晶振工作時(shí),RST腳持續(xù)2 個(gè)機(jī)器周期時(shí),高電平將使單片機(jī)復(fù)位。當(dāng)看門(mén)狗計(jì)時(shí)完成后,RST 腳輸出96 個(gè)晶振周期的高電平。另外,在地址8EH上的特殊寄存器AUXR上的DISRTO位可以使此功能無(wú)效,當(dāng)DISRTO處于默認(rèn)狀態(tài)下,復(fù)位高電平有效。 ALE/PRO
13、G:地址鎖存控制信號(hào)ALE是訪問(wèn)外部程序存儲(chǔ)器時(shí),鎖存低8 位地址的輸出脈沖。在flash編程時(shí),此引腳(PROG)也用作編程輸入脈沖。 在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來(lái)作為外部定時(shí)器或時(shí)鐘使用。然而,特別強(qiáng)調(diào),在每次訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),ALE脈沖將會(huì)跳過(guò)。 如果需要,通過(guò)將地址為8EH的SFR的第0位置設(shè)置為 “1”時(shí),ALE操作將無(wú)效。這一位置為“0”時(shí),ALE 僅在執(zhí)行MOVX 或MOVC指令時(shí)有效。否則,ALE 將被微弱拉高。這個(gè)ALE 使能標(biāo)志位(地址為8EH的SFR的第0位)的設(shè)置對(duì)微控制器處于外部執(zhí)行模式下無(wú)效。 PSEN:表示外部程序存儲(chǔ)器
14、選通信號(hào)。 當(dāng)AT89S52從外部程序存儲(chǔ)器執(zhí)行外部代碼時(shí),PSEN在每個(gè)機(jī)器周期中被激活兩次,而在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),PSEN不被激活。 EA/VPP:訪問(wèn)外部程序存儲(chǔ)器控制信號(hào)。為使能從0000H 到FFFFH的外部程序存儲(chǔ)器讀取指令,EA必須接GND。為了執(zhí)行內(nèi)部程序指令,EA應(yīng)該接VCC。 在flash編程期間,EA也接收12伏VPP電壓。 XTAL1:振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。 XTAL2:振蕩器反相放大器的輸出端。 2.1.4單片機(jī)硬件資源的分配 P0.0-P0.7連接四位共陽(yáng)極數(shù)碼管; P2.0連接按鍵K1; P2.1 連接按鍵K2; P2
15、.2 連接按鍵K3; P2.3連接按鍵K4; 2.2 七段四位共陽(yáng)極數(shù)碼管 2.2.1數(shù)碼管介紹 七段數(shù)碼管是由7個(gè)發(fā)光二極管單構(gòu)成。共陽(yáng)數(shù)碼管是指將所有發(fā)光二極管的陽(yáng)極接到一起形成公共陽(yáng)極(COM)的數(shù)碼管。共陽(yáng)數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。 結(jié)構(gòu)圖如圖2-2所示: 圖2-2 數(shù)碼管結(jié)構(gòu)示意 2.2.2數(shù)碼管的驅(qū)動(dòng)方式 數(shù)碼管與單片機(jī)的連接電路如圖2-3所示,數(shù)碼管動(dòng)態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種
16、顯示方式之一,動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8個(gè)顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線(xiàn)控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,每個(gè)數(shù)碼管顯示出字形取決于單片機(jī)對(duì)位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開(kāi),該位就會(huì)顯示出字形,沒(méi)有選通的數(shù)碼管就不會(huì)亮。通過(guò)分時(shí)輪流控制各個(gè)數(shù)碼管的的COM端,就會(huì)使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。在輪流顯示過(guò)程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為1~2ms,能夠節(jié)省大量的I/O端口,而且功耗更低。 圖2-3 數(shù)碼管與單片
17、機(jī)連接電路 2.3穩(wěn)壓電路設(shè)計(jì) 穩(wěn)壓電路中含有元器件H7805,它的外形圖如圖2-4所示,它是3 端正穩(wěn)壓電路,TO-220 封裝,能提供多種固定的輸出電壓,應(yīng)用范圍比較廣。內(nèi)含過(guò)流、過(guò)熱和過(guò)載保護(hù)電路,帶散熱片時(shí),輸出電流可達(dá) 1A。雖然是固定穩(wěn)壓電路,但使用外接元件,可獲得不同的電壓和電流。 它的各個(gè)腳的含義為: 1―輸入,INPUT ;2―地,GND ;3―輸出,OUTPUT TO-220。 圖2-4 元器件H7805的外形圖 它的主要特點(diǎn):輸出電流可達(dá) 1A;輸出電壓有5V ;內(nèi)含有過(guò)熱保護(hù)、短路保護(hù)、輸出晶體管 SOA 保護(hù);以及一些極限值: (Ta=25℃) V
18、I——輸入電壓(VO=5~18V)??????????? 35V ; RθJC——熱阻???????????? 5℃/W; RθJA——熱阻?????????? 65℃/W; TOPR——工作結(jié)溫范圍??????????? 0~125℃; H7805在硬件電路中的使用,起到固定輸出電壓作用,使按鍵更好的使用,如圖所示2-5所示: 圖2-5 H7805在電路中的連接 2.4電磁閥的結(jié)構(gòu)原理 直動(dòng)式電磁閥有常閉型和常開(kāi)型二種。在我的魚(yú)缸自動(dòng)換水的系統(tǒng)中主要采用常閉型,它在斷電時(shí)呈關(guān)閉狀態(tài),當(dāng)線(xiàn)圈通電時(shí)產(chǎn)生電磁力,使動(dòng)鐵芯克服彈簧力同靜鐵芯吸合直接開(kāi)啟閥,介質(zhì)呈通路;當(dāng)線(xiàn)圈斷電時(shí)
19、電磁力消失,動(dòng)鐵芯在彈簧力的作用下復(fù)位,直接關(guān)閉閥口,介質(zhì)不通。此電磁閥結(jié)構(gòu)簡(jiǎn)單,動(dòng)作可靠,在零壓差和微真空下正常工作。結(jié)構(gòu)如圖2-6所示: 圖2-6 直動(dòng)式電磁閥結(jié)構(gòu)圖 2.5熱繼電器 繼電器在通俗意義上來(lái)說(shuō)就是開(kāi)關(guān),在條件滿(mǎn)足的情況下關(guān)閉或者開(kāi)啟。繼電器的開(kāi)關(guān)特性在很多的控制系統(tǒng)尤其是離散的控制系統(tǒng)中得到廣泛的應(yīng)用。在我的魚(yú)缸自動(dòng)換水系統(tǒng)中用到了5V繼電器。它在電路中為交流電動(dòng)機(jī)起到過(guò)載保護(hù)作用,也起到了開(kāi)關(guān)的作用。在我的系統(tǒng)電路中,繼電器的位置如圖2-7所示: 圖2-7 繼電器與原理圖 由圖中可以看出繼電器是用作開(kāi)關(guān)使用的,控制電
20、磁閥開(kāi)與關(guān), 當(dāng)K5接通時(shí),電磁閥1運(yùn)轉(zhuǎn) 當(dāng)K6接通時(shí),電磁閥2運(yùn)轉(zhuǎn) 2.6微型水泵 微型水泵,在我魚(yú)缸自動(dòng)換水系統(tǒng)中起到抽水以及雜質(zhì)的作用。選用的水泵抽水量為0.015立方米/min 它的主要特點(diǎn)有:體積超?。华?dú)有水氣兩用功能,工作介質(zhì)可以為氣體和液體(非油,無(wú)強(qiáng)腐蝕),有水抽水、有氣抽氣;可24小時(shí)連續(xù)運(yùn)轉(zhuǎn);長(zhǎng)期空轉(zhuǎn)屬正常工作,不會(huì)損壞泵;具備可靠自吸功能,吸程:1.5米,揚(yáng)程:3米。無(wú)油、不污染工作介質(zhì),免維護(hù)、任意方向安裝。 2. 7水位器的選擇 在我的自動(dòng)換水系統(tǒng)里,定位器其實(shí)就是抽水馬桶里的定位器,為什么選擇它呢?主要是價(jià)格便宜,市場(chǎng)廣,在馬桶專(zhuān)賣(mài)店里就可以買(mǎi)
21、到,定位器的原理很簡(jiǎn)單,就是靠水的浮力和水的壓力來(lái)控制的。把定位器連接進(jìn)水管上,起到雙重保護(hù)。 第 三 章 軟 件 設(shè) 計(jì) 我的魚(yú)缸自動(dòng)換水系統(tǒng)是用單片機(jī)控制電磁閥的開(kāi)與關(guān),每天換水的時(shí)間也是經(jīng)過(guò)精確的計(jì)算設(shè)置的??稍谧詣?dòng)模式中的設(shè)置時(shí)間,也可以通過(guò)手動(dòng)設(shè)置時(shí)間。 3.1 換水時(shí)間及換水量選擇 圖3-1 魚(yú)缸尺寸示意(長(zhǎng)2米,寬0.65米,高0.8米) 魚(yú)缸的大小如圖3-1所示,首先我們要先求出魚(yú)缸水的體積,公式為: Vs=2*0.65*0.8*0.85=0.884(立方米) (注: 0.85的意思是水的體積是魚(yú)缸總體積的85%) 根據(jù)有關(guān)資料證明,每天換
22、水量占水總體積的15%是最好的,對(duì)魚(yú)兒的生長(zhǎng)是最有利的,故可以算出每天換水量,所用公式為: Vh=0.884*0.15=0.1326立方米 根據(jù)前面水泵的選擇,計(jì)算每天只要排15分鐘水就可以了。由于家里自來(lái)水每分鐘流量是一定的,根據(jù)實(shí)際考察所得算出進(jìn)水只需要20分鐘。 算出每天換水的時(shí)間后,即在系統(tǒng)中設(shè)置,本系統(tǒng)開(kāi)機(jī)后顯示實(shí)時(shí)時(shí)間,默認(rèn)是自動(dòng)控制兩個(gè)電磁閥。每天換水一般在中午,所以整個(gè)單片機(jī)程序設(shè)置如下: 電磁閥1接通時(shí)間為每天13:00,斷開(kāi)時(shí)間13:20。 電磁閥2接通時(shí)間為每天14:00,斷開(kāi)時(shí)間14:15。 3. 2控制過(guò)程: 在自動(dòng)模式中,系統(tǒng)是根據(jù)我自己設(shè)定的時(shí)間控制
23、兩個(gè)電磁閥在指定的時(shí)間接通和斷開(kāi)。 在手動(dòng)模式中,即在非設(shè)置狀態(tài)下,可通過(guò)按鍵控制電磁閥的接通與斷開(kāi),如下: 點(diǎn)按K1鍵控制電磁閥1接通和斷開(kāi); 點(diǎn)按K2鍵控制電磁閥2接通和斷開(kāi)。 自動(dòng)與手動(dòng)控制模式的切換方法為: 首先點(diǎn)按K3鍵可查看狀態(tài), 自動(dòng)數(shù)碼管顯示OPEN, 手動(dòng)顯示OFF, 繼續(xù)點(diǎn)按K3鍵切換自動(dòng)/手動(dòng),數(shù)碼管會(huì)有相應(yīng)的顯示。 在設(shè)置定時(shí)時(shí)間狀態(tài)下: LED2(out1on)亮表示設(shè)置電磁閥1定開(kāi)時(shí)間 LED3(out1off)亮表示設(shè)置電磁閥1定關(guān)時(shí)間 LED4(out2on)亮表示設(shè)置電磁閥2定開(kāi)時(shí)間
24、 LED4(out1off)亮表示設(shè)置電磁閥2定關(guān)時(shí)間 詳細(xì)內(nèi)容請(qǐng)看圖3-2 圖3-2 3.3程序設(shè)計(jì) 3.3.1 主程序設(shè)計(jì) 主程序開(kāi)始 掃描顯示器更新時(shí)間數(shù)據(jù) 初始化定時(shí)器 初始化變量 K1: 繼電器1 ON/OFF K2: 繼電器2 ON/OFF K3:點(diǎn)按顯示鐘控狀態(tài),長(zhǎng)按設(shè)置定時(shí)時(shí)間 K4:點(diǎn)按顯示秒,長(zhǎng)按設(shè)置現(xiàn)在的時(shí)間 是否按K1、K2、K3、K4鍵? 3.3.2 子程序設(shè)計(jì) 主要控制子程序說(shuō)明如下: ● Timer2_Server:定時(shí)器2計(jì)時(shí)中斷程序每隔31.25ms中斷一次; ● DELAY:
25、延時(shí)子程序; ● feng:蜂鳴器鳴響處理程序; ● display:工作LED閃動(dòng)控制;轉(zhuǎn)換數(shù)據(jù)為七段顯示器顯示數(shù)據(jù)并寫(xiě)入顯示內(nèi)存內(nèi) ● LED_out:七段數(shù)碼管顯示程序; ● CONV:將時(shí)及分的數(shù)據(jù)轉(zhuǎn)換為七段顯示器顯示數(shù)據(jù)并寫(xiě)入顯示內(nèi)存內(nèi); ● key:按*鍵檢測(cè)包括設(shè)置現(xiàn)在的時(shí)間小時(shí)及分鐘,查看/設(shè)置定時(shí)時(shí)間等 中斷時(shí)間到 對(duì)時(shí)分秒進(jìn)行計(jì)數(shù) 執(zhí)行 繼電器1 ON/OFF 繼電器2 ON/OFF 1秒是否到? 對(duì)比2路定時(shí)時(shí)間是否到? 中斷退出 3.4編程程序 /***********************************
26、***********
P0.0-P0.7與數(shù)碼管中的ABCDEFGH端口連接。
P1.0-P1.3與數(shù)碼管中的S1,S2,S3,S4端口。
**********************************************/
#include
27、0x8C,0x86,0xC8,}; /* O F P E N */ uchar timecount,Hour,Cent,Second,qian,bai,shi,ge,THour,TCent,offTH,offTC, onTH2,onTC2,offTH2,offTC2; uchar disL,disH,keytemp,mbiao,App,onHour,onCent,offHour,offCent; uchar onHour2,onCent2,offHour2,offCent2; bit biaoA;
28、 sbit led0=P1^0; sbit led1=P1^1; sbit led2=P1^2; sbit led3=P1^3; sbit led4=P3^7; sbit K0=P2^0; sbit K1=P2^1; sbit K2=P2^2; sbit K3=P2^3; sbit BP=P3^2;sbit Aout=P1^6;sbit Aout2=P1^7; void display(); void key(); uchar AddReduce(uchar dd,uchar max,char min); void Alarm_clock(); v
29、oid LED_out(); void delay(uchar i) /***延時(shí)***/ { uint x; for(;i>0;i--) for(x=114;x>0;x--); //22.1184=228,,11.0592=114 } void feng(uchar i) /***蜂鳴器***/ { uint x; for(;i>0;i--){BP=~BP; for(x=114;x>0;x--);} BP=1; } void main(void) { Hour=12;Cent=00;//Second=50; onHour=
30、13;onCent=0;offHour=13;offCent=20;biaoA=1; onHour2=14;onCent2=0;offHour2=14;offCent2=15; RCAP2H=0x8F; /* 11.0592=8F80,,22.1184=1F00 */ RCAP2L=0x80; ET2=1; // 允許T2定時(shí)器中斷 TR2=1; // 啟動(dòng)T2定時(shí)器 EA=1; while(1) { display(); key(); } } /***T2***中***斷***函***數(shù)***/ void Timer2_Serve
31、r(void) interrupt 5 using 3 { TF2=0; //清除溢出標(biāo)記 timecount++; if(timecount==32) {timecount=0; Second++; if(Second==60) {Second=0; Cent++; if(Cent==60) {Cent=0; Hour++; if(Hour==24) Hour=0; } } Alarm_clock(); } switch (mbiao) { case 0: {disH=Ho
32、ur;disL=Cent;} break; case 1: {disH=100;disL=Second;} break; } } /***顯***示***函***數(shù)***/ void display() {if(disH==100) {qian=10;bai=10;shi=disL/10;ge=disL%10;} else {if(disL==100) {qian=disH/10;bai=disH%10;shi=10;ge=10;} else {qian=disH/10;bai=disH%10;shi=disL/10;ge=disL
33、%10;} } if(mbiao>3)if(timecount>16) {if(keytemp%2){shi=10;ge=10;} if(keytemp%2==0){qian=10;bai=10;}} LED_out(); } void LED_out() { if(qian){ //千位處理 P0=dispcode[qian]; led0=0;delay(2);led0=1;} P0=dispcode[bai]; //百位處理 led1=0;delay(2);led1=1; if((timecount<16)&&(mbi
34、ao==0)) //十位處理 P0=dispcode[shi]&0x7f; else P0=dispcode[shi]; led2=0;delay(2);led2=1; if((timecount<16)&&(mbiao==0)) //個(gè)位處理 P0=dispcode[ge]&0x7f; else P0=dispcode[ge]; led3=0;delay(2);led3=1; if(mbiao==5){ switch (keytemp) { case 0: {P0=0xFE;} break;
35、 case 1: {P0=0xFE;} break; case 2: {P0=0xFD;} break; case 3: {P0=0xFD;} break; case 4: {P0=0xFB;} break; case 5: {P0=0xFB;} break; case 6: {P0=0xF7;} break; case 7: {P0=0xF7;} break; } led4=0;delay(2);led4=1; } } /***按***鍵***檢***測(cè)***/ void ke
36、y() { uchar i,temp; if(K3==0){delay(5);if(K3==0) {while(!K3){display();temp++; if(temp==125){if(mbiao==0) {feng(20);mbiao=4;THour=Hour;TCent=Cent;keytemp=0;break;} else {temp=0;break;} }} if(mbiao<4){ feng(20);mbiao++; if(mbiao==2)mbiao=0;} if((temp<125)&&
37、(mbiao>3)){feng(20);keytemp++; switch (mbiao) { case 4: if(keytemp==2)mbiao=0; break; case 5: if(keytemp==8)mbiao=0; break; } } while(!K3)display();} temp=0; } if(mbiao==0) {if(K2==0) {delay(5); if(K2==0) {while(!K2) {display();temp++
38、; if(temp==125) {feng(20);mbiao=5;keytemp=0; THour=onHour;TCent=onCent;offTH=offHour;offTC=offCent; onTH2=onHour2;onTC2=onCent2;offTH2=offHour2;offTC2=offCent2; while(!K2) {disH=THour;disL=TCent;display();} break; } } if(temp<125){feng(20);mbi
39、ao=6;} temp=0; } } } switch (mbiao) { case 0:{if(K0==0){delay(5);if(K0==0) {feng(20);Aout=~Aout;}} if(K1==0){delay(5);if(K1==0) {feng(20);Aout2=~Aout2;}} while(!(K0&K1))LED_out(); } break; case 2:{;} break; case 3: {} break; case 4
40、:{if(keytemp==0){THour=AddReduce(THour,23,0);disH=THour;disL=TCent;display();} if(keytemp==1){TCent=AddReduce(TCent,59,0);disH=THour;disL=TCent;display();} if(K2==0){delay(5);if(K2==0) //保存數(shù)據(jù)并退出 {TR2=0;Second=0;timecount=0;Hour=THour; Cent=TCent;TR2=1;feng(20);mbiao=0; wh
41、ile(!K2)display();}}} break; case 5:{if(keytemp==0){THour=AddReduce(THour,23,0);disH=THour;disL=TCent;display();} if(keytemp==1){TCent=AddReduce(TCent,59,0);disH=THour;disL=TCent;display();} if(keytemp==2){offTH=AddReduce(offTH,23,0);disH=offTH;disL=offTC;display();} if(keytemp
42、==3){offTC=AddReduce(offTC,59,0);disH=offTH;disL=offTC;display();} if(keytemp==4){onTH2=AddReduce(onTH2,23,0);disH=onTH2;disL=onTC2;display();} if(keytemp==5){onTC2=AddReduce(onTC2,59,0);disH=onTH2;disL=onTC2;display();} if(keytemp==6){offTH2=AddReduce(offTH2,23,0);disH=offTH2;disL=offTC2;d
43、isplay();} if(keytemp==7){offTC2=AddReduce(offTC2,59,0);disH=offTH2;disL=offTC2;display();} if(K2==0){delay(5);if(K2==0) //保存數(shù)據(jù)并退出 {feng(20);mbiao=0;keytemp=0; onHour=THour;onCent=TCent;offHour=offTH;offCent=offTC; onHour2=onTH2;onCent2=onTC2;offHour2=offTH2;offCent2=offTC2;
44、 while(!K2)display();}} } break; case 6: {i=100;while(--i) {if(biaoA){qian=11;bai=13;shi=14;ge=15;LED_out();} else {qian=0;bai=11;shi=12;ge=12;LED_out();} if(K2==0){delay(5);if(K2==0){feng(20);biaoA=~biaoA; i=100; while(!K2) {if(biaoA){qian=11;bai=13;shi=14
45、;ge=15;LED_out();} else {qian=0;bai=11;shi=12;ge=12;LED_out();} }}}} mbiao=0;} break; } } /*加減按鍵子程序*/ uchar AddReduce(char dd,uchar max,uchar min) {uint x=15; if(K1==0){delay(5);if(K1==0){ feng(20);dd++; if(dd>max) dd=min; while(--x){display();if(K1)break;}
46、
}}
if(K0==0){delay(5);if(K0==0){
feng(20);dd--;
if(dd 47、if (Hour==offHour)
{if (Cent==offCent)
if (Second==0)
{feng(120);Aout=1;}
}}
if (biaoA)
{if (Hour==onHour2)
{if (Cent==onCent2)
if (Second==0)
{feng(120);Aout2=0;}
}}
if (biaoA)
{if (Hour==offHour2)
{if (Cent==offCent2)
if (Second==0)
{feng(120);A 48、out2=1;}
}}
}
第四章 系統(tǒng)安裝與調(diào)試
4.1 軟件調(diào)試
采用模塊化程序設(shè)計(jì)思想,首先調(diào)試子程序,然后逐級(jí)疊加調(diào)試。
4.2 系統(tǒng)調(diào)試
軟硬件結(jié)合在一起,看是否能工作正常,由于在模塊調(diào)試過(guò)程中,我們把軟硬件所出現(xiàn)的錯(cuò)誤都調(diào)整過(guò)來(lái)了,所以系統(tǒng)調(diào)試通過(guò)。
結(jié)束語(yǔ)
在這次畢業(yè)設(shè)計(jì)中,我學(xué)到了很多東西,真的沒(méi)有想到搞一篇畢業(yè)設(shè)計(jì)這么難,每天腦子里總想著怎么做才能更好,本人專(zhuān)業(yè)知識(shí)有 49、限,設(shè)計(jì)出來(lái)的東西還存在很多很多問(wèn)題,這是專(zhuān)業(yè)知識(shí)的不夠。在以后走入工作崗位中,要把技術(shù)學(xué)到位,等以后再來(lái)設(shè)計(jì)這樣產(chǎn)品就是輕而易舉的事情了。
從這次畢業(yè)設(shè)計(jì)中,明白了單片機(jī)的重要性,平時(shí)沒(méi)有感覺(jué)到單片機(jī)在生活中的作用這么大,通過(guò)這次設(shè)計(jì),才明白單片機(jī)無(wú)處不在,生活中到處都用的到它。
謝辭
快要畢業(yè)了,感覺(jué)自己沒(méi)有學(xué)到什么,但學(xué)校提供給我們這次機(jī)會(huì),大大彌補(bǔ)了我的理論學(xué)習(xí),感謝學(xué)校!還要感謝我的指導(dǎo)老師,焦振宇老師,沒(méi)有他每時(shí)每刻提醒我督促我,我不會(huì)按時(shí)完成的,在我想不出來(lái)設(shè)計(jì)什么產(chǎn)品時(shí),是焦老師提醒了我。給我啟發(fā)!在這次畢業(yè)設(shè)計(jì)中遇到一些問(wèn)題,特別是編程問(wèn)題,說(shuō)實(shí)話(huà)我個(gè)人沒(méi)有能力去完 50、成,在這要謝謝我認(rèn)識(shí)一個(gè)工程師,在我最無(wú)助的時(shí)候幫助了我,感謝他!
謝謝!
參 考 文 獻(xiàn)
[1] 胡漢才編,《單片機(jī)原理及其接口技術(shù)》,北京,清華大學(xué)出版社,1996
[2] 徐愛(ài)均編,《智能化儀表原理與設(shè)計(jì)》,北京,北京航空大學(xué)出版社,1996
[3] 公茂法等編,《單片機(jī)人機(jī)接口實(shí)力集》,北京,北京航空大學(xué)出版社,1998
[4] 李朝青編,《單片機(jī)原理及其接口技術(shù)》,北京,北京航空大學(xué)出版社,1998
[5] 鄔寬明編,《單片機(jī)外圍器件實(shí)用手冊(cè)》,北京,北京航空大學(xué)出版社,1998
[6] 先鋒工作室編著 51、,《單片機(jī)程序設(shè)計(jì)實(shí)例》,北京,清華大學(xué)出版社,2002
[7] 張毅剛,彭喜元,孟升衛(wèi),劉兆慶編,《MCS-51單片機(jī)使用子程序設(shè)計(jì)》,哈爾濱,哈爾濱工業(yè)大學(xué)出版社,2003
[8] 陳明熒編,《8051單片機(jī)課程設(shè)計(jì)實(shí)訓(xùn)教材》,北京,清華大學(xué)出版社,2003
[9] 肖玲妮,袁增貴編,《Protel99SE印刷電路板設(shè)計(jì)教程》,北京,清華大學(xué)出版社,2003
[10] X5045的中英文資料
附錄1:原理圖
附錄2:
物料清單
編號(hào)
注釋
封裝
編號(hào)
注釋
封裝
B1
喇叭
RB.2/.4
K 52、5
5V繼電器RELAY
C1
10uF
RB.1/.2
K6
5V繼電器RELAY
C2
22P
RAD0.1
LED1
4LED
4LED
C3
22P
RAD0.1
LED2
A2
out1on
C4
470u
RB.2/.4
LED3
A2
out1off
C5
100u
RB.1/.2
LED2
A2
out2on
D1
4007
DIODE0.4
LED3
A2
out2off
D2
4007
DIODE0.4
Q1
8550
TO92C
D3
4007
DIODE0.4
Q2
8 53、550
TO92C
D4
4007
DIODE0.4
Q3
8550
TO92C
D5
4148
DIODE0.4
Q4
8550
TO92C
D6
4148
DIODE0.4
Q5
8550
TO92C
J1
ISP
SIP6
Q6
8550
TO92C
J2
12V
SIP2
Q7
8550
TO92C
J3
CON5
VH5
Q8
8550
TO92C
K1
Up
SW6
R1
330
AXIAL0.4
K2
Down
SW6
R2
330
AXIAL0.4
K3
Enter
SW6
54、
R3
330
AXIAL0.4
K4
Menu
SW6
R4
330
AXIAL0.4
R9
2K
AXIAL0.4
R5
330
AXIAL0.4
R10
10K
AXIAL0.4
R6
330
AXIAL0.4
R11
10K
AXIAL0.4
R7
330
AXIAL0.4
R12
10K
AXIAL0.4
R8
330
AXIAL0.4
R13
10K
AXIAL0.4
U1
89S52
DIP-40
R14
10K
AXIAL0.4
U2
7805
TO-220
R15
10K
AXIAL0.4
X1
12MHz
XATL
R16
10K
AXIAL0.4
R17
10K
AXIAL0.4
-31-
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 領(lǐng)導(dǎo)班子2024年度民主生活會(huì)對(duì)照檢查材料范文(三篇)
- 金融工作主題黨課講稿范文(匯編)
- 鍋爐必備學(xué)習(xí)材料
- 鍋爐設(shè)備的檢修
- 主題黨課講稿:走中國(guó)特色金融發(fā)展之路加快建設(shè)金融強(qiáng)國(guó)(范文)
- 鍋爐基礎(chǔ)知識(shí):?jiǎn)t注意事項(xiàng)技術(shù)問(wèn)答題
- 領(lǐng)導(dǎo)班子2024年度民主生活會(huì)“四個(gè)帶頭”對(duì)照檢查材料范文(三篇)
- 正常運(yùn)行時(shí)影響鍋爐汽溫的因素和調(diào)整方法
- 3.鍋爐檢修模擬考試復(fù)習(xí)題含答案
- 司爐作業(yè)人員模擬考試試卷含答案-2
- 3.鍋爐閥門(mén)模擬考試復(fù)習(xí)題含答案
- 某公司鍋爐安全檢查表
- 3.工業(yè)鍋爐司爐模擬考試題庫(kù)試卷含答案
- 4.司爐工考試題含答案解析
- 發(fā)電廠鍋爐的運(yùn)行監(jiān)視和調(diào)整