基于PLC車輛出入庫管理_第1頁
基于PLC車輛出入庫管理_第2頁
基于PLC車輛出入庫管理_第3頁
基于PLC車輛出入庫管理_第4頁
基于PLC車輛出入庫管理_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、PAGE 32PAGE 電氣控制與PLC課程設計說明書題 目: 車輛出入庫電氣控制系統(tǒng)設計 專業(yè)班級: 姓 名: 學 號: 指導教師: 評語:評語:成績:指導老師簽名: 日期: 目錄 TOC o 1-3 h z u HYPERLINK l _Toc470735840 一 系統(tǒng)背景描述及設計要求 PAGEREF _Toc470735840 h 3 HYPERLINK l _Toc470735841 1.1系統(tǒng)背景描述 PAGEREF _Toc470735841 h 3 HYPERLINK l _Toc470735842 1.2設計要求 PAGEREF _Toc470735842 h 4 HYPE

2、RLINK l _Toc470735843 二 方案論證 PAGEREF _Toc470735843 h 4 HYPERLINK l _Toc470735844 2.1硬件結構 PAGEREF _Toc470735844 h 4 HYPERLINK l _Toc470735845 2.2設計方案 PAGEREF _Toc470735845 h 5 HYPERLINK l _Toc470735846 2.3方案比較及方案具體確定 PAGEREF _Toc470735846 h 6 HYPERLINK l _Toc470735847 三車輛出去庫管理的構成 PAGEREF _Toc47073584

3、7 h 6 HYPERLINK l _Toc470735848 3.1 車輛出去庫管理系統(tǒng)的構想 PAGEREF _Toc470735848 h 6 HYPERLINK l _Toc470735849 3.3系統(tǒng)的主電路原理圖 PAGEREF _Toc470735849 h 8 HYPERLINK l _Toc470735850 3.3 顯示電路 PAGEREF _Toc470735850 h 8 HYPERLINK l _Toc470735851 3.4 I/O口分配表 PAGEREF _Toc470735851 h 9 HYPERLINK l _Toc470735852 3.5 I/O接線

4、圖 PAGEREF _Toc470735852 h 10 HYPERLINK l _Toc470735853 3.5 元器件的選型 PAGEREF _Toc470735853 h 10 HYPERLINK l _Toc470735854 四軟件設計 PAGEREF _Toc470735854 h 11 HYPERLINK l _Toc470735855 4.1 主流程圖 PAGEREF _Toc470735855 h 11 HYPERLINK l _Toc470735856 4.2 梯形圖 PAGEREF _Toc470735856 h 13 HYPERLINK l _Toc470735857

5、 五系統(tǒng)調(diào)試 PAGEREF _Toc470735857 h 14 HYPERLINK l _Toc470735858 設計心得 PAGEREF _Toc470735858 h 15 HYPERLINK l _Toc470735859 參考文獻 PAGEREF _Toc470735859 h 16 HYPERLINK l _Toc470735860 附錄一:元件清單 PAGEREF _Toc470735860 h 17 HYPERLINK l _Toc470735861 附錄二:主電路原理圖 PAGEREF _Toc470735861 h 18 HYPERLINK l _Toc47073586

6、2 附錄三:PLC控制原理圖 PAGEREF _Toc470735862 h 19 HYPERLINK l _Toc470735863 附錄四:PLC控制接線圖 PAGEREF _Toc470735863 h 20一 系統(tǒng)背景描述及設計要求1.1系統(tǒng)背景描述可編程邏輯控制器是一種以微處理器為核心的計算機系統(tǒng),它是在繼電器控制和計算機控制的基礎上發(fā)展而來的一種新型工業(yè)自動控制裝置。早期的PLC在功能上只能實現(xiàn)邏輯控制,因而被稱為可編程邏輯控制器,其主要特點是用簡單的程序完成復雜的邏輯控制,同繼電器控制系統(tǒng)相比具有可靠性高、控制邏輯容易改變、外接線簡單等特點。隨著微電子技術和微計算機技術的發(fā)展,P

7、LC不僅可以實現(xiàn)邏輯控制,還能實現(xiàn)模擬量、運動和過程控制以及數(shù)據(jù)處理及通信。因此,美國電氣制造商協(xié)會于1980年將它正式命名為可編程控制器,為避免與個人計算機的簡稱混淆,習慣上仍稱為PLC。早期的自動控制系統(tǒng)是依靠繼電-接觸器來實現(xiàn)的,其特點是:結構簡單、價格低廉、抗干擾能力強,可以實現(xiàn)集中控制和遠距離控制,但是其采用固定接線,通用性和靈活性差;又采用觸點的開關動作,工作頻率低,觸點易損壞,可靠性差。1969年,出現(xiàn)了可編程邏輯控制器PLC(ProgrammbleLogicController),其特點是:具備邏輯控制、定時、計數(shù)等功能,編程語言采用直觀的梯形圖語言,軟件更改方便,通用性和靈活

8、性好。目前,可編程控制器PLC主要是朝著小型化、廉價化、標準化、高速化、智能化、大容量化、網(wǎng)絡化的方向發(fā)展,與計算機技術相結合,形成工業(yè)控制機系統(tǒng)、分布式控制系統(tǒng)DCS(DistributedControlSystem)、現(xiàn)場總線控制系統(tǒng)FCS(FieldbusControlSystem),這將使PLC得功能更強,可靠性更高,使用更方便,適用范圍更廣。近幾年,隨著停車需求的不斷增長,車輛出入庫的規(guī)模也越來越趨于大型化。因此車輛出入庫管理系統(tǒng)也向大型化、復雜化和高科技化方向發(fā)展。自動化的車輛出入庫已經(jīng)成為智能交通和智能建筑的重要組成部分。隨著經(jīng)濟的發(fā)展和停車需求的增長,車輛出入庫管理系統(tǒng)的下一個

9、技術發(fā)展方向將是智能化、網(wǎng)絡化、集成化、人性化。提高車輛出入庫的運行效率、加強安全性以及與智能交通系統(tǒng)的信息互動,把相關科學技術發(fā)展領域的最新成果合理有效的應用到智能車輛出入庫的完善和發(fā)展中是當前車輛出入庫研究領域的首要任務停車場管理系統(tǒng)重點要做到準確指示車輛進出,車輛進入時給予司機準確的車位數(shù)量,車輛進入后,記錄車輛總量,車輛離開時,減少車輛數(shù)量。車輛進出指示可完全由PLC作為中央控制處理。對現(xiàn)有的停車系統(tǒng)管理實現(xiàn)以下要求:車輛出入庫自動化、數(shù)量統(tǒng)計自動化、信息查詢自動化1.2設計要求車輛出入庫控制系統(tǒng)由入出庫讀卡器,入庫車輛存在檢測器,入庫欄桿機(當有車輛壓住檢測線圈時,控制器可以輸出一個

10、開關信號,當車輛離開時,控制器的輸出開關信號打開)、出庫車輛存在檢測器、出庫欄桿機、庫里車輛數(shù)顯示器(2位7段數(shù)碼管,車庫共有50個車位)組成。欄桿機有單相異步電機拖動250W,AC220V。1、車輛入庫時,車輛檢測器檢測到車輛,并且司機取出入庫卡刷卡后,欄桿機電機正轉,欄桿機抬起,車位顯示器的車位數(shù)減1。2、當入庫車輛駛離入庫自動欄桿機后,欄桿機電機反轉,欄桿機自動下落。3、車輛出庫時,車輛檢測器檢測到車輛,并且司機取取出入庫卡刷后,欄桿機電機正轉,欄桿機抬起,車位顯示器的車位數(shù)加1。4、當入庫車輛駛離出庫自動欄桿機后,欄桿機電機反轉,欄桿機自動下落。5、控制器采用PLC控制。二 方案論證2

11、.1硬件結構由系統(tǒng)的設計要求首先設計出系統(tǒng)的基本硬件組成:(1)控制器(2)出入庫欄桿機(3)出入庫車輛存在檢測器(4)出入庫刷卡器(5)顯示器圖2-1硬件結構圖2.2設計方案1. 方案1系統(tǒng)總體設計為單車道,既入庫車道與出庫車道為同一車道(1)車輛入庫入庫車輛前進時,經(jīng)過1#2#稱重傳感器后計數(shù)器加1,后退時經(jīng)過2# 1#稱重傳感器后計數(shù)器減1,單經(jīng)過一個稱重傳感器則計數(shù)器不動作。(2)車輛出庫出庫車輛前進時經(jīng)過2* 1*稱重傳感器后計數(shù)器減1,后退時經(jīng)過1# 2#稱重傳感器后計數(shù)器加1,單經(jīng)過一個稱重傳感器則計數(shù)器不動作。2. 方案2系統(tǒng)總體設計為雙車道,即入庫車道與出庫車道分開。(1)車

12、輛入庫車輛經(jīng)入庫車道入庫時,當車輛壓線時,采用地感線圈1檢測到車輛,司機取出入庫卡刷卡后,使控制器PLC發(fā)出開信號,欄桿機電機正轉,欄桿機抬起。當欄桿機抬起時,PLC得到計數(shù)信號,數(shù)碼管顯示器顯示數(shù)減1。當車輛將離開檢測區(qū)域,地感線圈2檢測到車輛后觸發(fā)PLC,PLC向自動欄桿機發(fā)出關信號,關閉電動機得到信號,欄桿機自動下落。(2)車輛出庫車輛經(jīng)出庫車道出庫時,當車輛壓線時,采用地感線圈3檢測到車輛后,司機收回卡后,使控制器PLC發(fā)出開信號,欄桿機電機正轉,欄桿機抬起。當欄桿抬起時,PLC得到計數(shù)信號,數(shù)碼管顯示器顯示數(shù)加1。當車輛將離開檢測區(qū)域,地感線圈4檢測到車輛后觸發(fā)PLC,PLC向自動欄

13、桿機發(fā)出關信號,欄桿機關閉電機動作,欄桿機自動下落。2.3方案比較及方案具體確定當車流量比較大的時候,使用單車道因為出庫車輛和入庫車輛要經(jīng)過同一個車道,而且出入庫通道是斜坡,更易造成事故發(fā)生。造成車輛的出入擁擠,使用不便。但如果是雙車道,可又有效解決這個問題,出庫車輛在一邊,入庫車輛在另一邊,使停車也更加方便。采用兩個稱重傳感器發(fā)出的信號同時控制欄桿的開閉,還要負責計數(shù)功能。容易產(chǎn)生失誤。而且采用稱重計傳感器計數(shù)沒有使用地感線圈準確。比如當時差比較小時兩邊各有十個人站在線上,則也會造成計數(shù),產(chǎn)生錯誤。而地感線圈則不會產(chǎn)生這樣的失誤經(jīng)過上述方案比較,選擇方案2。三車輛出去庫管理的構成3.1 車輛

14、出去庫管理系統(tǒng)的構想車輛入庫時,地感線圈1檢測到車輛,司機刷入庫卡后,欄桿機電機正轉,欄桿機抬起,車位顯示器的車位數(shù)減1。當入庫車輛駛離入庫自動欄桿機后,進入入庫的地感線圈2,欄桿機電機反轉,欄桿機自動下落。車輛出庫時,地感線圈3檢測到車輛,司機刷庫卡后,欄桿機電機正轉,欄桿機抬起,車位顯示器的車位數(shù)加1。當入庫車輛駛離出庫自動欄桿機后,進入地感線圈4,欄桿機電機反轉,欄桿機自動下落。傳感器布置圖和總體框架見圖。地感線圈4地感線圈4地感線圈3地感線圈1地感線圈2刷卡器1刷卡器2欄桿入庫出庫圖3.1 傳感器布置圖PLCPLC顯示器地感線圈刷卡器欄桿圖3.2 總體框架圖3.3系統(tǒng)的主電路原理圖圖3

15、.3 系統(tǒng)的主電路原理圖3.3 顯示電路顯示電路為了節(jié)省I/O口資源,采用兩個四腳七段LED顯示器,其電路圖如圖3.4所示。YY0 Y1 Y2 Y3Y4 Y5 Y6 Y7圖3.4 顯示電路3.4 I/O口分配表輸入注釋輸出注釋X0總啟動Y0LED個位輸入X1總停止Y1LED個位輸入X2入口地感線圈1Y2LED個位輸入X3入庫開啟上限位Y3LED個位輸入X4入口地感線圈2Y4LED十位輸入X5入庫關閉下限位Y5LED十位輸入X6出口地感線圈3Y6LED十位輸入X7出口開啟上限位Y7LED十位輸入X10出口地感線圈4Y10入口門開啟X11出口關閉下限位Y11入口門關閉X12刷卡器1Y12出口門開啟

16、X13刷卡器2Y13出口門關閉圖3.5 I/O分配表3.5 I/O接線圖圖3.6 I/O接線圖 3.5 元器件的選型PLC的選擇:因為本次設計輸入口共用了11個,輸出口用了12個。根據(jù)PLC的選取規(guī)則要保留15%左右的備用I/O口,所以至少要選擇32個I/O口的PLC。根據(jù)經(jīng)濟與適用的原則,PLC的生產(chǎn)廠家主要是三菱,臺達,西門子等。在經(jīng)濟與適用之間平衡,選擇相對便宜,性能穩(wěn)定可靠的三菱FX2N-32MR。地感線圈的選擇:選擇PD132。產(chǎn)品優(yōu)點四種頻率4檔靈敏度可調(diào)靈敏度提升功能。當檢查器檢查到車輛時會自動將靈敏度提升到最高,當車輛離開線圈后恢復到之前設置的靈敏度。面板上的DIP5置為OFF

17、時停用此功能。增強濾波功能當環(huán)境電磁擾動大,導致檢測器頻繁誤動作時,可將DIP6撥至ON,增大濾波系數(shù),濾除擾動。但應注意:當環(huán)境正常時將DIP6拔至ON端,可能會降低檢測器的靈敏度。脈沖輸出設置檢測器的繼電器2(Relay2)輸出500毫秒的脈沖信號,由前面板撥碼開關DIP7選擇輸出時刻是在車輛進入線圈時還是車輛離開線圈時。存在輸出時間設置檢測器的繼電器1(Relay1)輸出存在信號。當DIP8被拔至OFF時,為有限存在輸出,有限時間為10分鐘(即當車壓在線圈上超過10分鐘后,檢測器會自動復位,重新初始化為無車狀態(tài))。當DIP8拔至ON時為永久存在(即車壓在線圈上時,一直有存在輸出直到車輛離

18、開線圈)。刷卡系統(tǒng)的選擇:選擇JX-TCC-001。1.讀卡距離遠,可加裝“遠距離讀頭”實現(xiàn)不停車刷卡功能。2系統(tǒng)可對卡的有效性進行自動識別。3地感檢測到有車方可取卡,取卡后方可開閘、有效避免了臨時車輛不取卡進場的混亂。4.出卡機出卡的同時即可完成讀卡。5.對講幫助功能,方便車主與管理中心聯(lián)系,形成遠程呼叫與幫助,方便用戶使用。6.中、英、繁三種字體顯示屏多種方式滾動顯示自定義的公共信息。7.自動計費和扣費(儲值卡)、期卡顯示有效期。8.地感檢測到有車,車主按取卡按鈕方可取卡,出卡過程中自動寫卡與讀卡,取卡后立即開閘,有效避免了無車人員按鍵取卡的混亂;超時未取卡后,出卡機自動回收卡片,避免了卡

19、片的丟失。四軟件設計4.1 主流程圖如圖4.1所示開始開始地感線圈1?取卡?入口開地感線圈2?入口關地感線圈3?收卡?出口開地感線圈4?出口關開始YNNYYYNNYYNN記數(shù)減1記數(shù)加1存儲器圖4.1 主流程圖4.2 梯形圖圖4.2 系統(tǒng)梯形圖五系統(tǒng)調(diào)試本次調(diào)試利用GX works2的自帶仿真進行調(diào)試。首先,打開總啟動按鈕,并復位總啟動按鈕。M0得電并自鎖,啟動主控程序,并把立即數(shù)50和10分別寫入到寄存器D0和D1。模擬入庫:調(diào)試X2,X12,可以看到Y10得電,并鎖住Y11,此時手動置位X3,Y10斷電,此時要再次復位X2,X12。當Y10得電的同時,M2取一個上升沿,使D0里面的數(shù)據(jù)減1

20、,并進行除法運算,商作為LED的十位,余數(shù)作為LED的個位,通過Y0Y7輸出給數(shù)碼顯示管。當車輛經(jīng)過地感線圈2時,Y11得電,X3復位。如圖5.1車輛入庫調(diào)試所示:圖5.1 車輛入庫調(diào)試模擬出庫:調(diào)試X6,X13,可以看到Y12得電,并鎖住Y13,此時手動置位X7,Y12斷電,此時要再次復位X6,X13當Y12得電的同時,M1取一個上升沿,使得D0里面的數(shù)據(jù)加1,并進行除法運算,商作為LED的十位,余數(shù)作為LED的個位,通過Y0Y7輸出給數(shù)碼顯示管。當車輛經(jīng)過地感線圈4時,Y13得電,X7復位。如圖5.2車輛出庫調(diào)試所示:5.2 車輛出庫調(diào)試設計心得在選擇這個課程設計后的這段時間里,通過老師的

21、指導和自己翻看大量的相關書籍及在網(wǎng)上瀏覽大量的相關作品,終于完成了這次課程設計。剛開始之所以選擇這個課題,一忙面是感覺這個課題挺實用的,另一方面出于個人觀點感覺比較簡單。但通過后來的設計,我發(fā)現(xiàn)這個課題確實比較實用,但是并不像我想的那樣簡單。剛開始我并不知道怎樣去做,甚至說從何處下手,后來通過看書上講的步驟和一些網(wǎng)上的成品,我腦海中逐步有了思路。首先,我先畫好電機控制的主電路,然后去實現(xiàn)對它的控制,然后,我根據(jù)要求開始畫梯形圖,在這過程中我不知道計數(shù)器怎么使用,不僅如此連數(shù)碼管的顯示也成了我前進的障礙,通過請教老師和同學,再加上自己的學習,后來我決定使用一個帶解碼器數(shù)的碼管,這樣不僅決了數(shù)碼管

22、的顯示問題,同時還是得PLC輸出端口的資源節(jié)省了下來。再后來,元器件的選取是我真明白了,任何一個設計都不是那么簡單的,各個問題各方各面都需要考慮。通過對這個課程設計的了解,我發(fā)現(xiàn)隨著汽車特別是私有汽車的普及使用,對大型停車廠系統(tǒng)的集中化和智能化的安全性管理已經(jīng)成為大規(guī)模停車服務管理的必然趨勢。針對現(xiàn)有的停車系統(tǒng)管理中存在的缺陷及PLC技術和傳感器技術的迅猛發(fā)展所帶來的新控制方式和管理方式的變革,采用先進的、科學的、合理的設計方法,建立一套基于PLC車輛出入庫管理系統(tǒng),實現(xiàn) 車輛出入庫,數(shù)量統(tǒng)計、信息查詢過程的自動化,安全性等就顯得十分必要。建立提高停車場利用率和方便駕車者的信息系統(tǒng),通過信息顯

23、示牌向尋找停車場的駕車者提供空閑停車場的位置和停車位的滿空狀況,以及誘導路線指南等信息,最大限度地提高了停車場的使用率也很重要。一個好的PLC設計并不像我設計的那樣粗糙,但通過這個設計確實是我明白了很多東西,我對PLC有了沖洗的認識,對我以前學到的相關知識能夠得到應用很是高興。參考文獻1 任勝杰 主編 .電氣控制與PLC系統(tǒng). 機械工業(yè)出版社,20132 常曉玲 主編 .控制系統(tǒng)與可編程控制器. 機械工業(yè)出版社,2004.3 張進秋可編程控制器原理及應用實例M北京:機械工業(yè)出版社,20064 PLC入門學習基礎教程M 北京:機械工業(yè)出版社,2007附錄一:元件清單名稱代號型號品牌數(shù)量熔斷器支持

24、件FU1,FU2RT14-20正泰2熔斷體FU1,FU2RT14-20(6A)正泰2交流接觸器KM1KM4NC8-06M正泰4熱繼電器FR1,FR2NRE8-25正泰2按鈕SB1LA19-11DJ/紅正泰1按鈕SB2LA19-11DJ/綠正泰1限位開關SB3-SB6NKX101多功能行程限位器正泰4斷路器QF1NXB-125正泰1地感線圈HB-PD132浩博智能系統(tǒng)2刷卡器JX-TCC-001金星只能科技2單相異步電動機YC7122大蘭電機4LED數(shù)碼管XSMS3611BR10芯斯美電子2PLCFX2N-32MR三菱1 表1 元件清單附錄二:主電路原理圖 圖1 主電路原理圖附錄三:PLC控制原

25、理圖圖2 PLC控制原理圖附錄四:PLC控制接線圖圖3 PLC控制接線圖附錄資料:不需要的可以自行刪除 C語言曲線函數(shù)像素函數(shù)putpixel() 畫像素點函數(shù) getpixel()返回像素色函數(shù) 直線和線型函數(shù)line() 畫線函數(shù) lineto() 畫線函數(shù) linerel() 相對畫線函數(shù) setlinestyle() 設置線型函數(shù) getlinesettings() 獲取線型設置函數(shù) setwritemode() 設置畫線模式函數(shù) 多邊形函數(shù)HYPERLINK /view/553113.htmrectangle() 畫矩形函數(shù) bar() 畫條函數(shù) bar3d() 畫條塊函數(shù) draw

26、poly() 畫多邊形函數(shù) 圓、弧和曲線函數(shù)getaspectratio()獲取縱橫比函數(shù) circle()畫圓函數(shù) arc() 畫圓弧函數(shù) ellipse()畫HYPERLINK /view/36981.htm橢圓弧函數(shù) fillellipse() 畫橢圓區(qū)函數(shù) pieslice() 畫扇區(qū)函數(shù) sector() 畫橢圓扇區(qū)函數(shù) getarccoords()獲取圓弧坐標函數(shù) 填充函數(shù)setfillstyle() 設置填充圖樣和顏色函數(shù) setfillpattern() 設置用戶圖樣函數(shù) floodfill() 填充閉域函數(shù) fillpoly() 填充多邊形函數(shù) getfillsettings

27、() 獲取填充設置函數(shù) getfillpattern() 獲取用戶圖樣設置函數(shù) 圖像函數(shù)imagesize() 圖像存儲大小函數(shù) getimage() 保存圖像函數(shù) putimage() 輸出圖像函數(shù) 圖形和圖像函數(shù)對許多圖形HYPERLINK /view/330120.htm應用程序,直線和HYPERLINK /view/400.htm曲線是非常有用的。但對有些圖形只能靠操作單個像素才能畫出。當然如果沒有畫像素的功能,就無法操作直線和曲線的函數(shù)。而且通過大規(guī)模使用像素功能,整個圖形就可以保存、寫、擦除和與屏幕上的原有圖形進行疊加。 (一) 像素函數(shù)putpixel() 畫像素點函數(shù)功能: 函

28、數(shù)putpixel() 在圖形模式下屏幕上畫一個像素點。 用法: 函數(shù)調(diào)用方式為void putpixel(int x,int y,int color); 說明: 參數(shù)x,y為像素點的坐標,color是該像素點的顏色,它可以是顏色符號名,也可以是整型色彩值。 此函數(shù)相應的HYPERLINK /view/668911.htm頭文件是graphics.h 返回值: 無 例: 在屏幕上(6,8)處畫一個紅色像素點: putpixel(6,8,RED); getpixel()返回像素色函數(shù)功能: 函數(shù)getpixel()返回像素點顏色值。 用法: 該函數(shù)調(diào)用方式為int getpixel(int x,

29、int y); 說明: 參數(shù)x,y為像素點坐標。 函數(shù)的返回值可以不反映實際彩色值,這取決于HYPERLINK /view/1120949.htm調(diào)色板的設置情況(參見setpalette()函數(shù))。 這個函數(shù)相應的頭文件為graphics.h 返回值: 返回一個像素點色彩值。 例: 把屏幕上(8,6)點的像素顏色值賦給變量color。 color=getpixel(8,6); (二) 直線和線型函數(shù)有三個畫直線的函數(shù),即line(),lineto(),linerel()。這些直線使用整型坐標,并相對于當前圖形視口,但不一定受視口限制,如果視口裁剪標志clip為真,那么直線將受到視口邊緣截斷;

30、如果clip為假,即使終點坐標或新的當前位置在圖形視口或屏幕極限之外,直線截斷到屏幕極限。 有兩種線寬及幾種線型可供選擇,也可以自己定義線圖樣。下面分別介紹直線和線型函數(shù)。 line() 畫線函數(shù)功能: 函數(shù)line()使用當前繪圖色、線型及線寬,在給定的兩點間畫一直線。 用法: 該函數(shù)調(diào)用方式為void line(int startx,int starty,int endx,int endy); 說明: 參數(shù)startx,starty為起點坐標,endx,endy為終點坐標,函數(shù)調(diào)用前后,圖形狀態(tài)下屏幕光標(一般不可見)當前位置不改變。 此函數(shù)相應的頭文件為graphics.h 返回值: 無

31、 例: 見函數(shù)60.linerel()中的實例。 lineto() 畫線函數(shù)功能: 函數(shù)lineto()使用當前繪圖色、線型及線寬,從當前位置畫一直線到指定位置。 用法: 此函數(shù)調(diào)用方式為void lineto(int x,int y); 說明: 參數(shù)x,y為指定點的坐標,函數(shù)調(diào)用后,當前位置改變到指定點(x,y)。 該函數(shù)對應的頭文件為graphics.h 返回值: 無 例: 見函數(shù)60.linerel()中的實例。 linerel() 相對畫線函數(shù)功能: 函數(shù)linerel() 使用當前繪圖色、線型及線寬,從當前位置開始,按指定的水平和垂直偏移距離畫一直線。 用法: 這個函數(shù)調(diào)用方式為vo

32、id linerel(int dx,int dy); 說明: 參數(shù)dx,dy分別是水平偏移距離和垂直偏移距離。 函數(shù)調(diào)用后,當前位置變?yōu)樵黾悠凭嚯x后的位置,例如,原來的位置是(8,6),調(diào)用函數(shù)linerel(10,18)后,當前位置為(18,24)。 返回值:無 例: 下面的程序為畫線函數(shù)調(diào)用實例: #i nclude void main() int driver,mode; driver=DETECT; mode=0; initgraph(&driver,&mode,); setcolor(15); line(66,66,88,88); lineto(100,100); linerel(

33、36,64); getch(); restorecrtmode(); setlinestyle() 設置線型函數(shù)功能: setlinestyle() 為畫線函數(shù)設置當前線型,包括線型、線圖樣和線寬。 用法: setlinestyle() 函數(shù)調(diào)用方式為void setlinestyle(int stly,unsigned pattern,int wigth); 說明: 參數(shù)style為線型取值,也可以用相應名稱表示,如表1-10中所示。 參數(shù)pattern用于自定義線圖樣,它是16位(bit)字,只有當style=USERBIT_LINE(值為1)時,pattern的值才有意義,使用用戶自定義

34、線圖樣,與圖樣中“1”位對應的像素顯示,因此,pattern=0 xFFFF,則畫實線;pattern=0 x9999,則畫每隔兩個像素交替顯示的虛線,如果要畫長虛線,那么pattern的值可為0 xFF00和0 xF00F,當style不為USERBIT_LINE值時,雖然pattern的值不起作用,但扔須為它提供一個值,一般取為0。 參數(shù)wigth用來設定線寬,其取值見表1-11,表中給出了兩個值,即1和3,實際上,線寬取值為2也是可以接受的。 若用非法參數(shù)調(diào)用setlinestyle()函數(shù),那么graphresult()會返回錯誤代碼,并且當前線型繼續(xù)有效。 Turbo C提供的線型與

35、線寬定義在頭文件graphics.h中,表1-10和1-11分別列出了參數(shù)的取值與含義。 表1-10 線型 名稱取值含義SOLID_LINE0實線DOTTED_LINE1點線CENTER_LINE2中心線DASHED_LINE3虛線USERBIT_LINE4用戶自定義線型表1-11 線寬 名 稱取 值說 明NORM_WIDTH(常寬)1一個像素寬(缺省值)THICK_WIDTH(加寬)3三個像素寬這個函數(shù)的頭文件是graphics.h 返回值: 無 例: 下面的程序顯示了BC中所提供的線型圖樣: #i nclude void main() int driver,mode;i; driver=D

36、ETECT; mode=0; initgraph(&driver,&mode,); for(i=0;i4;i+) setlinestyle(i,0,1); line(i*50,200,i*50+60,200) ; getch(); restorecrtmode(); getlinesettings() 獲取線型設置函數(shù)功能: 函數(shù)getlinesettings() 用當前設置的線型、線圖樣和線寬填 寫linesettingstype型結構。 用法: 函數(shù)調(diào)用方式為void getlinesettings(struct linesettingstype *info); 說明: 此函數(shù)調(diào)用執(zhí)行后,

37、當前的線型、線圖樣和線寬值被裝入info指向的結構里,從而可從該結構中獲得線型設置。 linesettingstype型結構定義如下: struct linesettingstype int linestyle; unsigned upattern; int thickness; ; 其中l(wèi)inestyle用于存放線型,線型值為表1-10中的各值之一。 upattern用為裝入用戶自定義線圖樣,這是16位字,每一位等于一個像素,如果哪個位被設置,那么該像素打開,否則關閉。 thickness為線寬值存放的變量,可參見表1-11。 getlinesettings()函數(shù)對應的頭文件為graphi

38、cs.h 返回值: 返回的線型設置存放在info指向的結構中。 例: 把當前線型的設置寫入info結構: struct linesettingstype info; getlinesettings(&info); setwritemode() 設置畫線模式函數(shù)功能: 函數(shù)setwritemode() 設置畫線模式 用法: 函數(shù)調(diào)用方式為 void setwritemode()(int mode); 說明: 參數(shù)mode只有兩個取值0和1,若mode為0,則新畫的線將覆蓋屏幕上原有的圖形,此為缺省畫線輸出模式。如果mode為1,那么新畫的像素點與原有圖形的像素點先進行異或(XOR)運算,然后輸出

39、到屏幕上,使用這種畫線輸出模式,第二次畫同一圖形時,將擦除該圖形。調(diào)用setwritemode()設置的畫線輸出模式只影響函數(shù)line(),lineto(),linerel(),recangle()和drawpoly()。 setwritemode()函數(shù)對應的頭文件是graphics.h 返回值: 無 例: 設置畫線輸出模式為0: setwritemode(0); (三)、多邊形函數(shù)對多邊形,無疑可用畫直線函數(shù)來畫出它,但直接提供畫多邊形的函數(shù)會給用戶很大方便。最常見的多邊形有矩形、矩形塊(或稱條形)、多邊形和多邊形塊,我們還把長方形條塊也放到這里一起考慮,雖然它不是多邊形,但它的特例就是矩

40、形(塊)。下面直接介紹畫多邊形的函數(shù)。 rectangle() 畫矩形函數(shù)功能: 函數(shù)rectangle() 用當前繪圖色、線型及線寬,畫一個給定左上角與右下角的矩形(正方形或長方形)。 用法: 此函數(shù)調(diào)用方式為void rectangle(int left,int top,int right,int bottom); 說明: 參數(shù)left,top是左上角點坐標,right,bottom是右下角點坐標。如果有一個以上角點不在當前圖形視口內(nèi),且裁剪標志clip設置的是真(1),那么調(diào)用該函數(shù)后,只有在圖形視口內(nèi)的矩形部分才被畫出。 這個函數(shù)對應的頭文件為graphics.h 返回值: 無 例:

41、下面的程序畫一些矩形實例: #i nclude void main() int driver,mode; driver=DETECT; mode=0; initgraph(&driver,&mode,); rectangle(80,80,220,200); rectangle(140,99,180,300); rectangle(6,6,88,88); rectangle(168,72,260,360); getch(); restorecrtmode(); bar() 畫條函數(shù)功能: 函數(shù)bar()用當前填充圖樣和填充色(注意不是給圖色)畫出一個指定上左上角與右下角的實心長條形(長方塊或正方

42、塊),但沒有四條邊線)。 用法: bar()函數(shù)調(diào)用方式為void bar(int left,int top,int right,int bottom); 說明: 參數(shù)left,topright,bottom分別為左上角坐標與右下角坐標,它們和調(diào)用函數(shù)rectangle()的情形相同,調(diào)用此函數(shù)前,可用setfillstyle()或setfillpattern()設置當前填充圖樣和填充色。 注意此函數(shù)只畫沒有邊線的條形,如果要畫有邊線的的條形,可調(diào)用下面的函數(shù)bar3d()來畫,并將深度參數(shù)設為0,同時topflag參數(shù)要設置為真,否則該條形無頂邊線。 這 應的頭文件為graphics.h 返

43、回值: 無 例: 見函數(shù)bar3d()中的實例。 bar3d() 畫條塊函數(shù)功能: 函數(shù)bar3d() 使用當前繪圖色、線型及線寬畫出三維長方形條塊,并用當前填充圖樣和填 充色填充該三維條塊的表面。 用法: 此函數(shù)調(diào)用方式為void bar3d(int left,int top,int right,int bottom,int depth,int topflag); 說明: 參數(shù)left,top,right,bottom分另為左上角與右下角坐標,這與bar()函數(shù)中的一樣。參數(shù)depth為條塊的深度,以像素為單位,通常按寬度的四分之一計算。深度方向通過屏顯縱橫比調(diào)節(jié)為約45度(即這時x/y比設

44、置為1:1)。 參數(shù)topflag相當于一個HYPERLINK /view/46060.htm布爾參數(shù),如果設置為1(真)那么條塊上放一頂面;若設置為0(假),則三維條形就沒有頂面,這樣可使多個三維條形疊加在一起。 要使圖形更加美觀,可利用函數(shù)floodfill()或setfillpattern()來選擇填充圖樣和填充色(參見本小節(jié)(五)填充函數(shù) )。 bar3d()函數(shù)對應的頭文件為graphics.h 返回值: 無 例: 下面的程序畫一個條形和條塊: #i nclude void main() int driver,mode; driver=DETECT; mode=0; initgrap

45、h(&driver,&mode,); setfillstyle(SOLID-FILL,GREEN); bar(60,80,220,160); setfillstyle(SOLID-FILL,RED); bar3d(260,180,360,240,20,1); getch(); restorecrtmode(); drawpoly() 畫多邊形函數(shù)功能: 函數(shù)drawpoly() 用當前繪圖色、線型及線寬,畫一個給定若干點所定義的多邊形。 用法: 此函數(shù)調(diào)用方式為void drawpoly(int pnumber,int *points); 說明: 參數(shù)pnumber為多邊形的頂點數(shù);參數(shù)poi

46、nts指向整型HYPERLINK /view/209670.htm數(shù)組,該數(shù)組中是多邊形所有頂點(x,y)坐標值,即一系列整數(shù)對,x坐標值在前。顯然整型數(shù)組的維數(shù)至少為頂點數(shù)的2倍,在定義了多邊形所有頂點的數(shù)組polypoints時,頂點數(shù)目可通過計算sizeof(polypoints)除以2倍的sizeof(int)得到,這里除以2倍的原因是每個頂點有兩個整數(shù)坐標值。另外有一點要注意,畫一個n個頂點的閉合圖形,頂點數(shù)必須等于n+1,并且最后一點(第n+1)點坐標必須等于第一點的坐標。 drawpoly()函數(shù)對應的頭文件為grpahics.h 返回值: 無 例: 下面的程序畫一個封閉星形圖與

47、一個不封閉星形圖: #i nclude void main() int driver,mode; static int polypoints118=100,100,110,120,100,130,120,125,140,140,130,120, 140,110,120,115,100,100; static int polypoints218=180,100,210,120,200,130,220,125,240,140,230,120, 240,110,220,115,220,110; driver=DETECT; mode=0; initgraph(&driver,&mode,); dra

48、wpoly(9,polypoints1); drawpoly(9,polypoints2); getch(); restorecrtmode(); (四)、 圓、弧和曲線函數(shù)在一個屏幕上畫得很圓的圖形到另一個屏幕上可能被壓扁或拉長,這是因為每一種顯示卡與之相應的顯示模式都有一個縱橫比??v橫比是指像素的水平方向大小與垂直方向大小的比值。如VGA顯示卡由于偈素基本上是正方形,所以縱橫比為1.000。 為了保證幾何圖形基本按預計情況顯示在屏幕上,用屏顯的縱橫比來計算和糾正不同硬件及顯示卡產(chǎn)生的畸變。計算縱橫比所需要的水平方向和垂直方向的比例系數(shù)可調(diào)用函數(shù)getaspectratio()獲得。 get

49、aspectratio()獲取縱橫比函數(shù)功能: 函數(shù)getaspectratio()返回x方向和y方向的比例系數(shù),用這兩個整型值可計算某一特定屏顯的縱橫比。 用法: 此函數(shù)調(diào)用方式為void getaspectratio(int xasp,int yasp); 說明: 參數(shù)xasp指向的變量存放返回的x方向比例系數(shù);參數(shù)yasp指向的變量存放返回的y方向比例系數(shù)。通常y方向比例系數(shù)為10 000, x方向比例系數(shù)不大于10 000(這是因為大多數(shù)屏幕像素高比寬長)。 注意縱橫比自動用作下面函數(shù)arc(),circle()和pieslice()中的標尺因子,使屏幕上圓或弧正常顯示。但用ellip

50、se()函數(shù)畫橢圓必須調(diào)用本函數(shù)獲取縱橫比作為標尺因子,否則不予調(diào)整??v橫比可用于其它幾何圖形,目的是校正和顯示圖形。 getaspectratio()函數(shù)對應的頭文件為graphics.h 返回值: 返回x與y方向比例系數(shù)分別存放在xasp和yasp所指向的變量中。 例: 下面的程序顯示縱橫比: int xasp,yasp; float aspectratio; getaspectratio(&xasp,&yasp); aspectratio=xasp/yasp; printf(aspect ratio: %f,aspectratio); circle()畫圓函數(shù)功能: 函數(shù)circle()

51、使用當前繪圖色并以實線畫一個完整的圓。 用法:該函數(shù)調(diào)用方式為void circle(int x,int y,int radius); 說明: 參數(shù)x,y為圓心坐標,radius為圓半徑,用像素個素表示。注意,調(diào)用circle()函數(shù)畫圓時不用當前線型。 不同于ellipse()函數(shù),只用單個半徑radius參數(shù)調(diào)用circle()函數(shù),故屏顯縱橫比可以自動調(diào)節(jié),以產(chǎn)生正確的顯示圖。 此函數(shù)對應的頭文件為graphics.h 返回值: 無 例: 畫六個同心圓,圓心在(100,100)。 #i nclude void main() int driver,mode; driver=DETECT;

52、mode=0; initgraph(&driver,&mode,); circle(100,100,10); circle(100,100,20); circle(100,100,30); circle(100,100,40); circle(100,100,50); circle(100,100,60); getch(); restorecrtmode(); arc() 畫圓弧函數(shù)功能: 函數(shù)arc()使用當前繪圖色并以實線畫一圓弧。 用法: 函數(shù)調(diào)用方式為void arc(int x,int y,int startangle,int endangle,int radius); 說明: 參數(shù)

53、x,y為圓心坐標,startangle與endangle分別為起始角與終止角,radius為半徑。圓心坐標和半徑以像素個數(shù)給出,起始角和終止角以度為單位,0度位于右邊,90度位于頂部,180度位于左邊,底部是270度。同往常一樣,360度與0度重合。角度按逆時針方向增加,但并不要求終止角一定比起始角大。例如指定300度和90度分別為起始角和終止角,與指定300度和450度分別為起始角和終止角可畫出相同的弧。大于360度可作為參數(shù),它將被化到0度360度范圍里。函數(shù)arc()能畫封閉圓,只要取起始角為0度,終止角為360度即可。此函數(shù)中,屏顯縱橫比可自動調(diào)節(jié)。 arc()函數(shù)對應的頭文件為gra

54、phics.h 返回值: 無 例: 以(200,200)為圓心,100為半徑,從0度到120度畫圓?。?#i ncludegraphics.h void main() int driver,mode; driver=DETECT; mode=0; initgraph(&driver,&mode,); setcolor(WHITE); arc(200,200,0,120,100); getch(); restorecrtmode(); graphics.h頭文件的內(nèi)容:/* graphics.h Definitions for Graphics Package. Copyright (c) Bo

55、rland International 1987,1988 All Rights Reserved. */ #if _STDC_ #define _Cdecl #else #define _Cdecl cdecl #endif #if !defined(_GRAPHX_DEF_) #define _GRAPHX_DEF_ enum graphics_errors /* graphresult error return codes */ grOk = 0, grNoInitGraph = -1, grNotDetected = -2, grFileNotFound = -3, grInvalid

56、Driver = -4, grNoLoadMem = -5, grNoScanMem = -6, grNoFloodMem = -7, grFontNotFound = -8, grNoFontMem = -9, grInvalidMode = -10, grError = -11, /* generic error */ grIOerror = -12, grInvalidFont = -13, grInvalidFontNum = -14, grInvalidVersion = -18 ; enum graphics_drivers /* define graphics drivers *

57、/ DETECT, /* requests autodetection */ CGA, MCGA, EGA, EGA64, EGAMONO, IBM8514, /* 1 - 6 */ HERCMONO, ATT400, VGA, PC3270, /* 7 - 10 */ CURRENT_DRIVER = -1 ; enum graphics_modes /* graphics modes for each driver */ CGAC0 = 0, /* 320 x200 palette 0; 1 page */ CGAC1 = 1, /* 320 x200 palette 1; 1 page

58、*/ CGAC2 = 2, /* 320 x200 palette 2: 1 page */ CGAC3 = 3, /* 320 x200 palette 3; 1 page */ CGAHI = 4, /* 640 x200 1 page */ MCGAC0 = 0, /* 320 x200 palette 0; 1 page */ MCGAC1 = 1, /* 320 x200 palette 1; 1 page */ MCGAC2 = 2, /* 320 x200 palette 2; 1 page */ MCGAC3 = 3, /* 320 x200 palette 3; 1 page

59、 */ MCGAMED = 4, /* 640 x200 1 page */ MCGAHI = 5, /* 640 x480 1 page */ EGALO = 0, /* 640 x200 16 color 4 pages */ EGAHI = 1, /* 640 x350 16 color 2 pages */ EGA64LO = 0, /* 640 x200 16 color 1 page */ EGA64HI = 1, /* 640 x350 4 color 1 page */ EGAMONOHI = 0, /* 640 x350 64K on card, 1 256K on card

60、, 4 pages */ HERCMONOHI = 0, /* 720 x348 2 pages */ ATT400C0 = 0, /* 320 x200 palette 0; 1 page */ ATT400C1 = 1, /* 320 x200 palette 1; 1 page */ ATT400C2 = 2, /* 320 x200 palette 2; 1 page */ ATT400C3 = 3, /* 320 x200 palette 3; 1 page */ ATT400MED = 4, /* 640 x200 1 page */ ATT400HI = 5, /* 640 x4

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論