直流电机转速C51 程序怎么做

直流电机转速C51 程序怎么做,第1张

/-----------------------------------------------

名称:独立按键控制直流电机调速

使用5V-12V 小功率电机皆可 2个按键分别加速和减速

------------------------------------------------/

#include<reg52h>

#define KeyPort P3

sbit DCOUT = P1^1;//定义电机信号输出端口

unsigned char PWM_ON; //定义速度等级

#define CYCLE 10 //周期

/------------------------------------------------

函数声明

------------------------------------------------/

void DelayUs2x(unsigned char t);//us级延时函数声明

void DelayMs(unsigned char t); //ms级延时

unsigned char KeyScan(void);//键盘扫描

void Init_Timer0(void);//定时器初始化

/------------------------------------------------

主函数

------------------------------------------------/

void main (void)

{

unsigned char num;

PWM_ON=0;

Init_Timer0(); //初始化定时器0,主要用于数码管动态扫描

while (1) //主循环

{

num=KeyScan(); //循环调用按键扫描

if(num==1)//第一个按键,速度等级增加

{

if(PWM_ON<CYCLE)

PWM_ON++;

}

else if(num==2)//第二个按键,速度等级减小

{

if(PWM_ON>0)

PWM_ON--;

}

}

}

/------------------------------------------------

uS延时函数,含有输入参数 unsigned char t,无返回值

unsigned char 是定义无符号字符变量,其值的范围是

0~255 这里使用晶振12M,精确延时请使用汇编,大致延时

长度如下 T=tx2+5 uS

------------------------------------------------/

void DelayUs2x(unsigned char t)

{

while(--t);

}

/------------------------------------------------

mS延时函数,含有输入参数 unsigned char t,无返回值

unsigned char 是定义无符号字符变量,其值的范围是

0~255 这里使用晶振12M,精确延时请使用汇编

------------------------------------------------/

void DelayMs(unsigned char t)

{

while(t--)

{

//大致延时1mS

DelayUs2x(245);

DelayUs2x(245);

}

}

控制直流电机的原理一般都是用PWM实现的。

这是51单片机来控制直流电机转速的程序,如果是AVR可以用AVR单片机自带的PWM来控制电机的转速。

#include<reg52h>

//#include"delayh" //在本文件中加入一个延时函数,或添加带有延时函数的c文件

unsigned char code table1[]={0x00,0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//0x00表示停止转动

//

//bit flag;//正反转标志

void delayus(unsigned int t) //延时函数

{

while(--t);

}

void delayms(unsigned int t) //毫秒级延时

{

unsigned int i,j;

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

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

;

}

void qudong(unsigned char t,bit flag) // t范围0~4控制转速,flag表示正反转

{

unsigned char zz,i;

if(t) // 先判断t是否为0,如果是,就没必要进行下面的判断

{

if(flag) //flag=1;为正转

{

switch(t) // 选出几级速度

{

case 1: zz=4;break;

case 2: zz=3;break;

case 3: zz=2;break;

case 4: zz=1;break;

}

for(i=1;i<=8;i++) //实现转动

{

P1=table1[i];

delayus(zz100); //100可以改,晶振不同有所不同,直到感觉转动平滑有力为止

}

}

else

{ switch(t)

{

case 1: zz=4;break;

case 2: zz=3;break;

case 3: zz=2;break;

case 4: zz=1;break;

}

for(i=8;i>=1;i--) //反转

{

P1=table1[i];

delayus(zz100);

}

}

}

else

P1=table1[0];

}

main()

{

unsigned char k,j;

while(1)

{

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

qudong(1,0); //1表示1级转速,0表示反转,自己改就行了

delayms(500); //延迟500ms

}

}

我是个初学者,有什么错的敬请谅解,如果你也是,那么我们可以交流交流,还有什么不懂接着问就行了

不用遥控器,用51单片机控制直流无刷电调步骤:

获知从接收机传到电调里的信号的波型;

然后用单片机输出相同的波形即可。

51单片机简介:

51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。

程序是指基本指令,通过范围内的修改达到使用目的。

一个步进电机控制器和3个步进电机的控制器只是脉冲输出点位不一样而已(芯片不一样)当然,输出的IO点也会增加,3个步进电机的控制器可以控制1~3个步进电机不同的工作,基于51单片机的开发代码指令和软件由芯片生产商提供,基础代码由控制器工程师提供,一款产品是基于硬件和软件的结合,开发者一般从硬件设计开始,如果你可以提供控制器硬件,我相信软件就会非常简单。

程序其实就是写代码,和PLC接近,但比PLC复杂,因为PLC是开放式的。

下面是我们的三轴控制器。

三轴运动控制器简介

控制器的功能:

⑴ 显示屏分辨率可选两种128×64点、192×64点单色图形屏(黄绿屏或蓝屏),分别可显示16×16标准点阵汉字4行8列、4行12列。

⑵ 内置蜂鸣器,可以通过软件配合按键发声,或做报警等其他通途。

⑶ 控制器须外接DC5V工作电源。如果系统要用到模拟量输出(0~10VDC)功能,则需要外部的±12VDC电源。

⑷ 用宏晶STC12C系列高性能CPU,同时钟频率下,运算速度比其他51系列CPU快8~12倍。

⑸ 64KB程序空间,8KB + 256KB数据空间,带实时日历时钟。

⑹ 自带512KB字库,含16×16点阵汉字、16×16点阵字符、8×16点阵ASCII字符、12×12点阵汉字、12×12点阵字符、6×12点阵ASCII字符。两种汉字字库均包含全部一、二级汉字。

⑺ 19个按键,其中6个按键上可配有LED指示灯。LED指示灯可单独控制亮暗,和按键本身不直接关联,用于系统中一些常用功能选择之用。

⑻ 3轴运动控制,脉冲+方向,差分输出,最大脉冲频率50KHz,极强的抗干扰能力。也可以接成共阳极输出,系统有+5V输出端子。16位脉冲计数,也可无限发脉冲。

⑼ 2路AB相输入解码。

⑽ 20路DI输入,12~24VDC共阳极。

⑾ 16路DO输出,晶体管输出,可以外接继电器等,外接继电器等感性负载时,须在继电器线圈两端并联反向二极管。

⑿ 支持RS232、RS485通信。

⒀ 串口下载,宏晶官方提供的下载软件。

⒁ 开发环境是KEIL公司的C51开发平台μVision3,也可以自行在网上升级更高版本。

⒂ 开发库是C51格式的库文件。

DFC111h---------------------------------------基本头文件

DFC_MU102_Sysh---------------------------系统头文件

DFC_MU102_SYSLIB---------------------------系统库文件

DFC_MU102_LCDh------------------------LCD控制头文件

DFC_MU102_LCDLib------------------------LCD控制库文件

DFC_MU102_KB19h------------------------按键控制头文件

DFC_MU102_KB19Lib------------------------按键控制库文件

DFC_IO111h------------------------------输入输出头文件

DFC_IO111Lib------------------------------输入输出库文件

以上就是关于直流电机转速C51 程序怎么做全部的内容,包括:直流电机转速C51 程序怎么做、求51单片机控制步进电机,实现其间歇运动的程序,最好要有C语言的、不用遥控器,怎么用51单片机控制直流无刷电调等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10215609.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存