步進電機課程設計_第1頁
步進電機課程設計_第2頁
步進電機課程設計_第3頁
步進電機課程設計_第4頁
步進電機課程設計_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機綜合設計實驗 題目: 步進電動機綜合控制 學院 計算機科學與信息工程學院 專業(yè)年級 2013級自動化三班 實驗組員 指導教師 職稱 日 期 2013-12-30 目錄摘要.一 概述. 1.1 實驗目的. 1.2 實驗內(nèi)容與要求. 1.3步進電機的介紹. 1.4研究的思路.二 硬件設計. 2.1 51單片機介紹. 2.2 LCD1602液晶顯示介紹 2.3 uln2003步進電機驅(qū)動介紹三 相關圖像.3.1總電路圖.3.2程序流程圖. 3.2.1控制框圖 3.2.2流程圖四 調(diào)試結(jié)果及分析.五 設計總結(jié)及心得體會.附錄【1】系統(tǒng)程序.附錄【2】參考文獻.【摘要】 步進電機是將電脈沖信號轉(zhuǎn)變

2、為角位移或線位移的開環(huán)控制元件 本實驗利用8051單片機達到控制步進電機的啟動、停止、正轉(zhuǎn)、反轉(zhuǎn)、點動、轉(zhuǎn)過指定角度、狀態(tài)顯示和數(shù)據(jù)指示的目的,使步進電機控制更加靈活。整個系統(tǒng)有80C51單片機控制系統(tǒng),由uln2003驅(qū)動電路驅(qū)動,鍵盤控制電路,LCD液晶顯示電路。用51單片機控制兩相四線步進電動機,在非超載情況下,電機的轉(zhuǎn)速,停止的位置只取決于脈沖信號的頻率和個數(shù),而不受負載的影響,給電機一個脈沖信號,電機則轉(zhuǎn)過一個步距角,通過控制脈沖個數(shù)可以控制角位移量,從而達到控制位的作用,同時通過控制脈沖的相序來改變步進電機的轉(zhuǎn)向,從而達到控制正反相的作用。本次采用51單片機為核心器件來控制步進電機

3、,系統(tǒng)的實用性較強。關鍵字: 51單片機;步進電動機;脈沖;LCD16021.1實驗目的: 1,單片機對步進電動機控制可以熟悉步進電機的控制與原理運用。 2,單片機對步進電動機控制可以熟悉步進電機結(jié)構(gòu)及各種工作方式。 3,通過本次實驗可以運用所學單片機理論知識,專業(yè)技能來對實際問題進行分析,思考,解決,提高對專業(yè)知識的掌握和鍛煉邏輯思維能力。1.2 設計內(nèi)容與要求:1、任務介紹:實現(xiàn)步進電機按規(guī)定的速度正轉(zhuǎn)、反轉(zhuǎn),轉(zhuǎn)過指定的角度,要有點動功能。所有命令通過鍵盤輸入,步進電機在運行過程中要有狀態(tài)和數(shù)據(jù)指示。2、每套設計文檔應包括: 系統(tǒng)原理說明、程序框圖、電路原理圖和程序清單。 1.3步進電機的

4、介紹1.3.1相關的技術(shù)指標: a、相數(shù):指電機內(nèi)部的線圈組數(shù),目前常用的有二相、三相、四相、五相步進電機,本實驗用的是二相步進電機。電機相數(shù)不同,其步距角也不同。 b、步距角:表示控制系統(tǒng)每發(fā)一個步進脈沖信號,電機所轉(zhuǎn)動的角度。本實驗程序運行前要先測量步進電機的步距角。(本開發(fā)板上已測步進電機步距角為18度)c、拍數(shù):完成一個磁場周期性變化所需脈沖數(shù)或?qū)щ姞顟B(tài),或指電機轉(zhuǎn)過一個齒距角所需脈沖數(shù)。也就是說本步進電機每轉(zhuǎn)一周需要20個脈沖。本實驗用2相4拍運行方式雙四拍工作方式: *; 正轉(zhuǎn):A/B AB AB/ A/B/ * 反轉(zhuǎn):A/B/ AB/ AB A/B該實驗板上步進電機內(nèi)部結(jié)構(gòu)圖如圖

5、一1.3.2工作原理: 步進電機是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機構(gòu)。當步進驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進電機按設定的方向轉(zhuǎn)動一個固定的角度(稱為“步距角”),它的旋轉(zhuǎn)是以固定的角度一步一步運行的,可以通過控制脈沖個數(shù)來控制角位移量,從而達到準確定位的目的;同時可以通過控制脈沖頻率來控制電機轉(zhuǎn)動的速度和加速度,從而達到調(diào)速的目的。在非超載的情況下,電機的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負載變化的影響,即給電機加一個脈沖信號,電機則轉(zhuǎn)過一個步距角。這一線性關系的存在,加上步進電機只有周期性的誤差而無累積誤差等特點,使得在速度、位置等控制領域用步進電機來控制變的非常的

6、簡單。 1.3.3步進電機的驅(qū)動:步進電機的驅(qū)動可以選用專用的電機驅(qū)動模塊,比如L298、FT5754等,這類驅(qū)動模塊接口簡單,操作方便,它們既可以驅(qū)動步進電機,同時也可以驅(qū)動直流電機。但本實驗使用ULN2003驅(qū)動電路驅(qū)動步進電機運轉(zhuǎn)。1.4研究的思路 1 了解單片機本身內(nèi)部應有的資源,如:中斷,定時器,計數(shù)器,IO的使用。 2 了解步進電機的工作原理和作用。 3 根據(jù)步進電機的原理,分析并分配單片機內(nèi)部資源,并根據(jù)單片機的資源,來實現(xiàn) 硬件電路的設計以及軟件程序的編寫。 4 遇到自己所學知識不懂或不熟悉的東西,查閱資料探究明白。 5 在設計好單片機控制步進電動機時,要學會分析電路中出現(xiàn)的問

7、題,并且好好總結(jié)。二 硬件設計2.1 51單片機介紹 AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案 其引腳圖如下所示 。1 主要特性:·與MCS-51 兼容 ·

8、;4K字節(jié)可編程閃爍存儲器 壽命:1000寫/擦循環(huán)數(shù)據(jù)保留時間:10年·全靜態(tài)工作:0Hz-24Hz·三級程序存儲器鎖定·128*8位內(nèi)部RAM·32可編程I/O線·兩個16位定時器/計數(shù)器·5個中斷源 ·可編程串行通道·低功耗的閑置和掉電模式·片內(nèi)振蕩器和時鐘電路 2 2管腳說明:     VCC:供電電壓。     GND:接地。    P0口:P0口為一個8位漏級開路雙向I/O口

9、,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。    P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。     

10、;P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。    P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接

11、收輸出4個TTL門電流。當P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:口管腳 備選功能P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(記時器0外部輸入)P3.5 T1(記時器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)P3口同時為閃爍編程和編程校驗接收一些控制信號RST:復位輸入。當振蕩器復位器件時,要保持

12、RST腳兩個機器周期的高電平時間。ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。 51單片機內(nèi)部結(jié)構(gòu)圖    

13、;   /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。    /EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。   4 芯片擦除:  

14、0; 整個PEROM陣列和三個鎖定位的電擦除可通過正確的控制信號組合,并保持ALE管腳處于低電平10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲字節(jié)被重復編程以前,該操作必須被執(zhí)行。此外,AT89C51設有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時器,計數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個硬件復位為止。5 MCS-51單片機是美國INTE公司于1980年推出的產(chǎn)品,典型產(chǎn)品有 8031(內(nèi)部沒有程序存儲器,實際使用方面

15、已經(jīng)被市場淘汰)、8051(芯片采用HMOS,功耗是630mW,是89C51的5倍,實際使用方面已經(jīng)被市場淘汰)和8751等通用產(chǎn)品,一直到現(xiàn)在, MCS-51內(nèi)核系列兼容的單片機仍是應用的主流產(chǎn)品(比如目前流行的89S51、已經(jīng)停產(chǎn)的89C51等),各高校及專業(yè)學校的培訓教材仍與MCS-51單片機作為代表進行理論基礎學習。 有些文獻甚至也將8051泛指MCS-51系列單片機,8051是早期的最典型的代表作,由于MCS-51單片機影響極深遠,許多公司都推出了兼容系列單片機,就是說MCS-51內(nèi)核實際上已經(jīng)成為一個8位單片機的標準。 其他的公司的51單片機產(chǎn)品都是和MCS-51內(nèi)核兼容的產(chǎn)品而以

16、。同樣的一段程序,在各個單片機廠家的硬件上運行的結(jié)果都是一樣的,如ATMEL的89C51(已經(jīng)停產(chǎn))、89S51, PHILIPS(菲利浦),和WINBOND(華邦)等,我們常說的已經(jīng)停產(chǎn)的89C51指的是ATMEL公司的 AT89C51單片機,同時是在原基礎上增強了許多特性,如時鐘,更優(yōu)秀的是由Flash(程序存儲器的內(nèi)容至少可以改寫1000次)存儲器取帶了原來的ROM(一次性寫入),AT89C51的性能相對于8051已經(jīng)算是非常優(yōu)越的了。2.2 LCD1602液晶顯示介紹 液晶顯示器以其微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧的諸多優(yōu)點,在袖珍式儀表和低功耗應用系統(tǒng)中得到越來越廣泛的應用。

17、    這里介紹的字符型液晶模塊是一種用5x7點陣圖形來顯示字符的液晶顯示器,根據(jù)顯示的容量可以分為1行16個字、2行16個字、2行20個字等等,這里以常用的2行16個字的DM-162液晶模塊來介紹它的編程方法* a. 1602LCD主要技術(shù)參數(shù): 顯示容量:16×2個字符 芯片工作電壓:4.55.5V 工作電流:2.0mA(5.0V) 模塊最佳工作電壓:5.0V字符尺寸:2.95×4.35(W×H)mm b. 1602液晶模塊引腳功能1602LCD采用標準的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如下表所示:

18、 編號符號引腳說明編號符號引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負極1602液晶模塊引腳說明: 第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會 “鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:R/W為讀寫信號線,高電平時

19、進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負極。 3. 1602LCD的指令說明及時序1602液晶模塊內(nèi)部的控制器共有11條控制指令,如下表所示: 序號指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標返回000000001*3置輸入模式00000001I/DS4顯示開/關控制00

20、00001DCB5光標或字符移位000001S/CR/L*6置功能00001DLNF*7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標志或地址01BF計數(shù)器地址10寫數(shù)到CGRAM或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容1602液晶模塊的讀寫操作、屏幕和光標的操作都是通過指令編程來實現(xiàn)的。(說明:1為高電平、0為低電平) 指令1:清顯示,指令碼01H,光標復位到地址00H位置。 指令2:光標復位,光標返回到地址00H。 指令3:光標和顯示模式設置 I/D:光標移動方向,高電平右移,低電平左移 S:屏幕上

21、所有文字是否左移或者右移。高電平表示有效,低電平則無效。 指令4:顯示開關控制。 D:控制整體顯示的開與關,高電平表示開顯示,低電平表示關顯示 C:控制光標的開與關,高電平表示有光標,低電平表示無光標 B:控制光標是否閃爍,高電平閃爍,低電平不閃爍。 指令5:光標或顯示移位 S/C:高電平時移動顯示的文字,低電平時移動光標。 指令6:功能設置命令 DL:高電平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時雙行顯示 F: 低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符。 指令7:字符發(fā)生器RAM地址設置。 指令8:DDRAM地址設置。 指令9:讀忙信號和光標地址

22、 BF:為忙標志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。 (注意每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)) 指令10:寫數(shù)據(jù)。 指令11:讀數(shù)據(jù)。 2.3 ULN2003步進電機驅(qū)動介紹 ULN是集成達林頓管IC,內(nèi)部還集成了一個消線圈反電動勢的二極管,可用來驅(qū)動繼電器。它是雙列16腳封裝,NPN晶體管矩陣,最大驅(qū)動電壓=50V,電流=500mA,輸入電壓=5V,適用于TTL COMS,由達林頓管組成驅(qū)動電路。 ULN是集成達林頓管IC,內(nèi)部還集成了一個消線圈反電動勢的二極管,它的輸出端允許通過電流為200mA,飽和壓降VCE 約1V左右,耐壓BVCEO 約

23、為36V。用戶輸出口的外接負載可根據(jù)以上參數(shù)估算。采用集電極開路輸出,輸出電流大,故可直接驅(qū)動繼電器或固體繼電器,也可直接驅(qū)動低壓燈泡。通常單片機驅(qū)動ULN2003時,上拉2K的電阻較為合適,同時,COM引腳應該懸空或接電源。ULN2003是一個非門電路,包含7個單元,但獨每個單元驅(qū)動電流最大可達350mA.資料的最后有引用電路,9腳可以懸空。 比如1腳輸入,16腳輸出,負載接在VCC與16腳之間,不用9腳。2.3.1 ULN2003的作用:ULN2003是大電流驅(qū)動陣列,多用于單片機、智能儀表、PLC、數(shù)字量輸出卡等控制電路中??芍苯域?qū)動繼電器等負載。 輸入5VTTL電平,輸出可達500mA

24、/50V。ULN2003是高耐壓、大電流達林頓陳列,由七個硅NPN達林頓管組成。 ULN2003的每一對達林頓都串聯(lián)一個2.7K的基極電阻,在5V的工作電壓下它能與TTL和CMOS電路 直接相連,可以直接處理原先需要標準邏輯緩沖器。ULN2003 是高壓大電流達林頓晶體管陣列系列產(chǎn)品,具有電流增益高、工作電壓高、溫度范圍寬、帶負載能力強等特點,適應于各類要求高速大功率驅(qū)動的系統(tǒng)。2.3.2 ULN2003A功能及引腳圖:功能:ULN2003 是高耐壓、大電流、內(nèi)部由七個硅NPN 達林頓管組成的驅(qū)動芯片。 經(jīng)常在以下電路中使用,作為顯示驅(qū)動、繼電器驅(qū)動、照明燈驅(qū)動、電磁閥驅(qū)動、伺服電機、步進電機

25、驅(qū)動等電路中。ULN2003 的每一對達林頓都串聯(lián)一個2.7K 的基極電阻,在5V 的工作電壓下它能與TTL 和CMOS 電路直接相連,可以直接處理原先需要標準邏輯緩沖器來處理的數(shù)據(jù)。ULN2003 工作電壓高,工作電流大,灌電流可達500mA,并且能夠在關態(tài)時承受 50V 的電壓,輸出還可以在高負載電流并行運行。ULN2003 的封裝采用DIP16 或SOP16 。ULN2003可以驅(qū)動7個繼電器,具有高電壓輸出特性,并帶有共陰極的續(xù)流二極管使器件可用于開關型感性負載。每對達林頓管的額定集電極電流是500mA,達林頓對管還可并聯(lián)使用以達到更高的輸出電流能力。顯示電路主要包括大型LED數(shù)碼管B

26、SI20-1(共陽極,數(shù)字凈高12 cm)和高電壓大電流驅(qū)動器ULN2003,大型LED數(shù)碼管的每段是由多個LED發(fā)光二極管串并聯(lián)而成的,因此導通電流大、導通壓降高。ULN2003是高壓大電流達林頓晶體管陣列電路,他具有7個獨立的反相驅(qū)動器,每個驅(qū)動器的輸出灌電流可達500 mA,導通時輸出電壓約1 V,截止時輸出電壓可達50 V。ULN2003的17腳為信號輸入腳,依次對應的輸出端為1610腳,8腳為接地端。當驅(qū)動電源電壓為+12 V時,若要求數(shù)碼管每段導通電流為40 mA,則每段的限流電阻為50。則一塊ULN2003恰好驅(qū)動一個LED數(shù)碼管的7段。大數(shù)碼管采用共陽極接法,低電平有效。鎖存器

27、輸出的電平經(jīng)NPN三極管9014反相后,再由ULN2003放大后推動大數(shù)碼管顯示 三 相關圖像3.1 總電路圖 上圖是protues的電路圖 ,由于我們開發(fā)板上沒有74HD09和74HC21與門,于是我們在實際開發(fā)板上采用軟件實現(xiàn)中斷信號的產(chǎn)生及K1,K2,K3,K4,K5相與后賦值給P1.6輸出口再于外部中斷口INTO的P3.2相連實現(xiàn)外部中斷。3.2.1 控制框圖 3.2.2流程圖開始初始化單片機是否啟動進入中斷子程序判斷是否正轉(zhuǎn)?NO步進數(shù)賦值 送負向脈沖yes步進數(shù)賦值步進數(shù)減一送正向脈沖步進數(shù)是否為0?NO步進數(shù)減一YES步進數(shù)是否為0?NORETYES四 調(diào)試結(jié)果及分析1,打開文件

28、,進行編譯,確認無誤后,點擊工具欄中的運行工具。2,準備調(diào)試3,調(diào)入文件到硬件中,開始調(diào)試硬件電路,點擊運行,電路正常連接。4,從鍵盤輸入,按正轉(zhuǎn)電機正轉(zhuǎn)運行。5,從鍵盤輸入,按反轉(zhuǎn)電機反轉(zhuǎn)運行。6,從鍵盤輸入,按點動,電機點一下轉(zhuǎn)過一個步距角。 7,從鍵盤輸入,按角度轉(zhuǎn)變,電機轉(zhuǎn)過設定角度。調(diào)試完畢,通過鍵盤可以控制電機的按照預先設置的轉(zhuǎn)速,轉(zhuǎn)向,點動,轉(zhuǎn)過一定角度等功能的運行。所得的結(jié)果與理論設計的運行結(jié)果相同。調(diào)試成功。設計總結(jié)及心得體會 剛接觸到設計的時候確實很難著手,不知道該重什么地方下手。主要是理論的學習是空洞的,而且并不是那么熟練。本次設計我們采用的是51單片機對兩相四線步進電機

29、進行控制,通過改變相序可以改變電機的轉(zhuǎn)向,通過鍵盤的按鍵可以控制電機的正轉(zhuǎn),反轉(zhuǎn),點動等動能。所運行的角度,速度通過LCD1602給以顯示。通過調(diào)試和運行得到了正確的預期結(jié)果。 剛開始就像大海撈針一樣,通過上網(wǎng)查閱資料,圖書館借閱文獻查詢。慢慢開始對我們的設計有了了解,逐步開始了進行,確實發(fā)現(xiàn)了很多問題 ,如怎樣設置中斷,慢慢的感覺懂了一些,問題也一步一步的解決?;瞬簧贂r間,有的時候困難來了,我們確實想放棄不管了,最后還是堅持了下來。實在不懂的請教了同學老師,相互探討下最終解決了一些列問題。這過程讓我們很有成就感,感悟到了學習的樂趣。當然還是有些問題需要進一步深究,做的也不是很好,但肯定會堅

30、持學習下去。通過這次課程設計,不但了解了怎樣設計課程設計的方法,更是將書本的知識運用到現(xiàn)實中。深刻加深了對單片機的理解,以及端口的相應功能與接線。 最后次實驗有我們六個人合作完成的,通過本次試驗,我們收獲了很多,懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,從而提高自己的實際動手能力和獨立思考的能力。并且鞏固以前所學過的知識,而且學到很多在書本上所沒有學到過的知識。附錄【一】系統(tǒng)設計程序#include<reg51.h>#define LCD1602_DB P0#define MOTO P1sbit K1 = P

31、20;sbit K2 = P21;sbit K3 = P22;sbit K4 = P23;sbit K5 = P24;sbit P1_6 = P16;sbit LCD1602_RS = P26;sbit LCD1602_RW = P25;sbit LCD1602_EN = P27;/1602控制中線 unsigned char code str0 = "Mode1:+zhuan"unsigned char code str1 = "Speed: 60r/min"unsigned char code str2 = "Mode2:+zhuan&qu

32、ot;unsigned char code str3 = "Speed:120r/min"unsigned char code str4 = "Mode3:-zhuan"unsigned char code str5 = "Speed:60r/min"unsigned char code str6 = "Mode4:Turn 90"unsigned char code str7 = ""unsigned char code str8 = "Mode5:dian dong"un

33、signed char code str9 = ""/顯示數(shù)據(jù)緩沖區(qū)unsigned char code moto=0x0D,0x07,0x0E,0x0B;unsigned char th,tl,status=1; / th,tl 定時器T0初始值中間變量,status,正反轉(zhuǎn)標識變量char j=0;unsigned char *p,*t; /lcd顯示數(shù)據(jù)的中間指針變量unsigned char keyValue,keyNum=0;/鍵值變量void InitLcd1602();void LcdShowStr(unsigned char x,unsigned char

34、y,unsigned char *str);void Read_Busy();void Lcd1602_Write_Cmd(unsigned char cmd);void Lcd1602_Write_Data(unsigned char dat);void LcdSetCursor(unsigned char x,unsigned char y); /1602操作函數(shù)聲明void Delay10ms(unsigned int c); /延時子程序unsigned char Key_Scan(); /鍵盤掃描void main() unsigned char n;IP=0X01;/INT0中斷優(yōu)

35、先EA=1;ET0=1;EX0=1; /中斷開關IT0=1;/INT0中斷方式,邊緣觸發(fā)方式,這種方式下中斷請求標志位IE0可自動清零TMOD=0X01; /T0按方式1定時 InitLcd1602(); /LCD初始化while(1)P1_6=K1&K2&K3&K4&K5; /產(chǎn)生外中斷int0的中斷信號(由于沒有與門,中斷信號由軟件產(chǎn)生if(keyNum=4)for(n=0;n<5;n+) /每步18°,5步90°MOTO=motoj+;if(j>3)j=0;Delay10ms(1); keyNum=0;if(keyNum=5

36、)MOTO=motoj+;j&=0x03; /等價于:j=4時,j=0keyNum=0;void t0() interrupt 1TH0=th;TL0=tl;if(status=1) /正傳MOTO=motoj;j+;if(j>3)j=0;if(status=0) /反轉(zhuǎn)MOTO=motoj;j-;if(j<0)j=3;void int_0() interrupt 0Key_Scan(); /掃描鍵盤keyNum=keyValue;switch(keyNum)case 1: TR0=1; /啟動定時器T0status=1; /正傳th=0x3C;tl=0xB0;p=str0

37、;t=str1;break;case 2:TR0=1;/同上status=1;th=0x9E;tl=0x58;p=str2;t=str3;break;case 3:TR0=1; /.status=0; /反轉(zhuǎn) th=0x3C;tl=0xB0;p=str4;t=str5;K3=1;break;case 4:TR0=0; /關閉定時器T0p=str6;t=str7;break;case 5:TR0=0;/.p=str8;t=str9;break;TH0=th;TL0=tl;Lcd1602_Write_Cmd(0x01); /清屏LcdShowStr(0,0,p);LcdShowStr(0,1,t)

38、;unsigned char Key_Scan()/鍵盤掃描unsigned char i;if (K1=0)Delay10ms(1);/消除抖動if (K1=0)/再次檢測按鍵是否按下keyValue = 1;i = 0;while (i<50) && (K1=0) /檢測按鍵是否松開Delay10ms(1);i+;if (K2=0)Delay10ms(1);/消除抖動if (K2=0)/再次檢測按鍵是否按下keyValue = 2;i = 0;while (i<50) && (K2=0) /檢測按鍵是否松開Delay10ms(1);i+;if (

39、K3=0)Delay10ms(1);/消除抖動if (K3=0)/再次檢測按鍵是否按下keyValue = 3;i = 0;while (i<50) && (K3=0) /檢測按鍵是否松開Delay10ms(1);i+;if (K4=0)Delay10ms(1);/消除抖動if (K4=0)/再次檢測按鍵是否按下keyValue=4;i = 0;while (i<50) && (K4=0) /檢測按鍵是否松開Delay10ms(1);i+;if (K5=0)Delay10ms(1);/消除抖動if (K5=0)/再次檢測按鍵是否按下keyValue = 5;i

溫馨提示

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

評論

0/150

提交評論