⑴ AT89C51單片機匯編語言寫個控制電動機正反轉的程序
不用中斷,就行。
;
ORG 0000H
⑵ 51單片機電機正反轉控製程序
正轉:PWM1高電平,PWM2低電平;
反轉:PWM1低電平,PWM2高電平;
⑶ 單片機控制電機的正反轉 程序及電路圖
這個很簡單,我教你怎麼玩,下面是思路和方式
思路:有三個輸入,分別是一個按鈕、兩個霍爾感測器(也就是接近開關),我用p0.0到p0.2來代替;輸出2個或以上(這看你接什麼顯示器,如果是pc的話,就不用數字量輸出,直接串口就可以了)控制正反轉的繼電器管腳用p1.0、p1.1;
ps:顯示那塊我不知道你怎麼處理,但是需要與一個全局變數轉動次數k連接起來,另外兩個輸入接近開關選用npn感測器或用光電隔離,總之有效信號能把管腳電壓拉低就可以了,具體硬體要注意什麼,有需要就問我
現在我們來寫程序:
#include
//選用晶振11.0592mhz
unsigned
char
k=0;
//k表示正反轉次數
sbit
x0=p3^2;
//調節按鈕
sbit
x1=p1^1;
//上限位接近開關信號
sbit
x2=p1^2;
//下限位接近開關信號
sbit
y1=p0^0;
//電機上升(注意:我使用的是管腳輸出為0時候,電機運動,這樣可以避免啟動時候,單片機自復位對電機點動的影響)
sbit
y2=p0^1;
//電機下降
void
delay50ms(unsigned
int
i)
{
unsigned
int
j;
for
(i;i>0;i--)
for(j=46078;j>0;j--);
}
main()
{
it0=1;
//下降沿觸發
ex0=1;
//開p3.2外部中斷
ea=1;
//總中斷開
while(1)
while(k)
{
y1=0;
//正轉
while(x1==1);
//等待正轉接近開關反應
y1=1;
//正轉停
delay50ms(1);
//停止時間50ms
y2=0;
//反轉
while(x2==1);
//等待反轉接近開關反應
y2=1;
//反轉停
k--;
//圈數減一
}
}
void
counter0(void)
interrupt
0
{
k++;
//外部中斷控制圈數加一
//這個位置可以加你顯示程序
}
程序已經通過測試,放上去就能用,很好玩喲,呵呵
⑷ 用單片機怎樣實現電機的正反轉控制
方案一:使用開關直接控制電動機的正反轉,此種設計非常簡便易懂,便於修理與使用。
缺點:該方案直接控制易產生火花電弧,會危害操作者生命安全。 如圖1所示:
圖1中的開關為單刀雙擲開關,所以開關有左,中,右三個位置。 方案一開關控制過程如下:
將單刀雙擲開關置向左邊電動機開始正轉,將開關置向右端電動機開始反轉,將開關置向中間位置電動機停止轉動。
方案二:使用電磁繼電器進行控制電動機的正反轉。此種設計使用了電磁繼電器為了是能讓控制過程更安全可靠,順利解決了方案一的不足。
缺點:該方案不能夠滿足現代生活對自動化智能化的基本要求。
⑸ 用單片機怎麼使直流電機正反轉
單片機控制直流電機正反轉,最簡單的方法是 兩個I/O口 控制兩個繼電器(一組常開、常閉)的就可以,電機 兩個極 接 兩個繼電器 的 動觸點,兩個繼電器 的 常開點接+(電機電源),兩個常閉點接-,就可以了。
單片機控制接通一個繼電器 是正轉,控制接通另一個繼電器 是反轉,兩個繼電器都不接通(或者都接通)電機不轉。
⑹ 單片機控制交流電機正反轉的C語言程序
這個很簡單,我教你怎麼玩,下面是思路和方式
思路:有三個輸入,分別是一個按鈕、兩個霍爾感測器(也就是接近開關),我用P0.0到P0.2來代替;輸出2個或以上(這看你接什麼顯示器,如果是PC的話,就不用數字量輸出,直接串口就可以了)控制正反轉的繼電器管腳用P1.0、P1.1;
PS:顯示那塊我不知道你怎麼處理,但是需要與一個全局變數轉動次數k連接起來,另外兩個輸入接近開關選用NPN感測器或用光電隔離,總之有效信號能把管腳電壓拉低就可以了,具體硬體要注意什麼,有需要就問我
現在我們來寫程序:
#include <reg51.h> //選用晶振11.0592MHz
unsigned char k=0; //k表示正反轉次數
sbit X0=P3^2; //調節按鈕
sbit X1=P1^1; //上限位接近開關信號
sbit X2=P1^2; //下限位接近開關信號
sbit Y1=P0^0; //電機上升(注意:我使用的是管腳輸出為0時候,電機運動,這樣可以避免啟動時候,單片機自復位對電機點動的影響)
sbit Y2=P0^1; //電機下降
void delay50ms(unsigned int i)
{
unsigned int j;
for (i;i>0;i--)
for(j=46078;j>0;j--);
}
main()
{
IT0=1; //下降沿觸發
EX0=1; //開P3.2外部中斷
EA=1; //總中斷開
while(1)
while(k)
{
Y1=0; //正轉
while(X1==1); //等待正轉接近開關反應
Y1=1; //正轉停
delay50ms(1); //停止時間50ms
Y2=0; //反轉
while(X2==1); //等待反轉接近開關反應
Y2=1; //反轉停
k--; //圈數減一
}
}
void counter0(void) interrupt 0
{
k++; //外部中斷控制圈數加一
//這個位置可以加你顯示程序
}
程序已經通過測試,放上去就能用,很好玩喲,呵呵
⑺ 51單片機步進電機正反轉程序
單片機控制步進電機,我想你說的是兩相步進電機,一般是控制其相序分配的順逆從而控制正反轉,一般而言,步進電機相序分配你可以做成一個數組比如step[]={0x03,0x06,0x0c,0x09},這樣來說可以假設P0口是步進電機控制口,那麼可以按如下方式來控制: while(1) { for(i=0;i<4;i++) { if(fx==1)P0=step[i]; //正向 else P0=step[3-i]; //反向 delay(x); //x大小決定電機速度。
根據電機相數買個驅動器。然後用單片機產生脈沖來控制電機的轉動以及正反轉。單片機產生脈沖的方法和單片機控制流水燈是一樣的。ULN2003D 是驅動步進電機的驅動晶元,主要是匹配電機所需的電流。 由於是四相電機,步進電機之所以可以轉動就需要給相繞組提供連續的脈沖,所以需要4個埠來控制四相繞組的工作狀態(P15應該是不需要的),具體的編碼要看電機的拍數; 一旦明白這些,你就可以很容易編寫代碼來控制電機的轉動了,還有在脈沖間你可以設置不同的延時時間來調節電機的轉速。
⑻ 單片機控制電機正反轉程序
你好 你可以下一個說明書 好好的研究學習一下
⑼ C51單片機控制電機正反轉
這需要你自己完成:走35米需要有你的小車輪子直徑算出來走35M的圈數,實際一定有誤差,需要考慮,此外可以採用終點定標[比如什麼顏色的標記等]用對應的感測器去識別;到達終點後,利用單片機的定時器延時60S後將小車掉轉頭,向回開,直到到達起點。這種情況通常需要有道路標記的——也就是說,小車是按照編輯路線行進和停止的。