找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4746|回复: 1
收起左侧

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

[复制链接]
ID:197676 发表于 2017-5-7 12:33 | 显示全部楼层 |阅读模式
单片机控制步进电机正反转
设计原理:采用51单片机最小系统,通过达林顿管(ULN2003)来控制一个5线4相异步电机的正转和反转
从而达到晾衣架升降的目的
本系统还有衣服的重量自动检测的功能,采用模数转换器ADC0832,对重量传感器进行重量采集
将采集到的信号转换为数字信号送至单片机处理,并最终显示在LCD1602液晶显示器上
系统会自动的根据衣物的重量控制晾衣架的起落
0.png 0.png 0.png

单片机源程序:
  1. #include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器
  2. #include "adc0832.h"
  3. #include "lcd1602.h"
  4. #include "delay.h"
  5. #include<intrins.h>       
  6. #include <string.h>
  7. #define uchar unsigned char
  8. #define uint unsigned int
  9. uchar flag=0;


  10. unsigned char code F_Rotation[8]={0x08,0x18,0x10,0x30,0x20,0x60,0x40,0x48};    //顺时针转表格
  11. unsigned char code B_Rotation[8]={0x48,0x40,0x60,0x20,0x30,0x10,0x18,0x08};    //逆时针转表格
  12. /******************************************/
  13. /*              延时子程序                */
  14. /******************************************/
  15. void Delay1ms(unsigned int count)
  16. {
  17.         unsigned int i,j;
  18.         for(i=0;i<count;i++)
  19.         for(j=0;j<120;j++);
  20. }


  21. //步进电机正转函数
  22. void SETP_MOTOR_FFW(uchar n)
  23. {
  24.         uchar i,j;
  25.         for(i=0;i<5*n;i++)
  26.         {
  27.                  for(j=0;j<8;j++)
  28.                 {
  29.        
  30.                         P3 = F_Rotation[j];
  31.                         Delay1ms(25);
  32.                        
  33.                 }
  34.         }
  35. }


  36. //步进电机反转函数

  37. void SETP_MOTOR_REV(uchar n)
  38. {
  39.         uchar i,j;
  40.         for(i=0;i<5*n;i++)
  41.         {
  42.                  for(j=0;j<8;j++)
  43.                 {
  44.                  
  45.                         P3 = B_Rotation[j];
  46.                         Delay1ms(25);
  47.                 }
  48.         }
  49.        
  50. }


  51. void adc0832_cl(uchar q)
  52. {
  53. q=q*100/255;                //对采集到的AD值进行0-100的量化
  54. LCD_Write_String(4,0,"Weight");
  55. write_com(0xC0+5);
  56. write_dat(q/100+0x30);                        //百位
  57. write_dat(q%100/10+0x30);            //十位
  58. write_dat(q%10+0x30);            //个位
  59.   
  60. if( q>70 && flag==1)

  61. {SETP_MOTOR_REV(2); flag=0; }

  62. if(q<30 && flag==0)
  63. {SETP_MOTOR_FFW(2);  flag=1; }
  64.   
  65.   
  66.   
  67. }







  68. void main()
  69. {
  70. lcd1602_init();        //液晶初始化
  71. while(1)
  72. {

  73. …………限于本文篇幅 余下代码请从51黑下载附件…………


复制代码

下载:
晾衣控制电机转动.rar (116.58 KB, 下载次数: 113)

回复

使用道具 举报

ID:325747 发表于 2018-5-9 13:57 来自手机 | 显示全部楼层
楼主你好,我现在正在做与这个相似的仿真,我想用可变电阻模拟接近开关,想参考一下这个程序,但没有黑币无法下载,你能不能给发一份到我电子邮箱,万分感谢!

评分

参与人数 1黑币 +5 收起 理由
2686419198 + 5 来,送你几个黑币,不谢!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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