89C51控制直流馬達 AND 馬達驅動IC問題 |
答題得分者是:阿信
|
songgamesi
一般會員 發表:1 回覆:2 積分:0 註冊:2010-01-04 發送簡訊給我 |
最下面檔案是我在別的地方找到的電路圖,但是有些問題想問,
以下是程式, #include sbit m1 = P1^1; /* 定義P1.1接腳 */ sbit m2 = P1^2; /* 定義P1.2接腳 */ sbit k1 = P2^0; /* 按鍵控制馬達正轉轉快 */ sbit k2 = P2^1; /* 按鍵控制馬達正轉轉慢 */ sbit k3 = P2^2; /* 按鍵控制馬達反轉轉快 */ sbit k4 = P2^3; /* 按鍵控制馬達反轉轉慢 */ /*----------------------------*/ delay(int d) /* 延遲副程式 */ { int i,j ; for(i=0;i } /*----------------------------*/ still() /* 馬達正轉快速 */ { while(1) { m1= 0; m2= 0; delay(800); m2= 1; delay(150); } } /*----------------------------*/ still_2() /* 馬達正轉慢速 */ { while(1) { m1= 0; m2= 0; delay(100); m2= 1; delay(800); } } /*----------------------------*/ still_3() /* 馬達反轉快速 */ { while(1) { m1= 1; m2= 0; delay(800); m2= 1; delay(150); } } /*----------------------------*/ still_4() /* 馬達反轉慢速 */ { while(1) { m1= 1; m2= 0; delay(100); m2= 1; delay(800); } } /*----------------------------*/ void main() /* 主程式 */ { if(k1==0) /* 控制馬達正轉轉快 */ { still(); } if(k2==0) /* 控制馬達正轉轉慢 */ { still_2(); } if(k2==0) /* 控制馬達反轉轉快 */ { still_3(); } if(k2==0) /* 控制馬達反轉轉慢 */ { still_4(); } } 編輯記錄
|
阿信
版主 發表:111 回覆:983 積分:813 註冊:2005-03-10 發送簡訊給我 |
|
songgamesi
一般會員 發表:1 回覆:2 積分:0 註冊:2010-01-04 發送簡訊給我 |
===================引 用 阿信 文 章=================== 1.當然要補,Vcc要有104跟100uF,馬達用104/22Ω-1W。 2.Vcc需6V~18V,VS需0V~18V。 若使用6V~18V的馬達,兩個可以接在一起。 若使用3V小馬達,則Vcc接6V,VS接3V。 3.你的程式也有問題:(1)沒有做初始化 (2)沒有做按鍵除彈跳 (3)馬達轉動後無法切換狀態 (4)無停止功能。 4.馬達啟動瞬間會有大電流,電源供應器的電流設定要夠大。 首先先謝謝(阿信)你真的很高興你可以來回答幫助我^^ 可是還是有些問題需要你幫助, 1.你說的要補電容根電阻,是我只要按照 7257規格書上的 補上vcc的 10uf 根 馬達中間的0.1u 33Ω就好 還是按照你說的去補 會比較好呢!? 2.我的馬達是12v的,我是讓vcc vss都接5v , 這樣的話 會不會影響到馬達的速度。 3.我目前就按照我原本的電路跟程式去跑了,可是我的電路 7257那邊也沒補上電容根電阻,他有動作耶,我假如補上的話,會差在哪呢?? 4.還有程式真的像你所說的,我沒停止功能,要切換動作,我也必須要按重置鑑才能執行下個動作= =" 不滿你說,這段程式 是我從網路上去尋找的,我對c語言真的是一個初學者, 可不可以請你告訴我程式方面 要怎麼修改,才不用按重置就可以直接執行下個動作和停止的功能。 5.你說的大電流 , 是我電源供應器那邊的電流設定 要設定多大阿??? 希望你能繼續協助我....多謝了 |
阿信
版主 發表:111 回覆:983 積分:813 註冊:2005-03-10 發送簡訊給我 |
|
阿信
版主 發表:111 回覆:983 積分:813 註冊:2005-03-10 發送簡訊給我 |
參考程式
[code cpp] #include /* 載入 8051 相關暫存器含括檔 */ sbit m1 = P1^1; /* 定義P1.1接腳 */ sbit m2 = P1^2; /* 定義P1.2接腳 */ sbit k1 = P2^0; /* 按鍵控制馬達正轉轉快 */ sbit k2 = P2^1; /* 按鍵控制馬達正轉轉慢 */ sbit k3 = P2^2; /* 按鍵控制馬達反轉轉快 */ sbit k4 = P2^3; /* 按鍵控制馬達反轉轉慢 */ sbit k5 = P2^4; /* 按鍵控制馬達不動作 */ /*----------------------------*/ delay(int d) /* 延遲副程式 */ { int i,j ; for(i=0;i for(j=0;j<30;j ); } char Status; main { Status=0; while(1) { scankey(); //按鍵掃描 switch (Status) { case 0: still_0(); break; //馬達不動作 case 1: still_1(); break; //正轉快速 case 2: still_2(); break; //正轉慢速 case 3: still_3(); break; //反轉快速 case 4: still_4(); break; //反轉慢速 } } } scankey() { //按鍵掃描 if (k1==0) {delay(10); if (k1==0) Status=1;} if (k2==0) {delay(10); if (k2==0) Status=2;} if (k3==0) {delay(10); if (k3==0) Status=3;} if (k4==0) {delay(10); if (k4==0) Status=4;} if (k5==0) {delay(10); if (k5==0) Status=0;} } still_0() { //馬達不動作 m1=0; m2=0; delay(950); } still_1() { //正轉快速 m1=0; m2=0; delay(800); m2=1; delay(150); } still_2() { //正轉慢速 m1=0; m2=0; delay(150); m2=1; delay(800); } still_3() { //反轉快速 m2=0; m1=0; delay(800); m1=1; delay(150); } still_3() { //反轉慢速 m2=0; m1=0; delay(150); m1=1; delay(800); } [/code]
編輯記錄
阿信 重新編輯於 2010-01-08 19:24:19, 註解 無‧
|
songgamesi
一般會員 發表:1 回覆:2 積分:0 註冊:2010-01-04 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |