單片機課程設計--步進電機_第1頁
已閱讀1頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  課程設計評審標準(指導教師用)</p><p><b>  目錄</b></p><p><b>  引言</b></p><p><b>  硬件設計</b></p><p>  1.1電位器信號采樣——A/D轉換電路…………………………………….6&l

2、t;/p><p>  LED顯示——8279顯示電路…………………………………………...7</p><p>  1.3二相四拍步進電機——步進電機驅動電路……………………………..8</p><p>  1.4 單片機及擴展電路……………………………………………………….8</p><p><b>  2 軟件設計</b>

3、;</p><p>  2.1 程序流程圖 ……………………………………………………………...9</p><p>  2.2匯編程序 代碼…………………………………………………………..12</p><p>  3 調(diào)試及心得體會………………………………………………………………16</p><p><b>  4 附錄</b

4、></p><p>  4.1元器件明細表……………………………………………………………17</p><p><b>  4.2 整體電路圖</b></p><p><b>  引言</b></p><p>  步進電機是純粹的數(shù)字控制電動機。它能接受步進脈沖(數(shù)字信號)的控制一步一步地旋轉。

5、它是計算機應用項目中的主要執(zhí)行元件之一,尤其在精確定位場合中得到了廣泛的應用。開環(huán)控制適用于步進電機,將這學期所學的單片機知識用于步進電機的控制可以將課本知識運用于實際同時加深對單片機的掌握。步進電機的控制相對簡單且便于觀察控制結果,在課程設計的過程中發(fā)現(xiàn)問題解決問題,可以增強解決實際問題的能力。通過這次課程設計掌握對步進電機的基本控制將為以后更熟練地控制步進電機奠下基礎。</p><p>  步進電機控制課程設

6、計目的:</p><p>  掌握A/D轉換電路的應用、掌握8279數(shù)碼顯示電路的應用、掌握步進電機的工作原理和控制方法;鍛煉和培養(yǎng)由各個子模塊功能單元構筑完整的微機控制系統(tǒng)的能力,掌握單片機控制系統(tǒng)的設計方法。</p><p><b>  課程設計任務:</b></p><p>  用數(shù)碼管來指示電位器所在的位置,用電位器來控制步進電機的轉動

7、:當電位器正向旋轉時,步進電機正傳;當電位器反向旋轉時,步進電機反轉;當電位器不動時,步進電機停轉;而且,步進電機轉動的角度與電位器旋轉的角度成線性關系。</p><p><b>  硬件設計</b></p><p>  要實現(xiàn)課程設計的要求,首先要對電位器的電壓信號進行采樣并轉換成數(shù)字信號供單片機處理,電位器輸出的電壓在0~5V 范圍,故可以選用ADC0809型模數(shù)

8、轉換芯片。因只有1路模擬信號,輸入通道只用選用IN-0。ADC0809的8路輸出信號送到單片機8031的P0口。單片機將輸入來的信號轉換成相應的電壓數(shù)值通過8279顯示在數(shù)碼管上,將控制步進電機的脈沖按照一定的順序通過驅動電路控制步進電機。系統(tǒng)的組成原理如圖1所示。</p><p><b>  圖1</b></p><p>  1.1電位器信號采樣——A/D轉換電路&

9、lt;/p><p>  電位器的位置信號轉換成相應的電壓信號并通過IN-0口輸入給模數(shù)轉換芯片,ADD-A、ADD-B、ADD-C分別接單片機的P0.0、P0.1、P0.2口,選中模擬通道0,轉換后的8位數(shù)字信息通過D7~D0送給單片機的P0口。對0809的控制通過ALE、ENABLE、START實現(xiàn),具體電路如圖二所示,圖中1接單片機的,2接單片機的,3接0809的有效地址,根據(jù)試驗箱的接線知CFA0H是其有效位,

10、再根據(jù)8279的地址有效位為了將兩者區(qū)分且簡單起見,分配給0809的地址為XXAX,具體電路見總原理圖。</p><p><b>  圖2</b></p><p>  LED顯示——8279顯示電路</p><p>  8279是一種通用可編程鍵盤、顯示器接口芯片,它能完成鍵盤輸入和顯示控制兩種功能。在這次課程設計中只用到顯示控制功能。是片選信

11、號,只有當時,8279才被選通,單片機才能對其進行讀寫操作。、來自單片機的讀寫控制信號。A0用于區(qū)別信息的特性,當A0=0時,表示輸入的信息均為數(shù)據(jù);當A0=1時,表示輸入的信息是指令,而輸出的信息是狀態(tài)字。分配給8279的數(shù)據(jù)口的地址為CFE8H,控制口為CFE09H。在原理圖中省去其他未用到模塊,給數(shù)據(jù)口的地址為XXE8H,控制口為XXE9H。</p><p><b>  模塊電路如圖3所示<

12、/b></p><p><b>  圖3</b></p><p>  1.3 二相四拍步進電機——步進電機驅動電路</p><p>  1.3.1步進電機的工作原理</p><p>  本模塊中使用的二相四拍步進電機共有50個齒,齒距角為7.2°;每轉一個齒距角需走四步,因而步距角為1.8°。另

13、外必須按照一定的次序給每個相通電,才能正常完成四步一個齒距的動作。電機每相電流為0.2A,相電壓為5V。通電次序如圖4所示:</p><p><b>  圖4</b></p><p>  1.3.2控制電路如圖5所示:</p><p>  步進電機有四根引出線。紅、綠為一組,紅線接A’,綠線接A;黃、藍為一組,黃線接B’,藍線接B。</p

14、><p><b>  圖5</b></p><p>  現(xiàn)就其中一相進行分析,當控制信號為高時,經(jīng)反向器后變?yōu)榈碗娖?,低電平使上面的三極管導通下面的三極管關斷,從而使輸出給電機的電壓為VCC即為高電平。當控制信號為低時,同樣可分析得上面的三極管關斷下面的三極管導通,輸給電機的的電壓為0即低電平,保持了控制信號與經(jīng)驅動后的信號的一致性。</p><p&g

15、t;  1.4 單片機及擴展電路</p><p>  選用的為51系列的8031型單片機,因8031單片機沒有內(nèi)部程序存儲器</p><p>  故需要擴展外部程序存儲器,,設計中用2716芯片為單片機擴展2K的外部程序存儲器,2K=211故需要11根地址線對其選址,其中A0~A7接單片機的P0口相應位,A8~A10分別接到單片機的P1.0~P1.2。因P0口數(shù)據(jù)地址分時復用所以要在P0口

16、和2716間加一鎖存器74LS373鎖存低八位地址信號。并通過ALE信號對鎖存器進行控制。電路如圖6所示。</p><p><b>  圖6</b></p><p>  硬件電路總體設計和連線如附圖所示。</p><p><b>  軟件設計</b></p><p><b>  2.1 程

17、序流程圖</b></p><p>  程序開始后首先初始化,經(jīng)0809采樣后將電位器的電壓通過顯示子程序顯示,并將兩次采樣值進行比較并得到脈沖數(shù),調(diào)用步進電機控制子程序控制步進電機的正反轉與步數(shù)。</p><p>  圖7 主程序流程圖</p><p>  主程序流程圖如圖7所示。關鍵在于當有借位即反轉時,兩次采樣差值并不是脈沖數(shù),要經(jīng)過響應處理的到

18、實際脈沖數(shù)。</p><p>  圖8 步進電機控制子程序</p><p>  步進電機控制子程序流程圖如圖8所示</p><p>  圖9 8279顯示子程序</p><p>  8279顯示子程序流程圖如圖9所示,將得到的8位二進制值轉換成對應的電壓值是關鍵。</p><p>  2.1 匯編程序代碼<

19、/p><p>  采樣差值每一個單位步進電機前進一步</p><p><b>  ORG 0000H</b></p><p><b>  LJMP MAIN</b></p><p><b>  ORG 4100H</b></p><p>  MAIN:MO

20、V DPTR,#0CFA0H</p><p>  MOV P1,#00H</p><p>  MOV 30H,#0CH;寫正反轉控制脈沖表</p><p>  MOV 31H,#06H</p><p>  MOV 32H,#03H</p><p>  MOV 33H,#09H</p><p>

21、  MOV 34H,#09H</p><p>  MOV 35H,#03H</p><p>  MOV 36H,#06H</p><p>  MOV 37H,#0CH</p><p>  MOVX @DPTR,A;啟動0809轉換</p><p>  MOV R0,#0FFH;延時等待0809轉換結束</p

22、><p>  LOP: DJNZ R0,LOP</p><p>  MOVX A,@DPTR;讀入轉換值送R4保存</p><p><b>  MOV R4,A</b></p><p>  LCALL DISP;調(diào)用顯示子程序顯示電壓值</p><p><b>  MOV A,R4&l

23、t;/b></p><p><b>  MOV R3,A</b></p><p><b>  MOV R2,A</b></p><p>  LOOP1:MOVX @DPTR,A;啟動0809轉換</p><p>  MOV R0,#0FFH;延時等待0809轉換結束</p>

24、<p>  LOP1: DJNZ R0,LOP1</p><p>  MOVX A,@DPTR;讀入轉換值送R4保存</p><p><b>  MOV R4,A</b></p><p>  LCALL DISP;調(diào)用顯示子程序顯示電壓值</p><p><b>  MOV A,R4<

25、/b></p><p>  MOV 3AH,R2;R2值送R3,即K-1次采樣值送R3</p><p>  MOV R3,3AH</p><p>  MOV R2,A;K次采樣值送R2 </p><p>  CLR CY;CY清零為減法做準備</p><p>  SUBB A,R3;(K)—(K-1)送

26、R1</p><p><b>  MOV R1,A</b></p><p>  LCALL CONTROL;調(diào)用步進電機子程序</p><p>  LJMP LOOP1</p><p><b> ?。?電機控制程序</b></p><p>  CONTROL:MOV A,R

27、1;脈沖數(shù)為0則結束 </p><p><b>  JZ LOOP7</b></p><p>  JC LOOP2;有借位則跳入反轉</p><p><b>  SUBB A,#5</b></p><p>  JC LOOP7;脈沖數(shù)小于5則結束</p><

28、;p>  MOV R0,#30H;正轉控制表首地址給R0</p><p>  LOOP3:MOV A,@R0;寫P1口,給控制脈沖</p><p><b>  MOV P1,A</b></p><p>  LCALL DLY;調(diào)用延時</p><p>  INC R0;地址+1</p>&

29、lt;p>  CJNE R0,#34H,LOOP4;地址超出范圍則賦首地址值</p><p>  MOV R0,#30H</p><p>  LOOP4:DJNZ R1,LOOP3;脈沖數(shù)-1為0則結束,否則給下一脈沖</p><p>  LJMP LOOP7</p><p><b> ?。?反轉</b><

30、;/p><p>  LOOP2:MOV R0,#34H;反轉控制表首地址給R0</p><p>  MOV A,R1;求脈沖數(shù)</p><p><b>  CPL A</b></p><p><b>  JNZ LOOP8</b></p><p><b>  IN

31、C A</b></p><p>  LOOP8:MOV R1,A</p><p><b>  CLR CY</b></p><p>  SUBB A,#5;脈沖數(shù)小于5則結束</p><p><b>  JC LOOP7</b></p><p>  LOOP5

32、:MOV A,@R0;寫P1口,給反轉控制脈沖</p><p><b>  MOV P1,A</b></p><p>  LCALL DLY;調(diào)用延時</p><p>  INC R0;地址+1</p><p>  CJNE R0,#38H,LOOP6;地址超出范圍則賦首地址值</p><p

33、>  MOV R0,#34H</p><p>  LOOP6:DJNZ R1,LOOP5;脈沖數(shù)-1為0則結束,否則給下一脈沖</p><p>  LOOP7:CLR A;子程序返回</p><p><b>  RET</b></p><p> ??; 8279顯示子程序</p><p&

34、gt;  DISP:PUSH DPH ;入棧保護</p><p><b>  PUSH DPL</b></p><p><b>  PUSH PSW</b></p><p>  MOV DPTR,#0CFE9H;顯示RAM顯示方式,8字符左入口顯</p><p>  MOV A,#

35、00H</p><p>  MOVX @DPTR,A</p><p>  MOV A,#0D0H;;清除顯示RAM</p><p>  MOVX @DPTR,A</p><p>  QCZ:MOVX A,@DPTR</p><p>  JB ACC.7,QCZ</p><p><b&g

36、t;  MOV B,#51</b></p><p>  MOV A,R4;要顯示的8位2進制代碼送入A</p><p>  DIV AB;A除以51,商A,余B</p><p>  MOV R0,A;個位存入R0</p><p><b>  MOV A,B</b></p><p&g

37、t;<b>  CLR CY</b></p><p>  SUBB A,#26;判斷余數(shù)是否大于26</p><p><b>  JC OOP</b></p><p>  MOV B,A;大于26,求得十分位存入R1</p><p><b>  MOV A,#10</b>

38、</p><p><b>  MUL AB</b></p><p><b>  MOV B,#51</b></p><p><b>  DIV AB</b></p><p><b>  ADD A,#5</b></p><p>&l

39、t;b>  MOV R1,A</b></p><p>  AJMP OOP2;小于26,十分位存入R1</p><p>  OOP:MOV A,#10</p><p><b>  MUL AB</b></p><p><b>  MOV B,#51</b></p>

40、<p><b>  DIV AB</b></p><p><b>  MOV R1,A</b></p><p>  OOP2:MOV DPTR,#0CFE9H;寫顯示RAM命令字</p><p>  MOV A,#90H</p><p>  MOVX @DPTR,A</p&g

41、t;<p>  MOV DPTR,#0CFE8H</p><p>  MOV A,R0;個位顯示驅動代碼送入8279顯示RAM中0000B單元</p><p>  ACALL TABLE1</p><p>  MOVX @DPTR,A</p><p>  MOV A,R1;十分位顯示驅動代碼送入8279顯示RAM中0001B

42、單元</p><p>  ACALL TABLE2</p><p>  MOVX @DPTR,A</p><p>  LCALL DLY;延時使顯示穩(wěn)定</p><p>  POP PSW;出?;謴?lt;/p><p><b>  POP DPL</b></p><p>

43、<b>  POP DPH</b></p><p><b>  RET</b></p><p>  TABLE1: INC A;個位譯碼子程序</p><p>  MOVC A,@A+PC</p><p><b>  RET</b></p><p>

44、;  DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH</p><p>  TABLE2: INC A;十分位譯碼子程序</p><p>  MOVC A,@A+PC</p><p><b>  RET</b></p><p>  DB 3FH,06H,5BH,4FH,66H<

45、;/p><p>  DB 6DH,7DH,07H,7FH,6FH</p><p><b>  ;延時子程序</b></p><p>  DLY:MOV R7,#100</p><p>  DLY1:MOV R6,#100</p><p><b>  NOP</b>&

46、lt;/p><p>  DLY2:DJNZ R6,DLY2</p><p>  DJNZ R7,DLY1</p><p><b>  RET</b></p><p><b>  END</b></p><p><b>  調(diào)試及心得體會</b></

47、p><p>  這次課程設計雖然歷時不是很長,實現(xiàn)的功能也不是很復雜但在整個過程還是讓我感觸頗深同時也學到了許多課本上學不到的知識。我們選擇了步進電機的控制這個題目,因為我們組的組員一致認為在今后的學習和深造的過程中對步進電機以及其它類型的電機的控制肯定會非常多,現(xiàn)在掌握一些電機控制的基本知識并實現(xiàn)所規(guī)定的簡單控制功能,能為將來打下牢固基礎,而且步進電機的控制容易觀察到控制的效果,激起組員的興趣。</p>

48、<p>  在整個設計過程中我們小組五名組員根據(jù)具體情況合理分工,最大可能的發(fā)揮各自的特長,在最短的時間內(nèi)完成了設計調(diào)試任務。我主要負責了主程序和電機控制程序的編寫,而8279顯示程序,硬件連線,查資料均由其他同學完成。在編寫程序之前,我們討論了總體方案,編寫了各個部分的流程圖,在后來編程的過程中我認識到流程圖對于匯編編程是非常重要的,特別是在編寫跳轉程序的時候。匯編語言雖然相對比較復雜,但邏輯性很強,讓我加深了對單片機硬

49、件結構的理解。</p><p>  程序調(diào)試時我們采用了分塊調(diào)試的方法,先完成了0809模數(shù)轉換和8279顯示部分的調(diào)試,讓數(shù)碼管能夠同步顯示電位器的電壓。而后對步進電機控制部分的程序進行了調(diào)試,起初問題很大,電機一直反轉不受控制,按照程序的設計不應該這樣且找不出程序的錯誤,在用了單步調(diào)試并觀察寄存器內(nèi)存的變化后發(fā)現(xiàn)在求步數(shù)即求脈沖時,若有借位,兩次采樣的差值并不像我們所想象的不數(shù),因為有借位,被減數(shù)加了256,

50、經(jīng)演算發(fā)現(xiàn)若有借位時,差值各位去反加一后才得到脈沖數(shù)。這一問題解決后,步進電機電機基本受控制,但最后左右兩邊不斷震動無法停止。我們分析認為可能是因為0809的精度不高使得采樣值不斷變化而無法穩(wěn)定,于是我們采取了如果不屬小于3就認為電位器無變化,不給步進電機脈沖,但調(diào)試的結果仍然不理想。在討論后我們決定先加入8279顯示程序。加入程序后無法正常顯示,電機也無法正常轉動,這讓人很費解??赡苁侵鞒绦蚝驮鹊?279顯示程序對單片機資源的分配有

51、沖突。后分析發(fā)現(xiàn)原來是單獨編寫的時候沒有采用8279自動顯示其內(nèi)存內(nèi)容的顯示方式而要不斷受單片機的控制,這與單片機對步進電機的控制相沖突。于是我們改變了8279顯示方式,單片機對其</p><p>  調(diào)試的過程不是一氣呵成的,在調(diào)試的過程中不斷發(fā)現(xiàn)問題并想辦法解決問題,考驗了我們的應變能力和活學活用的能力。調(diào)試讓我們愛上這個過程,對程序編寫產(chǎn)生了濃厚的興趣。我們組沒有擴展功能,我們將重點放在了程序的優(yōu)化上。課程

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論