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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
51单片机控制一路舵机控制90度来回 源程序
" l) z, p# u& U+ o
" s, r3 e" C! n; z  y1 U& d单片机源程序:' f9 D6 E9 [) f/ h* b
#include "STC12C5620AD.H"        //STC89c52系列单片机1 d4 I$ Q, w" `" O9 g* t
sbit pwm =P1^3 ;          //PWM信号输出
: Z. H  |3 p2 [/ E' W$ F+ csbit sjg =P1^2 ;                  //三极管,继电器 ,电磁铁9 p* {+ w& {& k
sbit cxyg =P1^0 ;                  //场效应管,电磁吸盘6 d* N# e( t" _. {2 n/ [! t9 h
unsigned char ci;        //0.1ms次数ci,总行程300度时,11次代表90度,5次代表0度$ v* C1 B- Q4 |9 [+ V2 P7 c2 Y
unsigned char cishu;           //进入中断次数& v% b9 H& j6 L6 [3 [
/*******************延时函数***********************/
. n/ ?& x3 g4 K/ c# g4 b- d3 Avoid delay10ms(void) //误差 -0.000000000002us
* @# ^' u( x5 B$ o, d' `1 R; [: U( O/ ?
{ ( a3 T# z# ~2 x* h, o
unsigned char a,b;
, a( P/ b7 {( m( h7 S7 K  xfor(b=151;b>0;b--)
3 n& _. Y/ F( h1 ^
' F: d' E3 U) g7 B; A9 y for(a=29;a>0;a--);
- z6 D4 J' ^2 M! a/ k; D. Q}
3 O1 i0 a0 c! x$ ?
! g/ i2 `- s1 q; lvoid delay100ms(void) //误差 -0.000000000021us ' ]4 C. m7 S3 A4 H) H# q' @+ D- O

& B- _1 r1 p0 f7 b% S, B5 i{ % J) x6 w6 c( m
unsigned char a,b,c; 1 i  t  g9 }7 ~% S
for(c=35;c>0;c--)
% t2 u' I: q: d7 S
6 S3 u( A0 ?/ k! @+ K for(b=10;b>0;b--)   ^  k/ A; V- H  U
for(a=130;a>0;a--);
& b! O! q+ _- F8 u. h& e& F# e} / H1 _& K! T& n3 H
; \! g! Z* F  T" v) e
void delay1s(void) //误差 -0.00000000024us  v% R9 I8 E; d5 S( K

: h% N: s0 Z. L' E( O{/ \& T1 Y' x- r1 ~3 [8 |
unsigned char a,b,c;
! m! R$ s: h+ E0 Y8 Z( _. C7 F6 }/ P$ i1 r" w0 f6 Y. y# D
for(c=95;c>0;c--)
/ ?/ U0 ]) c! {" u* m* s) I
2 B, F  z$ e% F  q7 @0 A2 mfor(b=26;b>0;b--)! B4 t+ G2 W' p9 R; }# z* _# ?6 r
4 L7 C. b! _; C# j1 H& T
for(a=185;a>0;a--);
: _' P9 w6 g+ Y: |, ]) @, P% Q! _6 r2 _8 w; k% e9 W
}
1 n# Q! k7 \3 W; V! x5 G# r& N. w
/********************定时器0初始化************************/
% f  N. }( G, e9 D8 y: g1 w% p' Wvoid Time0_Init()            //定时器初始化* R3 |, `4 Y) W7 ]  `
{
4 U' D  Q( K, Y. ]TMOD = 0x01;             //定时器0工作在方式1   
' l+ l% s8 h9 F9 D, C, WIE  = 0x82;                                 //中断允许寄存器
0 _! B/ l$ z8 E' oTH0  = 0xff;( j' o( Q0 X6 w! z7 O
TL0  = 0xa3;     //11.0592MZ晶振,0.1ms8 X$ y1 d6 y6 n
TR0=1;                   //定时器开始& M! O0 P. @- ]! A8 x
}8 o9 w- A" [% z
/***************定时器中断函数*****************/
! r; J) ^) ~% Z' G% N* i7 Evoid Time0_Int() interrupt 1 //中断程序: A( O/ y" i( b3 ^  H! B2 Y- m4 @" Z
{2 p! T' C: ^9 `1 [
TH0  = 0xff;             //重新赋值
7 B0 \/ r2 F' p- cTL0  = 0xa3;; A# ?  k+ z- W) Z( p0 w! a0 R
   cishu++;
9 N" [0 r! W5 l& j if(cishu<ci)
% a! b8 R1 P/ p. B  {2 U0 S6 C) {/ A$ g7 j3 n
  pwm=1;
9 a, k0 T. A' M& u% c  } ( O# G  Z' Q- M5 G! o3 {3 o& a
else if(ci<cishu<200); t7 `( b! G  t4 {! O
  {7 i4 c. K7 _4 {
  pwm=0;" z% E- |" A% B/ ?5 |
  }6 ^0 H" v- U1 P2 y
  cishu=cishu%200;1 v! y3 i3 W/ x
}* p( p, y9 j+ g; H
/*****************主函数*******************/  b4 r! K9 L- ^3 O. m
void main()* c" i3 _" N4 O+ q
{2 V3 f7 K; ^, x
cishu=0;
' A0 s4 B& r4 E% I( N7 Oci=5;
7 q& t7 e; H- t4 n" n, {' apwm=0;
' J) o9 G# ^4 Y* jcxyg=0;//电磁吸盘不工作. @3 y( y7 w2 K/ [: r8 e
sjg=1;         //继电器不工作2 H" B% ~' a; S+ W0 q* n9 r  d
Time0_Init();
) x$ S0 D' q6 s+ F3 E$ S; j- Y! Q- E2 |4 w; B5 p
   ci=5;           //舵机归零
3 ^+ a% A. |; S! ]   delay1s();delay1s();delay1s();6 E! Z1 N) A8 h7 D4 z
   cxyg=0; //电磁吸盘不工作  _; ?! S/ M1 _4 G. ]
   sjg=1;  //继电器不工作, Y5 j# u, D( o( D: |% m( p
   delay1s();delay1s();delay1s();
; \* s, ^% I- l! s   delay1s();delay1s();delay1s();//延时1s时间,舵机归零回正4 }# ^& D+ J+ A0 b
   delay1s();delay1s();delay1s();
) S0 K* O% F9 o! b   delay1s();delay1s();delay1s();) O7 e8 O  A% a. k; s
   delay1s();delay1s();delay1s();
# u8 e# f& m0 S* J, ]4 p   delay1s();delay1s();delay1s();            ; [& B* Q, Y+ ]5 }1 A
while(1)
6 Y' H: t) o2 V2 `. p8 A, o  {   
$ {% |( f0 ^# J% M" v) m8 Z# `   ci=13;   //舵机转过90度
, h& @2 E# J4 j6 Y. T5 ]; Y   delay1s();delay1s();delay1s();
6 s; V3 G7 \+ `# Y5 {1 @( G   delay1s();delay1s();delay1s();9 Z0 T2 ~8 ^( B& O& ~* \' B
   delay1s();delay1s();delay1s();
) t9 g( q% }3 I   delay1s();delay1s();delay1s();
  v% i  t; J, D- S6 I( \# p+ T   delay1s();//延时1s时间,舵机转90度8 ~) s% P- I0 ]+ z: `( M
   cxyg=1; //电磁吸盘工作3 B8 ]) D! d- Q" o
   sjg=0;  //继电器工作,电磁铁得电
$ n  I- c' i" i; _) Q- G5 p" A# c   delay1s();//延时1s时间,将工件吸起来4 H, o. N' P/ [, Z% H+ p2 N
   cxyg=1; //电磁吸盘工作
8 S; V( _$ ^; i) C: I% q" x   sjg=1;  //继电器不工作,电磁铁失电
! z1 @7 c6 q, G) Z   delay1s();delay1s();//延时2s,用来拍照
) |; G2 j8 w9 s   delay1s();delay1s();delay1s();/ c) Q7 ~, X# p& W
   delay1s();delay1s();delay1s();5 o$ p- X* z- X: k* b
   delay1s();delay1s();delay1s();
* j/ U7 }" P! _& ]4 m   delay1s();delay1s();delay1s();4 B/ R  [! J# X" d/ C
   delay1s();delay1s();delay1s();
( _/ i. g! U8 g8 i( z. K   delay1s();delay1s();delay1s();
; a. r$ ~9 C# ]+ a3 M% i
7 H- @# }; f- e   ci=5;           //舵机归零,在顶上
' ^5 P! G. u; N3 k   delay1s();delay1s();delay1s();
2 V( M* `4 c) f- E' v: U   delay1s();delay1s();delay1s();
/ E- {8 k2 j, w0 I( D0 C   cxyg=1; //电磁吸盘工作6 C1 {% R1 }- f' m1 |) F' z6 ~- ^
   sjg=1;  //继电器不工作- d( ]5 n( m$ f; O
   delay1s();delay1s();delay1s();//延时3s时间,拍照
  r# g! N6 n) {! o0 I. U* J   delay1s();delay1s();delay1s();% R3 A1 p  w' |' Z$ P& c5 D# _! u# _
   delay1s();delay1s();delay1s();
8 Z* e8 _* `3 }( o- n5 Z0 l. H. e   delay1s();delay1s();delay1s();
8 l  A% ~) H3 o/ p9 f0 `# N5 O   delay1s();delay1s();delay1s();# ^& `0 }- |0 W5 b$ }) I
   delay1s();delay1s();delay1s();& Q2 e& X) \& F
   delay1s();delay1s();delay1s();/ Y- F6 \9 ]; h
" C! I4 D6 V# V* r" Y+ o% o% @
   ci=13;   //舵机转过90度 ,低端
8 B+ e' f4 b4 M$ S) T6 i   delay1s();delay1s();delay1s();
& y: ?8 N- _- Z* T, p% L   delay1s();delay1s();delay1s();6 d: c$ K% F4 W0 B5 Z/ a- u, N
   delay1s();//延时1s时间,舵机转90度
# @4 ?' h2 f2 N+ n" a" r   cxyg=1; //电磁吸盘工作. Y1 I% ]' C; y# c% ^
   sjg=0;  //继电器工作,电磁铁得电  S" B4 R+ I3 G
   delay1s();delay1s();delay1s();delay1s();
! A8 x: F2 q& @3 m, r8 R2 Q   delay1s();delay1s();delay1s();delay1s();
7 i6 O) f7 s& R6 X' \   delay1s();delay1s();delay1s();delay1s();/ s- _3 ^( a7 y! N, S" |4 h( [
   delay1s();delay1s();delay1s();delay1s();1 u5 C; y: o% q: j1 o
   delay1s();delay1s();delay1s();delay1s();
9 c" U2 u! d$ J) J: ]7 ?   delay1s();delay1s();delay1s();delay1s();
1 N, _8 r" E. D7 Q, }  {   //延时1s时间,将工件吸起来9 S0 l2 H' Q! |! z/ e
   cxyg=0; //电磁吸盘不工作- g# X( v. d8 }( l
   delay100ms();
! Z- F0 t' Y, }8 ^. ]$ f& a4 \   sjg=1;  //继电器不工作,电磁铁失电
! H  p+ Y6 x) Q, _/ P3 I0 z   delay1s();delay1s();delay1s();//延时
$ a5 b7 `$ O  J! S5 m! k) T* Z8 Q6 ]2 Z8 }: P
…………限于本文篇幅 余下代码请从论坛下载附件…………
/ G% ~# C- P" D4 q* R5 E5 b) {) q( C5 t9 G  @. M
游客,如果您要查看本帖隐藏内容请回复

该用户从未签到

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

该用户从未签到

6#
发表于 2019-10-15 01:20 | 只看该作者
不知道我会不会用% N! D1 N1 J9 M, l

该用户从未签到

7#
发表于 2020-4-9 10:05 | 只看该作者
66666666666666666666666666666
/ j& s4 q, i( U; r4 v5 d

该用户从未签到

8#
发表于 2020-4-9 10:06 | 只看该作者
真棒11111111
/ v4 E$ [/ ]2 ?" u! T/ S* n/ u

该用户从未签到

9#
发表于 2020-4-9 10:27 | 只看该作者
根本不行,不能实现舵机转角度: x* K2 H- a2 S. F) C

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-7 22:30 , Processed in 0.093750 second(s), 26 queries , Gzip On.

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

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

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