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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
51单片机控制一路舵机控制90度来回 源程序: ?1 `; E+ w' C8 s2 \' u, h
- G; i# y* K0 M; ~, x9 o
单片机源程序:* x! a& w3 \/ f  X- [9 c
#include "STC12C5620AD.H"        //STC89c52系列单片机) P  t. m& j$ u) `
sbit pwm =P1^3 ;          //PWM信号输出
1 }$ e: B, S' C( T* s; Z* Bsbit sjg =P1^2 ;                  //三极管,继电器 ,电磁铁5 g+ C: P# \; x5 z) Y3 T/ d; @2 s& i# L
sbit cxyg =P1^0 ;                  //场效应管,电磁吸盘) c0 L. d! U* X7 h" q$ Z% }! c$ g
unsigned char ci;        //0.1ms次数ci,总行程300度时,11次代表90度,5次代表0度% i& G# \$ X7 q9 [9 L) n9 E
unsigned char cishu;           //进入中断次数1 O3 c0 ~/ m# U& t6 D5 Y% c4 e8 P  s
/*******************延时函数***********************/0 d9 e- G; X/ q& [' w
void delay10ms(void) //误差 -0.000000000002us
/ v5 V8 e* q) R- l. U/ }: _
: Z  e9 t! k8 c0 \: q+ S8 n{ . ^9 @% l5 @' A' w5 u
unsigned char a,b;
+ a; U* e. r7 j3 J2 f/ Q9 Z- lfor(b=151;b>0;b--) / b! o$ l1 B# E9 y' ]
/ ^5 ]# V$ B# j+ r
for(a=29;a>0;a--); ( n  Y8 X' ~. i, I# Q
}
; [2 B4 A, \6 x4 ^2 @- ^% w4 c  `0 a% F
void delay100ms(void) //误差 -0.000000000021us 6 I% O+ f$ a: ?( P

' f6 M6 _5 [3 Q( q# j3 V' U* C2 j  L{
0 J6 @+ p, I. j3 I3 O" cunsigned char a,b,c; " r5 b$ W' E1 F% O( p* U: F2 V4 ?: j
for(c=35;c>0;c--) + W# L4 ]4 k9 l" v% F/ q* ?& M1 V
$ ]3 F6 f; d' O
for(b=10;b>0;b--) , i+ i0 `' I5 r
for(a=130;a>0;a--);
4 m  s$ U) t) f" I' d} / `6 L- i+ H3 s
  R& ]- e$ Q4 V) g! f
void delay1s(void) //误差 -0.00000000024us
9 d- w" j- ]8 M2 r3 ~; f
! A2 W' [, J, E- H/ r{
! n& w, o0 `5 [: d. i0 [unsigned char a,b,c;  H5 S# Z9 e* \: K" \

. R- ]. @% E7 h# [8 Gfor(c=95;c>0;c--)
2 l4 N) U+ r$ t: p. Y& ]6 L( {0 p/ b+ ?  w; L
for(b=26;b>0;b--)
9 R1 D; i4 d  S6 \/ b$ I0 P8 u3 I/ m" x; d; w+ y( X
for(a=185;a>0;a--);; D( A$ M( {. k% O4 G' |
5 Q9 [0 R( I  ^6 z9 k9 v
}$ I) p/ S3 q) ~
- a$ W- j; c/ C( M" Y2 n1 M3 _$ Q
/********************定时器0初始化************************/  o- T2 `5 O+ v1 Z
void Time0_Init()            //定时器初始化
# N3 k! z7 E  l/ l. E* I7 B; P{, p( I( a9 Q$ K) I$ K7 |: |, {/ |5 a
TMOD = 0x01;             //定时器0工作在方式1    & Z! S( m/ N4 r2 g3 `
IE  = 0x82;                                 //中断允许寄存器
% A. A+ F# R# K9 v& o9 STH0  = 0xff;
! X8 _$ i6 R. HTL0  = 0xa3;     //11.0592MZ晶振,0.1ms8 J2 B$ w5 h' [1 o1 x/ Y
TR0=1;                   //定时器开始: V; X9 \! R+ @. W5 }
}
% i+ @- L" u0 K8 Z: x1 e) c, p/***************定时器中断函数*****************/
8 e6 X" u2 |+ K) F" Zvoid Time0_Int() interrupt 1 //中断程序
( S8 @1 x# I2 _" [$ l{
- Y1 ^9 T0 [! D+ b( Z! eTH0  = 0xff;             //重新赋值
7 P$ U! H0 w4 A8 Q  \9 C) S! ]TL0  = 0xa3;/ q  t! d# Y4 ^% S0 p3 ^
   cishu++;* M/ |: c* E! {6 Z1 Q
if(cishu<ci)
9 R2 k6 Q; H/ a  {0 f/ {7 |: f5 @0 y0 z5 u) ?2 k" z+ Q, d
  pwm=1;$ C7 l# b; ]- z! ]1 _
  }
7 x$ a! t5 y4 J( s. I2 @% B else if(ci<cishu<200)
2 o8 M( s0 O# C5 f8 s  {4 u8 m) \2 }6 ~2 N: d
  pwm=0;/ i7 t' u! ?& Q! n
  }
1 N# g& a  G! G0 g' ?# ?  cishu=cishu%200;5 {* H2 b& ~( D+ G
}
  N. i1 ]: x# S- c/*****************主函数*******************/9 Y% a" w  h# |8 Y7 C
void main()9 ^, r1 J9 q  t1 v* M: s
{
2 B2 {0 S3 V0 p5 t, E* gcishu=0;" g! w1 o  I3 u7 J
ci=5;
0 C. Q- X4 O) x7 Fpwm=0;
& B+ ^+ p/ |* Ccxyg=0;//电磁吸盘不工作$ z0 t3 ]* B. v9 x- e1 o& M
sjg=1;         //继电器不工作# w( Z; U1 t1 ]! O  k1 S0 K$ a
Time0_Init(); * w/ b. q" q6 Y" Q  g

5 B0 o" r+ L3 g6 L, E# _; ?   ci=5;           //舵机归零( ]$ X6 W0 A2 D: @
   delay1s();delay1s();delay1s();/ ?: [, A9 d% N; e4 p% F3 M& F
   cxyg=0; //电磁吸盘不工作6 m; `+ W( e% d$ s
   sjg=1;  //继电器不工作
4 s  i" C# w4 y+ X   delay1s();delay1s();delay1s();
3 h* J; o6 i, s# B8 [* @' @4 s4 b   delay1s();delay1s();delay1s();//延时1s时间,舵机归零回正
$ Q* ?4 b( f9 i+ j7 u- V9 ?/ O   delay1s();delay1s();delay1s();7 m5 v9 D3 v8 W% W) J) D
   delay1s();delay1s();delay1s();( E& v* i( H5 }$ s! k+ @
   delay1s();delay1s();delay1s();
0 w8 _  d& v, I6 @) D' x9 P   delay1s();delay1s();delay1s();            
2 q+ K1 f, I# f) @" `while(1)2 z4 l6 Y$ }/ g
  {   ; X; m9 k7 w6 Z) F& o
   ci=13;   //舵机转过90度, @3 m( Y7 W$ [+ x; {
   delay1s();delay1s();delay1s();  Z! ^% J4 E6 h' X$ I6 d/ f0 \
   delay1s();delay1s();delay1s();  G+ F2 L! i  O7 b4 g( v
   delay1s();delay1s();delay1s();7 V0 ~* P0 Y0 M5 e4 X  v
   delay1s();delay1s();delay1s();; w; R. V: d: A4 O% [
   delay1s();//延时1s时间,舵机转90度8 ^2 z! |4 _, a0 Q# \2 _$ [
   cxyg=1; //电磁吸盘工作
+ W$ M) J+ E& H8 K9 q   sjg=0;  //继电器工作,电磁铁得电6 N0 t: g+ g0 v0 i8 [
   delay1s();//延时1s时间,将工件吸起来4 j/ k8 [. }: _2 N. T5 w
   cxyg=1; //电磁吸盘工作
: I6 {% \+ {9 M- g   sjg=1;  //继电器不工作,电磁铁失电* ]' @/ C( d- P/ R
   delay1s();delay1s();//延时2s,用来拍照$ Y* G# L4 C# t' A+ z# E- U
   delay1s();delay1s();delay1s();
  }: [5 H3 Q! K# F7 z7 }5 B   delay1s();delay1s();delay1s();, e  F1 E3 i, Q. X2 N" y4 t
   delay1s();delay1s();delay1s();
3 q6 [! o: h+ g   delay1s();delay1s();delay1s();& a. \/ X; k+ S* L! J
   delay1s();delay1s();delay1s();
6 l  o+ w9 ^9 E+ H, |   delay1s();delay1s();delay1s();$ F/ i6 V1 T4 B. i4 f) T

8 k- _- @) y/ Z3 y   ci=5;           //舵机归零,在顶上
9 M, N6 d) h- M: H  ^4 J) c2 g   delay1s();delay1s();delay1s();! x" [' [2 v' ]) n/ o2 X
   delay1s();delay1s();delay1s();& ]4 z8 H3 U- Y7 K9 R, N
   cxyg=1; //电磁吸盘工作
, i" b' C8 H- k5 {+ T( N   sjg=1;  //继电器不工作
9 T# P8 z! q- g* M+ O4 @   delay1s();delay1s();delay1s();//延时3s时间,拍照
( ]/ ]3 f- J8 R% a  `" m1 T   delay1s();delay1s();delay1s();
, L% ]. N# r" {) ?3 _  n   delay1s();delay1s();delay1s();
. n; c4 a5 z7 U; M* @   delay1s();delay1s();delay1s();0 ^% ?9 ?4 T' e9 f+ u+ a3 r4 Z0 n
   delay1s();delay1s();delay1s();7 h) h, Q0 [+ u0 ?. K
   delay1s();delay1s();delay1s();
1 [7 g4 I* a+ ]# \8 t   delay1s();delay1s();delay1s();* b( H; H" [, L6 ^% V+ j

/ S" Y$ \' O: v; D: q, M5 O   ci=13;   //舵机转过90度 ,低端& E' n8 X5 a! O7 j
   delay1s();delay1s();delay1s();9 Y  k! y' r+ d- I& b. ]$ T% G& b# I
   delay1s();delay1s();delay1s();* @( v, U4 }5 s5 [8 w4 ]7 j' f! T2 y
   delay1s();//延时1s时间,舵机转90度2 s/ `7 M* f0 H
   cxyg=1; //电磁吸盘工作
  e% _+ s- x- K   sjg=0;  //继电器工作,电磁铁得电* R+ F3 E. K% X1 ^
   delay1s();delay1s();delay1s();delay1s();% r6 J; m" M, X" W- U
   delay1s();delay1s();delay1s();delay1s();
  E6 s" B: b0 _1 Q. ?" o   delay1s();delay1s();delay1s();delay1s();
0 o- q' t* `+ _; }   delay1s();delay1s();delay1s();delay1s();) }2 t1 S3 y- b. A# A
   delay1s();delay1s();delay1s();delay1s();
  Q: P  q; T: f* M+ L! V! B   delay1s();delay1s();delay1s();delay1s();; ^$ t7 a7 m  [+ u% P
   //延时1s时间,将工件吸起来
6 L4 h4 V# Y2 g  C' r   cxyg=0; //电磁吸盘不工作- S. j/ ?( {* m2 b
   delay100ms();
6 [& g+ H* w* g0 ^   sjg=1;  //继电器不工作,电磁铁失电1 b4 A/ r* k- a8 p0 u
   delay1s();delay1s();delay1s();//延时
: q/ @  u7 Q/ I$ y# {, Q  [9 z5 R  o0 @1 D7 V/ Y
…………限于本文篇幅 余下代码请从论坛下载附件…………& o* E3 ^8 h& I! A( Y
( m% c  V; ~2 c$ O# \" l; p
游客,如果您要查看本帖隐藏内容请回复

该用户从未签到

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

该用户从未签到

6#
发表于 2019-10-15 01:20 | 只看该作者
不知道我会不会用
. N6 Y( v8 R" p# Q. R  n

该用户从未签到

7#
发表于 2020-4-9 10:05 | 只看该作者
66666666666666666666666666666
' ?+ {; u1 T& g2 u. J

该用户从未签到

8#
发表于 2020-4-9 10:06 | 只看该作者
真棒11111111
2 ^' G) ?' v8 a) W1 D& Y

该用户从未签到

9#
发表于 2020-4-9 10:27 | 只看该作者
根本不行,不能实现舵机转角度! w- V: w* }5 z  U  ]1 M

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-1 16:05 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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