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

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

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
单片机控制晾衣架步进电机正反转 proteus仿真及源码4 t) u+ r3 D! {" g" k. v" z/ ?

- N. |+ d) C# S

6 P8 u! s( N$ t7 l0 i6 i8 P单片机控制步进电机正反转
% C, d& `# C0 [; X% l" t# Q' H设计原理:采用51单片机最小系统,通过达林顿管(ULN2003)来控制一个5线4相异步电机的正转和反转6 W; q; S2 \& R8 K% f
从而达到晾衣架升降的目的+ A2 F& x$ `  E. @$ T5 [
本系统还有衣服的重量自动检测的功能,采用模数转换器ADC0832,对重量传感器进行重量采集# f5 v& A! g" h; Y- ]/ d# p
将采集到的信号转换为数字信号送至单片机处理,并最终显示在LCD1602液晶显示器上
2 e! Q( L" W8 L系统会自动的根据衣物的重量控制晾衣架的起落. l9 v! B' Z$ q; p2 {9 z0 U: D
6 q7 e7 L0 k( Q  v4 C
; \& T* k, D8 w0 w; I+ C' k& G- ^
" |! F$ W  O0 E8 m
; w; I1 {: d7 a. c7 o
$ P' W! U4 m0 w* ?7 j2 W0 @
单片机源程序:
8 X  E8 o9 O; J, P4 L$ s9 E
#include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器
6 j. H/ |1 G: L, _#include "adc0832.h"
' Z0 }; `# b; z$ B& q: h4 Q#include "lcd1602.h"+ }' l- l! y/ q3 ]8 |
#include "delay.h"6 X0 a5 e- X. p' q' F
#include<intrins.h>        $ [# Q1 f  I0 g: N1 o1 \" y$ t8 N
#include <string.h>
- H2 j' K* ^& c: [#define uchar unsigned char
1 n. {- [# b  |5 }, ~: M#define uint unsigned int
- I) ~& N4 j& i4 g7 Nuchar flag=0;
: y5 u; l  ~$ L! W! `+ ]0 _
3 v/ M3 a/ g4 u

0 p1 ^; G. H9 ]# J6 @+ A
1 C/ C- j$ K/ U9 z5 I! E
: N8 d+ p  K" T3 e, P
unsigned char code F_Rotation[8]={0x08,0x18,0x10,0x30,0x20,0x60,0x40,0x48};    //顺时针转表格
  o; G- D. z- [* W  n, X+ Yunsigned char code B_Rotation[8]={0x48,0x40,0x60,0x20,0x30,0x10,0x18,0x08};    //逆时针转表格/ m- U' ^: y4 _' u) n
/******************************************/ 4 y: k4 L' T1 @# d( ]" M
/*              延时子程序                */ . f$ e7 Y. l1 X$ a
/******************************************/ ; _6 C  B% v/ k* |( {) O
void Delay1ms(unsigned int count)* Z9 N% y( Z2 k6 W4 v9 A/ B& h
{2 x$ e" r" S; m" p, L+ T
        unsigned int i,j;
  k+ u; I8 f% h+ A        for(i=0;i<count;i++)& |# k" O2 H- J3 O
        for(j=0;j<120;j++);! ?/ X9 N8 K" m/ C0 @) H
}# d; N# s- b& c

8 [5 f! h- N: U7 \8 D. E# ^

: a7 y: d5 e6 x2 W: W% m* k$ i) X1 I+ ^' T/ W; R4 G/ C; O
8 Y4 y% G0 f4 V3 H
//步进电机正转函数7 {8 w# O" T$ s3 h( ~$ v0 k, q7 y
void SETP_MOTOR_FFW(uchar n)) _) y. e. m: x* g$ f, J
{* `! v3 ^# t& k& ^+ N' z2 I$ ~0 b
         uchar i,j;4 G  F! J% T& [; l" J6 r; g: H
        for(i=0;i<5*n;i++); d- S/ O9 |9 a( V
        {
+ b3 h/ s9 Q$ j" r! m                 for(j=0;j<8;j++)4 ]& l. {9 [: H
                {, G1 M. ~" R' L3 Z
        
" a. }- G' X, T! W' t3 l( I1 g                        P3 = F_Rotation[j];
8 V. ^- ~; b# W& c& j7 x# |                        Delay1ms(25);
6 P; j0 K7 b  H' s" `9 Y                        : e. k' V  R* R, O
                }
! |2 k5 z2 o+ m! a% X& i$ L! X        }3 c$ S% Q5 I* }* A, g% p6 j4 r
}
, u: `  D8 k/ Q' Z( @* c' I, N5 H" h$ H1 ^) ?9 j
4 _' D/ K) i! D8 _3 ?4 @

' k) b3 r  [7 F6 v
" Z/ r- e, N9 l6 q; F' d
//步进电机反转函数
# C1 _6 I- T+ h. u' I* ?  G1 F( t, o5 S$ o

# e/ F' t' D* r1 O  c# o( \void SETP_MOTOR_REV(uchar n)
* D( M( B3 T1 w5 W) z{
$ O: _( ?; }) _8 w: j) r         uchar i,j;  F$ a  q# d1 B5 J4 W& E$ }! \
        for(i=0;i<5*n;i++)
3 X/ W* d7 _9 k6 [/ V2 R        {
7 C6 `( O0 ?3 j, Q' l9 h- j                 for(j=0;j<8;j++)
2 \5 j0 A$ z& _2 H7 v3 @+ _                {
) V! C1 U, U9 O( L9 F8 N  Q                 
8 @3 k5 g- C) W                        P3 = B_Rotation[j];' f& w& W5 q( [5 n/ H
                        Delay1ms(25);
2 d6 M& W/ k. v  s4 W+ g6 T                }
5 X- X2 T5 K8 G        }
* J9 r8 z% i) X8 D- A        
# E; X0 C" ~8 e' e- G6 h% b}
& C. E) u) w+ Z+ \! u% g6 {0 p2 r  L; L# [
  p5 N; h# I0 i1 K' G) n/ j( q! e" h
! X0 o  ?( G4 w3 k

- H+ A" }) L3 O* [4 _6 d# L) _& Lvoid adc0832_cl(uchar q)
2 Z# [: C3 G* c: N5 f& [' v/ n{5 H4 e/ {  U! l
q=q*100/255;                //对采集到的AD值进行0-100的量化 / C/ \" _) e" Y' R/ Q2 T3 B' U
LCD_Write_String(4,0,"Weight"); , ^% @! [+ G" c' e9 [8 |4 O8 K% Y- [
write_com(0xC0+5);# f$ b8 j. r. g. R( Q* _+ H
write_dat(q/100+0x30);                        //百位7 o! |* r! G, h' y8 d* P
write_dat(q%100/10+0x30);            //十位$ {% e: O; V5 _& i. T
write_dat(q%10+0x30);            //个位
+ B! {, {0 w" I  
: X% F& I; k5 D/ j if( q>70 && flag==1); T' `% V# W& p! a0 M
# [% o1 t& q* R2 K* {0 ?

* V5 L, ~( w4 b9 i3 x {SETP_MOTOR_REV(2); flag=0; }$ t" e* z. _& g) Q4 W, h. _0 r

7 D8 H8 }( a6 C6 V) U9 ^& u

3 B$ v* G- h: c- }# F% H if(q<30 && flag==0)" S% v- s8 \% n( T5 Y) B
{SETP_MOTOR_FFW(2);  flag=1; }
5 E2 n2 R( v4 p, B  
0 F% ^5 ^4 E( Q$ w* t2 J; C. U  
4 ^4 z, E. [; V% T! V  # J4 t3 r- q- l2 ^& t6 u' K! z1 s
}
3 e0 O9 |! {& v' R: ]& }+ z& P' i( u1 {" _. d) q! D

4 ], _/ i% @( ^5 R. y; g8 j9 B" B. {5 K; U7 f5 c: @

- U. }' Z0 m/ \+ g, ^' U7 j& a" L; z  J. Z' c9 o' l: y1 p# x

& {0 q0 e' y8 S5 r! `; w
% E1 U. O7 F+ h" k1 U) n

0 S. k* P% S5 E# }! w& \9 h7 k. A6 w  E* d

+ |* B. O; m" n( H% _3 k1 U" x0 O+ i, |
5 K) Z0 Q5 i6 _" S) r1 W9 c$ N
8 M* \" F5 ~$ R
; T( V; J9 |9 m. O
void main()
4 q' [3 I; u! _/ d0 }: s{
) a( W# e, t# C' c* }( T4 R2 P! f/ G0 Elcd1602_init();        //液晶初始化
# `9 H9 t" w+ @" V/ \+ _% Twhile(1)2 P; x* s( {7 m
{% n2 y4 b- `) Q$ K/ Y
: N  K! ?; B, |# l3 d: k

. D7 N5 }# r0 Q, V% G…………限于本文篇幅 余下代码请从论坛下载附件…………' G2 t0 c' V) J7 @4 P; z# G
游客,如果您要查看本帖隐藏内容请回复
5 v& [7 Y7 U; k- @  |
8 r! O4 `( b  z' ?) j: R

评分

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

查看全部评分

该用户从未签到

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

该用户从未签到

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

该用户从未签到

5#
发表于 2019-5-27 14:42 | 只看该作者
可以分享程序吗+ B8 M5 ], l+ H0 q7 \8 h7 r

该用户从未签到

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

该用户从未签到

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

该用户从未签到

8#
发表于 2020-5-7 19:17 | 只看该作者
66666666666666666666666! l7 [$ b  A" H# W
  • TA的每日心情
    擦汗
    2026-2-7 15:16
  • 签到天数: 64 天

    [LV.6]常住居民II

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2026-4-18 23:14 , Processed in 0.109375 second(s), 30 queries , Gzip On.

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

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

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