




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
基于單片機的起重機升沉補償系統(tǒng)設(shè)計目錄TOC\o"1-2"\h\u12001緒論 246951.1選題的背景及意義 2104931.2單片機的發(fā)展及趨勢 3183501.3PID控制的發(fā)展及趨勢 480331.4課題的主要工作 5107232系統(tǒng)設(shè)計基本原理 637692.1PID調(diào)節(jié) 6265182.2PWM控制技術(shù) 6188292.4本章小結(jié) 756183元器件及模塊選擇 8292103.1整體方案 843633.2單片機STC89C52 9296093.3超聲波測距模塊HY-SRF05 10164963.4電機驅(qū)動模塊L298N 1290673.5直流減速電機 14268743.6OLED顯示模塊 14116423.7本章小結(jié) 16159664系統(tǒng)的軟件設(shè)計 17221984.1C語言介紹 17148664.2軟件介紹 1788404.3主函數(shù) 1810873主程序設(shè)計思路參考流程圖4-2 1891804.4超聲波測距算法實現(xiàn) 2148864.5PID算法 244244.7顯示函數(shù) 28127794.8本章小結(jié) 2983475.系統(tǒng)調(diào)試 30205625.1硬件調(diào)試 3080125.2軟件調(diào)試 30255186成本核算 311緒論1.1選題的背景及意義20世紀(jì)末,電子相關(guān)的技術(shù)發(fā)展迅速,同時也出于其行業(yè)需求,使得電子產(chǎn)品越來越袖珍化、智能化。而廣泛應(yīng)用于工業(yè)控制、網(wǎng)絡(luò)通信、醫(yī)療器械、航天航空、儀器儀表和汽車電子等領(lǐng)域的單片機更是發(fā)展到一個新的高度。單片機就是在一片半導(dǎo)體硅片上,集成了中央處理單元(CPU)、存儲器(RAM、ROM)、并行I/O口、串行I/O口、定時器/計數(shù)器、中斷系統(tǒng)、系統(tǒng)時鐘電路及系統(tǒng)總線的用于測控領(lǐng)域的微型計算機[2],簡稱單片機。簡而言之,集成了眾多功能的單片機就像是一個迷你化的計算機。它作為應(yīng)用和開發(fā)的芯片有諸多優(yōu)點如:質(zhì)量輕、面積小、價格低廉等。除此之外,單片機也可以用來學(xué)習(xí)計算機組成原理。正因可利用單片機的地方實在太多,單片機的使用范圍才相當(dāng)廣闊。本課題需要讓單片機把升沉信號傳遞到減速電機來控制電機轉(zhuǎn)速以此達(dá)到補償豎直方向位移的目的。通過基于單片機設(shè)計的海上起重機升沉補償系統(tǒng),能夠讓我更加清晰地認(rèn)識到單片機的研究開發(fā)和設(shè)計流程,這樣既能夠加深我對于單片機的認(rèn)識和理解以及在實際操作中的掌握,也能使我更好地理解單片機與其外圍部件之間的接口相互作用的一些基本方法和技術(shù),將本科四年所學(xué)電路、單片機、自動控制、C語言等專業(yè)知識觸類旁通,并提高其解決步入社會后將實際遇到的工程問題的能力。1.2單片機的發(fā)展及趨勢單片機(micro-controllers)是它是一種利用大規(guī)模集成電路技術(shù)再通過硅片來集成電路的計算芯片[3],硅板上已經(jīng)部分集成了用于應(yīng)用程序的正常運行,信息處理的最終過程執(zhí)行函數(shù)單元中央處理器CPU、作為隨機操作系統(tǒng)或其他正在寫入應(yīng)用程序中的操作程序的暫時只讀數(shù)據(jù)作為存儲介質(zhì)的隨機數(shù)據(jù)存儲器RAM、和只能被機器自動讀取卻又暫時無法被程序?qū)懭氲闹蛔x數(shù)據(jù)存儲器ROM、以及多種具有I/O口及數(shù)據(jù)中斷口的控制處理系統(tǒng)、定時器/自動計數(shù)器。利用這種大范圍的集成電路控制技術(shù)把它們都集成在一塊多晶硅片上,就這樣一個麻雀雖小但是五臟俱全的微型移動計算機集成控制系統(tǒng)就被制造出來了。出生于上世紀(jì)七十年代早期的單片機,其成長歷程主要有四個階段。(1)早期探索階段:上世紀(jì)七十年代,最早由Fairchild公司成功研發(fā)出了第一片可以稱的上是單片機的芯片,F-8。然而不久之后Intel公司就緊隨Fairchild公司其后推出了MCS-48系列單片機,這款單片機不僅影響更大、應(yīng)用更廣,更是為后來的MCS-51系列打下了基礎(chǔ)[4]。(2)處理器結(jié)構(gòu)的完善階段:隨著MCS-48系列的大獲成功,如日中天的Intel公司在進一步升級了MCS-48的處理器結(jié)構(gòu)后變很快就推出了一個結(jié)構(gòu)更加健全的處理器系列MCS-5l。MCS-5l系列充分完善了單片機的內(nèi)部通用線路,即總線架構(gòu)以及指令和系統(tǒng)、體積大小和功能集成。(3)從典型SCMC向MCU化的新型過渡階段:Intel公司在推出了MCS-51單片機后,又迅速研發(fā)出一款相對于MCS-51進一步升級的單片機系列MCS-96,這款單片機將一些主要的應(yīng)用于現(xiàn)代計算機數(shù)據(jù)測控處理系統(tǒng)的模數(shù)轉(zhuǎn)換器(ADC)、程序執(zhí)行狀態(tài)監(jiān)視器(WDT)、脈寬調(diào)制器(PWM)、高速射頻I/O口等全都被包含在芯片之中,這體現(xiàn)了這種新型單片機的各種微控制器件的性質(zhì)。單片機的成長過程可以理解為從單片機逐漸變成一個具有完善功能的微機系統(tǒng)的過程。(4)MCU的百花齊放發(fā)展階段:出于工控領(lǐng)域智能化的需要,單片機發(fā)展的腳步繼續(xù)向前邁進,單片機逐漸向自動化、智能化方向發(fā)展,隨后一系列高速、大尋址范圍、強計算運行能力和多機通訊能力的8位、16位、3位的通用型單片機和專業(yè)化單片機[5],以及五花八門各有特色的現(xiàn)代化單片機接連出現(xiàn),然而半導(dǎo)體技術(shù)的發(fā)展永遠(yuǎn)不會停止,硅片的設(shè)計水平也一直在上升,單片機的發(fā)展和創(chuàng)新永遠(yuǎn)都不會停止。之后還會有更多型號的單片機誕生,單片機與微機系統(tǒng)的差別也將進一步縮小。1.3PID控制的發(fā)展及趨勢物理學(xué)家奈奎斯特最先采用圖形的方法來判斷系統(tǒng)的穩(wěn)定程度。在此之上伯德設(shè)想到了一種可以根據(jù)頻域區(qū)間范圍設(shè)計的反饋式放大器。該套方式便是PID控制模型的雛形,這套模型至今已有70年的歷史。隨著更新迭代,PID控制技術(shù)有了穩(wěn)健的發(fā)展,尤其是計算機科學(xué)技術(shù)的不斷進步,使得PID控制系統(tǒng)產(chǎn)生了一個巨大的轉(zhuǎn)變,原先模擬PID調(diào)節(jié)技術(shù)已經(jīng)大有被傳統(tǒng)的數(shù)字PID控制技術(shù)所替代之勢,并且更多的新型PID控制算法和控制手段也在這一時期同步興起和涌現(xiàn)。當(dāng)然,許多高級控制在生產(chǎn)過程系統(tǒng)控制的發(fā)展路程中不斷涌現(xiàn),但是PID算法有著簡易的結(jié)構(gòu)、可靠的穩(wěn)定性、易于調(diào)整的優(yōu)點,并且在長期的工程實踐中已經(jīng)積累了相當(dāng)豐富的經(jīng)驗的優(yōu)勢使其仍然占據(jù)了大量的市場,在一些生產(chǎn)過程中如果要建立被控對象精確的數(shù)學(xué)模型相當(dāng)困難,因為其系統(tǒng)參數(shù)經(jīng)常發(fā)生變化[6]。也正是如此PID控制器才大受歡迎。然而從技術(shù)發(fā)展至今,PID控制器也存在著許多的不足和一些亟待改進之處,對于一些較為復(fù)雜的對象,例如延時很大、參數(shù)的時變速度也比較快,不確定性明顯且非線性嚴(yán)重的對象時,PID控制器的控制效果并不理想。不過可以針對PID控制器的部分控制功單獨拿出來進行改良,則可以很好地提升被控系統(tǒng)的控制質(zhì)量。比較典型的,如積分分離PID控制算法,遇限削弱積分PID控制算法等是通過對PID積分環(huán)節(jié)進行改進而得到的[7];不完全微分PID控制算法、微分先行PID控制算法等則是通過對微分環(huán)節(jié)進行改進而得到的。使用積分分離算法后,飽和積分被克服了,系統(tǒng)超調(diào)會明顯降低,同時過渡時間也縮短了。目前,基于軟計算科學(xué)的模型主要有很多種,比如有模糊模型、粗集模型、小波模型、運動模式模型、非參數(shù)預(yù)測模型等等模型。對這些模型在工作機制方面的認(rèn)識還是需要繼續(xù)不斷的摸索。當(dāng)今時代,控制系統(tǒng)的理論不斷成熟,計算機軟、硬件技術(shù)不斷進步與發(fā)展,傳感器的數(shù)據(jù)集成性也不斷增強。今后關(guān)于智能PID控制的相關(guān)技術(shù)研究與應(yīng)用的方向會更加清晰,具備越來越廣闊的發(fā)展前景。1.4課題的主要工作本研究課題主要采用HY-SRF02模塊進行測距,以此對模擬的貨物進行相對距離的采集,并且利用STC89C52單片機來對貨物進行超聲波測距模塊的工作進行控制,使得測距模塊能夠同時進行多次采樣和工作,從而通過測距獲取的吊鉤與貨物之間的相對距離值,對所獲取的高度值與設(shè)定的距離值進行比較,然后再通過L298N電機驅(qū)動模塊對直流減速電機進行控制,使得直流減速電機進行自動調(diào)速。采用PID控制策略,當(dāng)鉤子相對距離與設(shè)定距離差值為負(fù)時電機正轉(zhuǎn),帶動鉤子下降,反之,當(dāng)相對距離與設(shè)定距離差值為正時電機反轉(zhuǎn),帶動鉤子上升,使升沉補償控制系統(tǒng)可較準(zhǔn)確快速地對吊鉤進行豎直位移方向上的補償,以提高海上起重機的作業(yè)效率與安全性。本研究課題需要的主要準(zhǔn)備就是在深入地學(xué)習(xí)了單片機的工作原理和與C語言有關(guān)的軟件編程技術(shù)和方法基礎(chǔ)上,搜集和學(xué)習(xí)一些有關(guān)單片機控制的相關(guān)技術(shù)和系統(tǒng)的信息,理解了PID控制的工作原理。了解HY-SRF05、OLED以及L298電機驅(qū)動模塊與直流減速電機的相關(guān)工作原理。更進一步的學(xué)習(xí)單片機,同時也學(xué)習(xí)了相應(yīng)硬件接線和調(diào)試方法。了解海上起重機以及自動升沉補償系統(tǒng)的基本結(jié)構(gòu)和其工作原理,主動式升沉補償系統(tǒng)的控制策略,使該系統(tǒng)控制策略能夠根據(jù)波浪引起的豎直方向吊鉤與貨物之間距離的變化,控制升沉補償系統(tǒng)的裝置做出相應(yīng)的精確補償,升沉補償系統(tǒng)的控制過程設(shè)計。選擇測距控制信號的發(fā)射、反射及接收裝置,進行軟件和硬件的設(shè)計,基本完成整體功能,并進行模擬試驗。
2系統(tǒng)設(shè)計基本原理2.1PID調(diào)節(jié)PID即是英文Proportional(比例)、Integral(積分)、Differential(微分)的縮寫。PID調(diào)節(jié)可以簡單的認(rèn)為是一種結(jié)合了比例、積分、微分三個環(huán)節(jié)的調(diào)節(jié)辦法[8]。PID調(diào)節(jié)作為一種包含了比例、積分以及微分作用的一種線性調(diào)節(jié)方式,其在經(jīng)典控制理論中有不可替代的地位。比例環(huán)節(jié):控制器成比例地反應(yīng)當(dāng)前系統(tǒng)的誤差和偏移信號[9],當(dāng)系統(tǒng)產(chǎn)生誤差時,控制器就會立刻做出反應(yīng),從而產(chǎn)生一個可以通過控制的作用來降低系統(tǒng)誤差。如果誤差為0,那么控制作用也會變成0,因此比例控制屬于有差調(diào)節(jié)。其中的信號傳遞方式?jīng)]有慣性,具有輸入和信號之間的傳遞不失真,及時,成比例地復(fù)現(xiàn)了輸出和信號之間的變動等特點。然而它也有不足之處,首先它不能完美地消除系統(tǒng)產(chǎn)生的穩(wěn)態(tài)誤差,其次就是比例放大倍數(shù)的設(shè)定,小了系統(tǒng)不能快速做出調(diào)節(jié),大了又會影響到系統(tǒng)的穩(wěn)定性。積分環(huán)節(jié):將系統(tǒng)的誤差進行累加,即將控制器的輸出與輸入之差對時間進行積分,這樣的話雖然可能每次產(chǎn)生的誤差并不大,但當(dāng)時間足夠長的話誤差仍會出現(xiàn),這個誤差就是穩(wěn)態(tài)誤差,而積分環(huán)節(jié)的作用就是控制調(diào)節(jié)控制器使其輸出增大來消除穩(wěn)態(tài)誤差。簡單地說,積分環(huán)節(jié)的作用就是對誤差記憶,消除因為摩擦力,空氣阻力等等因素產(chǎn)生的誤差,消除系統(tǒng)靜差,提高無差度。微分環(huán)節(jié):通過及時反映系統(tǒng)當(dāng)前的偏差值和誤差信號的變化速率,就可以在系統(tǒng)誤差信號轉(zhuǎn)化變得非常大前就對其信號做出一個及時的自動糾正,即可以提前對系統(tǒng)信號進行自動反應(yīng),因此系統(tǒng)的平均動作速度將有所增加,可以大大減少整個系統(tǒng)的超調(diào)的持續(xù)時間,誤差越大其作用越明顯。從時間上看,比例環(huán)節(jié)作用的可以對系統(tǒng)每時每刻產(chǎn)生的誤差進行調(diào)節(jié),而積分環(huán)節(jié)的作用則會對過去的累計誤差作出反應(yīng),最后微分作用又提前對系統(tǒng)將要產(chǎn)生的誤差進行反應(yīng)。正是現(xiàn)在、過去、未來的結(jié)合使得PID控制成為現(xiàn)在最好的控制策略之一。PID控制的表達(dá)式為:(2-1)式中Kp為比例系數(shù),Ti為積分系數(shù),Td為微分系數(shù)。2.2PWM控制技術(shù)PWM(PulseWidthModulation)即脈沖寬度調(diào)制,這是一種對模擬信號電平進行數(shù)字編碼的常見方法。利用微處理器的數(shù)字輸出對模擬電路進行控制的技術(shù)[10],其應(yīng)用領(lǐng)域十分廣闊,如應(yīng)用到測量、通信和功率變化等領(lǐng)域。簡單而言PWM控制技術(shù)是利用對脈沖寬度的調(diào)節(jié)來等效地獲得模擬信號時所需要的頻率和寬度,即把一個模擬信號的電平轉(zhuǎn)換成數(shù)字化進行編碼。因為本課題需要調(diào)節(jié)電機的轉(zhuǎn)速,而單片機的I/O口輸出的是數(shù)字信號,要么輸出高電平要么輸出低電平,所以這里要再引入一個概念:占空比。占空比即在一個脈沖周期內(nèi),高電平所占的時間與整個周期的總時間之比[11]。因此PWM對與脈沖寬度的調(diào)節(jié)可以調(diào)節(jié)其占空比大小。如果脈沖寬度變寬,占空比變大,輸出的能量就會提高。同樣,如果脈沖寬度變窄,輸出的能量變小。在一定工作頻率下,通過模擬各種占空比即可輕松獲取不同的模擬輸入和模擬輸出電壓,PWM就是這樣利用此類的原理來快速實現(xiàn)從一個數(shù)字信號到模擬信號之間的數(shù)據(jù)轉(zhuǎn)化。安培力是通電導(dǎo)線在磁場之中所受到的力,其公式為:F=BIL(2-2)想要改變電機的轉(zhuǎn)速只需改變電機流過的電流大小,電機的電阻在工作過程中保持不變,根據(jù)歐姆定律想要改變電機工作電流只需改變其兩端的電壓即可,而PWM調(diào)制原理就是把固定的直流電壓轉(zhuǎn)換成不同電壓值的模擬信號,這便是通過PWM調(diào)制來改變電機轉(zhuǎn)速的原理。2.4本章小結(jié)本章主要介紹了要實現(xiàn)升沉補償所用到的兩種控制辦法,PID控制技術(shù)和PWM控制技術(shù),以及相關(guān)的工作原理,這為接下來元器件的選用打下了基礎(chǔ)。3元器件及模塊選擇3.1整體方案本課題設(shè)計的海上起重機的升沉補償系統(tǒng)主要是由MCU單元、超聲波測距模塊、電機驅(qū)動模塊、直流減速電機、OLED顯示電路、和復(fù)位電路等部分組成。圖3-1系統(tǒng)原理圖圖3-2系統(tǒng)總體電路圖MCU單元采用STC89C52單片機,作用是接收測距模塊傳遞到的高度信息,之后再通過I/O口控制電機驅(qū)動模塊L298N,最后再控制直流減速電機的轉(zhuǎn)速以及正轉(zhuǎn)反轉(zhuǎn)。3.2單片機STC89C52STC89C52
是一種帶
8K
字節(jié)閃爍可編程可檫除只讀存(ROMPER-ProgrammableandErasableReadOnlyMemory)的低電壓,高性能
COMOS8
的微處理器,俗稱單片機。STC89C52具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,512字節(jié)RAM,32位I/O口線,看門狗定時器,內(nèi)置4KBEEPROM,MAX810復(fù)位電路,3個16位定時器/計數(shù)器,4個外部中斷,一個7向量4級中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級中斷結(jié)構(gòu))[12],全雙工串行口。另外STC89C52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式[13]。空閑模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作[14]。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止[15]。圖3-3STC89C52引腳圖①主電源引腳(2根)VCC(Pin40):電源輸入,接+5V電源GND(Pin20):接地線。②外接晶振引腳(2根)XTAL1(Pin19):片內(nèi)振蕩電路的輸入端。XTAL2(Pin20):片內(nèi)振蕩電路的輸出端。③控制引腳(4根)RST/VPP(Pin9):復(fù)位引腳,引腳上出現(xiàn)2個機器周期的高電平將使單片機復(fù)位。ALE/PROG(Pin30):地址鎖存允許信號。PSEN(Pin29):外部存儲器讀選通信號。EA/VPP(Pin31):程序存儲器的內(nèi)外部選通,接低電平從外部程序存儲器讀指令,如果接高電平則從內(nèi)部程序存儲器讀指令。④可編程輸入/輸出引腳(32根):STC89C52單片機有4組8位的可編程I/O口,分別位P0、P1、P2、P3口,每個口有8位(8根引腳),共32根。PO口(Pin39~Pin32):8位雙向I/O口線,名稱為P0.0~P0.7。P1口(Pin1~Pin8):8位準(zhǔn)雙向I/O口線,名稱為P1.0~P1.7。P2口(Pin21~Pin28):8位準(zhǔn)雙向I/O口線,名稱為P2.0~P2.7。P3口(Pin10~Pin17):8位準(zhǔn)雙向I/O口線,名稱為P3.0~P3.73.3超聲波測距模塊HY-SRF05超聲波測距模塊是用來測量距離的一種產(chǎn)品,通過發(fā)送和收超聲波,利用時間差和聲音傳播速度,計算出模塊到前方障礙物的距離。圖3-4HY-SRF05實物圖圖3-5HY-SRF05電路圖表3-1HC-SRF04測距模塊的電氣參數(shù)表電氣參數(shù)HC-SRF05超聲波模塊工作電壓DC5V工作電流15mA工作頻率40kHz最遠(yuǎn)射程4.5m最近射程2cm測量角度15度輸入觸發(fā)信號10us的TTL脈沖輸出回響信號輸出TTL電平信號,與射程成比例規(guī)格尺寸45*20*15mm該模塊有5個引腳,VCC、GND、Trig、Echo、OutVCC:接電源GND:接地OUT:該開關(guān)量輸出,也可以用做報警模塊Trig:此引腳控制信號的輸入,即可以發(fā)出10us的高電平來觸發(fā)模塊進行測距Echo:信號接收,該引腳可以在接收到反彈回來的信號后產(chǎn)生一個和距離成比例的方波功能實現(xiàn):采用I0口TRIG觸發(fā)測距,給至少10us的高電平信號接著模塊自動發(fā)送8個40khz的方波,自動檢測是否有信號返回最后有信號返回,通過I0口ECHO輸出一個高電平,高電平持續(xù)的時間就是超聲波從發(fā)射到返回的時間。測試距離=(高電平時間*聲速(340M/S))/2。圖3-6超聲波時序圖3.4電機驅(qū)動模塊L298N電機驅(qū)動芯片的作用是通過控制電機的旋轉(zhuǎn)方向和運轉(zhuǎn)速度,以此來控制占空比,從而達(dá)到對電機控制的目的。L298N模塊是美國ST公司自主研發(fā)和生產(chǎn)的一種工作時可承受高電壓、高電流的電機驅(qū)動模塊,此模塊選擇15腳進行密閉。主要技術(shù)特點有:直流工作狀態(tài)下電壓高,最低的直流工作電壓也可達(dá)46v;峰值輸出瞬間電流大,瞬間電流峰值輸出電流最大可以到達(dá)3A,持續(xù)穩(wěn)壓運行時的最大峰值電流可達(dá)2A;額定輸出容量最大功率25w。內(nèi)含兩個H橋的高直流電壓大型低電流全自動橋式電源驅(qū)動器,被廣泛地設(shè)計用來驅(qū)動直流電力發(fā)動機和高速步進直流電動機、繼電器驅(qū)動線圈等各種傳感性電路負(fù)載;采用國際標(biāo)準(zhǔn)的內(nèi)部邏輯輸入電平電源信號進行控制;同時可以通過一個外接器件檢查輸入電阻,將其中的電壓變化信號數(shù)據(jù)反饋到外部控制電路中。L298N的特點可簡單概括為:能控制電機進行正轉(zhuǎn)和反轉(zhuǎn),以及電機的調(diào)速、啟動性能優(yōu)秀,啟動轉(zhuǎn)矩大、工作時的電壓可達(dá)到36V,4A、可以同一時間驅(qū)動兩個直流電機工作。當(dāng)然,本次課題只需要利用L298驅(qū)動一個電機即可。圖3-7L298N工作狀態(tài)圖設(shè)置IN1和IN2,就可對直流電機PWM調(diào)速。如果要調(diào)速先需明確電機的轉(zhuǎn)動方向,然后對使能端輸出PWM脈沖,可以完成調(diào)速。但如果使能端為無信號時電機停止工作。如果需要阻止電機運行則需要使能信號為高電平并且相應(yīng)的控制端處于相同的電平信號才能達(dá)到要求。圖3-8L298N驅(qū)動電路圖3.5直流減速電機直流減速電機,又叫齒輪減速電機,它是在普通直流電機的技術(shù)基礎(chǔ)上,再添加配套的齒輪減速箱。齒輪減速箱可以提供較低的速度和較大的扭矩。同時,不同減速比的齒輪箱可以提供不同的轉(zhuǎn)速和扭矩。由于其簡易性與靈活性和較高的性價比,直流減速電機在自動化領(lǐng)域所占的市場份額正在不斷提高。通常直流減速電機由專業(yè)的減速機生產(chǎn)廠家進行整體組裝,成套供貨。減速電機不僅在各種機械工程行業(yè)大顯身手,在鋼鐵行業(yè)也能時常見到它的身影。其優(yōu)點是簡化了設(shè)計,節(jié)省了空間。3.6OLED顯示模塊本次選用的0.96寸液晶模塊,0.96寸液晶模塊是一款控制器為SSD1306,分辨力為128*64點OLED顯示模塊,有藍(lán)色、白色、黃藍(lán)雙色,采用3.3V供電:VCC=3.3V-5V、支持4線SPI、I2C等通訊方式。出廠默認(rèn)設(shè)置為SPI通訊、工作溫度:-40℃~70℃,存儲溫度:-40℃~85℃。主要特點有:(1)OLED因其特殊用料,它的核心厚度極薄,最小厚度低于0.98mm,僅為普通液晶的30%。(2)OLED可以主動發(fā)光,這使得它幾乎沒有盲角,在正常情況下即使從側(cè)面看也不會失真,其視角一般可達(dá)到170度,甚至視角可以更寬。除此之外它還是一種全固態(tài)機構(gòu),它沒有任何的真空與液體,抗抖動能力強,能夠適應(yīng)高速,振動等不良環(huán)境。(3)OLED顯示屏的響應(yīng)時間很快,甚至超過了TFT—LCD液晶顯示屏。TFT—LCD的響應(yīng)時間一般都在幾十毫秒左右,現(xiàn)在做得最好的TFT—LCD響應(yīng)時間也保持在12毫秒開外。而OLED顯示屏的響應(yīng)時間大約可以縮短到零點零幾毫秒。(4)OLED有低溫抗性,即使在負(fù)45攝氏度均溫下仍然可以正常準(zhǔn)確地高頻顯示,而TFT—LCD的響應(yīng)速度隨環(huán)境溫度的變化會發(fā)生改變,甚至顯示效果大不如常溫下。在極低的溫度下,其系統(tǒng)反應(yīng)時間會大幅上升,所以液晶顯示屏在溫度極低時工作效果遠(yuǎn)不如OLED。(5)OLED的二極管并不需要背光源,因為可以自己產(chǎn)生光源,除此之外由于OLED的高效率發(fā)光轉(zhuǎn)化,其功耗相比于液晶也更低。(6)由于工作電壓不高,可以用10V以下的電源來點亮OLED屏幕。圖3-9OLED顯示電路3.7本章小結(jié)本章主要介紹了課題所要用到的元器件和模塊的相關(guān)信息,也說明了單片機和模塊引腳和功能,只有更好的熟悉這些電子元件相關(guān)功能才能對將要設(shè)計的硬件結(jié)構(gòu)有更大把握。而本人在查找相關(guān)資料時不光學(xué)到了如何使用相關(guān)的模塊,同時也有一些意外的收獲,比如單片機的命名規(guī)則,HY-SRF05和HC-SR04有什么區(qū)別等。
4系統(tǒng)的軟件設(shè)計4.1C語言介紹本次設(shè)計所需要使用的編程語言主要是C語言,C語言誕生于1972年美國的貝爾實驗室。世界上第一個操作系統(tǒng)UNIX便是C語言所編寫,隨著UNIX操作系統(tǒng)的大火同時帶動了C語言的興起。然而C語言之所以能夠成為大家耳熟能詳?shù)木幊陶Z言,主要與它的簡易性和實用性密不可分。從簡易性上看,C語言相較于其他編程語言可以容忍一些無關(guān)緊要的語法錯誤,同時標(biāo)準(zhǔn)庫中一些常見的頭文件代碼幫助編程人員減少了不必要的負(fù)擔(dān),比如最常見的stdio.h。從實用性上看C語言的數(shù)據(jù)類型與運算符繁多,足以應(yīng)對編程人員大部分的開發(fā)需求。此外由于函數(shù)概念的引用使得C語言將全部的代碼分割成一個個獨立的個體,即子函數(shù)。單個函數(shù)中出現(xiàn)的錯誤不會影響其他的函數(shù),這就給日常的維護增添了便利,哪里出錯就改哪里,而不用牽一發(fā)而動全身。也正是C語言的這種結(jié)構(gòu)化使得學(xué)習(xí)起來十分方便??偟膩碚fC語言有以下優(yōu)點:結(jié)構(gòu)簡單實用性強、語法限制較弱、可操作性強、便于學(xué)習(xí)。C51是一種來自于C語言的編程語言,專門面向于單片機,在兼容的微機平臺下幾乎不用修改或稍加修改便可以移植。與匯編語言相比來看,匯編語言可直接調(diào)用單片機的硬件資源,這要導(dǎo)致編程者需要具體組織與分配存儲器資源和處理端口數(shù)據(jù),也正因如此匯編語言的指令執(zhí)行起來速度較快,但程序可讀性很差,幾乎無法移植,編寫困難。而繼承于C語言的C51作為一種結(jié)構(gòu)化語言其代碼十分緊湊,代碼執(zhí)行效率也高,同時其良好的可讀性也給調(diào)試與維護提供了便捷,不僅如此豐富的庫函數(shù)更是減少了編程人員的工作量,節(jié)約了時間。簡單概括就是C51語言既擁有匯編語言執(zhí)行效率上的優(yōu)點,同時也比匯編語言易于理解易于移植。C51的語法結(jié)構(gòu)和C語言幾乎一樣,所以C51也繼承了C語言都簡易性與實用性。故C51語言完美地契合了本次課題所用到的STC89C52單片機。4.2軟件介紹keilc51是Keilsoftware公司生產(chǎn)的51系列兼容MCU的C語言軟件開發(fā)系統(tǒng)。相對于匯編語言,C語言在功能、結(jié)構(gòu)、可讀性和可維護性等方面具有明顯的優(yōu)勢,易于學(xué)習(xí)和使用。Keil為我們提供了一個完整的開發(fā)方案,其中囊括了C編譯器、宏匯編、鏈接器、庫管理和強大的模擬調(diào)試器。這些主要部件通過集成開發(fā)環(huán)境(μvision)進行組合。但要運行keil軟件需要用到Win98、NT、WIN2000和WinXP等操作系統(tǒng)。想用C語言編程,Keil幾乎是唯一的選擇,即使只用匯編語言代替C語言編程,其方便快捷易用的集成環(huán)境和強大的軟件仿真調(diào)試工具也會工作輕松不少。圖4-1 KEIL軟件界面4.3主函數(shù)主程序設(shè)計思路參考流程圖4-21.首先初始化,包含定時器的初始化,顯示屏初始化等。2.顯示屏顯示固定數(shù)據(jù)。3進入while循環(huán)。4在while循環(huán)內(nèi)進行超聲波測距以及PID調(diào)節(jié)發(fā)動機轉(zhuǎn)速。圖4-2主函數(shù)流程圖主函數(shù)實現(xiàn)如下:voidmain(void){ unsignedinttimex=0,i=0; Timer0_Init();//定時器0初始化 Timer1_Init();//定時器1初始化 Delay100ms(); OLED_Init();//OLED初始化 OLED_Clear(); for(i=0;i<4;i++) { OLED_ShowCHinese(i*16,0,i); } for(i=4;i<8;i++) { OLED_ShowCHinese(i*16-64,4,i);//顯示中文漢字及字符 } OLED_ShowChar(64,0,':',16); OLED_ShowString(96,0,"cm",16); OLED_ShowChar(64,4,':',16); OLED_ShowString(96,4,"cm",16); OLED_ShowNum(72,4,set_dis,3,16); led=0;// Delay100ms(); led=1;//關(guān)閉燈 Motor1=0; Motor2=0;//停轉(zhuǎn) ULT_GetData(1);//超聲波先獲取一次數(shù)據(jù) while(1) { timex++; Delay1ms(); if(KEY1==0) { Delay1ms(); if(KEY1==0) { while(!KEY1); flag1=!flag1; if(flag1==1) { set_dis=ult_s1; } else { set_dis=5; } OLED_ShowNum(72,4,set_dis,3,16); } } if(timex%200==0)//200毫秒進行一次超聲波測距以及進行一次顯示屏的刷新 { ULT_GetData(1); OLED_ShowNum(72,0,ult_s1,3,16); } if(timex%200==0)//200毫秒進行一次PID計算 { PID(); } }}4.4超聲波測距算法實現(xiàn)超聲波測距流程如圖4-31.超聲波測距模塊初始化2.單片機I/O口給HY-SRF05的TRIG口高電平觸發(fā)測距。3.超聲波測距使用定時器0計時,200毫秒測量一次距離。圖4-3主函數(shù)流程圖部分超聲波測距算法函數(shù)如下:voidULT_Conut(unsignedcharx){ unsignedintult_time=0; // ult_time=TH0*256+TL0; TH0=0; TL0=0; switch(x) { case1: ult_s1=(ult_time*1.87)/100; // if(ult_flag==1) { ult_flag=0; break; case2: ult_s2=(ult_time*1.87)/100;// if(ult_flag==1) // { ult_flag=0; Uart0_SendString("\r\n"); } Uart0_SendString("ult_s2="); Uart0_SendChar((unsignedint)ult_s2%1000/100+'0'); Uart0_SendChar((unsignedint)ult_s2%100/10+'0'); Uart0_SendChar((unsignedint)ult_s2%10/1+'0'); Uart0_SendString("\r\n"); break; case3: ult_s3=(ult_time*1.87)/100;// if(ult_flag==1) // { ult_flag=0; Uart0_SendString("\r\n"); } Uart0_SendString("ult_s3="); Uart0_SendChar((unsignedint)ult_s3%1000/100+'0'); Uart0_SendChar((unsignedint)ult_s3%100/10+'0'); Uart0_SendChar((unsignedint)ult_s3%10/1+'0'); Uart0_SendString("\r\n"); break; case4: ult_s4=(ult_time*1.87)/100; if(ult_flag==1) // { ult_flag=0; Uart0_SendString("\r\n"); } Uart0_SendString("ult_s4="); Uart0_SendChar((unsignedint)ult_s4%1000/100+'0'); Uart0_SendChar((unsignedint)ult_s4%100/10+'0'); Uart0_SendChar((unsignedint)ult_s4%10/1+'0'); Uart0_SendString("\r\n"); break; }}4.5PID算法1.讀取程序所給定的比例、積分、微分的參數(shù),單片機采集超聲波測距模塊返回的數(shù)值。2.計算偏差量、累計誤差量、誤差變化率,計算出直流減速電機的轉(zhuǎn)動方向以及需要調(diào)節(jié)到多少轉(zhuǎn)速。利用定時器1來計時,PWM周期為100毫秒,分成100份,根據(jù)PID計算的結(jié)果來決定一個周期內(nèi)電機轉(zhuǎn)動的時間,如果PWM值大于100則強制變成100,電機全速運行。3輸出控制量,根據(jù)一個周期內(nèi)電機轉(zhuǎn)動的時間占比來調(diào)節(jié)直流減速電機的轉(zhuǎn)速。圖4-3PID調(diào)節(jié)流程圖部分PID控制函數(shù)如下:voidPID(void){ interr,last_err,serr,delt_err; floatP=3,I=0.0001,D=0.1; err=(int)ult_s1-set_dis;//誤差當(dāng)前超市波測距模塊距離地面的距離減去設(shè)定的距離即為誤差 serr+=err;//累積誤差即誤差的總和 delt_err=err-last_err;//誤差變化量本次誤差減去上次誤差 pwm=P*err+I*serr+D*delt_err; if(pwm>100) { pwm=100;//此時誤差較大,電機全速運行 } if(pwm<(-100)) { pwm=-100; } if(pwm>=0) { flag=0; } if(pwm<0) { led=0; pwm=-pwm; flag=1; } last_err=err;}voidTimer1(void)interrupt3 //串口發(fā)送接收中斷{ TR1=0; //先將定時器0暫停 TH1=(65536-1000)/256;//存入初值高八位,對應(yīng)1ms定時中斷 TL1=(65536-1000)%256;//存入初值低八位,對應(yīng)1ms定時中斷 tt1++; if(flag==0)//正轉(zhuǎn) { if(tt1<pwm) { Motor1=1; Motor2=0; } else { Motor1=0; Motor2=0; } } else { if(tt1<pwm) { Motor1=0; Motor2=1; } else { Motor1=0; Motor2=0; } } if(tt1>=100) { tt1=0; } TR1=1; //重啟定時器0}4.7顯示函數(shù)顯示函數(shù)包含兩部分,一部分是固定字符只需要在初始化時顯示一次就行,不用進入while循環(huán),另一部分會隨著超聲波測距模塊返回數(shù)值的變化需要發(fā)生變更,代碼寫在while循環(huán)里。部分顯示函數(shù)如下:voidfill_picture(unsignedcharfill_Data){ unsignedcharm,n; for(m=0;m<8;m++) { OLED_WR_Byte(0xb0+m,0); //page1 OLED_WR_Byte(0x00,0); //lowcolumnstartaddress OLED_WR_Byte(0x10,0); //highcolumnstartaddress for(n=0;n<128;n++) { OLED_WR_Byte(fill_Data,1); } }}//坐標(biāo)設(shè)置voidOLED_Set_Pos(unsignedcharx,unsignedchary){ OLED_WR_Byte(0xb0+y,OLED_CMD); OLED_WR_Byte(((x&0xf0)>>4)|0x10,OLED_CMD); OLED_WR_Byte((x&0x0f),OLED_CMD);}//開啟OLED顯示voidOLED_Display_On(void){ OLED_WR_Byte(0X8D,OLED_CMD); OLED_WR_Byte(0X14,OLED_CMD);//DCDCON OLED_WR_Byte(0XAF,OLED_CMD);//DISPLAYON}//關(guān)閉OLED顯示voidOLED_Display_Off(void){ OLED_WR_Byte(0X8D,OLED_CMD); OLED_WR_Byte(0X10,OLED_CMD);//DCDCOFF OLED_WR_Byte(0XAE,OLED_CMD);//DISPLAYOFF}//清屏函數(shù),屏幕變黑等同于未點亮voidOLED_Clear(void){ u8i,n; for(i=0;i<8;i++) { OLED_WR_Byte(0xb0+i,OLED_CMD);//設(shè)置首頁地址 OLED_WR_Byte(0x00,OLED_CMD);//設(shè)置顯示位置_列低地址 OLED_WR_Byte(0x10,OLED_CMD);//設(shè)置顯示位置_列高地址 for(n=0;n<128;n++)OLED_WR_Byte(0,OLED_DATA); }//更新顯示}voidOLED_On(void){ u8i,n; for(i=0;i<8;i++) { OLED_WR_Byte(0xb0+i,OLED_CMD);//設(shè)置首頁地址 OLED_WR_Byte(0x00,OLED_CMD);//設(shè)置顯示位置_列低地址 OLED_WR_Byte(0x10,OLED_CMD);//設(shè)置顯示位置_列高地址 for(n=0;n<128;n++)OLED_WR_Byte(1,OLED_DATA); }//更新顯示}4.8本章小結(jié)在選擇完元器件以及設(shè)計好電路圖與各元器件的連接方式后,最大的挑戰(zhàn)就是完成相關(guān)程序的設(shè)計。此章節(jié)主要闡述了相關(guān)算法
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度集體魚塘承包與漁業(yè)可持續(xù)發(fā)展合作協(xié)議
- 計算機技術(shù)與軟件資格初級獨家試題及答案
- 二零二五年度反擔(dān)保合同匯編:文化產(chǎn)業(yè)項目資金安全保障
- 軟件技術(shù)初級資格考試點評與總結(jié)試題及答案
- 2025年度消防安全管理服務(wù)合同補充協(xié)議樣本
- 2025年茶藝師崗位職責(zé)試題及答案
- 二零二五年度智慧城市建設(shè)企業(yè)高管聘用與智能技術(shù)合同
- 二零二五年度農(nóng)村土地承包經(jīng)營權(quán)流轉(zhuǎn)及農(nóng)業(yè)廢棄物資源化利用與農(nóng)村基礎(chǔ)設(shè)施建設(shè)合同
- 二零二五年度月嫂雇傭合同書-產(chǎn)婦月子期間專業(yè)護理與生活照料協(xié)議
- 2025年健康管理師考試全攻略:試題及答案
- 電力系統(tǒng)應(yīng)急物資儲備手冊
- 新生兒呼吸窘迫綜合征的防治-歐洲共識指南2024版解讀
- 中考語文試題雙向細(xì)目表
- 新概念動能武器-電磁炮
- 小學(xué)三年級數(shù)學(xué)應(yīng)用題大全(500題)
- 電梯安全檢測招標(biāo)文件
- GB/T 44131-2024燃料電池電動汽車碰撞后安全要求
- NB-T35016-2013土石筑壩材料碾壓試驗規(guī)程
- 2024年華勤技術(shù)股份有限公司校園招聘考試試題及參考答案
- 醫(yī)療用品線上線下融合模式探索
- 福建省住宅建筑生活供水工程技術(shù)規(guī)程
評論
0/150
提交評論