計算機(jī)控制技術(shù)課程設(shè)計_第1頁
已閱讀1頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  計算機(jī)控制技術(shù)</b></p><p><b>  課程設(shè)計</b></p><p>  課題名稱 步進(jìn)電機(jī)角度控制2 </p><p>  學(xué)生學(xué)院_ 自動化學(xué)院 _______</p><p>  專業(yè)班級___

2、___ </p><p>  學(xué) 號 </p><p>  學(xué)生姓名_____ ___________</p><p>  指導(dǎo)教師_____ _____ ___</p><p>  2012年 6 月 30日</p><p

3、><b>  一、課程設(shè)計的目的</b></p><p>  1、鞏固和加深對《計算機(jī)控制技術(shù)》課程內(nèi)容的認(rèn)識和理解,提高應(yīng)用水平;</p><p>  2、掌握鍵盤控制和七段數(shù)碼管的使用;</p><p>  3、熟悉步進(jìn)電機(jī)的步數(shù)控制和測試方法。</p><p><b>  二、課程設(shè)計的內(nèi)容<

4、/b></p><p>  1、在四位LED上同時顯示39AFH。</p><p>  2、控制步進(jìn)電機(jī)上走180°(在LED上顯示角度) 45° (在LED上顯示角度) 90°(在LED上顯示角度)</p><p>  180度(不斷循環(huán))。</p><p&g

5、t;<b>  3、實現(xiàn):</b></p><p>  (1)定義鍵盤按鍵:5個為數(shù)字鍵;3個功能鍵:設(shè)置SET、清零CLR、開始START;</p><p> ?。?)顯示器上第一位顯示次數(shù),后三位顯示每次行走的角度;</p><p> ?。?)通過鍵盤的按鍵,設(shè)置步進(jìn)電機(jī)各次的角度值:按SET鍵后,開始設(shè)置,第一位設(shè)置次數(shù),后三位設(shè)置角度值

6、,再按SET鍵置入;可連續(xù)輸入不同的角度。</p><p> ?。?)按START鍵啟動步進(jìn)電機(jī)開始轉(zhuǎn)動,到位后停止;按</p><p>  CLR鍵清零步進(jìn)電機(jī)回原位。</p><p>  三、課程設(shè)計應(yīng)完成的工作</p><p>  課程設(shè)計完成后,交課程設(shè)計報告一份(系統(tǒng)設(shè)計說明、系統(tǒng)原理圖、程序設(shè)計流程圖、源程序),按規(guī)定格式書寫。&

7、lt;/p><p>  四、課程設(shè)計進(jìn)程安排</p><p><b>  五、主要參考文獻(xiàn)</b></p><p>  1、 《微型計算機(jī)原理及應(yīng)用》,許立梓等主編,——北京:機(jī)械工業(yè)出版社出版,2003年1月;</p><p>  2、 《C語言程序設(shè)計(第2版)》,張磊主編——高等教育出版社,2009年8月。</p

8、><p>  發(fā)出任務(wù)書日期: 年 月 日 指導(dǎo)教師簽名:</p><p>  計劃完成日期: 年 月 日 基層教學(xué)單位責(zé)任人簽章:</p><p><b>  主管院長簽章:</b></p><p><b>  摘要</b></p><p&g

9、t;  本次課程設(shè)計報告主要關(guān)于本次任務(wù)中如何基于86/88系統(tǒng),運(yùn)用8255和LED顯示器,通過C語言或匯編語言來實現(xiàn)所需要數(shù)字的顯示和步進(jìn)電機(jī)的角度控制。</p><p>  本課程設(shè)計是基于上述兩種程序語言的步進(jìn)電機(jī)角度控制設(shè)計,通過鍵盤輸入控制步進(jìn)電機(jī)的角度轉(zhuǎn)動,報告書包括系統(tǒng)原理圖,程序設(shè)計流程圖,原程序代碼和參考文獻(xiàn)等。</p><p><b>  一、系統(tǒng)原理圖&l

10、t;/b></p><p><b>  見任務(wù)書</b></p><p><b>  二、程序設(shè)計流程圖</b></p><p>  題目一:編程控制步進(jìn)電機(jī)實現(xiàn)以下循環(huán),并顯示數(shù)據(jù)。</p><p>  #include "conio.h"</p><

11、p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  #define PA 0x60 //PA口</p><p>  #define PB 0x61 //PB口</p><p>  #define PC 0x62 //PC口</p

12、><p>  #define COM 0x63 //控制端口</p><p>  uchar Duan[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x74,</p><p>  0x39,0x5e,0x79,0x71};//段選</p><p>  uchar Wei

13、[4]= {0xef,0xdf,0xbf,0x7f};//位選</p><p>  uchar Forward[8]={0x80,0xc0,0x40,0x60, 0x20,0x30,0x10,0x90};//正轉(zhuǎn)步序</p><p>  void delay(int t)//時間延時函數(shù)</p><p><b>  {</b></p>

14、;<p><b>  int a,b;</b></p><p>  for(a=t;a>0;a--)</p><p>  for(b=110;b>0;b--);</p><p><b>  }</b></p><p>  void display(uchar a,uchar

15、 b,uchar c,uchar d)//顯示函數(shù)</p><p><b>  {</b></p><p>  outp(PA,Duan[a]);//向PA口發(fā)送段碼</p><p>  outp(PC,Wei[0]);//向PB口發(fā)送位碼</p><p><b>  delay(8);</b>&l

16、t;/p><p>  outp(PA,Duan[b]);</p><p>  outp(PC,Wei[1]);</p><p><b>  delay(8);</b></p><p>  outp(PA,Duan[c]);</p><p>  outp(PC,Wei[2]);</p>&

17、lt;p><b>  delay(8);</b></p><p>  outp(PA,Duan[d]);</p><p>  outp(PC,Wei[3]);</p><p><b>  delay(8);</b></p><p><b>  }</b></p>

18、;<p>  void main()</p><p><b>  {</b></p><p>  int i,j=0;</p><p>  outp(COM,0x81);//輸出控制字</p><p><b>  while(1)</b></p><p><

19、;b>  {</b></p><p>  for(i=0;i<48;i++)//步進(jìn)電機(jī)走180度并顯示</p><p><b>  {</b></p><p><b>  if(j==8)</b></p><p><b>  {</b></p&g

20、t;<p><b>  j=0;</b></p><p><b>  }</b></p><p>  outp(PB,Forward[j]);</p><p>  display(0,1,8,0);</p><p><b>  j++;</b></p>

21、<p><b>  }</b></p><p>  for(i=0;i<150;i++)//用顯示做延時</p><p><b>  {</b></p><p>  display(0,1,8,0);</p><p><b>  }</b></p>

22、;<p>  for(i=0;i<12;i++)//步進(jìn)電機(jī)走45度并顯示</p><p><b>  {</b></p><p><b>  if(j==8)</b></p><p><b>  {</b></p><p><b>  j=0;&

23、lt;/b></p><p><b>  }</b></p><p>  outp(PB,Forward[j]);</p><p>  display(0,0,4,5);</p><p><b>  j++;</b></p><p><b>  }</b

24、></p><p>  for(i=0;i<150;i++)//用顯示做延時</p><p><b>  {</b></p><p>  display(0,0,4,5);</p><p><b>  }</b></p><p>  for(i=0;i<24

25、;i++)//步進(jìn)電機(jī)走90度并顯示</p><p><b>  {</b></p><p><b>  if(j==8)</b></p><p><b>  {</b></p><p><b>  j=0;</b></p><p>

26、;<b>  }</b></p><p>  outp(PB,Forward[j]);</p><p>  display(0,0,9,0);</p><p><b>  j++;</b></p><p><b>  }</b></p><p>  fo

27、r(i=0;i<150;i++)//用顯示做延時</p><p><b>  {</b></p><p>  display(0,0,9,0);</p><p><b>  }</b></p><p><b>  }</b></p><p><

28、;b>  } </b></p><p>  題目二: 按鍵輸入程序編寫程序,使鍵盤如下,并能左移顯示。</p><p>  DATA SEGMENT</p><p><b>  ORG 0000H</b></p><p>  LED4DB4 DUP (0);顯示緩沖區(qū)</p>

29、<p><b>  ORG 0010H</b></p><p>  LED7DB3FH,06H,5BH,4FH</p><p>  DB66H,6DH,7DH,07H</p><p>  DB7FH,6FH,77H,7CH</p><p>  DB39H,5EH,79H,71H ;編碼</

30、p><p><b>  ORG 0020H</b></p><p>  DATA1DB4 DUP (0);數(shù)據(jù)1</p><p><b>  DATA ENDS</b></p><p>  STACK SEGMENT</p><p>  DW64 DUP (?)<

31、/p><p>  STACK ENDS</p><p>  CODE SEGMENT</p><p>  ASSUME CS:CODE,DS:DATA,SS:STACK</p><p><b>  START:</b></p><p>  MOV AX,DATA</p><p>

32、;<b>  MOV DS,AX</b></p><p>  MOV AX,STACK</p><p><b>  MOV SS,AX</b></p><p>  LEA SI,LED4</p><p>  LEA DI,LED7</p><p>  MOV AL,81H;

33、初始化8255</p><p>  OUT 63H,AL</p><p>  MOV BX,0000H</p><p>  MAIN:CALL SCAN</p><p><b>  CALL DISP</b></p><p><b>  JMP MAIN</b></p

34、><p>  ;.........................</p><p><b>  ;顯示程序</b></p><p>  DISP:PUSH AX</p><p><b>  PUSH BX</b></p><p><b>  PUSH CX</b

35、></p><p><b>  PUSH DX</b></p><p>  MOV CX,4;4位顯示</p><p>  MOV BX,OFFSET LED4;顯示碼表首地址</p><p>  MOV AX,0000H ;數(shù)碼偏移初始化</p><p>  MOV DL,0DDH

36、;位碼初始化</p><p>  D1:PUSH AX</p><p>  XLAT;取數(shù)碼偏移量,存AL</p><p><b>  PUSH BX</b></p><p>  MOV BX,OFFSET LED7</p><p>  XLAT;取對應(yīng)的數(shù)碼,存AL</p>

37、;<p><b>  POP BX</b></p><p>  OUT 60H,AL;編碼輸出到A口</p><p><b>  MOV AL,DL</b></p><p>  OUT 61H,AL ;位碼輸出到B口</p><p><b>  POP AX</b&

38、gt;</p><p>  INC AX;數(shù)據(jù)偏移量+1</p><p>  ROL DL,1;位碼右移</p><p>  CALL DELAY</p><p><b>  LOOP D1</b></p><p><b>  POP DX</b></p>

39、<p><b>  POP CX</b></p><p><b>  POP BX</b></p><p><b>  POP AX</b></p><p><b>  RET </b></p><p>  ;..............

40、.........</p><p><b>  ;鍵盤掃描程序</b></p><p>  SCAN:MOV AL,00H</p><p>  OUT 62H,AL</p><p><b>  INAL,62H</b></p><p>  AND AL,0CH</p

41、><p>  CMP AL,0CH</p><p>  JNZKEYABC</p><p>  RET;無按鍵返回</p><p>  ;.................................</p><p><b>  ;去鍵盤抖動</b></p><p>

42、;  KEYABC: CALL DELAY</p><p><b>  INAL,62H</b></p><p>  AND AL,0CH</p><p>  CMP AL,0CH</p><p><b>  JNZKEY_D</b></p><p>  RET;

43、無按鍵返回</p><p><b>  ;鍵盤掃描識別</b></p><p>  KEY_D:MOV AL,7FH</p><p>  OUT 62H,AL</p><p>  INAL,62H </p><p>  TEST AL,04H </p><p>  

44、JNZ KEY_6 </p><p><b>  CALL KEYD</b></p><p><b>  JMP STTK</b></p><p>  KEY_6:TEST AL,08H</p><p><b>  JNZKEY_C</b></p><p

45、><b>  CALL KEY6</b></p><p><b>  JMP STTK</b></p><p>  KEY_C:MOV AL,0BFH</p><p>  OUT 62H,AL </p><p><b>  INAL,62H</b></p>

46、<p>  TEST AL,04H</p><p><b>  JNZ KEY_5</b></p><p><b>  CALL KEYC</b></p><p><b>  JMP STTK</b></p><p>  KEY_5:TEST AL,08H<

47、;/p><p><b>  JNZ KEY_8</b></p><p><b>  CALL KEY5</b></p><p><b>  JMP STTK</b></p><p>  KEY_8:MOV AL,0DFH</p><p>  OUT 62H

48、,AL</p><p><b>  INAL,62H</b></p><p>  TEST AL,04H</p><p><b>  JNZKEY_B</b></p><p><b>  CALL KEY8</b></p><p><b>

49、  JMP STTK</b></p><p>  KEY_B:TEST AL,08H</p><p><b>  JNZKEY_9</b></p><p><b>  CALL KEYB</b></p><p><b>  JMP STTK</b></p&

50、gt;<p>  KEY_9:MOV AL,0EFH</p><p>  OUT 62H,AL</p><p><b>  INAL,62H</b></p><p>  TEST AL,04H</p><p><b>  JNZ KEY_A</b></p><p

51、><b>  CALL KEY9</b></p><p><b>  JMP STTK</b></p><p>  KEY_A:TEST AL,08H</p><p>  JNZ KEY_31</p><p><b>  CALL KEYA</b></p>

52、<p>  KEY_31:JMP STTK</p><p>  ;.........................</p><p>  ;放鍵釋放測試程序</p><p>  STTK:CALL DISP;延時</p><p>  MOV AL,00H</p><p>  OUT 62H,AL&

53、lt;/p><p><b>  INAL,62H</b></p><p>  ANDAL,0CH</p><p>  CMP AL,0CH</p><p>  JNZ STTK;有按鍵,等待按鍵釋放</p><p>  RET;在SCAN返回MAIN</p><p>

54、;  ;...................................</p><p><b>  ;按鍵子程序</b></p><p>  KEY5:;按鍵5處理子程序</p><p>  MOV DL,05H;為SAVE_1提供數(shù)據(jù)</p><p>  CALL SAVE_1;將DL數(shù)據(jù)壓入DATA

55、1</p><p>  CALL MOVE;將DATA1數(shù)據(jù)移入顯示緩沖區(qū)</p><p>  CALL DISP;即時顯示當(dāng)前操作數(shù)據(jù)</p><p>  RET;(下同)</p><p>  ;............................</p><p>  KEY6:;按鍵6處理子程序

56、</p><p>  MOV DL,06H</p><p>  CALL SAVE_1</p><p><b>  CALL MOVE</b></p><p><b>  CALL DISP</b></p><p><b>  RET</b><

57、/p><p>  ;............................</p><p>  KEY8:;按鍵8處理子程序</p><p>  MOV DL,08H</p><p>  CALL SAVE_1</p><p><b>  CALL MOVE</b></p>&

58、lt;p><b>  CALL DISP</b></p><p><b>  RET</b></p><p>  ;............................</p><p>  KEY9:;按鍵9處理子程序</p><p>  MOV DL,09H</p>&

59、lt;p>  CALL SAVE_1</p><p><b>  CALL MOVE</b></p><p><b>  CALL DISP</b></p><p><b>  RET</b></p><p>  ;..........................

60、..</p><p>  KEYA:;按鍵A處理子程序</p><p>  MOV DL,0AH</p><p>  CALL SAVE_1</p><p><b>  CALL MOVE</b></p><p><b>  CALL DISP</b></p&g

61、t;<p><b>  RET</b></p><p>  ;.............................</p><p>  KEYB:;按鍵B處理子程序</p><p>  MOV DL,0BH</p><p>  CALL SAVE_1</p><p>&

62、lt;b>  CALL MOVE</b></p><p><b>  CALL DISP</b></p><p><b>  RET</b></p><p>  ;.............................</p><p>  KEYC:;按鍵C處理子程序<

63、;/p><p>  MOV DL,0CH</p><p>  CALL SAVE_1</p><p><b>  CALL MOVE</b></p><p><b>  CALL DISP</b></p><p><b>  RET</b></p&

64、gt;<p>  ;...............................</p><p>  KEYD:;按鍵D處理子程序</p><p>  MOV DL,0DH</p><p>  CALL SAVE_1</p><p><b>  CALL MOVE</b></p>&

65、lt;p><b>  CALL DISP</b></p><p><b>  RET</b></p><p>  ;...........................</p><p>  ;移位保存數(shù)據(jù),將DL壓入DATA1低位</p><p>  SAVE_1:PUSH AX</

66、p><p><b>  PUSH BX</b></p><p>  MOV BX,OFFSET DATA1</p><p>  MOV AL,[BX+1]</p><p>  MOV [BX],AL</p><p>  MOV AL,[BX+2]</p><p>  MOV [

67、BX+1],AL</p><p>  MOV AL,[BX+3]</p><p>  MOV [BX+2],AL</p><p>  MOV AL,DL;DL數(shù)據(jù)壓入低位</p><p>  MOV [BX+3],AL</p><p><b>  POP BX</b></p>&

68、lt;p><b>  POP AX</b></p><p><b>  RET</b></p><p>  ;............................</p><p>  ;將DATA1數(shù)據(jù)轉(zhuǎn)移到顯示緩沖區(qū)</p><p>  MOVE:PUSH AX</p>

69、<p><b>  PUSH SI</b></p><p><b>  PUSH DI</b></p><p>  MOV CX,4;數(shù)據(jù)長度</p><p>  MOV SI,OFFSET DATA1;定位DATA1</p><p>  MOV DI,OFFSET LED4;定位顯

70、示緩沖區(qū)</p><p>  M_:MOV AL,[SI]</p><p>  MOV [DI],AL</p><p><b>  INC SI</b></p><p><b>  INC DI</b></p><p><b>  LOOP M_</b>

71、;</p><p><b>  POP DI</b></p><p><b>  POP SI</b></p><p><b>  POP AX</b></p><p><b>  RET</b></p><p>  ;......

72、.........................</p><p><b>  ;延時程序</b></p><p>  DELAY:PUSH AX</p><p><b>  PUSH CX</b></p><p>  MOV AX,0002H</p><p>  D_:

73、MOV CX,0300H</p><p><b>  LOOP $</b></p><p><b>  DEC AX</b></p><p><b>  JNZ D_</b></p><p><b>  POP CX</b></p><

74、p><b>  POP AX</b></p><p><b>  RET</b></p><p>  ;............................</p><p><b>  INT 03H</b></p><p><b>  CODE ENDS&

75、lt;/b></p><p><b>  END START</b></p><p>  題目三:依題完成任務(wù)</p><p>  1.定義鍵盤按鍵:5個數(shù)字鍵;3個功能鍵;設(shè)置SET、清零CLR、開始START;</p><p>  2.顯示器上第一位顯示次數(shù),后三位顯示每次行走的角度;</p>&

76、lt;p>  3.通過鍵盤的按鍵,設(shè)置步進(jìn)電機(jī)各次的角度值;按動SET鍵后,開始設(shè)置:第一位設(shè)置次數(shù),后三位設(shè)置角度值,再按動SET置入,可連續(xù)置入不同的角度;</p><p>  4.按START鍵啟動步進(jìn)電機(jī)開始轉(zhuǎn)動,到位后停止;按CLR鍵清零步進(jìn)電機(jī)回原位。</p><p>  設(shè)置鍵盤如下圖所示:</p><p><b>  要求實現(xiàn)以下功能

77、:</b></p><p>  一:鍵入5(次數(shù))135 (數(shù))鍵入SET設(shè)置完畢,鍵入START步進(jìn)電機(jī)轉(zhuǎn)動135度5次;停止后鍵入CLR返回零位;每個過程都必須有相關(guān)的顯示。</p><p>  二:鍵入4(次數(shù))120(角度數(shù))鍵入SET設(shè)置完畢,鍵入START步進(jìn)電機(jī)轉(zhuǎn)動120度4次;停止后鍵入CLR返回零位;每個過程都必須有相關(guān)的顯示。</p><

78、p><b>  程序清單:</b></p><p>  #include "conio.h"</p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  #define PA 0x60 /

79、/PA口</p><p>  #define PB 0x61 //PB口</p><p>  #define PC 0x62 //PC口</p><p>  #define COM 0x63 //控制端口</p><p>  uchar Duan[16]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x

80、7f,0x6f,0x77,0x74,0x39,0x5e,0x79,0x71};//段選</p><p>  uchar Wei[4]= {0xef,0xdf,0xbf,0x7f };//位選</p><p>  uchar Forward[8]={ 0x80,0xc0,0x40,0x60, 0x20,0x30,0x10,0x90};//正轉(zhuǎn)步序</p><p> 

81、 uchar Backward[8]={0x90,0x10,0x30,0x20, 0x60,0x40,0xc0,0x80};//反轉(zhuǎn)步序</p><p>  uint Set_data[10][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},</p><p>  {0,0,0,0},{0,0,0,0},{0,0

82、,0,0},{0,0,0,0}};//置入數(shù)據(jù)存放數(shù)組初始化</p><p>  uint Angle,Cishu,Bushu,set_flag,i,j,x,y;</p><p>  uchar first,second,third,fourth,count=0;</p><p>  void delay(int t)//時間延時函數(shù)</p><

83、p><b>  {</b></p><p><b>  int a,b;</b></p><p>  for(a=t;a>0;a--)</p><p>  for(b=110;b>0;b--);</p><p><b>  }</b></p>&

84、lt;p>  void display(uchar a,uchar b,uchar c,uchar d)//顯示函數(shù)</p><p><b>  {</b></p><p>  outp(PA,Duan[a]);//向PA口發(fā)送段碼</p><p>  outp(PC,Wei[0]);//向PC口發(fā)送位碼</p><p

85、><b>  delay(8);</b></p><p>  outp(PA,Duan[b]);</p><p>  outp(PC,Wei[1]);</p><p><b>  delay(8);</b></p><p>  outp(PA,Duan[c]);</p><

86、p>  outp(PC,Wei[2]);</p><p><b>  delay(8);</b></p><p>  outp(PA,Duan[d]);</p><p>  outp(PC,Wei[3]);</p><p><b>  delay(8);</b></p><

87、p><b>  }</b></p><p>  void del(void)//清除函數(shù)</p><p><b>  {</b></p><p><b>  first=0;</b></p><p><b>  second=0;</b></p

88、><p><b>  third=0;</b></p><p><b>  fourth=0;</b></p><p><b>  }</b></p><p>  void sets(void)//設(shè)置函數(shù)</p><p><b>  {</

89、b></p><p>  set_flag=set_flag+1;//每設(shè)置一次,標(biāo)志位加一</p><p>  if((set_flag%2)==1)//按動SET鍵次數(shù)為單,清除顯示</p><p><b>  {</b></p><p><b>  del();</b></p>

90、;<p><b>  }</b></p><p>  else if((set_flag%2)==0)//按動SET鍵次數(shù)為雙,置入數(shù)據(jù)</p><p><b>  {</b></p><p>  Set_data[x][0]=first;</p><p>  Set_data[x][

91、1]=second;</p><p>  Set_data[x][2]=third;</p><p>  Set_data[x][3]=fourth;</p><p><b>  count=0;</b></p><p><b>  x++;</b></p><p><

92、b>  }</b></p><p><b>  }</b></p><p>  void start(void) //正轉(zhuǎn)函數(shù)</p><p><b>  {</b></p><p>  for(y=0;y<x+1;y++)</p><p><b

93、>  {</b></p><p>  Angle=Set_data[y][1]*100+Set_data[y][2]+Set_data[y][3];//計算角度</p><p>  Bushu=Angle*4/15;//計算步數(shù)</p><p>  Cishu=Set_data[y][0];//獲取運(yùn)行次數(shù)</p><p>

94、  while(Cishu>0)</p><p><b>  {</b></p><p>  for(i=0;i<Bushu;i++)</p><p><b>  {</b></p><p>  if(j==8)//每八步一個周期</p><p><b>

95、;  {</b></p><p><b>  j=0;</b></p><p><b>  }</b></p><p>  outp(PB,Forward[j]);//向PB口輸出相應(yīng)的正轉(zhuǎn)步值</p><p>  display(Cishu,Set_data[y][1],Set_dat

96、a[y][2],Set_data[y][3]);</p><p><b>  j++;</b></p><p><b>  }</b></p><p><b>  Cishu--;</b></p><p>  for(i=0;i<100;i++)</p>&

97、lt;p><b>  {</b></p><p>  display(Cishu,Set_data[y][1],Set_data[y][2],Set_data[y][3]);</p><p><b>  }</b></p><p><b>  }</b></p><p>

98、<b>  }</b></p><p><b>  }</b></p><p>  void clear(void)//反轉(zhuǎn)函數(shù)</p><p><b>  {</b></p><p>  for(y=0;y<x+1;y++)</p><p>&l

99、t;b>  {</b></p><p>  Angle=Set_data[y][1]*100+Set_data[y][2]+Set_data[y][3];//計算角度</p><p>  Bushu=Angle*4/15;//計算步數(shù)</p><p>  Cishu=Set_data[y][0];//獲取運(yùn)行次數(shù)</p><p&

100、gt;  while(Cishu>0)</p><p><b>  {</b></p><p>  for(i=0;i<Bushu;i++)</p><p><b>  {</b></p><p>  if(j==8)//每八步一個周期</p><p><b

101、>  {</b></p><p><b>  j=0;</b></p><p><b>  }</b></p><p>  outp(PB,Backward[j]);//向PB口輸出相應(yīng)的反轉(zhuǎn)步值display(Cishu,Set_data[y][1],Set_data[y][2],Set_data[y]

102、[3]);</p><p><b>  j++;</b></p><p><b>  }Cishu--;</b></p><p><b>  }</b></p><p><b>  del();</b></p><p>  set_

103、flag=0;</p><p><b>  x=0;</b></p><p><b>  y=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void keyset(

104、void)//鍵盤設(shè)置函數(shù)</p><p><b>  {</b></p><p>  uchar temp,row,column,locate;</p><p>  for(i=0;i<4;i++)</p><p><b>  {</b></p><p>  outp

105、(PC,Wei[i]);//向PC口輸出位碼,以獲取按下鍵所在的列</p><p>  temp=inp(PC);</p><p>  temp=temp&0x0c;</p><p>  if(temp!=0x0c)//當(dāng)鍵盤按下,檢測所按下的行</p><p><b>  {</b></p>&l

106、t;p>  column=i+1;</p><p>  if(temp==0x08)</p><p><b>  {</b></p><p><b>  row=0;</b></p><p><b>  }</b></p><p>  else i

107、f(temp=0x04)</p><p><b>  {</b></p><p><b>  row=1;</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b

108、>  }</b></p><p><b>  }</b></p><p>  locate=row*4+column;//計算按下的鍵所在的位置</p><p>  switch(locate)</p><p><b>  {</b></p><p>  c

109、ase 1: clear();break; //"CLR"</p><p>  case 2:sets();break; //"SET"</p><p>  case 3:start();break; //"START"</p><p>  case 4:if((set_flag%2)==1) //&quo

110、t;0"</p><p><b>  temp=0;</b></p><p>  switch (count)</p><p><b>  {</b></p><p>  case 0:first=temp;break;</p><p>  case 1:secon

111、d=temp;break;</p><p>  case 2:third=temp;break;</p><p>  case 3:fourth=temp;break;</p><p>  default:break;</p><p><b>  }</b></p><p>  count=cou

112、nt+1;</p><p><b>  break; </b></p><p>  case 5:if((set_flag%2)==1) //"5"</p><p><b>  temp=5;</b></p><p>  switch (count)//根據(jù)按下次序(count記

113、錄次序)相應(yīng)存入</p><p><b>  {</b></p><p>  case 0:first=temp;break;</p><p>  case 1:second=temp;break;</p><p>  case 2:third=temp;break;</p><p>  case

114、 3:fourth=temp;break;</p><p>  default:break;</p><p><b>  }</b></p><p>  count=count+1;</p><p><b>  break;</b></p><p>  case 6:if((

115、set_flag%2)==1) //"3"</p><p><b>  temp=3;</b></p><p>  switch (count)//根據(jù)按下次序(count記錄次序)相應(yīng)存入</p><p><b>  {</b></p><p>  case 0:first=t

116、emp;break;</p><p>  case 1:second=temp;break;</p><p>  case 2:third=temp;break;</p><p>  case 3:fourth=temp;break;</p><p>  default:break;</p><p><b>

117、  }</b></p><p>  count=count+1;</p><p><b>  break;</b></p><p>  case 7:if((set_flag%2)==1) //"2"</p><p><b>  temp=2;</b></p&g

118、t;<p>  switch (count)</p><p><b>  {</b></p><p>  case 0:first=temp;break;</p><p>  case 1:second=temp;break;</p><p>  case 2:third=temp;break;</p

119、><p>  case 3:fourth=temp;break;</p><p>  default:break;</p><p><b>  }</b></p><p>  count=count+1;</p><p><b>  break;</b></p>&

120、lt;p>  case 8:if((set_flag%2)==1) //"1"</p><p><b>  temp=1;</b></p><p>  switch (count)</p><p><b>  {</b></p><p>  case 0:first=tem

121、p;break;</p><p>  case 1:second=temp;break;</p><p>  case 2:third=temp;break;</p><p>  case 3:fourth=temp;break;</p><p>  default:break;</p><p><b>  

122、}</b></p><p>  count=count+1;</p><p><b>  break;</b></p><p>  default:break;</p><p><b>  }</b></p><p>  outp(PB,0x00);</p&

123、gt;<p>  temp=inp(PC);</p><p>  temp=temp&0x0c;</p><p>  while(temp!=0x0c)//檢測鍵盤是否按下</p><p><b>  {</b></p><p>  outp(PB,0x00);</p><p&g

124、t;  temp=inp(PC);</p><p>  temp=temp&0x0c;</p><p>  display(Cishu,second,third,fourth);</p><p><b>  }</b></p><p><b>  }</b></p><p

125、>  void keyscan(void)//鍵盤掃描函數(shù)</p><p><b>  {</b></p><p>  uchar temp;</p><p>  outp(PC,0X00);</p><p>  temp=inp(PC);</p><p>  temp=temp&0

126、x0c;</p><p>  if(temp!=0x0c)</p><p><b>  {</b></p><p>  delay(5);//消抖</p><p>  outp(PC,0x00);</p><p>  temp=inp(PC);</p><p>  temp

127、=temp&0x0c;</p><p>  if(temp!=0x0c)</p><p><b>  keyset();</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void mai

128、n()</p><p><b>  {</b></p><p><b>  first=0;</b></p><p><b>  second=0;</b></p><p><b>  third=0;</b></p><p>&l

129、t;b>  fourth=0;</b></p><p>  set_flag=0;</p><p>  outp(COM,0x81);//控制字寫入</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>

130、;  keyscan();</p><p>  display(first,second,third,fourth);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  總結(jié):</b></p><p&

溫馨提示

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

評論

0/150

提交評論