欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
42步進電機藍牙控制模塊化編程
[打印本頁]
作者:
HeChunmu
時間:
2019-8-1 16:47
標題:
42步進電機藍牙控制模塊化編程
感謝51黑論壇給予我的幫助,我自己總結了前輩們的代碼,寫了一個42步進電機藍牙控制的代碼,能實現前后左右控制;尋跡,避障lcd1602顯示功能還不齊全。
170ABB2975F0D0AC8A842E1B78957C1D.png
(240.11 KB, 下載次數: 31)
下載附件
2019-8-1 16:44 上傳
單片機源程序如下:
#include "42moto.h"
#include "lcd1602.h"
/**********************************************
* IO設置
*
*
*************************************************/
/**************紅外引腳定義*******************/
sbit HY_R = P1^4; //右邊紅外傳感器定義
sbit HY_Z = P1^5; //中間紅外傳感器定義
sbit HY_L = P1^6; //左邊紅外傳感器定義
/*************尋跡引腳定義*******************/
sbit XJ_R = P1^0; //右邊尋跡傳感器定義
sbit XJ_Z = P1^1; //中間尋跡傳感器定義
sbit XJ_L = P1^2; //左邊尋跡傳感器定義
/************電機控制引腳定義*****************/
//sbit ENA_R = P1^2; // 右電機使能
sbit PUL_L = P2^0; // 左電機脈沖
sbit DIR_L = P2^2; // 左電機方向
sbit PUL_R = P2^3; // 右電機脈沖
sbit DIR_R = P2^4; // 右電機方向
//sbit ENA_L = P2^2; // 左電機使能
#define MotorTabNum 5
unsigned char T0_NUM;
signed char g_MotorNum = 0;
unsigned char MotorTab[6] = {6, 5, 4, 3, 2, 1};
void T0_Init();//中斷定義
void delay(xms);
void hongwai(void);
void xunji(void);
/********************************延時函數***********************************************************/
void delay(xms)
{
unsigned int x,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--);
}
/*************定時器初始化***********************************************************/
void T0_Init()
{
TMOD = 0x01;
TH0 = (65535-100)/256; // 1ms
TL0 = (65535-100)%256;
EA = 1;
ET0 = 1;
}
////延時n毫秒
//void delay_ms(unsigned int n)
//{
// unsigned int i=0,j=0;
// for(i=0;i<n;i++)
// for(j=0;j<123;j++);
//}
/*************定時器中斷************************/
void T0_time() interrupt 1
{
// TR0 = 0;
TH0 = (65535-100)/256;
TL0 = (65535-100)%256;
T0_NUM++;
if(T0_NUM >= MotorTab[g_MotorNum]) // 增加按鍵g_MotorNum++ 減小按鍵g_MotorNum--
{
T0_NUM = 0;
// PUL_R =PUL_R^0x01; // 輸出脈沖
// PUL_L =PUL_L^0x01; // 輸出脈沖
}
}
/******42步進電機運動函數*******************************
DIR_R ^= 1; //=1后退
DIR_R ^= 1;
DIR_L ^= 0; //=0前進
DIR_L ^= 0;
因為兩邊電機的安裝是一樣的,所以DIR的方向有所不同
可以根據該電機接線的方式改變電機的方向
***********************************************/
void RUN(void) //前進
{
DIR_R ^= 0; //右前進
DIR_L ^= 0; //左后退就是前進
PUL_R =PUL_R^0x01; // 輸出脈沖
PUL_L =PUL_L^0x01; // 輸出脈沖
}
void RIGHT(void)//右轉
{
DIR_L ^= 1; //右轉,就讓左邊的電機前進,右邊后退
DIR_R ^= 0; //右前進
PUL_R =PUL_R^0x01; // 輸出脈沖
PUL_L =PUL_L^0x01; // 輸出脈沖
}
void LEFT(void) //左轉
{
DIR_L ^= 0; //左后退就是前進
DIR_R ^= 1; //左轉,就讓右邊前進,左邊后退
PUL_R =PUL_R^0x01; // 輸出脈沖
PUL_L =PUL_L^0x01; // 輸出脈沖
}
void BACK(void) //后退
{
DIR_R ^= 1; //這里就和前進相反就可以了
DIR_L ^= 1;
PUL_R =PUL_R^0x01; // 輸出脈沖
PUL_L =PUL_L^0x01; // 輸出脈沖
}
void STOP(void) //停止
{
EA=0; //讓所有中斷都關閉,
PUL_R =PUL_R^0x00; // 輸出脈沖
PUL_L =PUL_L^0x00; // 輸出脈沖
}
/********************按鍵控制*********************/
//void anjian()
//{
//
//}
/********************尋跡傳感控制*********************/
void hongwai(void)
{
//有信號為0 沒有信號為1
//if(HY_R==1&&HY_Z==1&&HY_L==1)//都沒有信號就前進
if(HY_R==1&&HY_Z==1&&HY_L==1)//都沒有信號就前進
{
EA=1;
//lcd_init1(); //顯示RUN運行
DIR_R ^= 0; //右前進
DIR_L ^= 0; //左后退就是前進
PUL_R =PUL_R^0x01; // 輸出脈沖
PUL_L =PUL_L^0x01; // 輸出脈沖
TR0 = 1;
}
else
{
//有信號為0 沒有信號為1
if(HY_R==0&&HY_Z==1&&HY_L==1)//右邊有信號說明右障礙物,所以電機停止1S,然后后退1S,左電機后退,右電機轉動
{
// lcd_init2();
DIR_L ^= 1; //右轉,就讓左邊的電機前進,右邊后退
DIR_R ^= 0; //右前進
PUL_R =PUL_R^0x01; // 輸出脈沖
PUL_L =PUL_L^0x01; // 輸出脈沖
}
//有信號為0 沒有信號為1
if(HY_R==1&&HY_Z==1&&HY_L==0)//左邊有信號說明左障礙物,所以電機停止1S,然后后退1S,右電機后退,左電機轉動
{
// lcd_init3();
DIR_L ^= 0; //右轉,就讓左邊的電機前進,右邊后退
DIR_R ^= 1; //右前進
PUL_R =PUL_R^0x01; // 輸出脈沖
PUL_L =PUL_L^0x01; // 輸出脈沖
}
//有信號為0 沒有信號為1
if(HY_R==1&&HY_Z==0&&HY_L==1)//中間有信號就后退
{
// lcd_init4();
DIR_R ^= 1; //這里就和前進相反就可以了
DIR_L ^= 1;
PUL_R =PUL_R^0x01; // 輸出脈沖
PUL_L =PUL_L^0x01; // 輸出脈沖
}
//有信號為0 沒有信號為1
if(HY_R==0&&HY_Z==0&&HY_L==0)//當然全部有信號就停止
{
//lcd_init5();
EA=0;
}
}
}
/*************************尋跡傳感控制**********************/
void xunji(void)
{
//有信號為0 沒有信號為1
//if(HY_R==1&&HY_Z==1&&HY_L==1)//都沒有信號就前進
if(XJ_R==1&&XJ_Z==1&&XJ_L==1)//都沒有信號就前進
{
EA=1;
lcd_init1(); //顯示RUN運行
delay(10); // 軟件延時消抖
RUN();
TR0 = 1;
}
else
{
//有信號為0 沒有信號為1
if(XJ_R==0&&XJ_Z==1&&XJ_L==1)//右邊有信號說明右障礙物,所以電機停止1S,然后后退1S,左電機后退,右電機轉動
{
lcd_init2();
delay(10); // 軟件延時消抖
RIGHT();
}
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
42步進電機模塊化2LY.rar
(55.16 KB, 下載次數: 22)
2019-8-1 16:43 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
HeChunmu
時間:
2019-8-1 17:00
小車的 照片
作者:
asp65
時間:
2019-8-2 00:09
好用,學習藍牙的好方法。
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1