版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 本科畢業(yè)設(shè)計(論文)</p><p><b> ?。ǘ?屆)</b></p><p> 染廠水缸數(shù)控水表設(shè)計</p><p> 所在學(xué)院 </p><p> 專業(yè)班級 電子信息工程 </p>
2、<p> 學(xué)生姓名 學(xué)號 </p><p> 指導(dǎo)教師 職稱 </p><p> 完成日期 年 月 </p><p><b> 摘 要</b></p><p> 染廠的
3、染缸需要經(jīng)常的上水和放水,人工操作時水量不易控制精度,而且放水后人一旦走開,易造成浪費。本文紹了一種基于低功耗芯片AT89C51的染廠水缸數(shù)控水表設(shè)計,能夠?qū)崿F(xiàn)對染廠的染缸上水的自動控制,使操作時能精確控制水量,避免不必要的浪費。</p><p> 此次設(shè)計包括硬件電路設(shè)計和軟件設(shè)計。硬件電路設(shè)計以AT89C51單片機為核心部件,外擴了LCD顯示電路、電磁閥驅(qū)動電路、鍵盤輸入電路、水量檢測電路、復(fù)位電路以及時鐘
4、電路。軟件設(shè)計采用C語言編程,給出了具體的流程圖。數(shù)控水表實現(xiàn)的主要功能有:上水模式設(shè)定,LCD顯示,復(fù)位、停止、水量設(shè)定步進、步退等。</p><p> 關(guān)鍵詞:AT89C51,LCD顯示,數(shù)控水表</p><p> THE DESIGN OF CNC WATER METER FOR DYEING FACTORY’S WATER VAT </p><p>&l
5、t;b> Abstract</b></p><p> The vat dye of dyeing factory always need to hold and discharge the water. Manual operation is difficult to control the accuracy of water.And it is easily led to waste if
6、 people go away after drainaging. This paper introduces a design of CNC water meter for dyeing factory’s water vat based on a low power consumption chip AT89C51. It can achieve the automation of the dye vat of dyeing fac
7、tory in holding water,and make us precisely control the amount of water and not easily to led to waste.</p><p> This design includes hardware and software design.The core components of hardware design is a
8、single-chip microcomputer AT89C51, and external expanded LCD display circuit,electromagnetic valve urge circuit,keyboard input circuit,water flow measuring circuit,reset circuit and clock circuit. Software design using C
9、 language programming,the flow charts are provided.The CNC water meter achieves many main functions: holding water mode setting, LCD display, reset, stop, water setting step,step back,ec</p><p> Keywords: A
10、T89C51,LCD display, the CNC water meter</p><p><b> 目錄</b></p><p><b> 摘 要I</b></p><p> AbstractII</p><p><b> 1 緒論1</b></p&
11、gt;<p> 1.1課題的來源及意義1</p><p> 1.2數(shù)控水表在國內(nèi)的發(fā)展現(xiàn)狀1</p><p> 1.3課題研究的主要內(nèi)容2</p><p> 2數(shù)控水表方案論證與硬件設(shè)計3</p><p> 2.1數(shù)控水表系統(tǒng)結(jié)構(gòu)框圖設(shè)計3</p><p><b> 2.2
12、方案論證3</b></p><p> 2.3數(shù)控水表各模塊原理及設(shè)計3</p><p> 2.3.1 最小系統(tǒng)模塊設(shè)計3</p><p> 2.3.2 鍵盤輸入模塊設(shè)計6</p><p> 2.3.3 LCD液晶顯示模塊設(shè)計6</p><p> 2.3.4 數(shù)據(jù)采集模塊設(shè)計9</
13、p><p> 2.3.5 電磁閥驅(qū)動模塊設(shè)計11</p><p> 3染廠水缸數(shù)控水表軟件設(shè)計11</p><p> 3.1主程序流程圖12</p><p> 3.1.1 顯示子程序流程圖12</p><p> 3.1.2 鍵盤子程序流程圖13</p><p> 3.2 系統(tǒng)調(diào)
14、試16</p><p> 3.2.1 軟件調(diào)試16</p><p> 3.2.2 仿真16</p><p><b> 4總結(jié)17</b></p><p><b> 參考文獻18</b></p><p> 致謝錯誤!未定義書簽。</p>&l
15、t;p><b> 附錄20</b></p><p> 附錄圖1 完整的系統(tǒng)電路原理圖20</p><p> 附錄圖2 PCB版圖20</p><p> 附錄圖3 程序21</p><p><b> 1 緒論</b></p><p> 1.1課題的來源
16、及意義</p><p> 水是生命的源泉,是人類賴以生存和發(fā)展的重要的物質(zhì)資源之一。在染整工廠中,水同樣是不可缺之的一項資源,從燒毛、精練、漂白以至于染色整理各工程均需要用水,舉凡染料之溶解、化學(xué)助劑之使用、雜質(zhì)之去除及用于熱源之蒸汽也要用水,鍋爐才能供應(yīng)蒸汽,由此可見水對一個染整工程之重要性。然而我國是個水資源十分短缺的國家,人均水資源量僅占世界平均水平的四分之一。因此我們更應(yīng)該注重節(jié)約用水,尤其是工業(yè)用水方
17、面。而染廠的染缸需要經(jīng)常的上水和放水,但是人工操作時水量不易控制精度,而且放水后人一旦走開,易造成浪費,因此要設(shè)計一個具有多種模式的上水水表,實現(xiàn)對上水的自動控制。</p><p> 21世紀(jì)是一個普遍實現(xiàn)現(xiàn)代化的時代。隨著現(xiàn)代計量技術(shù)、信息網(wǎng)絡(luò)技術(shù)和傳感技術(shù)以及社會化需求的發(fā)展,在很多企業(yè)甚至是許多家庭中都已經(jīng)實現(xiàn)了自動化控制。而染廠在用水方面,由于接到訂單數(shù)量不定,經(jīng)常造成浴比過大,使用水量過大。而使用數(shù)控
18、水表實現(xiàn)了染廠染缸上下水的自動控制,很好的解決了這個問題,不僅節(jié)約了水資源更節(jié)省了人力資源。</p><p> 隨著人們生活水平的不斷提高,數(shù)字化控制無疑是人們追求的目標(biāo)之一,它所給人帶來的方便也是不可否定的,其中數(shù)控制直流穩(wěn)壓電源就是一個很好的典型例子,但人們對它的要求也越來越高,要為現(xiàn)代人工作、科研,生活、提供更好的,更方便的設(shè)施就需要從數(shù)字電子技術(shù)入手,一切向數(shù)字化,智能化方向發(fā)展[1]。</p&g
19、t;<p> 1.2數(shù)控水表在國內(nèi)的發(fā)展現(xiàn)狀</p><p> 在近兩個世紀(jì)的時間旅程中,水表漸漸進入我們的生活中,從最初的新奇到現(xiàn)在的習(xí)以為常,但不可否認(rèn)不管是民用還是工業(yè)企業(yè)用水,水表都起著不可或缺的作用。而隨著科技的不斷發(fā)展,水表也從最初簡陋的平衡罐式水表發(fā)展成現(xiàn)今各種完善的數(shù)控水表。在我國,比較先進的數(shù)控水表主要有寧波埃美柯銅閥門有限公司的DLB型數(shù)控定量水表,寧波水表股份有限公司的LX
20、LD型數(shù)控定量水表以及石家莊瑞輝機械設(shè)備有限公司RHDLB型數(shù)控定量水表等。它們主要用于陶瓷、紡織、化工、玻璃等行業(yè)需要重復(fù)自來水的場合。 </p><p> 雖然數(shù)控水表有著各種各樣的功能,但是現(xiàn)如今應(yīng)用最廣的還是定量給水功能。而在我國不管是哪種數(shù)控定量水表,它們采用的原理都是:啟動電磁閥后水流通過水表,使葉片感應(yīng)出一系列的脈沖信號。脈沖信號經(jīng)放大、分頻后與定值器所預(yù)置的流量相減,當(dāng)減到零時,經(jīng)過控制器關(guān)閉
21、電磁閥,完成一次定量供水。 這已經(jīng)是我國現(xiàn)今比較先進的數(shù)控定量水表[2]。</p><p> 1.3課題研究的主要內(nèi)容</p><p> 本課題要研究的內(nèi)容主要是實現(xiàn)對染廠水缸的上下水的自動控制。染廠水缸數(shù)控水表設(shè)計在硬件設(shè)計方面以AT89c51單片機為核心部件,采用模塊化電路設(shè)計,包括LCD顯示電路、電磁閥驅(qū)動電路、鍵盤輸入電路、水量檢測電路、復(fù)位電路以及時鐘電路。在軟件設(shè)計方面,通
22、過C 語言編程,配合硬件的各個功能模塊的功能更加精準(zhǔn),同時要設(shè)計一些簡單的算法來處理在數(shù)據(jù)采集電路中得到的數(shù)據(jù)。</p><p> 在硬件電路模塊化設(shè)計中,本課題利用AT89C51單片機的P0口和P2口、P0口、P3口的T0引腳以及P2口的P2.0引腳分別驅(qū)動LCD顯示電路、4*4矩陣鍵盤電路、電磁閥驅(qū)動電路和水量檢測電路。其中LCD選用的是1602,電磁閥選用的是MP15A-5V,傳感器選用的是A44E集成開
23、關(guān)型霍耳傳感器。</p><p> 在軟件設(shè)計方面,我選擇自己比較熟悉的C語言進行設(shè)計編程。同硬件設(shè)計一樣,軟件設(shè)計采用了結(jié)構(gòu)化、模塊化的設(shè)計方法,由主程序以及顯示子程序、鍵盤子程序等模塊組成。</p><p> 本設(shè)計主要實現(xiàn)的功能有上水模式設(shè)定, LCD顯示,復(fù)位、點動、停止、水量設(shè)定步進、步退等。</p><p> 2數(shù)控水表方案論證與硬件設(shè)計</
24、p><p> 2.1數(shù)控水表系統(tǒng)結(jié)構(gòu)框圖設(shè)計</p><p> 圖2-1硬件總體設(shè)計方案</p><p><b> 2.2方案論證</b></p><p> 工作原理:通過水量傳感器,采集實際上水水量數(shù)據(jù)并與設(shè)定的上水水量作比較,并將數(shù)據(jù)反饋會單片機,從而控制LCD的顯示以及閥門的開關(guān),達到水缸上水自動控制的目的。&
25、lt;/p><p> 本課題研究的系統(tǒng)比較小,且大部分電路的工作電壓都比較小,因此在實際應(yīng)用中各模塊電路采用的器件的功耗都比較低。例如AT89C51單片機、MP15A-5V電磁閥、1602LCD顯示器和A44E集成開關(guān)型霍爾傳感器等等。</p><p> 2.3數(shù)控水表各模塊原理及設(shè)計</p><p> 2.3.1 最小系統(tǒng)模塊設(shè)計</p><
26、p> 單片機的最小系統(tǒng)主要由三部分組成,即AT89C51單片機、復(fù)位電路以及時鐘電路。</p><p> ?。?)AT89C51單片機</p><p> AT89C51單片機是美國ATMEL公司生產(chǎn)的一種帶4K字節(jié)FLASH存儲器的低電壓,低功耗,高性能的CMOS 8位微處理器。此單片機采用ATMEL公司的高密度、不易丟失的存儲技術(shù)制造,可反復(fù)寫擦循環(huán)1000次,保存數(shù)據(jù)達10年
27、之久并且兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),能靈活的應(yīng)用于各種控制領(lǐng)域之中。其引腳排列圖如圖2-2所示。</p><p> 圖2-2 51單片機雙列直插封裝方式的引腳</p><p> 由圖可知,AT89C51單片機共有40個引腳,按功能可分為三類:電源及時鐘引腳,控制引腳,I/O口引腳。</p><p><b> 電源及時鐘引腳</b>&l
28、t;/p><p> Vcc(40引腳):接供電電壓,+5V。</p><p> GND(20引腳):接地。</p><p> XTAL1(19引腳):反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。 </p><p> XTAL2(18引腳):來自反向振蕩器的輸出。</p><p><b> 控制引腳
29、</b></p><p> RST(9引腳):復(fù)位輸入,高電平有效。當(dāng)振蕩器復(fù)位器件時,要保持RST引腳大于兩個機器周期的高電平時間。 </p><p> ALE/PROG(30引腳):ALE引腳輸出為地址鎖存允許信號。在FLASH編程期間,此引腳用于輸入編程脈沖。當(dāng)單片機上電正常時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部
30、輸出的脈沖或用于定時目的。然而要注意的是,當(dāng)單片機訪問外部數(shù)據(jù)存儲器時(即執(zhí)行的是MOVX類指令),在1個機器周期中ALE只出現(xiàn)一次,即丟失1個ALE脈沖。</p><p> /PSEN(29引腳):程序存儲器允許輸出控制端。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。 </p><p> /EA/VPP
31、(31引腳):當(dāng)/EA保持低電平時,單片機則在只訪問外部程序存儲器,不管是否有內(nèi)部程序存儲器。當(dāng)/EA引腳為高電平時,單片機訪問片內(nèi)程序存儲器,但在PC值超過0FFFH(對于8051、8751)時,即超出片內(nèi)存儲器的4KB地址范圍時,將自動轉(zhuǎn)向執(zhí)行外部程序存儲器內(nèi)的程序[3]。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP),是本引腳的第二功能。</p><p><b> I/O口引腳&
32、lt;/b></p><p> P0口:雙向8位三態(tài)I/O口,此口為地址總線(低8位)及數(shù)據(jù)總線分時復(fù)用口,可以驅(qū)動8個LS型TTL負(fù)載。 </p><p> P1口:P1口是一個8位準(zhǔn)雙向I/O口。P1口只能作為I/O口使用,它的內(nèi)部有一個上拉電阻,所以連接外圍負(fù)載的時侯不需要在外接上拉電阻。</p><p> P2口:P2口是一個置內(nèi)部上拉電阻的
33、8位準(zhǔn)雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流。當(dāng)P2口作為地址輸出口時,可以輸出程序存儲器或外部數(shù)據(jù)存儲器的高8位地址,并與P0口輸出的低8位地址一起構(gòu)成16位地址線,從而可以分別尋址64KB的程序存儲器或者外部數(shù)據(jù)存儲器[4]。 </p><p> P3口: 8位準(zhǔn)雙向I/O口,雙功能復(fù)用口,可接收輸出4個TTL門電流[3]。但在實際的電路應(yīng)用中,P3口第二功能比第一功能更為重要。<
34、/p><p> 表2-1 P3口的第二功能</p><p> ?。?)復(fù)位電路與時鐘電路</p><p> 如下圖所示,復(fù)位電路是電平方式的,通過RST端經(jīng)電阻與電源Vcc接通而實現(xiàn)。時鐘電路由2個起振電容和1個晶振構(gòu)成。</p><p> 圖2-3 復(fù)位電路與時鐘電路</p><p> 2.3.2 鍵盤輸入模塊設(shè)
35、計</p><p> 在這里,我選用矩陣鍵盤,即4*4鍵盤作為輸入電路,它是用4條I/O線作為行線,4條I/O線作為列線組成的鍵盤。在行線和列線的每一個交叉點設(shè)置一個按鍵,一共就有16個按鍵,其中有10個鍵代表0-9十個數(shù)字,其他六個鍵有水量設(shè)定步進、步退按鈕,輸入水量按鈕,輸入確定按鈕,修改設(shè)定水量按鈕。這種矩陣鍵盤結(jié)構(gòu)能夠有效的提高單片機系統(tǒng)中I/O口的利用率。</p><p>
36、對于鍵盤來說,最重要的就是識別按鍵。無按鍵按下時,行線處于高電平狀態(tài),而當(dāng)有鍵按下時,行線的電平狀態(tài)則由與此行線相連的列線的電平?jīng)Q定。如果列線的電平為低,則行線電平為低,反之,行線電平為高。這是識別行列式鍵盤按鍵是否按下的關(guān)鍵。具體的鍵盤設(shè)計電路如圖2-4所示。</p><p> 圖2-4 4*4鍵盤輸入</p><p> 2.3.3 LCD液晶顯示模塊設(shè)計</p>&
37、lt;p> LCD(Liquid CrystalDisplay)是液晶顯示器英文名稱的縮寫,液晶顯示器是一種被動式的顯示器,即液晶本身并不發(fā)光,而是利用液晶經(jīng)過處理后能改變光線通過方向的特性,達到白底黑字或黑底白字顯示的目的。液晶顯示器是一種功耗極低的顯示器件,具有低壓微功耗、平板型結(jié)構(gòu)、顯示信息量大、沒有電磁輻射、壽命長等特點。目前市場上的液晶顯示器主要有字段型、點陣字符型以及點陣圖形型三種。在這里,我選用的是1602LCD液
38、晶顯示器。</p><p> ?、?602液晶顯示的性能及特點</p><p> ?、?602LCD的特點</p><p> 1602液晶顯示屏是基于HD44780液晶芯片,屬于工業(yè)字符型液晶顯示器,能夠同時顯示16*2個字符(16列2行),模塊結(jié)構(gòu)緊湊輕巧,裝配容易,單+5V電源供電,低功耗、壽命長、可靠性高。</p><p><b
39、> ②主要技術(shù)參數(shù)</b></p><p> 顯示容量:16×2個字符</p><p> 芯片工作電壓:4.5—5.5V</p><p> 工作電流:2.0mA(5.0V)</p><p> 模塊最佳工作電壓:5.0V</p><p> 字符尺寸:2.95×4.35(W
40、×H)mm</p><p><b> ③引腳介紹及說明</b></p><p> 1602字符型LCD通常有14條或者16條引腳,但是16引腳的控制原理與14引腳的控制原理完全一樣。相對14引腳的LCD,16引腳多出了兩條背光電源線,即Vcc和地線GND。詳見表2-2。</p><p> 表2-2 1602LCD引腳說明<
41、;/p><p> ④1602LCD的顯示及讀寫操作時序</p><p> HD44780內(nèi)置了DDRAM,就是顯示數(shù)據(jù)的RAM,用來寄存待顯示的字符代碼,一共80個字節(jié),但要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,地址和屏幕的對應(yīng)關(guān)系如下圖所示。</p><p> 圖2-5 1602LCD內(nèi)部顯示地址</p><p>
42、 要輸入需要顯示的字符,1602LCD就必須進行讀寫操作。對于1602LCD而言,讀操作的輸出取決于RS、R/W、E三個引腳,他們的時序關(guān)系如下圖所示。</p><p> 圖2-6 寫操作時序</p><p> 圖2-7 讀操作時序</p><p> ?、?602與51單片機的鏈接</p><p> 本設(shè)計以P0口驅(qū)動LCD,用P2
43、口的高三位分別控制RS、R/W和E三位。由于1602LCD內(nèi)置上拉電阻,因此在P0口不用接上拉電阻,具體電路如圖2-8所示。</p><p> 圖2-8 LCD顯示電路</p><p> 2.3.4 數(shù)據(jù)采集模塊設(shè)計</p><p> 隨著現(xiàn)代測量、控制和自動化技術(shù)的發(fā)展,各個領(lǐng)域大多都已經(jīng)實現(xiàn)用計算機的控制,而傳感器作為一種能將各種非電量(包括物理量、化學(xué)量
44、、生物量等)轉(zhuǎn)變成為另一種物理量(一般為電量)的裝置恰恰為其提供了保障。在現(xiàn)實生活中,我們也可能見到各種各樣的傳感器,如在水表中就有用到水流量傳感器。本課題中也同樣會用到水流量傳感器,選用的是霍爾傳感器。</p><p> 霍爾傳感器以霍爾效應(yīng)為其工作基礎(chǔ),是由霍爾元件和它的附屬電路組成的集成傳感器。它可以檢測磁場及其變化,也可在用于各種與磁場有關(guān)的場合?;魻杺鞲衅饕话憧煞譃榫€性型霍爾傳感器和開關(guān)型霍爾傳感器兩
45、種。其中線性型霍爾傳感器由霍爾元件、線性放大器和射極跟隨器組成,它輸出模擬量,一般用于電流和唯一測量。開關(guān)型霍爾傳感器由穩(wěn)壓器、霍爾元件、差分放大器,斯密特觸發(fā)器和輸出級組成,它輸出數(shù)字量,主要用于測轉(zhuǎn)數(shù)、轉(zhuǎn)速、風(fēng)速、流速、接近開關(guān)、關(guān)門告知器、報警器、自動控制電路等。因此在數(shù)控水表中采用的是開關(guān)型霍爾傳感器。</p><p> ?、呕魻杺鞲衅鳒y水量原理</p><p> 圖2-9 霍爾
46、傳感器水表</p><p> 如圖所示,在六片螺旋葉其中對應(yīng)的3片葉片上各粘上一塊小磁鋼, B處為霍耳傳感器。當(dāng)有小磁鋼的葉片經(jīng)過時,霍耳傳感器就會輸出一個脈沖,由圖可知,葉片每轉(zhuǎn)動一周就會輸出三個脈沖。水表每轉(zhuǎn)一周,即螺旋葉片經(jīng)水推動旋轉(zhuǎn)一周,就有一水表大容量的水流過。因此,在一段時間內(nèi)只要記錄葉片旋轉(zhuǎn)的圈數(shù)并乘以水表的體積,就可以得到流過的總的水量。</p><p> 設(shè)水表的容積
47、為V,傳回單片機的脈沖數(shù)為N,總的水量為S。則水表轉(zhuǎn)動了1/3N圈,得到的用水量為</p><p><b> (2-1)</b></p><p> ?、艫44E集成開關(guān)型霍爾傳感器</p><p> ?。╝)結(jié)構(gòu)圖 (b)特性曲線</p><p> 圖2-10 集成開關(guān)
48、型霍耳傳感器原理圖</p><p> A44E 集成霍耳開關(guān)由穩(wěn)壓器A、霍耳電勢發(fā)生器B、差分放大器C、施密特觸發(fā)器D 和OC 門輸出E 五個基本部分組成,如圖2-10(a)所示。其中(1)、(2)、(3)代表集成霍耳開關(guān)的三個引出端點。在輸入端輸入電壓Vcc,經(jīng)穩(wěn)壓器穩(wěn)壓后加在霍耳電勢發(fā)生器的兩端,根據(jù)霍耳效應(yīng)的原理,當(dāng)霍耳片處在磁場中的時侯,在垂直于磁場的方向通以電流,則與這二者相垂直的方向上將會產(chǎn)生霍耳電
49、勢差輸出,該信號經(jīng)放大器放大后送至施密特觸發(fā)器整形,使其成為方波輸送到OC門輸出。當(dāng)施加的磁場達到工作點(即Bop)時,觸發(fā)器輸出高電壓(相對于地電位),使三極管導(dǎo)通,此時OC門輸出端輸出低電壓,通常稱這種狀態(tài)為開。當(dāng)施加的磁場達到釋放點(即BrP)時,觸發(fā)器輸出低電壓,三極管截止,使OC門輸出高電壓,這種狀態(tài)為關(guān)。這樣兩次電壓變換,使霍耳開關(guān)完成了一次開關(guān)動作。Bop與BrP的差值一定,此差值BH = Bop - BrP稱為磁滯,在此
50、差值內(nèi),V0保持不變,因而使開關(guān)輸出穩(wěn)定可靠,這也就是集電成霍耳開關(guān)傳感器優(yōu)良特性之一[5]。A44E集成霍爾開關(guān)傳感器的輸出特性如圖2-10(b)所示。</p><p> ?、艫44E霍爾傳感器與51單片機的連接</p><p> 圖2-11 霍爾傳感器接線圖</p><p> 霍爾傳感器輸出的脈沖傳向單片機的P3.4口。</p><p&
51、gt; 2.3.5 電磁閥驅(qū)動模塊設(shè)計</p><p><b> ?、烹姶砰y工作原理</b></p><p> 電磁閥從工作原理上可分為三大類,分別是直動式電磁閥、分步直動式電磁閥以及先導(dǎo)式電磁。目前大多數(shù)水表采用的都是先導(dǎo)式電磁閥,它的原理是:通電時,電磁力把先導(dǎo)孔打開,上腔室壓力迅速下降,在關(guān)閉件周圍形成上低下高的壓差,流體壓力推動關(guān)閉件向上移動,閥門打開;斷
52、電時,彈簧力把先導(dǎo)孔關(guān)閉,入口壓力通過旁通孔迅速腔室在關(guān)閥件周圍形成下低上高的壓差,流體壓力推動關(guān)閉件向下移動,關(guān)閉閥門。</p><p> ?、菩滦碗p穩(wěn)態(tài)自吸電磁閥MP15A-5V</p><p> 雙穩(wěn)態(tài)電磁閥采用先進的脈沖和永磁技術(shù),只需通過控制器切換脈沖的電極觸點來改變閥的開、關(guān)狀態(tài),當(dāng)控制器發(fā)出電脈沖時,驅(qū)動磁芯帶動閥瓣克服永磁力產(chǎn)生上下位移、閥瓣到位后永磁作用下處于自保持狀態(tài)
53、。雙穩(wěn)態(tài)電磁閥主要應(yīng)用于水、液體或可燃性所在液體管路中的自動控制系統(tǒng),具有響應(yīng)迅速、使用簡單、高效節(jié)能等優(yōu)點。</p><p> ?、请姶砰y的驅(qū)動電路圖</p><p> 圖2-12 電磁閥驅(qū)動電路</p><p> 如圖2-12所示為電磁閥驅(qū)動電路。當(dāng)P2.0口輸出為高電平時,PNP型三極管Q1導(dǎo)通,繼電器就得到點動作,驅(qū)動電磁閥打開。</p>
54、<p> 3染廠水缸數(shù)控水表軟件設(shè)計</p><p> 數(shù)控水表的軟件設(shè)計,我利用C語言進行編程,采用了結(jié)構(gòu)化、模塊化的設(shè)計方法,由主程序以及顯示子程序、鍵盤子程序等模塊組成。C語言是一種計算機程序設(shè)計語言。它既有高級語言的特點,又具有匯編語言的特點。它可以作為系統(tǒng)設(shè)計語言,編寫工作系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計語言,編寫不依賴計算機硬件的應(yīng)用程序。C語言簡潔緊湊、靈活方便、運算符豐富、數(shù)據(jù)
55、結(jié)構(gòu)豐富,應(yīng)用范圍非常廣泛。</p><p><b> 3.1主程序流程圖</b></p><p> 圖3-1 主程序流程圖</p><p> 3.1.1 顯示子程序流程圖</p><p> 液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。</
56、p><p> 圖3-2 LCD顯示子程序流程圖</p><p> 3.1.2 鍵盤子程序流程圖</p><p> 程序主流程如圖3-3所示。主程序每隔4ms掃描一次鍵盤,若有按鍵被按下,則將鍵值標(biāo)志位置0。</p><p> 圖3-3 鍵盤主程序流程圖</p><p> 鍵盤的掃描程序流程圖如圖3-4所示。其中
57、鍵盤掃描方法:首先由輸出口P1.7~P1.4向所有的列線輸出低電平,讀取各行線P1.3~P1.0的狀態(tài),若行線狀態(tài)全為高電平,則表明無鍵按下,若行線狀態(tài)中有低電平,則表明有鍵按下。若有鍵按下,先進行消抖,消抖結(jié)束,再對每一列進行掃描,即:P1.7~P1.4四條列掃描線分別輸出低電平,在每次輸出低電平期間,讀取各行線P1.3~P1.0的狀態(tài),確定鍵值。例如:P1.7~P1.4輸出"1011",此時若讀取P1.3~P1.
58、0的狀態(tài)為"1110",則表明按鍵S2被按下。</p><p> 鍵值計算方法為:設(shè)置一個變量,高4位放列掃描線控制字,低4位放行掃描線狀態(tài)字。按鍵S0~ S15分別對應(yīng)不同的變量值,因而可以根據(jù)變量值確定當(dāng)前的按鍵值。消抖方法:在按鍵閉合和打開的瞬間會產(chǎn)生許多尖脈沖,持續(xù)時間約幾毫秒到幾十毫秒。因而在程序中,當(dāng)檢測到按鍵被按下后,便開始讀取鍵值,每隔4ms讀一次鍵值,直到連續(xù)7次讀取的鍵值
59、完全相同,則認(rèn)為抖動已經(jīng)消除。消抖時間為4ms X 7=28ms。</p><p> 圖3-4 鍵盤掃描程序流程圖</p><p><b> 3.2 系統(tǒng)調(diào)試</b></p><p> 3.2.1 軟件調(diào)試</p><p> 軟件調(diào)試是通過對用戶程序的匯編、連接、執(zhí)行來發(fā)現(xiàn)程序中存在的各種錯誤(如語法錯誤、邏輯
60、錯誤等),并加以排除和改正的過程。在本文中,我的程序是利用C語言編程的。在調(diào)試過程中使用的工具是Keil C51,其簡單的調(diào)試過程為:先建立一個新工程,選擇單片機的型號,然后將寫好的C程序?qū)耄詈缶涂梢赃M行調(diào)試直至沒有出現(xiàn)錯誤就可以了。但是,在實際的調(diào)試過程中往往沒有這么簡單。我在做軟件調(diào)試的時候出現(xiàn)了一個問題,修改過好幾次都沒發(fā)現(xiàn)問題出在哪里,后來我只好在出錯的地方設(shè)置斷點,然后利用單步調(diào)試,一步一步慢慢查找問題,最后終于改好了。&
61、lt;/p><p><b> 3.2.2 仿真</b></p><p> 本文使用的是protues軟件進行仿真,過程一般可分為三步。第一,先在ISIS平臺上畫出自己設(shè)計的硬件電路圖。第二,在keil平臺上進行軟件設(shè)計,并調(diào)試成功,最后要生成目標(biāo)代碼文件(*.hex)。最后,在ISIS平臺上將目標(biāo)代碼文件加載到單片機系統(tǒng)中,并實現(xiàn)單片機系統(tǒng)的實時交互、協(xié)同仿真。<
62、;/p><p> 在仿真時,由于在protues中沒有霍爾傳感器,因此我利用里面的信號發(fā)生器代替,提供脈沖。本設(shè)計通過仿真,基本上能完成染廠水缸數(shù)控水表的運行要求。當(dāng)輸入設(shè)定水量并設(shè)置好工作模式后,閥門能夠開啟,此時,信號發(fā)生器發(fā)出脈沖,由脈沖我們可以得到此時的上水量,將設(shè)定水量與上水量進行對比,能夠控制閥門的開關(guān)。</p><p><b> 4總結(jié)</b></
63、p><p> 從三月初開始畢業(yè)設(shè)計工作到現(xiàn)在已經(jīng)將近三個多月了,從最初的茫然,然后慢慢的進入狀態(tài),再到后來思路逐漸的清晰,時至今日終于到了收獲的季節(jié),我已經(jīng)基本上完成了課題的設(shè)計與論文的撰寫。</p><p> 在本設(shè)計中,我采用AT89C51單片機作為核心控制器件,研究了染廠水缸數(shù)控水表系統(tǒng)的設(shè)計原理與實現(xiàn)方法。其中在各模塊的設(shè)計以及器件的選型方面,我也費了很多心思。我選用A44E集成開
64、關(guān)型霍爾傳感器提取脈沖信號,并通過換算將脈沖信號轉(zhuǎn)換成上水量,并用1602LCD顯示出來。在電磁閥控制電路上,我利用繼電器驅(qū)動電磁閥,從而控制電磁閥的開關(guān),達到自動控制上水的目的。在軟件設(shè)計方面,我利用C語言進行程序設(shè)計,比較系統(tǒng)的配合了硬件電路的功能。在整個設(shè)計的過程中,我深感自己專業(yè)知識的缺乏,但同時也明確的感覺到自己對知識的加深了解,有了很大的進步。</p><p> 通過此次的設(shè)計,我對單片機的原理及應(yīng)
65、用有了更深的了解并且掌握了一些常用器件的使用方法,還更加的精通了protel、keil 51軟件,可謂一舉多得。但最重要的是,我基本達到了預(yù)期的目標(biāo),完成了畢業(yè)設(shè)計和論文,將我大學(xué)四年來所學(xué)的專業(yè)理論知識很好的應(yīng)用于實踐之中。雖然本設(shè)計還存在著很多的不足,但是我相信我以后能夠做的更好。</p><p><b> 參考文獻</b></p><p> [1] 何立民.
66、單片機應(yīng)用技術(shù)選編.北京航空航天大學(xué)出版社,1998</p><p> [2]詹志杰.水表技術(shù)手冊.2004</p><p> [3]張毅剛.單片機原理及應(yīng)用.北京:高等教育出版社,2003.12</p><p> [4]潘曉寧,朱耀東.單片機程序設(shè)計實踐教程.北京:清華大學(xué)出版社,2009.8</p><p> [5]楊繼生,劉芬.
67、霍爾傳感器A44E在車輪測速中的應(yīng)用研究.電子測量技術(shù).2009年第10期:100-102</p><p> [6]王化詳,張淑英.傳感器原理及應(yīng)用.天津:天津大學(xué)出版社 ,2004.9</p><p> [7]葉顯蒼,姚靈.環(huán)球表記(中文版).2010年 第三期</p><p> [8]朱先俊.對水表自轉(zhuǎn)問題的處理及水表技術(shù)發(fā)展趨勢瞻望.河南省安陽市水表檢測
68、站.2010.9.17</p><p> [9]李素康.用單片機實現(xiàn)精確計量的智能水表.企業(yè)技術(shù)開發(fā).2005年 第6期:23—25</p><p> [10]韓樹屏、李烜.智能水表的應(yīng)用現(xiàn)狀及前景展望.中國一卡通網(wǎng).2010.4</p><p> [9]楊雪巖.基于 MSP430單片機的電子式水表設(shè)計.計算機工程與應(yīng)用.2006年 第18期:92—94&l
69、t;/p><p> [12]蔡美琴,張為民,沈新群等.MCS—51系列單片機系統(tǒng)及其應(yīng)[M].北京:高等教育出版社,1992.8</p><p> [13]皮大熊,南光群,劉金華.單片機課程設(shè)計指導(dǎo)書.北京:北京理工大學(xué)出版社,2010.7</p><p> [14]陳志旺,陳志茹,閻巍山. 51系列單片機系統(tǒng)設(shè)計與實踐.北京:電子工業(yè)出版社,2010.1<
70、/p><p> [15]張謹(jǐn),張偉,張立寶.Protel99SE入門與提高.北京:人民郵電出版社,2007.7</p><p> [16]汪德彪.MCS-51單片機原理及接口技術(shù)(第二版).北京:電子工業(yè)出版社.2009.6</p><p> [17]王德祥.微程序控制器在智能化定量水表中的應(yīng)用.寧夏石油化工.1999年 第3期:32-34.</p>
71、<p> [18]Wenhong Wu ,Wenjun Wu ,Xinping Wu. Research on long-range and metering reading for water meter based on GPRS. Computer Engineering and Technology (ICCET), 2010 2nd International Conference on .Vol.7,725-
72、727 .</p><p> [19]Young-Woo Lee; Seongbae Eun; Seung-Hyueb Oh .Wireless Digital Water Meter with Low Power Consumption for Automatic Meter Reading . Convergence and Hybrid Information Technology, 2008. ICHI
73、T '08. International Conference on .639 - 645 </p><p><b> 附錄</b></p><p> 附錄圖1 完整的系統(tǒng)電路原理圖</p><p> 附錄圖2 PCB版圖</p><p><b> 附錄圖3 程序</b></p
74、><p> #include <reg51.h></p><p> #include <math.h></p><p> #include <stdio.h></p><p> #include <absacc.h></p><p> #define uchar
75、unsigned char</p><p> #define uint unsigned int</p><p> #define P1</p><p> #define Lcd_Data P0</p><p> #define Busy 0x80 //用于檢測Lcd狀態(tài)字中的Busy標(biāo)識</p><p>
76、 sbit Lcd_RW =P2^6; //定義Lcd的引腳</p><p> sbit Lcd_RS =P2^7;</p><p> sbit Lcd_E =P2^5;</p><p> sbit Solen = P2^0;</p><p> sbit AE =P3^4;</p><p> char
77、swater;//設(shè)定水量</p><p> char ywater;//上水量</p><p> char v=120;//水表的容積</p><p> code char temp1[]="setting:";</p><p> code char temp2[]="turn on:&
78、quot;;</p><p> void Lcdwritedata(unsigned char WDLcd);//Lcd寫數(shù)據(jù)</p><p> void Lcdwritecommand(unsigned char WCLcd,BuysC);//Lcd寫命令</p><p> unsigned char LcdreaWdata(void); //Lcd
79、讀數(shù)據(jù)</p><p> unsigned char Lcdread(void); //Lcd讀命令</p><p> void Lcdreset(void);//Lcd初始化</p><p> void LocateXY(char X,char Y);//指定LCD被寫位置</p><p> void DisplayOneC
80、har(unsigned char X, unsigned char Y, unsigned char Wdata); //在Lcd指定位置顯示一個字符</p><p> void Displaystr(uchar x,uchar y,uchar code *ptr) ; //在LCD指定位置顯示字符串子函數(shù);</p><p> void delay(void);//延時<
81、/p><p> uchar kbscan(void);//鍵盤掃描</p><p> uchar handlekey(void);</p><p> uchar read_water(void);</p><p><b> //主函數(shù)</b></p><p> void main(void
82、)</p><p><b> { </b></p><p> unsigned char key ;</p><p> char i=0;</p><p> Lcdreset();</p><p> key=handlekey();</p><p> if
83、(key!=0x0a)//自動模式</p><p><b> {</b></p><p> swater=read_water();</p><p><b> Solen=1;</b></p><p><b> while(1)</b></p><p
84、><b> {</b></p><p><b> if (AE=1)</b></p><p><b> i++;</b></p><p><b> }</b></p><p> ywater=1/3*v*i;</p><
85、p> if(swater=ywater)</p><p><b> Solen=0;</b></p><p><b> else</b></p><p><b> Solen=1;</b></p><p> Displaystr(0,0,temp1) ;<
86、/p><p> Displaystr(0,8,swater);</p><p> Displaystr(1,0,temp2);</p><p> Displaystr(1,8,ywater);</p><p><b> }</b></p><p><b> }</b>
87、</p><p> //------------------------------------------------------------------</p><p> // 函數(shù)名稱: delay</p><p> // 函數(shù)功能: 延時程序</p><p> //-------------------------------
88、-----------------------------------</p><p> void delay( uchar x)</p><p><b> {</b></p><p> uchar i; </p><p> while(x--)</p><p> f
89、or (i=0;i<125;i++){}</p><p> } </p><p> //------------------------------------------------------------------</p><p> // 函數(shù)名稱: kbscan 鍵盤掃描子程序</p><p>
90、; // 函數(shù)功能: 判斷是否有鍵按下,有返回鍵值,沒有返回0 </p><p> // p0的高四位為列,低四位為行 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0</p><p> // 列4 列3 列2 列1
91、 行4 行3 行2 行1</p><p> // 過程:先根據(jù)列判斷是否有鍵按下,沒有返回0,有,則逐行掃描以確定按鍵所在的行,再確定按鍵所在列</p><p> // 從而最終確定該按鍵。</p><p> //-----------------------------------------------------
92、-------------</p><p> uchar kbscan(void)</p><p><b> {</b></p><p> uchar posx,posy;</p><p> P0=0xf0; //置所有行為低電平,行掃描,列線輸入(此時)</p>
93、<p> if((P0&0xf0)!=0xf0) //判斷是否有有鍵按下(讀取列的真實狀態(tài),若第4列有鍵按下則P1的值會變成0111 0000),有往下執(zhí)行</p><p><b> {</b></p><p> delay(4); //延時去抖動(4ms)</p><p> if
94、((P0&0xf0)!=0xf0) //再次判斷列中是否是干擾信號,不是則向下執(zhí)行</p><p><b> {</b></p><p> posx=0xFE; //逐行掃描初值(即先掃描第1行) </p><p> while((posx&0x10)!=0) //行掃描完成時(即4行已經(jīng)全
95、部掃描完成)posx為1110 1111 停止while程序 </p><p><b> {</b></p><p> P0=posx; //輸出行掃描碼</p><p> if ((P0&0xf0)!=0xf0) //本行有鍵按下(即P1(真實的狀態(tài))的高四位不全為1)</p
96、><p><b> {</b></p><p> posy=(P0&0xf0)|0x0f; //列</p><p> return(posx&posy); //返回行和列</p><p><b> }</b></p><p> else /
97、/所掃描的行沒有鍵按下,則掃描下一行,直到4行都掃描,此時posx值為1110 1111 退出while程序</p><p><b> {</b></p><p> posx=(posx<<1)|0x01;//行掃描碼左移一位</p><p><b> }</b></p><p>
98、<b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p>
99、return 0; //無鍵按下,返回0</p><p><b> }</b></p><p><b> }</b></p><p> //------------------------------------------------------------------</p><p>
100、 //函數(shù)名稱: handlekey 鍵盤讀取程序</p><p> //函數(shù)的功能 : 返回按下按鍵的值</p><p> //------------------------------------------------------------------</p><p> uchar handlekey(void)</p>&
101、lt;p><b> {</b></p><p> unsigned char num;</p><p> char key;</p><p> key=kbscan();</p><p> delay(4); </p><p> switch(key)</p>
102、<p><b> {</b></p><p> case 0xee: num=0x01;break; // 1110 1110</p><p> case 0xde: num=0x02;break; // 1101 1110</p><p> case 0xbe: num=0x03;break; // 1
103、011 1110</p><p> case 0x7e: num=0x04;break; // 0111 1110</p><p> case 0xed: num=0x05;break; // 1110 1101</p><p> case 0xdd: num=0x06;break; // 1101 1101</p><p
104、> case 0xbd: num=0x07;break; // 1011 1101</p><p> case 0x7d: num=0x08;break; // 0111 1101</p><p> case 0xeb: num=0x09;break; // 1110 1011</p><p> case 0xdb: num=0x00
105、;break; // 1101 1011</p><p> case 0xbb: num=0x0a;break; // 1011 1011</p><p> case 0x7b: num=0x0b;break; // 0111 1011</p><p> case 0xe7: num=0x0c;break; // 1110 0111&l
106、t;/p><p> case 0xd7: num=0x0d;break; // 1101 0111</p><p> case 0xb7: num=0x0e;break; // 1011 0111</p><p> case 0x77: num=0x0f;break; // 0111 0111 </p><p> def
107、ault:num=0xff;break;</p><p><b> }</b></p><p> return (num);//返回按鍵對應(yīng)的16進制數(shù)據(jù)</p><p><b> }</b></p><p> //--------------------------------------
108、----------------------------</p><p> //函數(shù)名稱: Lcdwritedata Lcd寫數(shù)據(jù)函數(shù)</p><p> //函數(shù)的功能 : 將數(shù)據(jù)寫入液晶模塊</p><p> //------------------------------------------------------------------</
109、p><p> void Lcdwritedata(unsigned char WDLcd)</p><p><b> {</b></p><p> Lcdread(); //檢測忙</p><p> Lcd_Data = WDLcd;</p><p> Lcd_RS = 1;</p&g
110、t;<p> Lcd_RW = 0;</p><p> Lcd_E = 0; //若晶振速度太高可以在這后加小的延時</p><p> Lcd_E = 0; //延時</p><p> Lcd_E = 1;</p><p><b> }</b></p><p> //--
111、----------------------------------------------------------------</p><p> //函數(shù)名稱: Lcd寫命令函數(shù)</p><p> //函數(shù)功能:將模式設(shè)置之林或顯示地址寫入液晶模塊</p><p> //------------------------------------------
112、------------------------</p><p> void Lcdwritecommand(unsigned char WCLcd,BuysC) //BuysC為0時忽略忙檢測</p><p><b> {</b></p><p> if (BuysC) Lcdread(); //根據(jù)需要檢測忙</p>&
113、lt;p> Lcd_Data = WCLcd;</p><p> Lcd_RS = 0;</p><p> Lcd_RW = 0; </p><p> Lcd_E = 0;</p><p> Lcd_E = 0;</p><p> Lcd_E = 1; </p><p><
114、;b> }</b></p><p> //------------------------------------------------------------------</p><p> //函數(shù)名稱: Lcd讀數(shù)據(jù)函數(shù)</p><p> //--------------------------------------------
115、----------------------</p><p> unsigned char LcdreaWdata(void)</p><p><b> {</b></p><p> Lcd_RS = 1; </p><p> Lcd_RW = 1;</p><p> Lcd_E = 0
116、;</p><p> Lcd_E = 0;</p><p> Lcd_E = 1;</p><p> return(Lcd_Data);</p><p><b> }</b></p><p> //---------------------------------------------
117、---------------------</p><p> //函數(shù)名稱: Lcd讀狀態(tài)函數(shù)</p><p> //------------------------------------------------------------------</p><p> unsigned char Lcdread(void)</p><p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 染廠水缸數(shù)控水表設(shè)計【文獻綜述】
- 染廠水缸數(shù)控水表設(shè)計【畢業(yè)設(shè)計】
- 染廠水缸數(shù)控水表設(shè)計【開題報告】
- 畢業(yè)設(shè)計開題報告+文獻綜述.doc
- 數(shù)控超聲機床傳動系統(tǒng)設(shè)計【畢業(yè)設(shè)計+開題報告+文獻綜述】
- 畢業(yè)設(shè)計開題報告+文獻綜述.doc
- 半導(dǎo)體廠水資源回收系統(tǒng)設(shè)計【開題報告+文獻綜述+畢業(yè)設(shè)計】
- 運動器械設(shè)計【開題報告+文獻綜述+畢業(yè)設(shè)計】
- 遮陽雨棚設(shè)計【開題報告+文獻綜述+畢業(yè)設(shè)計】
- 畢業(yè)設(shè)計開題報告和文獻綜述.doc
- 益智玩具設(shè)計【開題報告+文獻綜述+畢業(yè)設(shè)計】
- 無線數(shù)控脈沖信號放大器設(shè)計【開題報告+文獻綜述+畢業(yè)設(shè)計】
- 畢業(yè)設(shè)計開題報告和文獻綜述.doc
- 鐵路隧道畢業(yè)設(shè)計-開題報告文獻綜述
- 畢業(yè)設(shè)計開題報告和文獻綜述.doc
- 空調(diào)創(chuàng)新設(shè)計【開題報告+文獻綜述+畢業(yè)設(shè)計】
- 多媒體講臺設(shè)計【畢業(yè)設(shè)計+開題報告+文獻綜述】
- 病房呼叫系統(tǒng)設(shè)計【開題報告+文獻綜述+畢業(yè)設(shè)計】
- 多功能椅子設(shè)計【開題報告+文獻綜述+畢業(yè)設(shè)計】
- 電暖器設(shè)計【開題報告+文獻綜述+畢業(yè)設(shè)計】
評論
0/150
提交評論