魚缸自動換水系統(tǒng)設計 電氣自動化專業(yè)畢業(yè)設計 畢業(yè)論文
《魚缸自動換水系統(tǒng)設計 電氣自動化專業(yè)畢業(yè)設計 畢業(yè)論文》由會員分享,可在線閱讀,更多相關《魚缸自動換水系統(tǒng)設計 電氣自動化專業(yè)畢業(yè)設計 畢業(yè)論文(32頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 河南農(nóng)業(yè)職業(yè)學院 畢業(yè)設計報告 課題:魚缸自動換水系統(tǒng)設計 系 部: 電子信息工程系 專 業(yè): 電氣自動化 班 級: 07-1 姓 名: xxx 指導老師: xxx 2011年6月26日 目 錄: 第一章 總體方案設計……………………………………………………3 第二章 硬件設計 …………………………………………………4 2.1 控制核心AT89S52單片機…………………………………………4 2.2 八段四位共陽極數(shù)碼管 …………………………
2、………………7 2.3穩(wěn)壓電路設計 ……………………………………………………9 2.4電磁閥的結構原理 ………………………………………………10 2.5熱繼電器 …………………………………………………………10 2.6微型水泵 …………………………………………………………11 2.7水位器的選擇 ……………………………………………………11 第三章 軟件設計 …………………………………………………………12 3.1換水時間及換水量選擇 …………………………………………12 3.2控制過程 …………………………………………………………12 3.3程序設置 ………
3、…………………………………………………14 3.4編程程序 …………………………………………………………16 第四章 系統(tǒng)安裝與調試 …………………………………………………26 4.1軟件調試 …………………………………………………………26 4.2系統(tǒng)調試 …………………………………………………………26 結束語 ……………………………………………………………………27 辭謝 ………………………………………………………………………27 參考文獻 …………………………………………………………………28 附錄1 ………………………………………………………………………2
4、9 附錄2 ………………………………………………………………………30 摘 要: 養(yǎng)魚的朋友都知道,水質對魚兒影響是最嚴重的,好的水質可以使你的魚兒健康生長,怎樣才能保證水質呢?只有經(jīng)常換水,對現(xiàn)在上班族來說換水是很麻煩的,占用很長的時間,對魚缸的市場前景考慮,分析自動換水魚缸實現(xiàn)的必要性和可行性,選用合適的單片機芯片和多種外圍器件,完成硬件和軟件的整體設計,最終實現(xiàn)了一個每天按時定量換水控制系統(tǒng) 關鍵詞:自動換水系統(tǒng);定時控制;實時顯示 第一章 總體方案設計 魚缸自動換水系統(tǒng)的原理圖如圖1-1所
5、示: 圖1-1 魚缸自動換水系統(tǒng)原理圖 原理圖中的電磁閥(2)和水位器主要控制水位起到雙保險,用單片機控制更精確。有效防止水流出缸外。電磁閥(1)和抽水馬達是把想要換的沉水抽出,換水的多少由單片機設定,流量的大小是用微量調控運行的情況。 工作過程為:用單片機控制電磁閥.電源接通電磁閥就開起,水管就通了。反之電磁閥電源關閉水管斷流。進水管直接接在自來水管子上。進水的多少要看想要換多少水(抽掉的水)這也是用單片機控制電磁閥和抽水馬達。排水管接在抽水馬達噴水口只要接通電源水就會往外排,如果每天按排水一小時30升水來計算的話,一個星期能換掉210升水(定時器控制排水電磁閥開起電源一小時)。方
6、法是用定時器設定時間比如下午1-2點排水 2-3點進水 ,這個過程就是自動循環(huán)的換水。定時器設定時間長短和調節(jié)電磁閥上的微調是控制換水的多少和水的流量。水位器是控制水位的高度,進水管接在水位器上起到雙重保護,以防水溢出魚缸。 第二章 硬件設計 本章中,我主要介紹組成自動換水魚缸的硬件,以及它們之間的聯(lián)系,在這個系統(tǒng)中起到的作用。 2. 1 控制核心AT89S52單片機 2.1.1功能特性概述 AT89S52是一種低功耗、高性能CMOS8位微控制器,在系統(tǒng)可編程Flash中擁有8k容量的存儲器。它是使用Atmel 公司高密度非易失性存儲器技術制造,與工業(yè)80C
7、51 產(chǎn)品指令和引腳完全兼容。而且Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應用系統(tǒng)提供高靈活、超有效的解決方案。 AT89S52具有以下標準功能: 8k字節(jié)可編程Flash存儲器,256字節(jié)RAM,32 位I/O 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個16 位定時器/計數(shù)器,一個6向量2級中斷結構,全雙工UART串行通道,片內晶振及時鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、
8、中斷繼續(xù)工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。 2.1.2 單片機的特點主要有一下幾點: l 與MCS-51單片機產(chǎn)品兼容; l 1000次擦寫周期; l 全靜態(tài)操作:0Hz~33Hz; l 三級加密程序存儲器; l 八個中斷源; l 低功耗空閑和掉電模式; l 掉電后中斷可喚醒; l 掉電標識符; 2.1.3 AT89S52的芯片管腳圖如圖2-1 圖2-1 AT89S52芯片管腳圖 各引腳的功能說明: VCC:電源 GND: 接地點 P0 口:P0口是一個8
9、位漏極開路的雙向I/O口。作為輸出口,每位能驅動8個TTL邏輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。 當訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復用。在這種模式下,P0具有內部上拉電阻。 在flash編程時,P0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。 P1 口:P1 口是一個具有內部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅;為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。 此外,P1.0和P1.2分別作定時器/計數(shù)器2的外部計數(shù)輸入(P1.0/T2)和時器/計數(shù)器2
10、的觸發(fā)輸入(P1.1/T2EX),含義如下: P1.0 T2(定時器/計數(shù)器T2的外部計數(shù)輸入),時鐘輸出 P1.1 T2EX(定時器/計數(shù)器T2的捕捉/重載觸發(fā)信號和方向控制) P2 口:P2 口是一個具有內部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅動4 個TTL 邏輯電平。對P2 端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。 在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX@DPTR)時,P2 口送出高八位地址。在這種應用中,P2 口使用很強的內部上拉發(fā)送
11、1。在使用8位地址(如MOVX @RI)訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內容。 在flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制信號。 P3 口:P3 口是一個具有內部上拉電阻的8 位雙向I/O 口,p2 輸出緩沖器能驅動4 個TTL 邏輯電平。對P3 端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。 P3口亦作為AT89S52特殊功能(第二功能)使用;在flash編程和校驗時,P3口也接收一些控制信號。引腳的功能如表2-1所示: 表2-1 P3口的特殊功能 引腳名
12、稱 含義 P3.0 RXD 串行輸入 P3.1 TXD 串行輸出 P3.2 INT0 外部中斷0 P3.3 INT0 外部中斷0 P3.4 T0 定時器0外部輸入 P3.5 T1 定時器1外部輸入 P3.6 WR 外部數(shù)據(jù)存儲器寫選通 P3.7 RD 外部數(shù)據(jù)存儲器寫選通 RST: 復位輸入。晶振工作時,RST腳持續(xù)2 個機器周期時,高電平將使單片機復位。當看門狗計時完成后,RST 腳輸出96 個晶振周期的高電平。另外,在地址8EH上的特殊寄存器AUXR上的DISRTO位可以使此功能無效,當DISRTO處于默認狀態(tài)下,復位高電平有效。 ALE/PRO
13、G:地址鎖存控制信號ALE是訪問外部程序存儲器時,鎖存低8 位地址的輸出脈沖。在flash編程時,此引腳(PROG)也用作編程輸入脈沖。 在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時器或時鐘使用。然而,特別強調,在每次訪問外部數(shù)據(jù)存儲器時,ALE脈沖將會跳過。 如果需要,通過將地址為8EH的SFR的第0位置設置為 “1”時,ALE操作將無效。這一位置為“0”時,ALE 僅在執(zhí)行MOVX 或MOVC指令時有效。否則,ALE 將被微弱拉高。這個ALE 使能標志位(地址為8EH的SFR的第0位)的設置對微控制器處于外部執(zhí)行模式下無效。 PSEN:表示外部程序存儲器
14、選通信號。 當AT89S52從外部程序存儲器執(zhí)行外部代碼時,PSEN在每個機器周期中被激活兩次,而在訪問外部數(shù)據(jù)存儲器時,PSEN不被激活。 EA/VPP:訪問外部程序存儲器控制信號。為使能從0000H 到FFFFH的外部程序存儲器讀取指令,EA必須接GND。為了執(zhí)行內部程序指令,EA應該接VCC。 在flash編程期間,EA也接收12伏VPP電壓。 XTAL1:振蕩器反相放大器和內部時鐘發(fā)生電路的輸入端。 XTAL2:振蕩器反相放大器的輸出端。 2.1.4單片機硬件資源的分配 P0.0-P0.7連接四位共陽極數(shù)碼管; P2.0連接按鍵K1; P2.1 連接按鍵K2; P2
15、.2 連接按鍵K3; P2.3連接按鍵K4; 2.2 七段四位共陽極數(shù)碼管 2.2.1數(shù)碼管介紹 七段數(shù)碼管是由7個發(fā)光二極管單構成。共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管。共陽數(shù)碼管在應用時應將公共極COM接到+5V,當某一字段發(fā)光二極管的陰極為低電平時,相應字段就點亮。當某一字段的陰極為高電平時,相應字段就不亮。 結構圖如圖2-2所示: 圖2-2 數(shù)碼管結構示意 2.2.2數(shù)碼管的驅動方式 數(shù)碼管與單片機的連接電路如圖2-3所示,數(shù)碼管動態(tài)顯示接口是單片機中應用最為廣泛的一種
16、顯示方式之一,動態(tài)驅動是將所有數(shù)碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,每個數(shù)碼管顯示出字形取決于單片機對位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就會顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的的COM端,就會使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅動。在輪流顯示過程中,每位數(shù)碼管的點亮時間為1~2ms,能夠節(jié)省大量的I/O端口,而且功耗更低。 圖2-3 數(shù)碼管與單片
17、機連接電路 2.3穩(wěn)壓電路設計 穩(wěn)壓電路中含有元器件H7805,它的外形圖如圖2-4所示,它是3 端正穩(wěn)壓電路,TO-220 封裝,能提供多種固定的輸出電壓,應用范圍比較廣。內含過流、過熱和過載保護電路,帶散熱片時,輸出電流可達 1A。雖然是固定穩(wěn)壓電路,但使用外接元件,可獲得不同的電壓和電流。 它的各個腳的含義為: 1―輸入,INPUT ;2―地,GND ;3―輸出,OUTPUT TO-220。 圖2-4 元器件H7805的外形圖 它的主要特點:輸出電流可達 1A;輸出電壓有5V ;內含有過熱保護、短路保護、輸出晶體管 SOA 保護;以及一些極限值: (Ta=25℃) V
18、I——輸入電壓(VO=5~18V)??????????? 35V ; RθJC——熱阻???????????? 5℃/W; RθJA——熱阻?????????? 65℃/W; TOPR——工作結溫范圍??????????? 0~125℃; H7805在硬件電路中的使用,起到固定輸出電壓作用,使按鍵更好的使用,如圖所示2-5所示: 圖2-5 H7805在電路中的連接 2.4電磁閥的結構原理 直動式電磁閥有常閉型和常開型二種。在我的魚缸自動換水的系統(tǒng)中主要采用常閉型,它在斷電時呈關閉狀態(tài),當線圈通電時產(chǎn)生電磁力,使動鐵芯克服彈簧力同靜鐵芯吸合直接開啟閥,介質呈通路;當線圈斷電時
19、電磁力消失,動鐵芯在彈簧力的作用下復位,直接關閉閥口,介質不通。此電磁閥結構簡單,動作可靠,在零壓差和微真空下正常工作。結構如圖2-6所示: 圖2-6 直動式電磁閥結構圖 2.5熱繼電器 繼電器在通俗意義上來說就是開關,在條件滿足的情況下關閉或者開啟。繼電器的開關特性在很多的控制系統(tǒng)尤其是離散的控制系統(tǒng)中得到廣泛的應用。在我的魚缸自動換水系統(tǒng)中用到了5V繼電器。它在電路中為交流電動機起到過載保護作用,也起到了開關的作用。在我的系統(tǒng)電路中,繼電器的位置如圖2-7所示: 圖2-7 繼電器與原理圖 由圖中可以看出繼電器是用作開關使用的,控制電
20、磁閥開與關, 當K5接通時,電磁閥1運轉 當K6接通時,電磁閥2運轉 2.6微型水泵 微型水泵,在我魚缸自動換水系統(tǒng)中起到抽水以及雜質的作用。選用的水泵抽水量為0.015立方米/min 它的主要特點有:體積超?。华氂兴畾鈨捎霉δ?,工作介質可以為氣體和液體(非油,無強腐蝕),有水抽水、有氣抽氣;可24小時連續(xù)運轉;長期空轉屬正常工作,不會損壞泵;具備可靠自吸功能,吸程:1.5米,揚程:3米。無油、不污染工作介質,免維護、任意方向安裝。 2. 7水位器的選擇 在我的自動換水系統(tǒng)里,定位器其實就是抽水馬桶里的定位器,為什么選擇它呢?主要是價格便宜,市場廣,在馬桶專賣店里就可以買
21、到,定位器的原理很簡單,就是靠水的浮力和水的壓力來控制的。把定位器連接進水管上,起到雙重保護。 第 三 章 軟 件 設 計 我的魚缸自動換水系統(tǒng)是用單片機控制電磁閥的開與關,每天換水的時間也是經(jīng)過精確的計算設置的。可在自動模式中的設置時間,也可以通過手動設置時間。 3.1 換水時間及換水量選擇 圖3-1 魚缸尺寸示意(長2米,寬0.65米,高0.8米) 魚缸的大小如圖3-1所示,首先我們要先求出魚缸水的體積,公式為: Vs=2*0.65*0.8*0.85=0.884(立方米) (注: 0.85的意思是水的體積是魚缸總體積的85%) 根據(jù)有關資料證明,每天換
22、水量占水總體積的15%是最好的,對魚兒的生長是最有利的,故可以算出每天換水量,所用公式為: Vh=0.884*0.15=0.1326立方米 根據(jù)前面水泵的選擇,計算每天只要排15分鐘水就可以了。由于家里自來水每分鐘流量是一定的,根據(jù)實際考察所得算出進水只需要20分鐘。 算出每天換水的時間后,即在系統(tǒng)中設置,本系統(tǒng)開機后顯示實時時間,默認是自動控制兩個電磁閥。每天換水一般在中午,所以整個單片機程序設置如下: 電磁閥1接通時間為每天13:00,斷開時間13:20。 電磁閥2接通時間為每天14:00,斷開時間14:15。 3. 2控制過程: 在自動模式中,系統(tǒng)是根據(jù)我自己設定的時間控制
23、兩個電磁閥在指定的時間接通和斷開。 在手動模式中,即在非設置狀態(tài)下,可通過按鍵控制電磁閥的接通與斷開,如下: 點按K1鍵控制電磁閥1接通和斷開; 點按K2鍵控制電磁閥2接通和斷開。 自動與手動控制模式的切換方法為: 首先點按K3鍵可查看狀態(tài), 自動數(shù)碼管顯示OPEN, 手動顯示OFF, 繼續(xù)點按K3鍵切換自動/手動,數(shù)碼管會有相應的顯示。 在設置定時時間狀態(tài)下: LED2(out1on)亮表示設置電磁閥1定開時間 LED3(out1off)亮表示設置電磁閥1定關時間 LED4(out2on)亮表示設置電磁閥2定開時間
24、 LED4(out1off)亮表示設置電磁閥2定關時間 詳細內容請看圖3-2 圖3-2 3.3程序設計 3.3.1 主程序設計 主程序開始 掃描顯示器更新時間數(shù)據(jù) 初始化定時器 初始化變量 K1: 繼電器1 ON/OFF K2: 繼電器2 ON/OFF K3:點按顯示鐘控狀態(tài),長按設置定時時間 K4:點按顯示秒,長按設置現(xiàn)在的時間 是否按K1、K2、K3、K4鍵? 3.3.2 子程序設計 主要控制子程序說明如下: ● Timer2_Server:定時器2計時中斷程序每隔31.25ms中斷一次; ● DELAY:
25、延時子程序; ● feng:蜂鳴器鳴響處理程序; ● display:工作LED閃動控制;轉換數(shù)據(jù)為七段顯示器顯示數(shù)據(jù)并寫入顯示內存內 ● LED_out:七段數(shù)碼管顯示程序; ● CONV:將時及分的數(shù)據(jù)轉換為七段顯示器顯示數(shù)據(jù)并寫入顯示內存內; ● key:按*鍵檢測包括設置現(xiàn)在的時間小時及分鐘,查看/設置定時時間等 中斷時間到 對時分秒進行計數(shù) 執(zhí)行 繼電器1 ON/OFF 繼電器2 ON/OFF 1秒是否到? 對比2路定時時間是否到? 中斷退出 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) /***延時***/ { 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定時器中斷 TR2=1; // 啟動T2定時器 EA=1; while(1) { display(); key(); } } /***T2***中***斷***函***數(shù)***/ void Timer2_Serve
31、r(void) interrupt 5 using 3 { TF2=0; //清除溢出標記 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)) //個位處理 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; } } /***按***鍵***檢***測***/ 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)安裝與調試
4.1 軟件調試
采用模塊化程序設計思想,首先調試子程序,然后逐級疊加調試。
4.2 系統(tǒng)調試
軟硬件結合在一起,看是否能工作正常,由于在模塊調試過程中,我們把軟硬件所出現(xiàn)的錯誤都調整過來了,所以系統(tǒng)調試通過。
結束語
在這次畢業(yè)設計中,我學到了很多東西,真的沒有想到搞一篇畢業(yè)設計這么難,每天腦子里總想著怎么做才能更好,本人專業(yè)知識有 49、限,設計出來的東西還存在很多很多問題,這是專業(yè)知識的不夠。在以后走入工作崗位中,要把技術學到位,等以后再來設計這樣產(chǎn)品就是輕而易舉的事情了。
從這次畢業(yè)設計中,明白了單片機的重要性,平時沒有感覺到單片機在生活中的作用這么大,通過這次設計,才明白單片機無處不在,生活中到處都用的到它。
謝辭
快要畢業(yè)了,感覺自己沒有學到什么,但學校提供給我們這次機會,大大彌補了我的理論學習,感謝學校!還要感謝我的指導老師,焦振宇老師,沒有他每時每刻提醒我督促我,我不會按時完成的,在我想不出來設計什么產(chǎn)品時,是焦老師提醒了我。給我啟發(fā)!在這次畢業(yè)設計中遇到一些問題,特別是編程問題,說實話我個人沒有能力去完 50、成,在這要謝謝我認識一個工程師,在我最無助的時候幫助了我,感謝他!
謝謝!
參 考 文 獻
[1] 胡漢才編,《單片機原理及其接口技術》,北京,清華大學出版社,1996
[2] 徐愛均編,《智能化儀表原理與設計》,北京,北京航空大學出版社,1996
[3] 公茂法等編,《單片機人機接口實力集》,北京,北京航空大學出版社,1998
[4] 李朝青編,《單片機原理及其接口技術》,北京,北京航空大學出版社,1998
[5] 鄔寬明編,《單片機外圍器件實用手冊》,北京,北京航空大學出版社,1998
[6] 先鋒工作室編著 51、,《單片機程序設計實例》,北京,清華大學出版社,2002
[7] 張毅剛,彭喜元,孟升衛(wèi),劉兆慶編,《MCS-51單片機使用子程序設計》,哈爾濱,哈爾濱工業(yè)大學出版社,2003
[8] 陳明熒編,《8051單片機課程設計實訓教材》,北京,清華大學出版社,2003
[9] 肖玲妮,袁增貴編,《Protel99SE印刷電路板設計教程》,北京,清華大學出版社,2003
[10] X5045的中英文資料
附錄1:原理圖
附錄2:
物料清單
編號
注釋
封裝
編號
注釋
封裝
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: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。