欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機 直流電控制機程序(智能小車用)
[打印本頁]
作者:
das
時間:
2015-4-18 04:16
標題:
51單片機 直流電控制機程序(智能小車用)
sbit RIGHT_IN1 = P1^3; //右邊電機
sbit RIGHT_EN = P1^4;
sbit RIGHT_IN2 = P1^5;
sbit LEFT_IN1 = P1^2; //左邊電機
sbit LEFT_EN = P1^1;
sbit LEFT_IN2 = P1^0;
/*********************************************
宏定義
**********************************************/
#define PWM_PERIOD 100 //PWM周期PWM_PERIOD*100us
#define uchar unsigned char
#define uint unsigned int
/*********************************************
變量定義
**********************************************/
//---------- PWM ------------//
uchar PWM_COUNTER = 0; //pwm產生周期 100*100us
uchar LEFT_PWM_DUTY = 50; //左邊電機占空比
uchar RIGHT_PWM_DUTY = 50; //右邊電機占空比
//---------- 時鐘 ------------//
uchar SecondL = 0; //時間秒低位
uchar SecondH = 0; //時間秒高位
uchar MinuteL = 0; //時間分低位
uchar MinuteH = 0; //時間分高位
/*********************************************
函數名稱: Delay_10Us
函數功能: us延時函數
函數輸入: us-延時時間控制變量
函數輸出: 無
**********************************************/
void Delay_10Us(uint us)
{
while( us-- );
}
/*********************************************
函數名稱: DelayMs
函數功能: ms級延時函數,延時時間:ms*ms
函數輸入: ms-延時時間控制變量
函數輸出: 無
**********************************************/
void DelayMs(uint ms)
{
unsigned int i,j;
for( i = 0; i < ms; i ++ )
for( j = 115; j > 0; j --);
}
/*********************************************
函數名稱: Init
函數功能: 初始化單片機的定時0(用于產生PWM)、定時器1(用于產生時鐘)
函數輸入: 無
函數輸出: 無
**********************************************/
void Init_Timer(void)
{
TMOD = 0x12; //設定T0的工作模式為2,設定T0的工作模式為1
//----裝入定時器初值 -----//
TH0 = 0x95; //100us定時
TL0 = 0x95;
TH1 = (65536-50000)/256; //50ms定時
TL1 = (65536-50000)%256;
IT0 = 1;
IP = 0x03;
EA = 1; // 開總中斷
ET0 = 1; // 定時器0允許中斷
ET1 = 1; // 定時器1允許中斷
TR1 = 1; // 啟動定時器1
TR0 = 1; // 啟動定時器0
}
/*********************************************
函數名稱: Timer0_ISR
函數功能: 定時器0中斷服務函數,用于輸出PWM波
函數輸入: 無
函數輸出: 無
**********************************************/
void Timer0_ISR(void) interrupt 1 using 1
{
PWM_COUNTER ++;
if(PWM_COUNTER < PWM_PERIOD)
{
if(PWM_COUNTER > LEFT_PWM_DUTY) LEFT_EN = 0;
if(PWM_COUNTER > RIGHT_PWM_DUTY) RIGHT_EN = 0;
}
else
{
PWM_COUNTER = 0;
LEFT_EN = 1;
RIGHT_EN = 1;
}
}
/*********************************************
函數名稱: Timer1_ISR
函數功能: 定時器1中斷服務函數,用于產生時鐘
函數輸入: 無
函數輸出: 無
**********************************************/
void Timer1_ISR() interrupt 3
{
uchar cnt;
TH1 = (65536-50000)/256;
TL1 = (65536-50000)%256;
cnt++;
if(cnt >= 20)
{
cnt = 0;
++SecondL;
if(SecondL == 10)
{
SecondL = 0;
++SecondH;
if(SecondH == 6)
{
SecondH = 0;
++MinuteL;
if(MinuteL == 10)
{
MinuteL = 0;
++MinuteH;
}
}
}
}
}
/*********************************************
函數名稱: Stop
函數功能: 停車函數
函數輸入: speed_left -左輪占空比
speed_right-右輪占空比
函數輸出: 無
**********************************************/
void Stop(uchar speed_left,uchar speed_right)
{
LEFT_IN1 = 0;
LEFT_IN2 = 0;
RIGHT_IN1 = 0;
RIGHT_IN2 = 0;
LEFT_PWM_DUTY = speed_left;
RIGHT_PWM_DUTY = speed_right;
}
/*********************************************
函數名稱: GoHead
函數功能: 前進函數:控制小車以一定速度直線前進,也可以
控制小車轉彎
函數輸入: speed_left -左輪占空比
speed_right-右輪占空比
函數輸出: 無
**********************************************/
void GoHead(uchar speed_left,uchar speed_right)
{
LEFT_IN1 = 1;
LEFT_IN2 = 0;
RIGHT_IN1 = 1;
RIGHT_IN2 = 0;
LEFT_PWM_DUTY = speed_left;
RIGHT_PWM_DUTY = speed_right*5/4; //走直線占空比校正
}
/*********************************************
函數名稱: GoBack
函數功能: 后退函數:控制小車以一定速度直線后退,也可以
小車后退轉彎
函數輸入: speed_left -左輪占空比
speed_right-右輪占空比
函數輸出: 無
**********************************************/
void GoBack(uchar speed_left,uchar speed_right)
{
LEFT_IN1 = 0;
LEFT_IN2 = 1;
RIGHT_IN1 = 0;
RIGHT_IN2 = 1;
LEFT_PWM_DUTY = speed_left;
RIGHT_PWM_DUTY = speed_right+2; //走直線占空比校正
}
/*********************************************
函數名稱: Goright
函數功能: 右轉90度函數:控制小車以一定速度旋轉90度
函數輸入: speed_left -左輪占空比
speed_right-右輪占空比
函數輸出: 無
**********************************************/
void Goright_90(void)
{
LEFT_IN1 = 1;
LEFT_IN2 = 0;
RIGHT_IN1 = 0;
RIGHT_IN2 = 1;
LEFT_PWM_DUTY = 20;
RIGHT_PWM_DUTY = 20;
DelayMs(1135);
}
復制代碼
作者:
horseydk
時間:
2015-5-6 17:45
直發程序,沒有電路圖無用啊
作者:
尋常kiss
時間:
2015-5-7 21:40
這個90度,轉的精確嗎?
作者:
lxa0
時間:
2015-5-8 19:12
有pwm調速嗎???
作者:
3151507812
時間:
2016-10-13 23:00
有上位機軟件嗎
作者:
3151507812
時間:
2016-10-13 23:00
樓主幫忙
作者:
3151507812
時間:
2016-10-13 23:00
大神
作者:
卡卡兮
時間:
2017-6-22 15:24
有程序所屬文件么
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1