㈠ 單片機直流電機測速實驗程序
#include<reg52.h>
#include"delay.h"
#define uchar unsigned char
#define uint unsigned int
//*********************//
sbit ENA = P2^2; //驅動晶元使能,若為0則電機停止;
sbit IN1 = P2^1; //控制電機正轉和反轉
sbit IN2 = P2^0; //控制電機正轉和反轉
sbit key1 = P1^0; //此鍵按下,電機正轉;IN1=1;IN2=0 ;ENA=1
sbit key2 = P1^1; //此鍵按下,電機反轉;IN1=0,IN2=1 ;ENA=1
sbit key3 = P1^2; //此鍵按下,電機剎停; IN1=1,IN2=1 ;ENA=1
//*********************//
int motor_change_mank=0;
// 按鍵設置
//**********************//
uint keylogo()
{
if(key1==0)
{
delayms(2) ;
//while(key1==0);
motor_change_mank=1;//正轉標志位
}
if(key2==0)
{
delayms(2) ;
//while(key2==0);
motor_change_mank=2;//反轉標志位
}
if(key3==0)
{
delayms(2) ;
//while(key3==0);
motor_change_mank=0;//剎停標志位
}
return(motor_change_mank);
}
//**********************//
//控制驅動晶元函數
//**********************//
void execute_motor()
{
switch(motor_change_mank)
{
case 0: //剎停標志位
{
IN1 = 1;
IN2 = 1;
ENA = 1;
}break;
case 1: //正轉標志位
{
IN1 = 1;
IN2 = 0;
ENA = 1;
}break;
case 2: //反轉標志位
{
IN1 = 0;
IN2 = 1;
ENA = 1;
}break;
default:break;
}
}
//**********************//
void main()
{
while(1)
{
keylogo();
execute_motor();
}
}
/**********************************************************************/
/**********************************************************************/
#define uint unsigned int
void delayms(uint n)
{
int i;
for(;n>0;n--)
for(i=0;i<1;i++);
}
/**********************************************************************/
/**********************************************************************/
#ifndef delay_h
#define delay_h
#define uint unsigned int
extern void delayms(uint n);
#endif
㈡ 基於單片機的直流電機調速系統設計怎麼測速
測速電路自己設計的話可以使用
紅外對管
測速,或者
激光測速
。。。網上也有程序的
測速感測器
,自己找找就好了,有數據手冊,可以說明怎麼使用的,一般就是
高低電平
變化。你的
直流電機
上需要加一個測速
碼盤
,靠這個檢測的,也有其他方式,具體看你的測速感測器是什麼樣的。
㈢ 電機手持測速儀缺點,單片機測速儀的優點
電機手持測速儀缺點是 需要用電機手持
單片機測速儀的優點是採用了單片機
㈣ 單片機實現電機測速為什麼要加AD轉換器
這個問題是因為單片機它只能夠識別整數,不能識別小數;比如說1.25的話就必須通過AD轉換單片機才能進行處理,這就是數字信號和模擬信號的相互轉換的用途
㈤ 利用單片機實現直流電機的測速
用的8051的吧,用計數器功能就行了單位時間內數下降沿個數,12個下降岩一個周期,看來還要結合定時器第一秒,或更多。總之,計數器計數,定時器定時,在運算
㈥ 用51單片機寫那個電機測速的程序大概是怎麼寫呀😄
用一個定時器計數
另一個定時
開始
main()
{
同時打開計數器定時器
計數器計數
}
定時器1秒鍾到
{
關閉定時器
和計數器
計算轉數
//轉數=(1s計數值÷電機轉一圈的脈沖數)×60
}