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

单片机控制晾衣架步进电机正反转 proteus仿真及源码

  [复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-11-29 09:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
单片机控制晾衣架步进电机正反转 proteus仿真及源码4 [) R4 X' w7 D% B, w/ c8 t* j
. `9 B6 }( L# H9 O. m

& ?' y+ z! o' C& S/ U9 x单片机控制步进电机正反转  I# f1 g# R& t; u
设计原理:采用51单片机最小系统,通过达林顿管(ULN2003)来控制一个5线4相异步电机的正转和反转
5 I3 q, O5 v) n- h$ t! X从而达到晾衣架升降的目的
' g8 p9 N+ c3 B2 Y6 n) f1 P本系统还有衣服的重量自动检测的功能,采用模数转换器ADC0832,对重量传感器进行重量采集
: `0 k5 m: ]; h7 I% m9 @将采集到的信号转换为数字信号送至单片机处理,并最终显示在LCD1602液晶显示器上; Q) U. z6 G7 s# o, l
系统会自动的根据衣物的重量控制晾衣架的起落- t( O4 M, r9 @% n5 Q0 G
, X7 G+ q1 S4 y/ t. I% r
- k. J) m  P7 ~. K- K6 F8 w
! i$ D. x& D0 U% R, Z, m+ c1 w

8 K) l6 u* C. ?# o: o& \# o- z, X* E7 z9 A0 E
单片机源程序:
5 L4 {/ P) B+ X3 L6 B0 C
#include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器0 M  b  U" V/ n8 b
#include "adc0832.h"% a$ H7 q0 }5 h4 u1 Z
#include "lcd1602.h"
8 \# d; _5 f" E* l! ?4 F7 n$ m#include "delay.h"% ]6 ?* {( h* Z" e) O) t
#include<intrins.h>        
/ ^& {  a0 P$ B$ y% ]" e& q+ z' l#include <string.h>
! W; y4 Z0 D8 X* X#define uchar unsigned char
- T4 B2 E3 Z  p#define uint unsigned int0 i! t% i! V7 }& P5 Q; x  ^
uchar flag=0;
7 B3 s/ N1 l) f. p0 u
- p4 k0 T1 A. c0 g0 r# P9 R9 D3 B
4 S; V0 l9 Z& a0 q# a% V

0 Y* M8 O( B( @' S+ u& E5 a
& b- g2 k  S$ V
unsigned char code F_Rotation[8]={0x08,0x18,0x10,0x30,0x20,0x60,0x40,0x48};    //顺时针转表格0 y) R2 T8 B) }+ P. I' n* W, J4 l. k
unsigned char code B_Rotation[8]={0x48,0x40,0x60,0x20,0x30,0x10,0x18,0x08};    //逆时针转表格
8 r4 i  c* {  M! i; c5 E) ^/******************************************/
( a; ]  }- w# V& E( ~% _/*              延时子程序                */ " H8 F- s- p* H8 H6 l
/******************************************/ 8 o- r! }% N$ q5 ~6 _
void Delay1ms(unsigned int count)
) O- ^: q9 G2 j5 t" v# h{" U) Z# _/ X0 ]% {' L
        unsigned int i,j;
4 H+ i3 `$ b; S3 O/ c/ ?        for(i=0;i<count;i++)2 {2 u6 u, @) `" U5 s4 j
        for(j=0;j<120;j++);. C7 p* g9 R& N
}
3 }0 r2 E) O5 L4 G2 W! y& Z
  {: p$ P+ o: ?. \4 i7 w
4 K; n6 ^! j* b; O' s! m

; T$ ]6 \& I3 m( F' U4 ~5 j5 E! h
3 A% V$ [0 x+ y: y* t) x
//步进电机正转函数
3 W; |* p" p: a3 h" _" Ovoid SETP_MOTOR_FFW(uchar n)& a1 b6 D$ W+ c4 O
{
/ \1 a! u3 P# @; h9 P& M         uchar i,j;: e7 E& }# [% ?% ~% J
        for(i=0;i<5*n;i++)
. D5 ]3 a) u* M2 i* G. v( M        {( E# u; \! p) Z  X; s
                 for(j=0;j<8;j++)
/ |& C5 e9 U9 Q. u                {/ [+ ^* v' A# q5 x2 i, y
        
# `  m: l( w0 X" i                        P3 = F_Rotation[j];
6 K# j6 b' |% ^! C                        Delay1ms(25);
3 k* ?, g7 B& g7 O% D+ B                        
+ M$ K1 o7 V. `3 ^, F! S                }7 g6 @2 q4 ]! K$ n4 Z$ w
        }0 w! b+ ~' U" V8 G! O1 y
}8 C7 J3 i* [% }7 h7 `8 g$ ?5 z
1 j) g& [0 g" |
6 `0 G4 Q/ G7 l+ L5 k0 w& N

3 S/ C) n( f. j- [* t: E
" F5 ]6 \' S* a1 n: x. u
//步进电机反转函数7 j. W: {) N2 p& U" b

, d9 |* S/ C! x8 U$ q; k, U* c# `

5 w; q1 h$ h; _# m4 Y* e$ hvoid SETP_MOTOR_REV(uchar n)( ]! T- L( o0 F
{, [9 Z. o; `! v2 |9 _' ?
         uchar i,j;
: R$ K* Z( D2 f0 C        for(i=0;i<5*n;i++)
( I" {% M: P  f  d6 F$ x        {
* j" A8 P. S6 G1 R& I1 I( ~                 for(j=0;j<8;j++)8 t& m5 j* |, b9 N" O
                {
6 H. n- I% x' T; j5 E  l1 r                 
7 {: M" o' i, {                        P3 = B_Rotation[j];, ^' _8 W4 x+ a/ ?6 s
                        Delay1ms(25);
8 I. Q1 m5 H4 b4 e% X9 Q; s                }
/ x0 O# M& a) h) l& _# m        }( p$ l- ]" o/ ?2 Z- b; _9 f" w$ \
        
# q2 B: ?4 v# m' f8 p* t}7 L! Q) i7 q7 y: \: s5 l! N
: [8 X% Z! g3 P+ }. D0 @

; D9 A5 H7 L" o+ L1 g0 x+ K/ @. o) X- ^7 A* x; j5 p; c3 G

* w1 f7 ~! P6 ]$ p# F4 T& m" ]void adc0832_cl(uchar q)5 H* y6 v: Y! K$ b* E* f
{- f" ?  P# D0 r- V# N
q=q*100/255;                //对采集到的AD值进行0-100的量化 ) p# Y6 T5 ^  k  U2 d
LCD_Write_String(4,0,"Weight");
" D% W2 e% t* M! @ write_com(0xC0+5);' K8 N: x. _/ Z: _  e) y% J, _  }
write_dat(q/100+0x30);                        //百位
" x0 n! E! ?5 I- l( J write_dat(q%100/10+0x30);            //十位' w9 n4 R2 P( N$ F3 E6 e- V
write_dat(q%10+0x30);            //个位1 @  B( D/ \/ K: l- Z
  ; h6 a4 j4 A* X8 w6 D/ w3 w1 J. A8 O
if( q>70 && flag==1)
$ J3 ]( M! _6 ~2 W2 R# b1 @9 D9 a2 `! O% {$ s
, i+ L0 K; \$ ?' |. T2 ~
{SETP_MOTOR_REV(2); flag=0; }7 Y+ Y( _- ~4 }5 I  P, ]8 e5 G

" t5 R- P* D1 O
2 c, @" d2 N) z; Z8 R! c
if(q<30 && flag==0)5 V5 u2 h; l% {6 A% ~2 X$ v
{SETP_MOTOR_FFW(2);  flag=1; }
7 K$ e& {2 \1 L0 q. ^! s  
" h; a  s/ ?$ u, J- x" v) _  ; i5 U' G. m/ g4 s5 a7 F5 z
  0 v$ m8 C* Z3 X# X  A7 Z$ q9 Z
}
% s9 e$ V7 F% b* t
% d8 c1 y& }0 n% W
; J7 C6 i4 c- V* J1 Y. p& z4 \
+ m  H8 U5 V$ `1 `0 `" `
! b4 B8 u+ `. K& _, ]' H$ I

0 _+ H* \5 Q. Y$ P* ?' \
3 j: l2 P2 w# B

* y& y  B9 o, v

+ u, x2 w! M. h& O! O+ U1 @6 u* Q; U4 S- o) l$ X( \
* c8 @. b' G9 H

5 Q$ L: ^5 O- Z. L- m3 Y- L( |

* P% L2 W5 Z. d4 r0 h  M
4 y2 G: R! m* R( s

. D1 U3 g$ r. K. xvoid main()
1 x! f' Z" p* K0 P% G{
# T; M/ F, z3 H7 elcd1602_init();        //液晶初始化+ w4 |7 {* X' F8 @# U9 K
while(1): ]0 H4 S5 q/ V% Y
{
) M6 q! _, x8 ^0 b% z2 s' Y2 e% h- p2 p; h" j4 o4 W) E

8 }; ]' ]  J( n/ ?5 t…………限于本文篇幅 余下代码请从论坛下载附件…………$ m) {+ |; G3 c% ^& W
游客,如果您要查看本帖隐藏内容请回复

5 Y! G4 k$ o( S/ Y* L' |! d  j6 t
1 R# V8 g& q; S% W0 x% n% A

评分

参与人数 1威望 +1 收起 理由
黑暗帝国 + 1

查看全部评分

该用户从未签到

2#
发表于 2018-11-29 10:18 | 只看该作者
分享是美德,感谢l楼主

该用户从未签到

4#
发表于 2019-1-25 13:52 | 只看该作者
不错,谢谢分享

该用户从未签到

5#
发表于 2019-5-27 14:42 | 只看该作者
可以分享程序吗3 H: S$ V" u* ?

该用户从未签到

6#
发表于 2019-6-14 08:54 | 只看该作者
STM32和嵌入式开发,恒向科技,QQ:2046643630。

该用户从未签到

7#
发表于 2020-3-4 15:13 | 只看该作者
11111111111111111111111111111

该用户从未签到

8#
发表于 2020-5-7 19:17 | 只看该作者
66666666666666666666666
5 d6 x4 V" S* \& L. U6 h8 g
  • TA的每日心情
    擦汗
    2025-10-20 15:44
  • 签到天数: 62 天

    [LV.6]常住居民II

    10#
    发表于 2024-9-11 16:17 | 只看该作者
    分享是美德,感谢l楼主
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-29 18:02 , Processed in 0.187500 second(s), 27 queries , Gzip On.

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

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

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