久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
利用舵機制作簡單機械臂
[打印本頁]
作者:
tyftyh
時間:
2017-12-13 17:03
標題:
利用舵機制作簡單機械臂
**項目名稱:利用舵機制作簡單機械臂
**編寫時間:2017.07.11
**使用芯片:stc12c2052ad
**時鐘頻率:使用外部晶振頻率12MHz
**簡要說明:本次制作的機械臂共用了3個舵機,可以控制機械臂上下、左右移動和抓放動作。
#include <stc12c2052ad.h>
#include <intrins.h>
typedef unsigned char u8;
typedef unsigned short int u16;
sbit CTRL_u_d = P3^3; //控制上、下方向的舵機控制端口
sbit CTRL_l_r = P3^4; //控制左、右方向的舵機控制端口
sbit CTRL_g = P3^5; //控制抓起的舵機控制端口
void delay_20ms(u16 x);
u8 KeyScan();
u16 TIME = 20000; //PWM周期時間(單位us)
u16 Min = 700; //高電平最小持續時間
u16 Max = 2300; //高電平最大持續時間
u8 Degree = 50; //單位時間寬度(最小是舵機死區設定大約10us)
u16 Times = 0; //TIME/Degree(PWM周期除于單位時間寬度)
//高電平持續時間除于單位時間寬度
u16 cTimes_u_d = 0;
u8 cTimes_l_r = 0;
u8 cTimes_g = 0;
u8 Min_cTimes = 0;
u8 Max_cTimes = 0;
u8 R_TH0 = 0, R_TL0 = 0; //定時器0計數重載值
u8 KeyValue = 0; //1-上、2-左、3-抓、4-右、5-下
void main()
{
Times = TIME/Degree;
cTimes_u_d = 1500/Degree;
cTimes_l_r = 1500/Degree;
cTimes_g = Min_cTimes;
Min_cTimes = Min/Degree;
Max_cTimes = Max/Degree;
P1 = 0xff;
CTRL_u_d = 0;
CTRL_l_r = 0;
CTRL_g = 0;
R_TL0 = 65536 - Degree;
R_TH0 = (65536 - Degree) >> 8;
//設置定時器0
TMOD = 0x01; //16位計數
TL0 = R_TL0;
TH0 = R_TH0;
ET0 = 1; //定時器0中斷開關打開
TR0 = 1; //定時器0計數開始
EA = 1; //中斷總開關打開
while(1)
{
u8 temp = 0;
KeyValue = KeyScan();
switch(KeyValue)
{
case 1: //向上移動
cTimes_u_d = --cTimes_u_d < Min_cTimes ? Min_cTimes : cTimes_u_d;
break;
case 2: //向左移動
cTimes_l_r = --cTimes_l_r < Min_cTimes ? Min_cTimes : cTimes_l_r;
break;
case 3: //抓、放動作
if(cTimes_g == Min_cTimes)
cTimes_g = Max_cTimes;
else
cTimes_g = Min_cTimes;
delay_20ms(15);
break;
case 4: //向右移動
cTimes_l_r = ++cTimes_l_r > Max_cTimes ? Max_cTimes : cTimes_l_r;
break;
case 5: //向下移動
cTimes_u_d = ++cTimes_u_d > Max_cTimes ? Max_cTimes : cTimes_u_d;
break;
}
}
}
u8 KeyScan()
{
u8 key = 0;
if(P1 != 0xff)
{
delay_20ms(2);
if(P1 != 0xff)
{
u8 temp = P1;
key = 1;
while(temp & 0x01)
{
temp = temp >> 1;
key++;
}
}
}
return key;
}
void Delay20ms() //@12.000MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 1;
j = 234;
k = 113;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void delay_20ms(u16 x)
{
while(x--) Delay20ms();
}
//定時器0中斷函數 每次進入中斷間隔時間為Degree(單位時間寬度)
void timer0() interrupt 1 using 1
{
static u16 times = 0;
TL0 = R_TL0;
TH0 = R_TH0;
//每次只控制一個舵機移動
if(times == 0)
{
switch(KeyValue)
{
case 1:
case 5:
CTRL_u_d = 1;
CTRL_l_r = 0;
CTRL_g = 0;
break;
case 2:
case 4:
CTRL_u_d = 0;
CTRL_l_r = 1;
CTRL_g = 0;
break;
case 3:
CTRL_u_d = 0;
CTRL_l_r = 0;
CTRL_g = 1;
break;
}
}
else
{
switch(KeyValue)
{
case 1:
case 5:
if(times >= cTimes_u_d)
{
CTRL_u_d = 0;
}
break;
case 2:
case 4:
if(times >= cTimes_l_r)
{
CTRL_l_r = 0;
}
break;
case 3:
if(times >= cTimes_g)
{
CTRL_g = 0;
}
break;
}
}
times = ++times >= Times ? 0 : times;
}
作者:
小身體大智慧
時間:
2018-3-9 23:24
這個單用51單片機就可以實現嗎?
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
亚洲1区
|
亚洲 欧美 日韩 在线
|
国产精品日韩
|
免费观看黄网站
|
欧美一区二区三区四区视频
|
亚洲成人精品免费
|
欧美激情综合五月色丁香小说
|
在线视频 中文字幕
|
理论片午午伦夜理片影院
|
91精品国产一二三
|
97伦理最新伦理
|
婷婷在线视频
|
日韩一区二区三区视频在线观看
|
欧美激情视频一区二区三区在线播放
|
亚洲精品一区在线
|
黄色精品
|
天天操夜夜拍
|
久久天堂
|
欧美成人手机在线
|
亚洲精品在线免费看
|
亚洲a视频
|
欧美视频在线一区
|
中文字幕亚洲视频
|
成人二区
|
欧美精品v国产精品v日韩精品
|
日韩美女一区二区三区在线观看
|
在线国产一区
|
国产精品区二区三区日本
|
亚洲免费在线观看
|
久久久久久久电影
|
精品久久久久久久人人人人传媒
|
成人免费在线播放视频
|
特黄毛片
|
成人无遮挡毛片免费看
|
中文字幕精品视频
|
国产精品久久久久久久久久久久久
|
在线观看特色大片免费网站
|
欧美日韩专区
|
成人精品福利
|
高清免费在线
|
亚洲国产aⅴ成人精品无吗 国产精品永久在线观看
|