导航:首页 > 操作系统 > 单片机汇编语言编程控制电机

单片机汇编语言编程控制电机

发布时间: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++; //外部中断控制圈数加一
//这个位置可以加你显示程序
}
程序已经通过测试,放上去就能用,很好玩哟,呵呵

阅读全文

与单片机汇编语言编程控制电机相关的资料

热点内容
不同脚位的51单片机的区别 浏览:211
如何在手机sd卡怎样新建文件夹 浏览:873
AMI码编译码的原理 浏览:725
php十天快速入门 浏览:369
h3c路由pdf 浏览:482
三轴点胶系统编程视频 浏览:391
锁机编程教学 浏览:946
成都首选DNS服务器地址 浏览:468
mac邮箱为什么没有发件服务器 浏览:131
androidservice多次 浏览:994
方舟为什么突然找不到服务器了 浏览:495
中兴ba910怎么升级安卓系统 浏览:789
pr电脑安装没有解压文件怎么办 浏览:681
linux查看所有目录大小 浏览:631
数控加工工艺与编程课后习题 浏览:183
编程入中高考了吗 浏览:704
pdf打开后是空白 浏览:148
python量化交易pdf 浏览:725
照片如何加密不占内存 浏览:965
手机怎么下载小恒钱包app 浏览:849