久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機PWM控制舵機由淺入深各模塊源代碼(單路與8路)
[打印本頁]
作者:
張大哈哈哈
時間:
2018-8-19 16:00
標題:
單片機PWM控制舵機由淺入深各模塊源代碼(單路與8路)
此為初學者掌握51程序控制舵機的重要程序
0.png
(7.56 KB, 下載次數: 31)
下載附件
2018-8-19 17:30 上傳
控制一個普通舵機單片機源程序如下:
/**********************************************************************
該實驗例程還是實現一個舵機在兩個角度之間擺動。0度和90度
但定時器中斷里的處理與前一節有所區別,目的是讓大家更好的
理解下一節分時復用思想產生多路PWM 。是一個過渡實驗例程。
***********************************************************************/
#include <STC15Fxxxx.H> //STC15系列單片機
void delay(uint16 time); //軟件延時函數
void Timer_init(); //定時器初始化函數
void Timer0(uint32 us); //定時器0定時函數
uint16 pwm_valu=500;
sbit pwm1=P0^0; //將舵機插到P0^0口上
void main()
{
P0M1=0;
P0M0=0XFF; //將P2口設置成強推免輸出,提高帶負載能力
Timer_init(); //定時器初始化
Timer0(31); //通過一個定時值進入定時循環
while(1)
{
pwm_valu=500; //脈寬=500us=0.5ms即0度位置
delay(1000);
pwm_valu=1500; //脈寬=1500us=1.5ms即90度位置
delay(1000); //舵機在兩個角度之間擺動
}
}
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開始工作
}
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++;
}
復制代碼
控制多個普通舵機
單片機源程序如下:
/**********************************************************************
該實驗例程是實現8個舵機在兩個角度之間擺動。0度和90度
通過該例程,讀者要學會 分時復用定時器 ,用1個定時器來產生多路PWM的思想。
***********************************************************************/
#include "STC15Fxxxx.H" //STC12C5A系列單片機
void delay(uint16 time); //軟件延時函數
void Timer_init(); //定時器初始化函數
void Timer0(uint32 us); //定時器0定時函數
uint16 pos[2][9]={ //上一節中控制一個舵機這里只需要兩個數。
{1500,1500,1500,1500,1500,1500,1500,1500,1500}, //此節擴展成8個舵機,則此處變為兩個數組。。
{500,500,500,500,500,500,500,500,500} //數組中的1~8成員代表每一個舵機的兩個位置。
};
uint16 pwm[9]={1500,1500,1500,1500,1500,1500,1500,1500,1500}; //定時器取定時值從這里取
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;
/**************************************************************************************************
函數名:main()
功能: 入口函數
作者: 許長華
時間: 2012-3-3
備注:
/***************************************************************************************************/
void main()
{
uint8 i=0;
P0M1=0; //設置P口為強推免輸出模式,下同
P0M0=0XFF;
P1M1=0;
P1M0=0XFF;
P2M1=0;
P2M0=0XFF;
P3M1=0;
P3M0=0XFF;
P4M1=0;
P4M0=0XFF;
P5M1=0;
P5M0=0XFF;
Timer_init(); //定時器初始化
Timer0(31); //通過一個定時值進入定時循環
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); //舵機在兩個角度之間擺動
}
}
/**************************************************************************************************
函數名:delay(uint16 time)
功能: 軟件延時函數
參數: time 定時值,其大小與延時長短成正比
作者: 許長華
時間: 2012-3-3
備注:
/***************************************************************************************************/
void delay(uint16 time)
{
uint16 i;
uint16 j;
for(i=0;i<2000;i++)
for(j=0;j<time;j++);
}
/**************************************************************************************************
函數名:timer_init()
功能: 定時器初始化函數
/***************************************************************************************************/
void Timer_init()
{
EA=1; //開總中斷
AUXR|=0xC0; //T0,T1工作在1T
TMOD|= 0x11; //T0工作在方式1,16位
ET0 = 1; //開定時器0中斷
}
/**************************************************************************************************
函數名:timer0(uint32 us)
功能: 定時器0定時函數
/***************************************************************************************************/
void Timer0(uint32 us)
{
uint32 valu;
valu=us*23; //工作在1T,最大定時時間2700us
valu=valu - 120;
valu=0xffff-valu; //
TH0=valu>>8;
TL0=(valu<<8)>>8;
TR0 = 1; //T0開始工作
}
/**************************************************************************************************
函數名:T0zd(void) interrupt 1
功能: 定時器0中斷函數
備注: 控制8個舵機
/***************************************************************************************************/
void T0zd(void) interrupt 1
{
static uint8 i=1;
switch(i) //
{
case 1:
{
pwm1=1;
Timer0(pwm[1]); //定時
} break;
case 2:
{
pwm1=0; //pwm1變低
Timer0(2500-pwm[1]);// 定時
} break;
case 3:
{
pwm2=1; //pwm2變高
Timer0(pwm[2]);// 定時時常為pwm[2]
} break;
case 4:
{
pwm2=0; //pwm2變低
Timer0(2500-pwm[2]);// 定時時常為pwm[2]
} break;
case 5:
{
pwm3=1; //pwm3變高
Timer0(pwm[3]);// 定時時常為pwm[3]
} break;
case 6:
{
pwm3=0; //pwm3變低
Timer0(2500-pwm[3]);// 定時
} break;
case 7:
{
pwm4=1; //pwm4變高
Timer0(pwm[4]);// 定時
} break;
case 8:
{
pwm4=0; //pwm4變低
Timer0(2500-pwm[4]);// 定時
} break;
case 9:
{
pwm5=1; //pwm5變高
Timer0(pwm[5]);// 定時
} break;
case 10:
{
pwm5=0; //pwm5變低
Timer0(2500-pwm[5]);// 定時
} break;
case 11:
{
pwm6=1; //pwm6變高
Timer0(pwm[6]);// 定時
} break;
case 12:
{
pwm6=0; //pwm6變低
Timer0(2500-pwm[6]);// 定時
} break;
case 13:
{
pwm7=1; //pwm7變高
Timer0(pwm[7]);// 定時
} break;
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
1.普通PWM舵機由淺入深各模塊代碼.rar
(309.12 KB, 下載次數: 82)
2018-8-19 15:59 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
bemc
時間:
2018-8-19 20:39
不錯 有價值的資料 有時間好好研究一下
作者:
jshyda
時間:
2018-8-20 04:11
正在學習如何控制舵的知識,謝LZ!
作者:
bbk215
時間:
2019-3-1 17:20
不錯,非常值得學習
作者:
bbk215
時間:
2019-3-1 17:21
可以的,值得學習的資料
作者:
gdatgb
時間:
2019-3-3 15:04
不錯,值得學習.謝樓主!
作者:
不三不四
時間:
2019-10-15 18:37
可以的
作者:
tonggin
時間:
2019-10-16 09:31
自學玩舵機的必要參考資料
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
久久av影院
|
99视频在线免费观看
|
国产成人网
|
天天影视色综合
|
久久久久免费精品国产小说色大师
|
精品区一区二区
|
三级在线免费观看
|
久久久九九
|
国产精品久久久久免费
|
国产成人精品一区二区在线
|
成人国产一区二区三区精品麻豆
|
亚洲伊人久久综合
|
久久久久久久一区二区三区
|
国产男女猛烈无遮掩视频免费网站
|
伊人久久综合
|
国产精品毛片
|
精品久久久久久久久久久久久久
|
久久久久久久一区二区
|
亚洲+变态+欧美+另类+精品
|
色综合久久久久
|
亚洲 欧美 另类 综合 偷拍
|
成人不卡
|
国产在线资源
|
性国产丰满麻豆videosex
|
国产精品激情小视频
|
在线观看深夜视频
|
欧美一区二区三区电影
|
色婷婷久久久亚洲一区二区三区
|
国产精品成人一区二区三区夜夜夜
|
在线91
|
欧美一级免费
|
国产精品夜夜夜一区二区三区尤
|
日韩在线视频一区二区三区
|
欧美日韩国产高清
|
岛国精品
|
a级免费观看视频
|
欧美黄色绿像
|
日韩欧美视频在线
|
91中文字幕
|
国产成人免费网站
|
在线视频中文字幕
|