版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 計算機(jī)控制技術(shù)課程設(shè)計
- 計算機(jī)控制技術(shù)課程設(shè)計
- 計算機(jī)控制技術(shù)課程設(shè)計
- 計算機(jī)控制技術(shù)課程設(shè)計 (2)
- 計算機(jī)控制技術(shù)課程設(shè)計-溫度采集
- 控制儀表與計算機(jī)控制技術(shù)課程設(shè)計
- 計算機(jī)控制與接口技術(shù)課程設(shè)計
- 計算機(jī)控制技術(shù)課程設(shè)計---pid控制器
- 計算機(jī)控制技術(shù)課程設(shè)計---交通燈
- 計算機(jī)控制技術(shù)課程設(shè)計--油庫計算機(jī)監(jiān)控系統(tǒng)硬件設(shè)計
- 溫度控制系統(tǒng)設(shè)計-計算機(jī)控制技術(shù)課程設(shè)計
- 計算機(jī)控制技術(shù)課程設(shè)計-溫度控制系統(tǒng)設(shè)計
- 溫度控制系統(tǒng)設(shè)計——計算機(jī)控制技術(shù)課程設(shè)計
- 計算機(jī)控制技術(shù)課程設(shè)計-計算機(jī)控制技術(shù)及工程應(yīng)用步進(jìn)電機(jī)控制系統(tǒng)
- 計算機(jī)控制技術(shù)課程簡介
- 控制系統(tǒng)設(shè)計與仿真-計算機(jī)控制技術(shù)課程設(shè)計
- 計算機(jī)控制課程設(shè)計
- 計算機(jī)控制_課程設(shè)計-
- 2011級計算機(jī)控制技術(shù)課程設(shè)計報告書
- 微型計算機(jī)控制技術(shù)課程設(shè)計---步進(jìn)電機(jī)角度控制
評論
0/150
提交評論