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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
51单片机控制一路舵机控制90度来回 源程序; M7 X+ W: D' v& b( ]

. i8 s' V3 s5 c4 m$ ~单片机源程序:
. M. n9 ^/ Y% S$ u; N& O#include "STC12C5620AD.H"        //STC89c52系列单片机" h0 w4 l5 b+ }# ]' g1 ]+ p$ Z/ M
sbit pwm =P1^3 ;          //PWM信号输出9 N# p, d; f, w& t6 t$ u& F
sbit sjg =P1^2 ;                  //三极管,继电器 ,电磁铁' M" g7 `1 z& V+ ]
sbit cxyg =P1^0 ;                  //场效应管,电磁吸盘
: z! p5 k4 @. a8 Uunsigned char ci;        //0.1ms次数ci,总行程300度时,11次代表90度,5次代表0度- K# r+ v8 c1 T3 w# }9 P5 s
unsigned char cishu;           //进入中断次数
1 _% ?! r- p5 D; `) b/*******************延时函数***********************/
. Y0 v, T- o% fvoid delay10ms(void) //误差 -0.000000000002us # s- o1 y4 i3 ?

- e! y1 i) i) c- l, z2 M{
  R1 |- i5 E" m, A7 vunsigned char a,b; 6 C# J$ c* R6 R' N$ H
for(b=151;b>0;b--)
& X5 B; Q$ X- z+ G6 a( a6 j4 q3 h" i; K" x9 B7 m  y. T
for(a=29;a>0;a--);
3 u+ S& G+ N$ Y& m' K} 9 ^0 V2 j9 u! j; f6 v
/ ^+ I5 b- U- @# v/ |8 Q
void delay100ms(void) //误差 -0.000000000021us
( t& h, s$ N2 d. R: _$ }( K' Z7 ]
! |% T0 w6 E) d; o% R& j% C" s* b{ 6 {1 a0 Z" b6 X! T! Z
unsigned char a,b,c;
7 r2 S* X. m* h% Z, C+ a+ Ofor(c=35;c>0;c--) % ]" w) w1 _! T1 ^' X; X
& [+ d' |' N5 _3 i( B' ]
for(b=10;b>0;b--) 9 w; W3 H) u0 C+ L0 F. ]$ V
for(a=130;a>0;a--); + N. X# g5 O* s& g, H6 c) I" D& c
}
  r, n' W) I; s. F% _/ z
+ _. \# d7 [* h6 r' S  v  l! dvoid delay1s(void) //误差 -0.00000000024us
" q- w4 L" g% n4 R6 p% q) d- u+ E& R, d. @6 I: C
{1 E7 V. h3 x: p1 w4 b( `
unsigned char a,b,c;9 \& a. X1 q$ X2 ~9 V% ~- @
: M$ z4 t. D8 E; k+ U+ F/ n
for(c=95;c>0;c--)
- B8 }. Z# v# {/ `3 [0 I4 [3 i3 g  t7 A: {/ B" T- b" S
for(b=26;b>0;b--)8 G6 l+ O; ^- v; K. p# I
+ x; T: }7 q: F$ v
for(a=185;a>0;a--);
  C2 X4 X$ S( ]5 g% ]
& j/ \6 B4 ^" l) M5 L}
* {8 u  N- x  I; N* S! L) q+ ~! x, N8 I
/********************定时器0初始化************************/& M0 J- O/ R- m% k
void Time0_Init()            //定时器初始化
$ M* @1 q" O7 s, N0 B/ T{
) A. L. n: a' l; gTMOD = 0x01;             //定时器0工作在方式1    3 Y* I% E* K; u2 g; X) s5 i
IE  = 0x82;                                 //中断允许寄存器
' P9 X- p  i. e0 kTH0  = 0xff;1 `# V/ @6 d* G, S, C+ }
TL0  = 0xa3;     //11.0592MZ晶振,0.1ms
$ R, t3 c% L+ U' g% [; \TR0=1;                   //定时器开始# k2 F2 @6 d$ ]+ B
}
) {: N4 ^: o! s# u/***************定时器中断函数*****************/
& s6 v2 \5 F; }$ M7 D3 Fvoid Time0_Int() interrupt 1 //中断程序
, ^+ O9 k9 V* o  f# l8 m5 d{7 w1 a. g: X, C; Y9 B( Y6 v: r  v! p
TH0  = 0xff;             //重新赋值
! j# C6 H5 t6 w  T& QTL0  = 0xa3;+ H( @% z% d% `+ J2 t9 _6 j
   cishu++;
1 C; A0 h6 ^$ H- T if(cishu<ci)7 `% g  E+ j. }0 {- h# |
  {3 a2 S* d* k" K* s
  pwm=1;( R5 E: L5 W: ?% R, W# i6 S
  } , B6 x, f2 G! i# c8 E" g' h6 N
else if(ci<cishu<200)* t* l. U. L' y3 }
  {( B8 Y% n. \: Z
  pwm=0;* i' H1 C8 p8 K* \& ]# B# s) e9 v
  }
, n/ [, d2 Y) [' O6 Z8 ?  cishu=cishu%200;
2 _0 A. h, u( i7 O}* a3 `) Y! u% N& V
/*****************主函数*******************/# m8 x. p/ [8 ~) k8 o4 T
void main()
8 q2 R' e) ]7 p7 e{
7 V+ C1 n% d3 A& D  E" ncishu=0;, G9 I4 i' z. L6 ?+ R( ?
ci=5;
1 }" \' A8 }! L# [; F/ xpwm=0;
/ H1 U; U0 x- Ucxyg=0;//电磁吸盘不工作
; B8 m  U5 `2 H- a$ Y! osjg=1;         //继电器不工作  }5 M$ _6 N; r
Time0_Init(); ' [9 ^+ H: ]' P; l$ y8 V5 g* i
" n9 f! ^2 V! ]3 v  K" v
   ci=5;           //舵机归零
* ~) ^) t; w1 j- a   delay1s();delay1s();delay1s();
+ g3 c% q7 o# m5 Q) S( \   cxyg=0; //电磁吸盘不工作
9 k; L0 M! [- Q' S" k8 ^1 \   sjg=1;  //继电器不工作6 U  n/ m" z- x3 k! D
   delay1s();delay1s();delay1s();) g2 m) w! p$ {* f7 y8 |% C
   delay1s();delay1s();delay1s();//延时1s时间,舵机归零回正
4 B& Z/ A. U1 F4 }* Y4 s   delay1s();delay1s();delay1s();9 y" |4 {, D" A4 U; Z! [5 R
   delay1s();delay1s();delay1s();4 P6 b8 X& ^# r# V* M1 X" {
   delay1s();delay1s();delay1s();. W# R5 x. K' v/ ^* a7 _% ]
   delay1s();delay1s();delay1s();            - j9 f- d% `3 y! z
while(1)! |) r$ b- \: Q% a: w# Z' j
  {   ' m6 K2 D& Q7 f: v5 t! h
   ci=13;   //舵机转过90度
, X* L) j* i2 O7 P: H( {* N   delay1s();delay1s();delay1s();' d$ l6 Y( Z4 k* M1 O
   delay1s();delay1s();delay1s();4 i( ^# @' a3 |0 s: @% D" G/ v, {
   delay1s();delay1s();delay1s();0 `) D7 C! n! r: s- Z+ @
   delay1s();delay1s();delay1s();) D  b8 Y7 Q+ r# I  \5 D4 E
   delay1s();//延时1s时间,舵机转90度  K4 K- i% S4 N9 Y# Y
   cxyg=1; //电磁吸盘工作
! B9 R/ B8 H0 M+ V; N8 B. E   sjg=0;  //继电器工作,电磁铁得电
' s# ^8 d* z( G- M/ R1 z7 D   delay1s();//延时1s时间,将工件吸起来( }9 r4 ?8 ]5 O
   cxyg=1; //电磁吸盘工作
! x. Z0 w! m0 v   sjg=1;  //继电器不工作,电磁铁失电. \, Z1 b7 A1 [# @! V
   delay1s();delay1s();//延时2s,用来拍照
4 ?, \3 ?6 Y: |+ t2 l6 N   delay1s();delay1s();delay1s();
$ @. ?+ [1 h6 }+ C$ s   delay1s();delay1s();delay1s();2 D! G" z1 F8 L, g' k
   delay1s();delay1s();delay1s();: ~+ U" @; D! e: A5 ~0 G  w
   delay1s();delay1s();delay1s();. I# u/ D: |$ ]6 G$ o
   delay1s();delay1s();delay1s();7 ]1 c1 x& _' j6 `
   delay1s();delay1s();delay1s();
6 y+ h8 r0 \. X* T0 Z7 ^  V; u- \4 r& O, y0 u% }9 a
   ci=5;           //舵机归零,在顶上$ i- ]7 l, E9 R  R1 U+ v
   delay1s();delay1s();delay1s();
/ S5 b+ v: d2 U9 d0 M   delay1s();delay1s();delay1s();  y5 r- L2 {) a. p1 ?
   cxyg=1; //电磁吸盘工作
$ R, j+ `$ X9 ?/ ^" h1 b1 o! n1 ?   sjg=1;  //继电器不工作2 ?+ Z0 _: F: ?% N9 E2 b1 g
   delay1s();delay1s();delay1s();//延时3s时间,拍照% D: M3 I8 b$ c. T. N& B+ E4 ]  p
   delay1s();delay1s();delay1s();( U0 k3 w! u! M- Q
   delay1s();delay1s();delay1s();
* y4 }& G! A* l& a$ m: e1 D  [   delay1s();delay1s();delay1s();
+ ~! C( E2 f0 x   delay1s();delay1s();delay1s();
; w4 s9 e1 q# O, m   delay1s();delay1s();delay1s();
3 ^( l/ d6 `9 `   delay1s();delay1s();delay1s();9 ~. E4 k" P' y2 V! {$ _( `

7 X/ \! R4 E" j   ci=13;   //舵机转过90度 ,低端$ r7 ~( r) K$ ^7 `% B+ L8 B
   delay1s();delay1s();delay1s();6 j4 [- B8 d+ T5 l- P
   delay1s();delay1s();delay1s();
/ x  o( B, z& S' L   delay1s();//延时1s时间,舵机转90度
3 ~' F: ~( Q& {" I0 X- V   cxyg=1; //电磁吸盘工作
6 }2 D0 t+ d# L3 s/ k: B0 ?1 J7 ~   sjg=0;  //继电器工作,电磁铁得电/ {2 j5 o- u( _. o! D( @+ E% y
   delay1s();delay1s();delay1s();delay1s();2 l& L+ M6 X/ z- t5 N  j* n# q
   delay1s();delay1s();delay1s();delay1s();+ x0 N$ [' d  c2 e* r' \3 E
   delay1s();delay1s();delay1s();delay1s();
: }0 O) N! |* p6 h. W3 _8 C   delay1s();delay1s();delay1s();delay1s();$ g* F# O$ F1 w: D4 K
   delay1s();delay1s();delay1s();delay1s();
* n5 h8 F, ~  Q5 |1 X   delay1s();delay1s();delay1s();delay1s();
& K4 c% ^6 V  c' Z   //延时1s时间,将工件吸起来' S: n& @  L8 i$ `  a2 y+ L; o* D
   cxyg=0; //电磁吸盘不工作
( {' D6 y$ W: O& t$ c& l   delay100ms();
# V; j1 n$ Z* G( D   sjg=1;  //继电器不工作,电磁铁失电
0 ]( U, t' C6 ?1 h   delay1s();delay1s();delay1s();//延时
- \- {+ |- I* X9 N6 R7 R) f/ D4 u6 \5 _0 m9 X& }2 Y( a
…………限于本文篇幅 余下代码请从论坛下载附件…………. X) g% s3 h% K) e

0 }# g! t+ l, r2 Y0 l- ~  H/ F
游客,如果您要查看本帖隐藏内容请回复

该用户从未签到

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

该用户从未签到

6#
发表于 2019-10-15 01:20 | 只看该作者
不知道我会不会用
3 o' H" Z  C# U" T4 Q- X

该用户从未签到

7#
发表于 2020-4-9 10:05 | 只看该作者
66666666666666666666666666666
, r; ^1 J; K1 T& a* \

该用户从未签到

8#
发表于 2020-4-9 10:06 | 只看该作者
真棒11111111
# s) ]4 }" Y6 o6 `) |

该用户从未签到

9#
发表于 2020-4-9 10:27 | 只看该作者
根本不行,不能实现舵机转角度3 w* d% n' ~  X+ u

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-24 20:20 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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