找回密码
 注册
关于网站域名变更的通知
查看: 1378|回复: 9
打印 上一主题 下一主题

51单片机控制一路舵机控制90度来回 源程序

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-8 10:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
51单片机控制一路舵机控制90度来回 源程序: K# G' `# D" G4 j
/ T" ?4 O* A$ p! s8 J
单片机源程序:
6 m/ |) Y% M6 c# z' S#include "STC12C5620AD.H"        //STC89c52系列单片机
& Y' S' H; Z! K% b4 e. fsbit pwm =P1^3 ;          //PWM信号输出
' {8 H6 ^* I1 Ksbit sjg =P1^2 ;                  //三极管,继电器 ,电磁铁9 ^+ c; X; G1 X! {
sbit cxyg =P1^0 ;                  //场效应管,电磁吸盘
/ ~( C9 T* b! \. \+ Gunsigned char ci;        //0.1ms次数ci,总行程300度时,11次代表90度,5次代表0度! s; D3 d2 M5 R, X0 J7 f4 ?' _
unsigned char cishu;           //进入中断次数- m, Y1 G  V/ [3 q
/*******************延时函数***********************/
( K/ M: m  B" ovoid delay10ms(void) //误差 -0.000000000002us
5 V% t5 k! y+ H: k. H% S$ l
7 Y/ X/ t6 Z4 m5 W$ G5 f3 B! h' V{
* Y. B" f+ K. @) N& ^1 m5 }# Munsigned char a,b; $ \$ U6 a: \  N- b( ^% g6 m
for(b=151;b>0;b--)
3 D& K) Z9 F% a+ |/ s7 G1 H# B& A) q
) B4 T( [0 w) f+ Q7 W for(a=29;a>0;a--); % J7 `1 K. _9 O5 J4 i' r
}
2 P& ?- @7 S# N) N  L  b3 \# A
  Y* {% {* @8 T. j* ivoid delay100ms(void) //误差 -0.000000000021us % q7 R4 o, k' Q3 l+ c+ W3 v
0 O+ Y* q: C$ J
{ ) e* r3 j. c! m  _% K
unsigned char a,b,c;
' b& C) U0 x. G" kfor(c=35;c>0;c--)
# g/ |, I7 ~$ _+ L3 I. ]4 X
, g' V/ s! F4 f2 Z! O1 X for(b=10;b>0;b--)
# ]1 H8 G6 b6 {5 u! D% Wfor(a=130;a>0;a--);   z$ U& o# m5 L! p
}
4 r- J, o7 r5 ]/ i/ x1 Z! N  e8 s, p! s4 h% Q$ t. p- x4 t% v) [5 c5 R
void delay1s(void) //误差 -0.00000000024us
. i6 G; x2 E. M+ d. R" W) V1 }8 j5 Z5 [) K) _
{: t8 I0 v& `5 o
unsigned char a,b,c;- N' ]+ e. q% i: x
4 W0 v: r, ~3 }3 O" P
for(c=95;c>0;c--)2 J- I# h8 m2 l& \" Y0 K9 x4 X% ^
( {) q( b7 r' ]3 Z7 n
for(b=26;b>0;b--)0 [8 {# k8 `. L& U$ B* X, ~4 u

4 p% i9 {1 @$ [+ ^# c% ?% \for(a=185;a>0;a--);
% y% L0 a& E3 o( k% ]' w5 `6 ^5 |: F& G
}
1 t: P: i0 b1 I& W' l; d, t. _# N3 P3 w  Z$ _
/********************定时器0初始化************************/; m( }/ W4 J$ r" V4 T1 N8 {
void Time0_Init()            //定时器初始化$ R9 v2 @8 r' S+ c2 X. A
{; M& C1 R' B) L6 e2 |, @/ a
TMOD = 0x01;             //定时器0工作在方式1    , w" u1 ^7 |6 C
IE  = 0x82;                                 //中断允许寄存器
' F+ V0 J+ U/ k* k! \8 fTH0  = 0xff;
  n3 x/ M! o$ `9 ?TL0  = 0xa3;     //11.0592MZ晶振,0.1ms( e# p+ u1 q! E' y; |
TR0=1;                   //定时器开始% G7 e* s, |/ i) A- ~- g' b
}* |7 C0 }/ W) }( X2 U4 o1 R/ d
/***************定时器中断函数*****************/
2 U: G* N6 J8 n. rvoid Time0_Int() interrupt 1 //中断程序
4 X) u5 n9 X- S+ m& ^4 Q{
. R1 m/ ?% J. J$ b: _; f: PTH0  = 0xff;             //重新赋值
- C$ P+ q( v4 O9 m$ h/ x4 |TL0  = 0xa3;0 Z( q7 W, I& n5 y( X0 o
   cishu++;* e+ {  l3 v# Z& O- q( n
if(cishu<ci)6 K- ^- Z6 v' k, m* Z
  {8 G$ P& [. v$ p
  pwm=1;
5 V3 G! T2 G+ o# O  }
/ O2 B( l: ?# @- s else if(ci<cishu<200)
9 m' h- \7 ~* F$ C' ]  {% d: B* z) B; S/ R' {
  pwm=0;
' ?3 P. I7 _! N  }9 `* |0 M4 K* K8 f- x$ _1 w
  cishu=cishu%200;
1 t/ @6 ^) }; Q5 R# y}1 |& p/ M: F0 z# L2 B: u
/*****************主函数*******************/* y* v+ W# d- Q) P
void main()4 ]$ X' ?& ]8 v2 f" Q
{( Z( X: f0 T+ Y' u
cishu=0;
6 B! p8 U: Y5 _6 B/ ?* u) yci=5;$ i  b  v! Q1 e& [- \0 X
pwm=0;( Y' i, Q) A9 E4 M- Q" w7 k0 h( H
cxyg=0;//电磁吸盘不工作
; \; m2 ~7 ~) K. Rsjg=1;         //继电器不工作
' o; k% s1 B( N4 [Time0_Init();
! E: A8 p% h+ V& q, @, T7 e+ h- G% u  I: }3 x: S2 B
   ci=5;           //舵机归零+ g0 K! G( g9 @
   delay1s();delay1s();delay1s();# ^( k8 `: C% R( d& e3 |# u
   cxyg=0; //电磁吸盘不工作0 j! r2 X$ R& s2 j
   sjg=1;  //继电器不工作, B) Q$ \5 T+ c; Q8 M" F& {
   delay1s();delay1s();delay1s();
6 f  z% x# Y$ O  k   delay1s();delay1s();delay1s();//延时1s时间,舵机归零回正
# \& c8 R/ R# h' E6 E' J   delay1s();delay1s();delay1s();
- v( o- |2 u2 w! Z" d- M   delay1s();delay1s();delay1s();
4 ~" S) z" t: L8 a2 U   delay1s();delay1s();delay1s();8 N/ o" ?, K5 x% _( t# O
   delay1s();delay1s();delay1s();            
% X* _6 F! E* l6 B* H2 c* U; s# c* Pwhile(1)
7 ]& x/ V8 F) d: v5 N! ?8 @  {   2 D8 w* q+ V, ?* P
   ci=13;   //舵机转过90度4 d  q- J! I. L$ v
   delay1s();delay1s();delay1s();
# i& X% Z( o0 p, p2 w1 O3 ^9 V7 j   delay1s();delay1s();delay1s();
6 r; E- c8 P9 s! x$ z   delay1s();delay1s();delay1s();- _  m8 k. c0 l( G1 f  ^* g& y
   delay1s();delay1s();delay1s();
2 L/ ]. Y0 P) T0 z* k0 M   delay1s();//延时1s时间,舵机转90度( K8 L9 R  e" k
   cxyg=1; //电磁吸盘工作
: E0 x: _; [- @1 i, J   sjg=0;  //继电器工作,电磁铁得电0 G4 P/ q3 a2 s
   delay1s();//延时1s时间,将工件吸起来0 c) v& R  v5 i
   cxyg=1; //电磁吸盘工作" G6 G3 i+ B% p
   sjg=1;  //继电器不工作,电磁铁失电
# x/ t; ~- q2 c" o& Y# I   delay1s();delay1s();//延时2s,用来拍照
+ ~/ v  A2 c$ t  F6 R# W   delay1s();delay1s();delay1s();& A& g/ O4 p' [( K9 P9 |/ r
   delay1s();delay1s();delay1s();7 C: l' J& W) S$ X( |1 U4 ~/ E( C
   delay1s();delay1s();delay1s();
+ t! B9 V4 M% ~& E8 |  k6 E   delay1s();delay1s();delay1s();3 N) O, Z/ A2 V& y
   delay1s();delay1s();delay1s();
6 A$ j5 q- ^1 A/ k/ E. j- }   delay1s();delay1s();delay1s();6 }. R" g, z2 f; o/ |
$ K% s0 h- o1 B! ~% H3 j6 ?+ p
   ci=5;           //舵机归零,在顶上- g, ~( C6 L7 M9 |
   delay1s();delay1s();delay1s();/ ?9 D3 E, o7 ]7 ?* G
   delay1s();delay1s();delay1s();
1 C. w" Y- ~! ]( Y   cxyg=1; //电磁吸盘工作  q8 a) t9 J/ o4 Y" t4 T7 i! a& e% h
   sjg=1;  //继电器不工作9 J& e( f, c1 ~+ O  E. S0 S
   delay1s();delay1s();delay1s();//延时3s时间,拍照8 h$ J; F3 U7 P; q% C
   delay1s();delay1s();delay1s();2 A" ~5 s" M+ R
   delay1s();delay1s();delay1s();
8 c2 t: }5 B/ ]" B5 N$ q! b9 b   delay1s();delay1s();delay1s();
# n9 _  b# E  }7 i8 G   delay1s();delay1s();delay1s();9 E. Q( ^  _7 ~) L1 u3 ^
   delay1s();delay1s();delay1s();
" `* [! T- X+ p5 }- j; w   delay1s();delay1s();delay1s();
' F& O5 P3 e9 [/ [* |0 \. u
- z/ w3 c/ R: q0 ?  M   ci=13;   //舵机转过90度 ,低端" M) b/ h( t3 [& \3 Y+ {0 d6 c7 e9 j
   delay1s();delay1s();delay1s();0 R- p" Z2 n. S4 b, b* |
   delay1s();delay1s();delay1s();7 L. ?1 G1 ?5 \
   delay1s();//延时1s时间,舵机转90度
& i$ _1 b1 z. i+ H: p8 E1 G   cxyg=1; //电磁吸盘工作; F! d4 \. u9 W0 n  A
   sjg=0;  //继电器工作,电磁铁得电/ @# x  R1 P  L; ?( X
   delay1s();delay1s();delay1s();delay1s();  Y0 D& ]* Y% i% K" M
   delay1s();delay1s();delay1s();delay1s();
2 K( H1 j; w3 ]& l  I/ |2 I   delay1s();delay1s();delay1s();delay1s();
* ?! k" r3 k4 M. @   delay1s();delay1s();delay1s();delay1s();
0 _5 H' x" c$ E   delay1s();delay1s();delay1s();delay1s();
" }3 H% l* s: v2 v. G   delay1s();delay1s();delay1s();delay1s();
& V: _9 B7 ?3 ?: k! J8 i   //延时1s时间,将工件吸起来% I2 w; T, Y/ l- e3 ~! G
   cxyg=0; //电磁吸盘不工作
) _+ {/ T4 K3 Q( c5 n$ S0 B   delay100ms();
! c/ z: ^9 A& u- w! o   sjg=1;  //继电器不工作,电磁铁失电+ e" r1 X- e* G8 k* ~$ g
   delay1s();delay1s();delay1s();//延时
) v6 ^+ |; {# J5 X0 J
% d9 D# ?& R5 v; r: F…………限于本文篇幅 余下代码请从论坛下载附件…………
1 z) h! b9 I2 S, E2 `; V/ N' k! p1 C# g* l) Y
游客,如果您要查看本帖隐藏内容请回复

该用户从未签到

4#
发表于 2019-2-1 18:00 | 只看该作者
看看楼主的代码

该用户从未签到

6#
发表于 2019-10-15 01:20 | 只看该作者
不知道我会不会用' k$ a0 F" p/ g

该用户从未签到

7#
发表于 2020-4-9 10:05 | 只看该作者
666666666666666666666666666666 S; L5 {1 V+ j7 _3 {

该用户从未签到

8#
发表于 2020-4-9 10:06 | 只看该作者
真棒11111111
) ]4 H* F: |' P" `

该用户从未签到

9#
发表于 2020-4-9 10:27 | 只看该作者
根本不行,不能实现舵机转角度  P- }% d7 ]4 K- |$ _; q' S

该用户从未签到

10#
发表于 2020-5-19 09:31 | 只看该作者
看看楼主的代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-12 07:16 , Processed in 0.125000 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表