
/-----------------------------------------------
名称:独立按键控制直流电机调速
使用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单片机控制直流无刷电调等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)