導航:首頁 > 操作系統 > 單片機匯編語言編程式控制制電機

單片機匯編語言編程式控制制電機

發布時間:2024-02-05 16:16:31

❶ 跪求單片機控制伺服電機轉速程(匯編語言)序及電路圖

最小系統就可以控制伺服了,伺服電機的控制需要三個信號就OK,分別是SV_ON(使能),CW,CCW。比如:
CW EQU P1.0
CCW EQU P1.1
SVON EQU P1.2
KEY EQU P1.3
ORG 0000H
SJMP STA
ORG 0030H
STA:
CLR EA
SETB SVON
LOOP:
JB KEY,LOOP1
CPL CW
LCALL DELAY
SJMP LOOP
LOOP1:
CPL CCW
LCALL DELAY
SJMP LOOP
END

❷ 1. 設計要求 採用單片機控制一個三相單三拍的步進電機工作。求大神給出匯編程序,謝謝,急用。

#include <reg51.h>

#define unchar unsigned char

sbit kai_key p3^1; //開關,作鎖功能

sbit zheng_key p3^2; //正轉

sbit fan_key p3^3; //翻轉睜卜

sbit 18_key p1^0; //18步

sbit 15_key p1^1; //15步

sbit 12_key p1^2; //12步

sbit 9_key p1^3; //9步

sbit 6_key p1^4; //6步

sbit 3_key p1^5; //3步

sbit 21_key p1^6; //備廳21步

sbit 24_key p1^7; //24步

sbit 27_key p3^0; //27步

bit flag=0; //電機正反標志位

uchar bushu,maichong=3,table_begin=0;

uchar code table[]={0x01,0x02,0x04,0x04,0x02,0x01};

//電機正反轉I/O口的高低電平對應表

void delay(uchar i) //延時函數

{

uchar j,k;

for(j=i;j>0;j--)

for(k=125;k>0;k--);

}

void key()

{

/仿早隱/kaikey=shuo_key;

if(kai_key==0) //這里開關閉合,表示鍵盤鎖打開。如果開關不閉合,表示上鎖,電機不轉

{

if(27_key==0) bushu=27; //步數高的優先,即多個步數開關同時打上,運行高步數

else if(24_key==0) bushu=24;

else if(21_key==0) bushu=21;

else if(18_key==0) bushu=18;

else if(15_key==0) bushu=15;

else if(12_key==0) bushu=12;

else if(9_key==0) bushu=9;

else if(6_key==0) bushu=6;

else if(3_key==0) bushu=3;

esle bushu=0;

}

if(zheng_key==0)

flg=0;

else if(fan_key==0)

flg=1;

}

void dispose() //數據處理函數

{

if(flag==0)

{

table_begin=0; //flag為0正轉

}

else

table_begin=3; //flag為1反轉

}

void qudong()

{

while(kai_key==0)

{

while(bushu!=0)

{

unchar i,j;

for(j=0+table_begin;(j<3+table_begin)&&(bushu!=0);j++)

{

PO=table[j]

for(i=0;i<maichong;i++)

{

delay(10) //延時函數,控制電機速度

}

bushu--;

}

}

}

}

void main()

{

while(1)

{

key();

dispose();

qudong();

while(kai_key==0); //等待開鎖

}

}

❸ 單片機控制交流電機正反轉的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++; //外部中斷控制圈數加一
//這個位置可以加你顯示程序
}
程序已經通過測試,放上去就能用,很好玩喲,呵呵

閱讀全文

與單片機匯編語言編程式控制制電機相關的資料

熱點內容
怎麼進入電腦板2b2t伺服器 瀏覽:282
idea編譯進度條 瀏覽:132
文件夾工具箱軟體 瀏覽:686
最近為什麼手機連不上索尼伺服器 瀏覽:877
海康錄像機怎麼關視頻加密 瀏覽:786
編程以後有可能被機器人代替嗎 瀏覽:522
windows創建文件命令 瀏覽:986
linuxcopy文件內容 瀏覽:383
程序員帥哥禿頂 瀏覽:839
阿里雲伺服器開通流程 瀏覽:105
如何開雲伺服器 瀏覽:979
網站小說源碼 瀏覽:301
php用什麼ide 瀏覽:867
網上預約課程app哪個好 瀏覽:153
android兼容測試工具 瀏覽:97
雲伺服器不支持虛擬化怎麼辦 瀏覽:189
加密方式的演變 瀏覽:364
java常用演算法pdf 瀏覽:734
伺服器數據遇到異常什麼原因 瀏覽:450
phpexif信息 瀏覽:544