三相步進電機的單片機控制單片機課程設計_第1頁
已閱讀1頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  單片機課程設計</b></p><p>  三相步進電機的單片機控制</p><p>  《單片機應用系統設計》課程設計任務書</p><p><b>  一. 課題名稱</b></p><p>  三相步進電動機的單片機控制。</p><p>

2、<b>  二.設計目的 </b></p><p>  通過設計一個由單片微機組成的應用系統,全面了解和掌握單片機應用系統的設計方法,包括硬件設計,軟件設計和系統調試,同的也應掌握單片機開發(fā)系統的原理和使用方法。</p><p><b>  三.設計要求</b></p><p>  步進電機常用作機電一體化系統的執(zhí)行部件,

3、了解步進電機的工作原理和微機控制的基本方法,對學習和掌握微機應用和機電一體化系統設計具有重要意義。本次設計要求設計一套以單片機為核心的步進電機控制器,步進電機采用實驗用三相步進電動機,控制器硬件采用愛思89C51-B高級用戶板以及愛思通用8279鍵盤顯示板,要求畫出應用系統的硬件邏輯圖,設汁的主要工作是軟件設計和系統調試,具體有以下幾點要求:</p><p>  利用MCS-51系列兼容機ATMEL89C51、8

4、279及有關接口芯片構成一個完整的單片機應用系統,要求設計16只鍵組成的鍵盤以輸入數據和命令,8只LED顯示器用于系統顯示輸出。此外,采用89C51的P1口輸出信號,經放大驅動一臺步進電機。</p><p>  根據上述要求繪制系統的硬件邏輯圖。</p><p>  設計系統軟件,其功能為管理鍵盤和顯示器,要求該系統軟件具有較好的通用性。</p><p>  設計應

5、用軟件,控制步進電機,要求定義若干功能鍵,用于實現步進電機能以下列三種方式工作:</p><p>  正向點動和反向點動;</p><p><b>  恒速步進給定行程;</b></p><p>  以設定的速度步進給定行程。</p><p>  系統調試,學習單片機開發(fā)系統(仿真器)和用戶板的使用方法,利用開發(fā)系統進行

6、程序的調試及整個應用系統進行實時仿真,最后將調試好的程序固化在89C51單片機中,應用系統能正常工作。 </p><p><b>  四.設計步驟</b></p><p>  了解三相步進電機的工作原理,確定控制方案。</p><p>  設計應用系統硬件邏輯圖,根據所學知識,畫出所選各芯片、器件的連接線路,包括數據線,地址線和控制信號線。 &

7、lt;/p><p>  編寫系統軟件,注意各功能鍵的定義。</p><p>  編寫應用軟件,注意與系統軟件相連接。</p><p>  學習單片機開發(fā)系統的使用方法,并調試所編制的軟件。</p><p>  使用仿真器調試整個應用系統。</p><p>  將調試好的程序固化到單片機中,使系統脫機運行。</p>

8、;<p>  打印程序清單,編寫總結報告。</p><p>  五.設計說明書內容及格式</p><p>  詳細的邏輯電路圖及說明(包括芯片選擇,控制信號的連接方法等)</p><p>  程序框圖及打印的清單。</p><p>  調試過程及結論分析。</p><p>  調試過程中遇到問題及解決辦法

9、。</p><p>  應用系統設計的方案、收獲及體會。</p><p>  設計說明書必須按照規(guī)定格式書寫,包括封面、內容提要、目錄、章節(jié),頁碼。</p><p><b>  六.答辯</b></p><p>  所有內容完成后,可以進行答辯。答辯需提交設計說明書、程序清單,并現場演示自己編寫的程序。</p>

10、;<p><b>  七.附錄</b></p><p>  愛思G3000A仿真器使用手冊</p><p>  愛思89C51-B高級用戶板以及愛思通用8279鍵盤顯示板資料</p><p><b>  參考資料</b></p><p>  《MCS-51系列單片機應用系統設計》何立民

11、 1990年 北京航空航天大學出版社</p><p>  《MCS-51系列單片機及其應用》蔡美琴 1992年 高等教育出版社</p><p>  《單片機實用系統設計技術》 房小翠 1999年 國防大學出版社</p><p><b>  目錄</b></p><p>  第一章 前 言4</p>

12、<p>  第二章 總體方案設計5</p><p>  第三章 系統硬件設計7</p><p>  3.1 專用鍵盤顯示接口芯片82797</p><p>  1.2.1 8279特征7</p><p>  1.2.2 8279命令狀態(tài)字8</p><p>  3.2 其他器件選擇8<

13、;/p><p>  3.3 電路原理圖及說明9</p><p>  3.4步進電機簡介 9</p><p>  第四章 系統軟件設計10</p><p>  4.1系統設計10</p><p>  4.2程序流程圖10</p><p>  4.3 程序清單11</p>&l

14、t;p>  4.4調試過程11</p><p><b>  第五章 總結12</b></p><p>  附錄1 硬件邏輯圖13</p><p>  附錄2 程序清單14</p><p><b>  摘要</b></p><p>  本課程設計是以單片機為

15、核心的步進電機控制器,步進電機采用實驗用三相步進電動機,同時采用愛思89C51-B高級用戶板以及愛思通用8279鍵盤顯示板作為控制器硬件,實現了用鍵盤控制步進電機的正轉點動、反轉點動、正轉連續(xù)運行、反轉連續(xù)運行以及調速等功能。</p><p><b>  第一章 前 言</b></p><p>  單片機具有體積小、功耗低、控制功能強、擴展靈活、微型化和使用方便等

16、優(yōu)點,廣泛應用于儀器儀表中,結合不同類型的傳感器,可實現諸如電壓、功率、頻率、濕度、溫度、流量、速度、厚度、角度、長度、硬度、元素、壓力等物理量的測量。采用單片機控制使得儀器儀表數字化、智能化、微型化,且功能比起采用電子或數字電路更加強大。例如精密的測量設備(功率計,示波器,各種分析儀)。 同時用單片機還可以構成形式多樣的控制系統、數據采集系統。例如工廠流水線的智能化管理,電梯智能化控制、各種報警系統,與計算機聯網構成二級控制

17、系統等。  </p><p>  現代的單片機普遍具備通信接口,可以很方便地與計算機進行數據通信,為在計算機網絡和通信設備間的應用提供了極好的物質條件,現在的通信設備基本上都實現了單片機智能控制,從手機,電話機、小型程控交換機、樓宇自動通信呼叫系統、列車無線通信、再到日常工作中隨處可見的移動電話,集群移動通信,無線電對講機等。此外,單片機在工商,金融,科研、教育,國防航空航天等領域都有著十分廣

18、泛的用途。 </p><p>  目前,單片機正朝著高性能和多品種方向發(fā)展趨勢將是進一步向著CMOS化、低功耗、大容量、高性能、低價格和外圍電路內裝化等幾個方面發(fā)展。綜合所述,單片機已成為計算機發(fā)展和應用的一個重要方面。另一方面,單片機應用的重要意義還在于,它從根本上改變了傳統的控制系統設計思想和設計方法。從前必須由模擬電路或數字電路實現的大部分功能,現在已能用單片機通過軟件方法來實現了。這種軟件代替硬

19、件的控制技術也稱為微控制技術,是傳統控制技術的一次革命。  </p><p>  步進電機作為執(zhí)行元件,是機電一體化的關鍵產品之一,隨著工業(yè)自動化的發(fā)展,步進電機的應用也越來越廣泛,廣泛應用在各種自動化控制系統中。步進電機是一種用于開環(huán)控制的驅動元件。它是用電脈沖信號進行控制,將電脈沖信號轉換成相應的角位移或線位移的微電動機。步進電機作為電機的一種,可以靠開路控制做精確的定位,因此普遍應用于電

20、腦的外設及工業(yè)生產的自動化機具設備中,如NC床、切割機,此外機器人的各個關節(jié)控制也大量的使用步進電機。 </p><p>  近些年來,由于步進電機的控制精度不斷提高,越來越多有較高控制精度要求的系統也開始采用步進電機。對于小功率步進電機,一般采用單片機與專用步進電機驅動器聯合工作的方式,單片機產生脈沖,控制停啟、正反轉,變速等,專用步進電機驅動器則進行脈沖環(huán)形分配及功率驅動。 </p&

21、gt;<p>  步進電動機突出的優(yōu)點是它可以在寬廣的頻率范圍內通過改變脈沖頻率來實現調速,快速起停、正反轉控制及制動等,并且用其組成的開環(huán)系統既簡單、廉價,又非??桑竭M電機的轉速取決于脈沖頻率、轉子齒數和拍數。其角速度與脈沖頻率成正比,而且在時間上與脈沖同步。因而在轉子齒數和運行拍數一定的情況下,只要控制脈沖頻率即可獲得所需速度因此在眾多領域有著極其廣泛的應用。研制一種高性價比步進電機驅動器及其控制系統具有重要的意義。

22、 </p><p>  本次課程設計選用的步進電機是三相步進電機,通過軟件和硬件的結合,使用按鍵控制步進電機的正轉、反轉、調速功能,并且將步進電機所處的狀態(tài)用相應的數碼管顯示。主要通過三大塊來設計,包括驅動電路的設計、狀態(tài)顯示部分和按鍵部分的設計,可以通過控制脈沖個數來控制角位移量,從而控制轉動的角度;同時可以通過控制脈沖頻率來控制電機轉動的加速度,從而達到調速的目的。  </

23、p><p>  第二章 總體方案設計</p><p><b> ?。ㄒ唬?#160;控制方式 </b></p><p>  控制主要有:正反向點動按鈕、連續(xù)運行按鈕、復位按鈕。 </p><p>  由于設計只需要20個按鍵,不需要采用復雜編碼,考慮硬件條件、線路連接和經濟性等方面,選擇獨立按鍵的方式。

24、  </p><p>  (二) 單片機的選擇 </p><p>  80C51高性能8位單片機,內部集成CPU、存儲器、寄存器、I/O接口,從而構成較為完整的計算機,價格便宜。本次課程設計是在仿真環(huán)境下進行,我們課程設計實驗室所使用的愛思G3000仿真開發(fā)系統。綜合考慮本課程設計要求、單片機的價格和性能從而選擇80C31單片機</p>

25、<p> ?。ㄈ?#160;顯示方案的選擇 </p><p>  采用LED數碼管。LED數碼管是顯示采用動態(tài)掃描的方式,利用人煙的視覺暫留特性,由于掃描周期很短,使人感覺不到數碼管閃動,看到每只數碼管都常亮。 </p><p><b>  輸入方式的選擇 </b></p><p>  本課程設計采用

26、愛思串行鍵盤板輸入,本串行鍵盤板采用ZLG8279芯片,僅用4根I/O口線。</p><p> ?。ㄎ澹?鍵盤/顯示器控制芯片的選擇</p><p>  8279是可編程的鍵盤、顯示接口芯片,能自動完成對鍵盤輸入以及數碼管輸出的掃描,減輕工作人員的編程壓力以及單片機的工作負荷。而且8279與MCS-51接口方便,由它構成的標準鍵盤/顯示器接口在微機應用系統中使用越來越廣泛。</p&

27、gt;<p><b>  8279特點</b></p><p>  (1)可同時進行鍵盤掃描及文字顯示;</p><p>  (2)鍵盤掃描模式(Scanned Keyboard Mode);</p><p>  (3)傳感器掃描模式(Scanned Sensor Mode);</p><p>  (4)激

28、發(fā)輸入模式(Strobe Input Entry Mode);</p><p>  (5)8乘8鍵盤FIFO(先進先出);</p><p>  (6)具有接點消除抖動,2鍵鎖定及N鍵依此讀出模式;</p><p>  (7)雙排8位數或雙排16位數的顯示器;</p><p>  (8)右邊進入或左邊進入。16位字節(jié)顯示存儲器。</p&g

29、t;<p>  第三章 系統硬件設計</p><p>  3.1 專用鍵盤顯示接口芯片8279</p><p>  8279是專用鍵盤/顯示器控制芯片,能對顯示器自動掃描,能識別鍵盤上按下鍵的鍵號;可充分提高CPU的工作效率。8279與MCS-51接口方便,由它構成的標準鍵盤/顯示器接口在微機應用系統中使用越來越廣泛。</p><p>  3.1.1

30、 8279特征</p><p>  能同時執(zhí)行鍵盤與顯示器操作。 </p><p>  掃描式鍵盤工作方式。</p><p>  有8個鍵盤FIFO(First in First out)存儲器。</p><p>  帶觸點去抖動的雙鍵鎖定或N鍵巡回功能。</p><

31、;p>  兩個8位或16位的數字顯示器。</p><p>  可左/右輸入的16字節(jié)顯示用RAM。</p><p>  由鍵盤輸入產生中斷信號。</p><p>  掃描式傳感器工作方式。</p><p>  用選通方式輸入信號。</p><p>  單個16字符顯示器。</p><p>

32、<b>  可編程掃描定時。</b></p><p>  工作方式可由CPU編程。</p><p>  圖2-1 8279芯片示意圖</p><p>  3.1.2 8279命令狀態(tài)字</p><p><b>  表1命令狀態(tài)字</b></p><p><b> 

33、 表2 命令狀態(tài)字</b></p><p>  3.2 其他器件選擇</p><p>  1. 74LS373:74LS373是八D鎖存器(三態(tài)). 一個封裝中有八個鎖存器,三態(tài)總線驅動輸出,置數全并行存取,緩沖控制輸入,時鐘/使能輸入有改善抗擾度的滯后作用。在電路中的作用是:由于P0口既是數據口又是地址口,所以加一個鎖存器鎖存地址。</p><p> 

34、 2. 74LS138: 為3 線-8 線譯碼器共有 54/74S138和 54/74LS138 兩種線路結構型式。利用 G1、/(G2A)和/(G2B)可級聯擴展成 24 線譯碼器;若外接一個反相器還可級聯擴展成 32 線譯碼器。 若將選通端中的一個作為數據輸入端時,74LS138還可作數據分配器。電路中的作用是:使器件的地址連續(xù),用三根線控制八根線。</p><p>  3. 74LS240:八單線驅動器。(

35、反碼,三態(tài)輸出),這種八緩沖器和線驅動器是為提高三態(tài)輸出存儲地址驅動器,時鐘驅動器和總線定向接收器和發(fā)射器的性能可和集成度而特意設計的。</p><p>  4.7451:8路驅動器,增強數碼管顯示的亮度。</p><p>  3.3 電路原理圖及說明</p><p>  MCS-51采用8279擴展的鍵盤、顯示器的接口電路控制三相步進電機的運轉,P1.1、P1.2

36、、P1.3分別接三相步進電機的A、B、C三相,構成一個完整的單片機應用系統,設計20個鍵組成的鍵盤以輸入數據與命令,8只LED顯示器用于系統顯示輸出。采用89C51的P1口輸出信號,經放大驅動一臺步進電機,電路圖見附錄1。</p><p>  3.4 步進電機簡介</p><p>  本課程設計采用單片機軟件實現對步進電機的運轉控制,使用單片機的Pl口循環(huán)輸出代碼,經功率放大器來控制步進電

37、機的三相繞組,從而控制步進電機運轉。步進電機以三相單雙六拍的工作方式轉動。過改變三相通電順序來實現轉向的控制,若按A→AB→B→BC→C→CA→A次序通電為正轉,則按A→AC→C→CB→B→BA→A次序通電為反轉。用89C51的P1.1、P1.2、P1.3分別A、B、C三信號格式送數即可,正轉時輸出的順序為02H→06H→04H→0CH→08H→0AH→02H,反 轉 時 輸 出 的 順 序 為02H→0AH→08H→0

38、CH→04H→06H→02H。</p><p>  第四章 系統軟件設計</p><p><b>  4.1系統設計:</b></p><p>  根據功能設計要求設計本控制系統的結構框圖如圖3-1所示。</p><p>  圖3-1 步進電機控制器結構框圖</p><p><b> 

39、 4.2程序流程圖:</b></p><p>  圖 3-2程序流程圖</p><p>  4.3 程序清單(詳見附錄2)</p><p><b>  4.4調試過程</b></p><p>  在調試過程中,我們遇到了以下問題:</p><p>  步進電機以雙三拍的工作方式(即AB

40、-BC-CA)轉動時,電機只是震動,運行不起來。</p><p>  電機連續(xù)轉動的方向總是順時針轉動,改變不了。</p><p>  電動機連續(xù)運行時轉速過快。</p><p><b>  問題解決方案:</b></p><p>  將雙三拍工作方式改為單雙六拍工作方式后,電機正常運轉。</p><

41、p>  用數碼管的最后兩位的數值奇偶來控制電動機的正反轉,即00H時步進電機順時針轉,為01H時步進電機逆時針轉動,依次類推。</p><p>  調速延時循環(huán)中的外循環(huán)R6的初值過小,給R6賦值為0FFH后,調速范圍適中,電機正常運行。</p><p><b>  第五章 總結</b></p><p>  一開始接觸單片機課程設計、接觸

42、8279,說實話還是比較陌生的,雖然大部分的知識都已經在課堂上學習過,而且平時我自己也接觸過單片機,但真正接觸課程設計的時候還是顯得有些不足,許多知識不能靈活運用,稍微復雜一點的程序就看不懂了。因此在開始的兩天里面,我和幾個同學認真地閱讀分析了老師給的參考程序,在討論和分析中,整個程序的脈絡也漸漸清晰起來,思路也漸漸明朗。之后自己編寫程序的過程中也出現過許多錯誤,包括一些簡單的語法錯誤和一些邏輯錯誤,但經過和同學的討論之后,也都一一解決

43、了,其中比較典型的錯誤我已在上面一一列舉了。</p><p>  這次的課程設計不僅使我們更牢固地掌握了書本知識,也讓我們對單片機的實際應用有了一定得了解,同時也鍛煉了我們自身查閱資料、分析問題、解決問題的能力。在與同學的交流過程中,我發(fā)現了自身還存在許多不足,有些知識沒有同學掌握地那么牢固,理解地沒有他們那么透徹,在今后的學習過程中,我一定會努力提高自身的知識水平,使自己成為一名優(yōu)秀的大學生。在整個課程過程中我

44、明白了幾個道理:首先,做學問要一絲不茍,要以科學的態(tài)度對待問題,不能存在僥幸的心理,出現了任何偏差都不要輕視;其次,做任何事情之前,都要有充足的準備,正所謂“磨刀不誤砍柴工”,這樣的話做事情才有效率;最后,做事要有耐心和毅力,不要遇到困難就退縮,要迎難而上,只有鍥而不舍,才能取得成功。附錄1 硬件邏輯圖</p><p><b>  附錄圖 1</b></p><p&g

45、t;<b>  附錄2 程序清單</b></p><p>  DAT_8279 EQU 0C000H ;鍵盤顯示接口</p><p>  COM_8279 EQU 0C001H</p><p>  ORG 0000H </p><p><b>  NOP&

46、lt;/b></p><p>  AJMP MAIN</p><p>  ORG 0030H</p><p>  MAIN: CLR EA ;內外程序存儲器選擇端,可以使用內部存儲器</p><p>  MOV SP,#60H ;設置堆棧指

47、針</p><p><b>  CLR A</b></p><p>  MOV PSW,A ;程序狀態(tài)字清零</p><p>  MOV IE,A ;中斷允許寄存器清零</p><p>  MOV R0,#7FH</p>&

48、lt;p>  INIT: MOV @R0,A ;清除CPU RAM</p><p>  DJNZ R0,INIT</p><p>  INIT8279: </p><p>  MOV DPTR,#COM_8279 ;初始化8279</p><p>  

49、MOVX @DPTR,A</p><p>  MOV A,#32H ;分頻設置,50分頻</p><p>  MOVX @DPTR,A</p><p>  ACALL OFFLED ;調用子程序清除8279RAM</p><p>  MOV DPTR,#COM_

50、8279</p><p>  MOV A,#80H ;寫顯示RAM命令,從左面第一個LED開始進行</p><p>  MOVX @DPTR,A</p><p>  BACK: MOV R0,#80H</p><p>  MOV R1,#00H</p><p&

51、gt;  XUEHAO: MOV A,R0</p><p>  MOV DPTR,#COM_8279</p><p>  MOVX@DPTR,A ;編寫學號,并顯示</p><p>  MOVDPTR,#MY_NUM</p><p><b>  MOVA,R1</b></

52、p><p>  MOVCA,@A+DPTR</p><p>  MOVDPTR,#DAT_8279</p><p>  MOVX@DPTR,A</p><p><b>  INCR0</b></p><p><b>  INCR1</b></p><

53、p>  CJNER1,#08H,XUEHAO ;學號未顯示完,跳轉,接著顯示</p><p>  MOV 30H,#80H ;LED數值所在地址放入30H</p><p>  MOV 31H,#40H ;存放數值的地址在31H,</p><p>  

54、WAIT: ACALL SCANKEY ;等待按鍵</p><p>  JNC WAIT ;無鍵跳轉</p><p>  MOV A,R1</p><p>  JB ACC.4,COMMKEY ;判斷是否為命令鍵,是則跳轉,不是

55、則順序執(zhí)行</p><p>  KEYNUM: MOV A,30H ;有鍵賦值,LED數值給A</p><p>  MOV DPTR,#COM_8279 </p><p>  MOVX @DPTR,A ;把LED數值送到端口地址</p>&

56、lt;p>  MOV A,R1 ;鍵值給A</p><p>  MOV R0,31H </p><p>  MOV @R0,A ;將鍵盤真實值送到40H中(此程序保證鍵盤真實值被保留)</p><p>  INC 31H

57、 ;31H自加,指向41H</p><p>  MOV DPTR,#DISPCODE ;段代碼給數據指針</p><p>  MOVC A,@A+DPTR ;鍵值是多少就偏移多少單元</p><p>  MOV DPTR,#DAT_8279</p><p>  MO

58、VX @DPTR,A ;將鍵值的段代碼送到顯示接口</p><p>  INC 30H ;30H內容加一,LED數值加一</p><p>  MOV A,30H ;LED數值送給A</p><p>  CJNE A,#88H,WAIT

59、 ;判斷LED八個顯示是否全部被操作,若沒有則返回繼續(xù)讀鍵值</p><p>  MOV 30H,#80H ;全部被操作后,從最左邊重新開始</p><p>  MOV 31H,#40H</p><p>  SJMP WAIT ;以上程序保證了8個數碼管全部顯示&

60、lt;/p><p>  COMMKEY: MOV DPTR,#PROGCOMM ;功能鍵的處理與命令,PROGCOMM首地址給數據指針</p><p>  MOV A,R1</p><p>  ANL A,#03H ;0000 0011相與,只保留后兩位</p><p>  RL

61、 A ;PROGCOMM中各句程序間相隔兩個單元,保證跳轉正常</p><p>  JMP @A+DPTR ;判斷執(zhí)行哪部操作</p><p>  PROGCOMM: AJMP LASTP ;電機順時針運轉</p><p>  AJMP NE

62、XTP ;電機逆時針運轉</p><p>  AJMP EXECP ;電機連續(xù)運轉</p><p>  LASTP: MOV R2,#00H ;實現電機的點動正轉</p><p>  MOV DPTR,#NUMBER1 ;正轉代碼首地址</p><p>

63、;  L1: MOV A,R2</p><p>  MOVC A,@A+DPTR</p><p>  MOV P1,A ;電動機六拍依次給P1口,每輸入一次調用一次延時,共六次</p><p>  ACALL DELAY</p><p>  INC R2</p><

64、;p>  MOV A,R2</p><p>  CJNE A,#06H,L1 </p><p><b>  RET</b></p><p>  NEXTP: MOV R2,#00H ;實現電機的點動反轉 </p><p

65、>  MOV DPTR,#NUMBER2 ;反轉代碼首地址</p><p>  L2: MOV A,R2</p><p>  MOVC A,@A+DPTR</p><p>  MOV P1,A ;電動機六拍依次給P1口,每輸入一次調用一次延時,共六次</p><p>

66、  ACALL DELAY</p><p>  INC R2</p><p>  MOV A,R2</p><p>  CJNE A,#06H,L2 </p><p><b>  RET</b></p><p>  EXECP: ACALL TIME

67、 ;調用步進步進電機連續(xù)運行程序</p><p><b>  RET</b></p><p>  OFFLED: MOV A,#0DFH ;共陽極數碼管,1101 1111,顯示RAM置為FF,數碼管關閉</p><p>  MOV DPTR,#COM_8279</p>&

68、lt;p>  MOVX @DPTR,A ;將狀態(tài)字送給端口地址</p><p>  OFFLED1: MOVX A,@DPTR</p><p>  JB ACC.7,OFFLED1</p><p>  RET ;判斷是否清

69、0完畢,清除完則返回主程序</p><p>  SCANKEY: MOV DPTR,#COM_8279 ;等待按鍵</p><p>  MOVX A,@DPTR ;接口地址得到的數值給A</p><p>  ANL A,#07H ;

70、0000 0111相與,保留后三位狀態(tài)</p><p>  CJNE A,#00H,HAVEKEY ;后三位不為零則有鍵輸入,跳轉到HAVEKEY</p><p>  CLR C ;無按鍵C清零</p><p>  RET ;返回<

71、/p><p>  HAVEKEY: MOV DPTR,#DAT_8279 ;有鍵讀鍵值</p><p>  MOVX A,@DPTR ;鍵值給A</p><p>  MOV B,A ;備份鍵值</p><p>  MOV R1,#00H

72、</p><p>  MOV DPTR,#KEYCODE; ;查鍵值表,首地址取出,放到數據指針中</p><p>  KEYLOOP: CLR A </p><p>  MOVC A,@A+DPTR ;首地址鍵值給A</p><p>  CJNE A,B,NOKEY

73、 ;比較A與讀入鍵值大小,若相等則找到鍵值,否則繼續(xù)尋找</p><p>  AJMP FOUNDKEY ;找到鍵值,進行處理</p><p>  NOKEY: INC DPTR ;指針偏移一個單元</p><p>  INC R1

74、 ;鍵值大小增加一</p><p>  AJMP KEYLOOP ;未找到 循環(huán)繼續(xù)找</p><p>  FOUNDKEY: MOV A,R1 ;鍵值大小給A</p><p>  SETB

75、 C ;C置一并返回</p><p><b>  RET</b></p><p>  NUMBER1: DB 02H,06H,04H,0CH,08H,0AH ;正轉代碼</p><p>  NUMBER2: DB 0AH,08H,0CH,04H,06

76、H,02H ;反轉代碼</p><p>  LATE: MOV A,44H ;調速延時循環(huán)</p><p><b>  SWAP A</b></p><p>  ORL A,45H ;5/6數碼管值合

77、并成一個數放在R7中</p><p>  MOV R7,A</p><p>  L3: DJNZ R7,L3 ;R7為內循環(huán)</p><p>  DJNZ R6,LATE ;R6為外循環(huán)</p><p><b>

78、;  RET </b></p><p>  DELAY: MOV R7,#20H ;點動延時循環(huán)</p><p>  DELAY1: MOV R6,#0FFH</p><p>  DJNZ R6,$ ;R6為內循環(huán)</

79、p><p>  DJNZ R7,DELAY1 ;R7為外循環(huán)</p><p>  RET </p><p>  KEYCODE: DB 0C1H,0C8H,0C9H,0D0H,0D8H,0E0H,0C2H,0CAH ;0到F鍵值</p><p>  DB 0D1

80、H,0D9H,0DAH,0C3H,0CBH,0D2H,0D3H,0DBH</p><p>  COMCODE: DB 0E3H,0E2H,0E1H,00H ;功能鍵值</p><p>  DISPCODE: DB 0CH,9FH,4AH,0BH,99H,29H,28H,8FH</p><p>  DB 08H

81、,09H,88H,38H,6CH,1AH,68H,0E8H ;0到F數碼管的段代碼</p><p>  DB 0C8H,3AH,0ECH,0FFH ;四個功能鍵數碼管段代碼</p><p>  MY_NUM:DB0CH,0CH,0BH,0CH,99H,0CH,4AH,09H ;學號數值的段代碼表</p&

82、gt;<p>  TIME: MOV A,40H ;把1/2數碼管值放到R3</p><p>  SWAP A ;高低四位交換</p><p>  ORL A,41H

83、 ;邏輯或</p><p>  MOV R3,A </p><p>  MOV A,42H ;把3/4數碼管值放到R4</p><p><b>  SWAP A</b></p><p>  ORL A,43H</p><p&

84、gt;  MOV R4,A</p><p>  L5: MOV R2,#00H </p><p>  L4: MOV A,47H ;把最后一個數碼管值給A</p><p>  JB ACC.0,DIRECTION ;若ACC.0

85、為1則跳轉</p><p>  MOV DPTR,#NUMBER1 ;為偶數則順時針轉動 </p><p><b>  AJMP L7</b></p><p>  DIRECTION: MOV DPTR,#NUMBER2 ;為奇數則逆時針轉動</p><p&g

86、t;  L7: MOV A,R2 ;A清零</p><p>  MOVC A,@A+DPTR</p><p>  MOV P1,A ;把A的內容輸到P1口</p><p>  MOV R6,#0FFH

87、 ;延時外循環(huán)賦初值</p><p>  ACALL LATE ;延時</p><p><b>  INC R2</b></p><p>  ACALL CTIME1 ;調用步距程序</p><p>

88、;  MOV A,R2</p><p>  CJNE A,#06H,L7 ;A不為06H跳轉L7</p><p><b>  AJMP L5</b></p><p>  CTIME1: CJNE R4,#00H,MM1 ;R4不為零則

89、轉移</p><p>  CTIME2: CJNE R3,#00H,MM2 ;R3不為零則轉</p><p>  AJMP MM4 ;都為零時轉到MM4</p><p>  MM1: DJNZ R4,MM5

90、 ;R4減1,不為零則轉移 </p><p>  AJMP MM6 ;為零則轉移到MM6</p><p>  MM6: LCALL SHOW1 ;調用顯示程序</p><p>  SJMP CTIME2</p><

91、p>  MM2: DEC R3 ;R3減1</p><p>  SJMP MM1 </p><p>  MM4: LCALL SHOW1 </p><p>  LJMP BACK

92、 ;步進到零時回到初值</p><p>  MM5: LCALL SHOW1 ;調用顯示程序</p><p><b>  RET</b></p><p>  SHOW1: MOV R0,#40H

93、 ;把改變后的1/2數碼管值再送回顯示的地址</p><p>  MOV A,R3</p><p>  ANL A,#0F0H ;保留R3高4位</p><p>  SWAP A ;高4位變低4位</p><p>  MOV @R0

94、,A ;輸出1數碼管數值</p><p>  INC R0 ;R0 增1</p><p>  MOV A,R3 </p><p>  ANL A,#0FH ;保留低4位</p><p>  M

95、OV @R0,A ;輸出2數碼管數值</p><p>  INC R0 </p><p>  MOV A,R4 ;把改變后的3/4數碼管值再送回顯示的地址</p><p>  ANL A,#0F0H ;保留R4高4位</p&

96、gt;<p>  SWAP A ;高4位變低4位</p><p>  MOV @R0,A ;輸出3數碼管數值</p><p><b>  INC R0</b></p><p>  MOV A,R4

97、 </p><p>  ANL A,#0FH ;保留低4位</p><p>  MOV @R0,A ;輸出2數碼管數值</p><p>  LCALL SHOW2</p><p>  RET

98、;返回</p><p>  SHOW2: MOV 30H,#80H ;把改變后的值都顯示出來</p><p>  MOV 31H,#40H</p><p>  MOV R5,#08H ;一共八位</p><p>  L6

99、: MOV DPTR,#COM_8279 ;鍵盤顯示接口</p><p>  MOV A,30H</p><p>  MOVX @DPTR,A</p><p>  MOV R0,31H ;取40H中的數據送給R0</p><

100、p>  MOV A,@R0</p><p>  MOV DPTR,#DISPCODE ;取段代碼</p><p>  MOVC A,@A+DPTR</p><p>  MOV DPTR,#DAT_8279 ;送鍵盤顯示接口 </p><p>  MOVX

101、 @DPTR,A</p><p>  INC 31H ;送下一位數據 </p><p>  INC 30H</p><p>  DJNZ R5,L6 ;送完八位結束 </p><p>  RET

溫馨提示

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

評論

0/150

提交評論