亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標(biāo)題:
單片機(jī)PWM控制舵機(jī)由淺入深各模塊源代碼(單路與8路)
[打印本頁(yè)]
作者:
張大哈哈哈
時(shí)間:
2018-8-19 16:00
標(biāo)題:
單片機(jī)PWM控制舵機(jī)由淺入深各模塊源代碼(單路與8路)
此為初學(xué)者掌握51程序控制舵機(jī)的重要程序
0.png
(7.56 KB, 下載次數(shù): 31)
下載附件
2018-8-19 17:30 上傳
控制一個(gè)普通舵機(jī)單片機(jī)源程序如下:
/**********************************************************************
該實(shí)驗(yàn)例程還是實(shí)現(xiàn)一個(gè)舵機(jī)在兩個(gè)角度之間擺動(dòng)。0度和90度
但定時(shí)器中斷里的處理與前一節(jié)有所區(qū)別,目的是讓大家更好的
理解下一節(jié)分時(shí)復(fù)用思想產(chǎn)生多路PWM 。是一個(gè)過(guò)渡實(shí)驗(yàn)例程。
***********************************************************************/
#include <STC15Fxxxx.H> //STC15系列單片機(jī)
void delay(uint16 time); //軟件延時(shí)函數(shù)
void Timer_init(); //定時(shí)器初始化函數(shù)
void Timer0(uint32 us); //定時(shí)器0定時(shí)函數(shù)
uint16 pwm_valu=500;
sbit pwm1=P0^0; //將舵機(jī)插到P0^0口上
void main()
{
P0M1=0;
P0M0=0XFF; //將P2口設(shè)置成強(qiáng)推免輸出,提高帶負(fù)載能力
Timer_init(); //定時(shí)器初始化
Timer0(31); //通過(guò)一個(gè)定時(shí)值進(jìn)入定時(shí)循環(huán)
while(1)
{
pwm_valu=500; //脈寬=500us=0.5ms即0度位置
delay(1000);
pwm_valu=1500; //脈寬=1500us=1.5ms即90度位置
delay(1000); //舵機(jī)在兩個(gè)角度之間擺動(dòng)
}
}
void delay(uint16 time)
{
uint16 i;
uint16 j;
for(i=0;i<1000;i++)
for(j=0;j<time;j++);
}
void Timer_init()
{
EA=1;
AUXR|=0xC0; //T0,T1工作在1T
TMOD|= 0x11; //T0工作在方式1,16位
ET0 = 1;
}
void Timer0(uint32 us)
{
uint32 valu;
valu=0xffff-us*23; //
TH0=valu>>8;
TL0=(valu<<8)>>8;
TR0 = 1; //T0開(kāi)始工作
}
void T0zd(void) interrupt 1
{
static uint8 i=1;
switch(i) //
{
case 1:
{
pwm1=1;
Timer0(pwm_valu);//
} break;
case 2:
{
pwm1=0;// pwm1變低
Timer0(2500-pwm_valu);//
} break;
case 3:
{
Timer0(500);//
} break;
case 4:
{
Timer0(2500);//
} break;
case 5:
{
Timer0(2500);//
} break;
case 6:
{
Timer0(2500);//
} break;
case 7:
{
Timer0(2500);//
} break;
case 8:
{
Timer0(2500);//
} break;
case 9:
{
Timer0(2500);//
i=0;
} break;
default:break;
}
i++;
}
復(fù)制代碼
控制多個(gè)普通舵機(jī)
單片機(jī)源程序如下:
/**********************************************************************
該實(shí)驗(yàn)例程是實(shí)現(xiàn)8個(gè)舵機(jī)在兩個(gè)角度之間擺動(dòng)。0度和90度
通過(guò)該例程,讀者要學(xué)會(huì) 分時(shí)復(fù)用定時(shí)器 ,用1個(gè)定時(shí)器來(lái)產(chǎn)生多路PWM的思想。
***********************************************************************/
#include "STC15Fxxxx.H" //STC12C5A系列單片機(jī)
void delay(uint16 time); //軟件延時(shí)函數(shù)
void Timer_init(); //定時(shí)器初始化函數(shù)
void Timer0(uint32 us); //定時(shí)器0定時(shí)函數(shù)
uint16 pos[2][9]={ //上一節(jié)中控制一個(gè)舵機(jī)這里只需要兩個(gè)數(shù)。
{1500,1500,1500,1500,1500,1500,1500,1500,1500}, //此節(jié)擴(kuò)展成8個(gè)舵機(jī),則此處變?yōu)閮蓚(gè)數(shù)組。。
{500,500,500,500,500,500,500,500,500} //數(shù)組中的1~8成員代表每一個(gè)舵機(jī)的兩個(gè)位置。
};
uint16 pwm[9]={1500,1500,1500,1500,1500,1500,1500,1500,1500}; //定時(shí)器取定時(shí)值從這里取
sbit pwm16=P5^3;
sbit pwm15=P1^5;
sbit pwm14=P1^6;
sbit pwm13=P1^7;
sbit pwm12=P4^3;
sbit pwm11=P3^2;
sbit pwm10=P3^3;
sbit pwm9=P3^4;
sbit pwm8=P0^5;
sbit pwm7=P0^6;
sbit pwm6=P0^7;
sbit pwm5=P4^6;
sbit pwm4=P4^1;
sbit pwm3=P4^5;
sbit pwm2=P4^4;
sbit pwm1=P2^7;
/**************************************************************************************************
函數(shù)名:main()
功能: 入口函數(shù)
作者: 許長(zhǎng)華
時(shí)間: 2012-3-3
備注:
/***************************************************************************************************/
void main()
{
uint8 i=0;
P0M1=0; //設(shè)置P口為強(qiáng)推免輸出模式,下同
P0M0=0XFF;
P1M1=0;
P1M0=0XFF;
P2M1=0;
P2M0=0XFF;
P3M1=0;
P3M0=0XFF;
P4M1=0;
P4M0=0XFF;
P5M1=0;
P5M0=0XFF;
Timer_init(); //定時(shí)器初始化
Timer0(31); //通過(guò)一個(gè)定時(shí)值進(jìn)入定時(shí)循環(huán)
while(1)
{
for(i=1;i<9;i++) //pos[0]位置
pwm[i]=pos[0][i];
delay(1000);
for(i=1;i<9;i++) // pos[1]位置
pwm[i]=pos[1][i];
delay(1000); //舵機(jī)在兩個(gè)角度之間擺動(dòng)
}
}
/**************************************************************************************************
函數(shù)名:delay(uint16 time)
功能: 軟件延時(shí)函數(shù)
參數(shù): time 定時(shí)值,其大小與延時(shí)長(zhǎng)短成正比
作者: 許長(zhǎng)華
時(shí)間: 2012-3-3
備注:
/***************************************************************************************************/
void delay(uint16 time)
{
uint16 i;
uint16 j;
for(i=0;i<2000;i++)
for(j=0;j<time;j++);
}
/**************************************************************************************************
函數(shù)名:timer_init()
功能: 定時(shí)器初始化函數(shù)
/***************************************************************************************************/
void Timer_init()
{
EA=1; //開(kāi)總中斷
AUXR|=0xC0; //T0,T1工作在1T
TMOD|= 0x11; //T0工作在方式1,16位
ET0 = 1; //開(kāi)定時(shí)器0中斷
}
/**************************************************************************************************
函數(shù)名:timer0(uint32 us)
功能: 定時(shí)器0定時(shí)函數(shù)
/***************************************************************************************************/
void Timer0(uint32 us)
{
uint32 valu;
valu=us*23; //工作在1T,最大定時(shí)時(shí)間2700us
valu=valu - 120;
valu=0xffff-valu; //
TH0=valu>>8;
TL0=(valu<<8)>>8;
TR0 = 1; //T0開(kāi)始工作
}
/**************************************************************************************************
函數(shù)名:T0zd(void) interrupt 1
功能: 定時(shí)器0中斷函數(shù)
備注: 控制8個(gè)舵機(jī)
/***************************************************************************************************/
void T0zd(void) interrupt 1
{
static uint8 i=1;
switch(i) //
{
case 1:
{
pwm1=1;
Timer0(pwm[1]); //定時(shí)
} break;
case 2:
{
pwm1=0; //pwm1變低
Timer0(2500-pwm[1]);// 定時(shí)
} break;
case 3:
{
pwm2=1; //pwm2變高
Timer0(pwm[2]);// 定時(shí)時(shí)常為pwm[2]
} break;
case 4:
{
pwm2=0; //pwm2變低
Timer0(2500-pwm[2]);// 定時(shí)時(shí)常為pwm[2]
} break;
case 5:
{
pwm3=1; //pwm3變高
Timer0(pwm[3]);// 定時(shí)時(shí)常為pwm[3]
} break;
case 6:
{
pwm3=0; //pwm3變低
Timer0(2500-pwm[3]);// 定時(shí)
} break;
case 7:
{
pwm4=1; //pwm4變高
Timer0(pwm[4]);// 定時(shí)
} break;
case 8:
{
pwm4=0; //pwm4變低
Timer0(2500-pwm[4]);// 定時(shí)
} break;
case 9:
{
pwm5=1; //pwm5變高
Timer0(pwm[5]);// 定時(shí)
} break;
case 10:
{
pwm5=0; //pwm5變低
Timer0(2500-pwm[5]);// 定時(shí)
} break;
case 11:
{
pwm6=1; //pwm6變高
Timer0(pwm[6]);// 定時(shí)
} break;
case 12:
{
pwm6=0; //pwm6變低
Timer0(2500-pwm[6]);// 定時(shí)
} break;
case 13:
{
pwm7=1; //pwm7變高
Timer0(pwm[7]);// 定時(shí)
} break;
……………………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
1.普通PWM舵機(jī)由淺入深各模塊代碼.rar
(309.12 KB, 下載次數(shù): 82)
2018-8-19 15:59 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
bemc
時(shí)間:
2018-8-19 20:39
不錯(cuò) 有價(jià)值的資料 有時(shí)間好好研究一下
作者:
jshyda
時(shí)間:
2018-8-20 04:11
正在學(xué)習(xí)如何控制舵的知識(shí),謝LZ!
作者:
bbk215
時(shí)間:
2019-3-1 17:20
不錯(cuò),非常值得學(xué)習(xí)
作者:
bbk215
時(shí)間:
2019-3-1 17:21
可以的,值得學(xué)習(xí)的資料
作者:
gdatgb
時(shí)間:
2019-3-3 15:04
不錯(cuò),值得學(xué)習(xí).謝樓主!
作者:
不三不四
時(shí)間:
2019-10-15 18:37
可以的
作者:
tonggin
時(shí)間:
2019-10-16 09:31
自學(xué)玩舵機(jī)的必要參考資料
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1