资讯详情

XS128单片机程序:智能小车舵机的控制

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

/*2.************所有的延时程序**********************/ /******************N倍0.75us 延时********** 函 数:delay_us() 功 能:约0.75 us延迟 参 数:n_us 说 明:本函数的总线时钟为16 MHz ******************************************/ void delay_us(uint n_us) { uint loop_i; for (loop_i=0; loop_i< n_us; loop_i++) {;} } /**************************************** 函 数:delay_ms() 功 能:约1 ms延迟 说 明:本函数的总线时钟为16 MHz. *****************************************/ void delay_ms(uint n_ms) { uint loop_i; for (loop_i=0; loop_i< n_ms; loop_i++) { delay_us(1335); }//总线时钟为16 MHz时 } // 延迟1335×12个机器周期 1 ms /*************************************** 函 数:delay_s() 功 能:约1 s延迟 说 明:本函数的总线时钟为16MHz。 ***************************************/ void delay_s(uint n_s) { uint loop_i; for (loop_i=0; loop_i< n_s; loop_i++) { delay_ms(1000); } }

/************************************/ //函数:PWM 波初始化程序 //功能:PWM 波初始化程序完成了电动机和舵机的控制 // 所有通道均采用级联的方式 // 0-1通道级联控制舵机 // 2-3通道级联控制前进 // 6-7通道级联控制电机后退 //说明; 舵机控制的 //时间:2013、5、15 /************************************/ void PWM_init (void) { PWME =0x00; //禁止PWM模块 PWMCLK =0xFF; //时钟选择寄存器SA SB PWMPRCLK =0x33; //选择时钟A预分频因子8/1000000Hz PWMSCLA =5; //SA比例因子 2.5 /100,000Hz PWMSCLB =250; //SB比例因子 250 /2000 Hz PWMCTL =0xF0; //所有的都级联 PWMPOL =0xFF; //极性控制 PWMCAE =0x00; //对齐方式 PWMPER01 =2000; //周期寄存器 定时20ms PWMPER23 = PWMDTY01 = 0; // 设置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); } }

-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台