导航:首页 > 操作系统 > 51单片机转速测试

51单片机转速测试

发布时间:2023-03-25 21:34:32

Ⅰ 用51单片机测电机的转速,,,,,谢谢各位。。

用一个转速传感器或者编码器,利用单片机引脚的脉冲沿捕获中断,1个计数器用于记录2相邻脉冲捕获时间间隔,一个计数器用于记录脉冲数。
然后计算1s时间内脉冲的个数就是频率啦,再通过换算的电机转速;

Ⅱ 基于51单片机直流电机调速测速仿真原理

基于51单片机直流电机调速测速仿真原理是以STC90C52RC单片机为主控芯片,利用PWM的原理,通过按键对直流电机进行调速,实现正反转;采用霍尔传感器对直流电机的转动进行计数,并通过主控芯片将采集到的计数值转化为直流电机的当前速度值;利用LCD1602显示模块将计算得到的值进行实时显示。

Ⅲ 用51单片机控制直流电动机并测量转速

我这个是用pwm+adc做的

ADC EQU 35H

CLOCK BIT P2.4 ;定义ADC0808时钟位

ST BIT P2.5

EOC BIT P2.6

OE BIT P2.7

PWM BIT P3.7

ORG 00H

SJMP START

ORG 0BH

LJMP INT_T0

START: MOV TMOD,#02H ;

MOV TH0,#20

MOV TL0,#00H

MOV IE,#82H

SETB TR0

WAIT: CLR ST

SETB ST

CLR ST ;启动AD转换

JNB EOC,$ ;等待转换结束

SETB OE

MOV ADC,P1 ;读取AD转换结果

CLR OE

SETB PWM ;PWM输出

MOV A,ADC

LCALL DELAY

CLR PWM

MOV A,#255

SUBB A,ADC

LCALL DELAY

SJMP WAIT

INT_T0: CPL CLOCK ;提供ADC0808时钟信号

RETI

DELAY: MOV R6,#1

D1: DJNZ R6,D1

DJNZ ACC,D1

RET

END

Ⅳ 如何用C51单片机外部中断测量电机转速

使用计时器,在产生一个中断的时候读取计时器的数值,在下次中断的时候再次读取计时器数值,这两个时间的差就是转一圈的时间,从而计算出速度。也可以多转几圈计算其平均值。

Ⅳ 求51单片机风扇转速监控程序 C语言

给你个我写的基于89c52的单片机测频率的程序,你参考下

#include<reg52.h>
#include<intrins.h>
#include<stdlib.h>
#defineucharunsignedchar
#defineuintunsignedint
#defineLCD_dataP0
sbitLCD_RS=P2^0;
sbitLCD_RW=P2^1;
sbitLCD_EN=P2^2;
sbitLCD_PSB=P2^3;
bitflag=0;
uintnum1=0,num2=0,count=0;
voiddisplay();
voiddelayms(uintx)
{
uinti,j;
for(j=0;j<x;j++)
for(i=0;i<110;i++)
;
}
voidwrite_cmd(ucharcmd) //12864写命令函数
{
LCD_RS=0;
LCD_RW=0;
LCD_EN=0;
P0=cmd;
delayms(5);
LCD_EN=1;
delayms(5);
LCD_EN=0;
}
voidwrite_dat(uchardat) //12864写数据函数
{
LCD_RS=1;
LCD_RW=0;
LCD_EN=0;
P0=dat;
delayms(5);
LCD_EN=1;
delayms(5);
LCD_EN=0;
}
voidlcd_pos(ucharX,ucharY) //12864写位置函数
{
ucharpos;
if(X==0)
X=0x80;
elseif(X==1)
X=0x90;
elseif(X==2)
X=0x88;
elseif(X==3)
X=0x98;
pos=X+Y;
write_cmd(pos);
}
voidlcd_init() //12864初始化函数
{
LCD_PSB=1;
write_cmd(0x30);
delayms(5);
write_cmd(0x0c);
delayms(5);
write_cmd(0x01);
delayms(5);
}
voidTime2_Init(void) //T2定时器自动重装初值定时1s
{
EA=1;
ET2=1;
TR2=1;
RCAP2L=(65535-46083)%256;
RCAP2H=(65535-46083)/256;
}
voiddisplay() //12864显示函数
{
lcd_pos(0,0);
write_dat(num1/1000+'0');
write_dat(num1/100%10+'0');
write_dat(num1/10%10+'0');
write_dat(num1%10+'0');
lcd_pos(1,0);
write_dat(num2/1000+'0');
write_dat(num2/100%10+'0');
write_dat(num2/10%10+'0');
write_dat(num2%10+'0');
}
main()
{
lcd_init();
Time2_Init();
TMOD=0x55;
TR0=1;
TR1=1;
while(1)
{
TH0=0;
TL0=0;
TH1=0;
TL1=0;
flag=0;
while(!flag);
num1=TH0<<8|TL0; //num1为T0在1s内统计的下降沿次数,输入引脚为P3.4
num2=TH1<<8|TL1; //num2为T1在1s内统计的下降沿次数,输入引脚为P3.5
display();
}
}
voidTime2(void)interrupt5 //T2定时器中断1s
{
TF2=0;
count++;
if(count==20)
{
flag=1;
count=0;
}
}


Ⅵ 51单片机步进电机试验五(正转一圈 反转一圈)转角由30度改为180度,请帮忙改下

/***********************************************************************************
* 标题裤兄: 步进电机试验五(正转一圈 反转一圈) *
* *
* 通过本例程了解步进马达使用及驱动程序编写 *
*; 单双八拍工作方式: *
*; A-AB-B-BC-C-CD-D-DA (即一个脉冲,转 3.75 度) *
* *
* 请学员一定要消化掉本例程 *
*
**************************************************************************************/
#include "reg52.h"
void delay(unsigned int t);
//Motor
sbit F1 = P1^0;
sbit F2 = P1^1;
sbit F3 = P1^2;
sbit F4 = P1^3;
unsigned char code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}; //反转
unsigned char code FFZ[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1}; //正转
unsigned int K;
/**********************************************************************
* *
* 步进电机驱动 *
* *
***********************************************************************/
void motor_ffw()
{
unsigned char i;
unsigned int j;
for (j=0; j<12; j++) //转1*n圈
{
for (i=0; i<48; i++) //一个周期转30度// 8*3.75=30度 转180就将8修改为48
{
if(K==1) P1 = FFW[i]&0x1f; //取数据则纯森
if(K==2) P1 = FFZ[i]&0x1f;
delay(5); //调节转速
}
}
}
/孙亩******************************************************
*
* 延时程序
*
********************************************************/
void delay(unsigned int t)
{
unsigned int k;
while(t--)
{
for(k=0; k<=80; k++)
{ }
}
}
main()
{
while(1)
{
K=1;
motor_ffw();
K=2;
motor_ffw();
}
}

Ⅶ 如何用51单片机测量发动机转速 要求只用一个定时器 晶振频率33MHZ

如果有个轮子的话,可以配一个红外对管。用对管数轮子转一圈的时间,在知道轮子的周长的情况下,是可以算出来的。

Ⅷ 用51单片机通过霍尔元件AH44E检测直流电机转速的c程序

你好!
无需复杂计算。
霍尔传感器用于电机转速测量,根据需要可在电机转轴上均匀安装N个(N=1、2、3、4...)磁钢,N较大时,可直接用一个导磁材料制作的齿轮盘替代。
在T时间内对霍尔传感器的输出脉冲进行计数,当T超过设定值(如0.5S)时,记录计数值k。
转速n=60*k/(NT)。
希望对你有所帮助,望采纳。

Ⅸ 基于51单片机转速测量的程序,望高手帮我解释一下。

#include <reg51.h>
#include <INTRINS.H>

#define FOSC 11.0592

unsigned int speed;
unsigned char key;
unsigned char led_table[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xff,0xf6};
long speed_count,speed_count1;
unsigned char speed_check;
unsigned int second_flag;
unsigned char speed_table[4];
unsigned char speed_table1[10];

//定时器频率1000Hz
void timer1_init(void)
{
EA=0;
TMOD=0x10;
//TH1=1000*FOSC/12/256;
//TL1=(unsigned int)(1000*FOSC/12)%256;
TH1=254;
TL1=51;
TR1=1;
TCON|=0X04; //外部中断下降触发
EX1=1; //允许外部中断
ET1=1;
EA=1;

}
void int1_routine(void) interrupt 2
{
speed_count++;
P1^=0X02;
}

void timer1_routine(void) interrupt 3
//void timer1_routine(void)
{
TH1=254;
//TH1=0xf0;
TL1=51;
//speed_count++;
second_flag++;

}

void main(void)
{
unsigned int i,j,k;
// unsigned char sum;
unsigned speed_table[3];
long time_id;
timer1_init();
speed=0;
P2=0x0f;
P0=0xf0;
P3=0x08;
key=0;
P1=0x00;
speed_check=0;
while(1)
{

//P1^=0XFE;
j=1;
//speed=1234;
speed_table[0]=speed/1000;
speed_table[1]=speed%1000/100;
speed_table[2]=speed%100/10;
speed_table[3]=speed%10;
for(i=0;i<4;i++)
{
P2=j^0xff;
j<<=1;
P0=(led_table[speed_table[i]])&0xfe;
for(k=0;k<250;k++) ;
}
//speed=speed_count;

if(second_flag>=1000) /*中断1000次进入 */
{

second_flag=0;
time_id++;
speed_table1[time_id%10]=speed_count;/*外部中断量转存(是很聪明的方法学习了)*/
speed_count=0;
speed=(speed_table1[0]+speed_table1[1]+speed_table1[2]+speed_table1[3]+speed_table1[4]+speed_table1[5]+speed_table1[6]+speed_table1[7]+speed_table1[8]+speed_table1[9])*6; /*(10X6)10秒的外部中断量乘以6就是转速了*/
//speed=speed/2+(speed_table[0]+speed_table[1]+speed_table[2])*6;
}

}

}

Ⅹ 51单片机转速表

用霍尔传感器采集转速,然后用单片机的某一个引脚老接收高低电平信号,可以根据两个相邻的相同的电平之间的时间来求出转动的频率,再用LED来显示,其实很简单。多注意思考,多动手,自己写程序,相信自己。

阅读全文

与51单片机转速测试相关的资料

热点内容
云服务器不同地域 浏览:944
python闹钟怎么打 浏览:686
虚拟主机服务器有什么区别 浏览:831
算法与程序的奥秘章节检测 浏览:377
找pdf 浏览:527
与服务器连接断开如何处理 浏览:831
服务器维修预计十分钟什么意思 浏览:168
黑马程序员主打教学是什么 浏览:39
python九乘法表怎么编写 浏览:972
思维方式pdf 浏览:654
tcc社区app怎么注册 浏览:937
央视网下载加密 浏览:452
命令行访问服务器 浏览:36
梁加密区箍筋是不是必须封闭箍筋 浏览:760
在百度地图如何定位服务器地址 浏览:570
单片机计数器中断 浏览:296
哈啰安装文件夹名称 浏览:294
解压视频声控用杯子玩泡沫 浏览:740
19年的普通安卓机怎么样了 浏览:604
如何在app上刷导游题目 浏览:861