标题:
51单片机控制一路舵机控制90度来回 源程序
[打印本页]
作者:
jfy
时间:
2017-4-16 17:01
标题:
51单片机控制一路舵机控制90度来回 源程序
分享一个用51单片机实现的一路舵机控制90度来回控制程序
0.png
(72.27 KB, 下载次数: 115)
下载附件
2017-4-16 19:26 上传
单片机源程序:
#include "STC12C5620AD.H" //STC89c52系列单片机
sbit pwm =P1^3 ; //PWM信号输出
sbit sjg =P1^2 ; //三极管,继电器 ,电磁铁
sbit cxyg =P1^0 ; //场效应管,电磁吸盘
unsigned char ci; //0.1ms次数ci,总行程300度时,11次代表90度,5次代表0度
unsigned char cishu; //进入中断次数
/*******************延时函数***********************/
void delay10ms(void) //误差 -0.000000000002us
{
unsigned char a,b;
for(b=151;b>0;b--)
for(a=29;a>0;a--);
}
void delay100ms(void) //误差 -0.000000000021us
{
unsigned char a,b,c;
for(c=35;c>0;c--)
for(b=10;b>0;b--)
for(a=130;a>0;a--);
}
void delay1s(void) //误差 -0.00000000024us
{
unsigned char a,b,c;
for(c=95;c>0;c--)
for(b=26;b>0;b--)
for(a=185;a>0;a--);
}
/********************定时器0初始化************************/
void Time0_Init() //定时器初始化
{
TMOD = 0x01; //定时器0工作在方式1
IE = 0x82; //中断允许寄存器
TH0 = 0xff;
TL0 = 0xa3; //11.0592MZ晶振,0.1ms
TR0=1; //定时器开始
}
/***************定时器中断函数*****************/
void Time0_Int() interrupt 1 //中断程序
{
TH0 = 0xff; //重新赋值
TL0 = 0xa3;
cishu++;
if(cishu<ci)
{
pwm=1;
}
else if(ci<cishu<200)
{
pwm=0;
}
cishu=cishu%200;
}
/*****************主函数*******************/
void main()
{
cishu=0;
ci=5;
pwm=0;
cxyg=0;//电磁吸盘不工作
sjg=1; //继电器不工作
Time0_Init();
ci=5; //舵机归零
delay1s();delay1s();delay1s();
cxyg=0; //电磁吸盘不工作
sjg=1; //继电器不工作
delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();//延时1s时间,舵机归零回正
delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();
while(1)
{
ci=13; //舵机转过90度
delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();
delay1s();//延时1s时间,舵机转90度
cxyg=1; //电磁吸盘工作
sjg=0; //继电器工作,电磁铁得电
delay1s();//延时1s时间,将工件吸起来
cxyg=1; //电磁吸盘工作
sjg=1; //继电器不工作,电磁铁失电
delay1s();delay1s();//延时2s,用来拍照
delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();
ci=5; //舵机归零,在顶上
delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();
cxyg=1; //电磁吸盘工作
sjg=1; //继电器不工作
delay1s();delay1s();delay1s();//延时3s时间,拍照
delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();
ci=13; //舵机转过90度 ,低端
delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();
delay1s();//延时1s时间,舵机转90度
cxyg=1; //电磁吸盘工作
sjg=0; //继电器工作,电磁铁得电
delay1s();delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();delay1s();
delay1s();delay1s();delay1s();delay1s();
//延时1s时间,将工件吸起来
cxyg=0; //电磁吸盘不工作
delay100ms();
sjg=1; //继电器不工作,电磁铁失电
delay1s();delay1s();delay1s();//延时
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
下载:
51一路舵机控制90度来回1.zip
(15.55 KB, 下载次数: 165)
2017-4-16 17:00 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
928115486
时间:
2018-3-25 23:07
我想要黑笔
作者:
c51大神
时间:
2018-4-23 17:09
楼主教一下呗
作者:
Becky5555
时间:
2018-4-26 15:36
楼主可否私教,没有黑币啊
作者:
1046728699
时间:
2018-4-30 08:18
很好很好很好 很好
作者:
49198198198
时间:
2018-11-16 16:08
楼主 你有没有 180 270的代码
作者:
快乐眼泪
时间:
2018-11-16 16:36
谢谢分享!正在学习!
作者:
知了
时间:
2018-11-16 17:03
不错的哦,程序
作者:
asd6605
时间:
2019-4-17 11:06
厉害了
作者:
灿缘LV
时间:
2019-5-11 04:01
很棒的程序
作者:
灿缘LV
时间:
2019-5-11 04:02
不错,用得到
作者:
2592532754
时间:
2019-5-19 11:10
内容很详细 值得一观
作者:
张海龙05288
时间:
2019-8-6 22:55
51单片机可以直接驱动舵机转动吗??
作者:
lyhot
时间:
2019-8-7 14:05
不错,用得到
作者:
欲心宇
时间:
2019-11-30 00:09
非常好的程序
作者:
H200311
时间:
2020-11-20 20:42
不错,很有用
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1