新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > XS128單片機(jī)程序:智能小車舵機(jī)的控制

XS128單片機(jī)程序:智能小車舵機(jī)的控制

作者: 時(shí)間:2016-12-01 來(lái)源:網(wǎng)絡(luò) 收藏
/***********************************************/

//This is our control of the steering gear(舵機(jī))
//Next we will use it by PI control;
//Date :2013/5/15
/***********************************************/
#include /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */

本文引用地址:http://butianyuan.cn/article/201612/324122.htm

/*2.************所有的延時(shí)程序**********************/
/******************N倍0.75us 延時(shí)**********
函 數(shù):delay_us()
功 能:約0.75 us延遲
參 數(shù):n_us
說(shuō) 明:本函數(shù)的總線時(shí)鐘為16 MHz
******************************************/
void delay_us(uint n_us)
{
uint loop_i;
for (loop_i=0; loop_i< n_us; loop_i++)
{;}
}
/****************************************
函 數(shù):delay_ms()
功 能:約1 ms延遲
說(shuō) 明:本函數(shù)的總線時(shí)鐘為16 MHz.
*****************************************/
void delay_ms(uint n_ms)
{
uint loop_i;
for (loop_i=0; loop_i< n_ms; loop_i++)
{
delay_us(1335);
}//總線時(shí)鐘為16 MHz時(shí)
} // 延遲1335×12個(gè)機(jī)器周期 1 ms
/***************************************
函 數(shù):delay_s()
功 能:約1 s延遲
說(shuō) 明:本函數(shù)的總線時(shí)鐘為16MHz。
***************************************/
void delay_s(uint n_s)
{
uint loop_i;
for (loop_i=0; loop_i< n_s; loop_i++)
{ delay_ms(1000); }
}

/************************************/
//函數(shù):PWM 波初始化程序
//功能:PWM 波初始化程序完成了電動(dòng)機(jī)和舵機(jī)的控制
// 所有通道均采用級(jí)聯(lián)的方式
// 0-1通道級(jí)聯(lián)控制舵機(jī)
// 2-3通道級(jí)聯(lián)控制電機(jī)前進(jìn)
// 6-7通道級(jí)聯(lián)控制電機(jī)后退
//說(shuō)明; 舵機(jī)控制的
//時(shí)間:2013、5、15
/************************************/
void PWM_init (void) {
PWME =0x00; //禁止PWM模塊
PWMCLK =0xFF; //時(shí)鐘選擇寄存器SA SB
PWMPRCLK =0x33; //選擇時(shí)鐘A預(yù)分頻因子8/1000000Hz
PWMSCLA =5; //SA比例因子 2.5 /100,000Hz
PWMSCLB =250; //SB比例因子 250 /2000 Hz
PWMCTL =0xF0; //所有的都級(jí)聯(lián)
PWMPOL =0xFF; //極性控制
PWMCAE =0x00; //對(duì)齊方式
PWMPER01 =2000; //周期寄存器 定時(shí)20ms
PWMPER23 =
PWMDTY01 = 0; // 設(shè)置PWM通道初始化占空比
PWME =0xFF; //使能

}
void main(void) {

PWM_init ();
while(1){
PWMDTY01=150;
delay_ms(500);
PWMDTY01=155;
delay_ms(500);
PWMDTY01=160;
delay_ms(500);
PWMDTY01=165;
delay_ms(500);
PWMDTY01=170;
delay_ms(500);
PWMDTY01=175;
delay_ms(500);
PWMDTY01=180;
delay_ms(500);
PWMDTY01=185;
delay_ms(500);
PWMDTY01=190;
delay_ms(500);
PWMDTY01=150;
delay_ms(500);
PWMDTY01=145;
delay_ms(500);
PWMDTY01=140;
delay_ms(500);
PWMDTY01=135;
delay_ms(500);
PWMDTY01=130;
delay_ms(500);
PWMDTY01=125;
delay_ms(500);
PWMDTY01=120;
delay_ms(500);
PWMDTY01=115;
delay_ms(500);
PWMDTY01=110;
delay_ms(500);
delay_ms(500);
}

}



評(píng)論


技術(shù)專區(qū)

關(guān)閉