找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2332|回复: 8
收起左侧

关于51单片机控制窗帘的设计

[复制链接]
ID:238105 发表于 2017-10-17 22:01 | 显示全部楼层 |阅读模式
用51单片机、光敏电阻、步进电机做一个设计 就是 有光的时候步进电机正转 没光的时候反转
具体用到:STC89C51单片机、ULN2003步进电机驱动模块、4线光敏电阻
希望大佬能萌新写一下Keil程序和接法。。。
回复

使用道具 举报

ID:166645 发表于 2017-10-17 22:23 | 显示全部楼层
这个比较的简单,,通过光敏电阻和电压比较器做一个高低电平的输出接到单片机的外部中断,通过外部中断的触发实现步进电机的正反转.
回复

使用道具 举报

ID:240533 发表于 2017-10-18 11:57 | 显示全部楼层
谢谢楼主的分享
回复

使用道具 举报

ID:241073 发表于 2017-10-21 16:53 | 显示全部楼层
/*这是可以使用的程序,你可以参靠一下*/
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit wela=P2^7;
sbit AD_wr=P3^6;
sbit AD_rd=P3^7;
uchar temp;

void delay(uint x)
{
        int i,j;
        for(i=x;i>0;i--)
                for(j=110;j>0;j--);
}
uchar code table_a[]=
{0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
uchar code table_b[]=
{0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
uchar check()
{
        wela=1;                   //锁存1
        AD_wr=0;
        delay(1);
        AD_wr=1;
        delay(10);
               
    wela=0;//锁存1
    wela=1;                //重新打开有AD片选信号锁存器的锁存端           
        P1=0xff;        //读取P1口之前先给其写全1

        AD_rd=0;
        temp=P1;        //AD数据读取赋给P1口
        AD_rd=1;

        AD_wr=0;
        P1=temp;
        return temp;
}
void main()
{
        while(1)
        {         

       
                while(check()>140)
                {        uchar i;
                        for(i=0;i<8;i++)
                        {
                                P0=table_a[i];
                                delay(10);
                        }        
                }
                while(check()<80)
                {        uchar i;
                        for(i=0;i<8;i++)
                        {
                                P0=table_b[i];
                                delay(10);
                        }        
                }
        }
}
回复

使用道具 举报

ID:238105 发表于 2017-10-26 21:42 | 显示全部楼层
8往事随风001 发表于 2017-10-21 16:53
/*这是可以使用的程序,你可以参靠一下*/
#include
#include

怎么连接呢
能不能具体标注一下。。。
谢谢大佬了
回复

使用道具 举报

ID:82765 发表于 2017-10-27 10:59 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

ID:64150 发表于 2017-10-27 13:41 | 显示全部楼层
我觉得这个要用到ADC,不是一个数字电平能解决的。
回复

使用道具 举报

ID:212797 发表于 2017-10-28 16:40 | 显示全部楼层
一种方法是,将光敏电阻得到的值通过电压比较器得到一个数字高低电平,然后单片机通过高低电平判断控制电机,这种方法麻烦的地方是,你要实际测试调整比较器输出的高低电平,最好能设计一个合理的电平缓冲区,软件设计相对简单;
另一种方法是,加上AD采样,设置好跳变的阈值,通过软件判断。这种方法硬件设计比较简单,但是软件上需要做AD采样后数据处理算法设计,防止采样得到的的错误数据,另外需要实际测试不同光照下的光敏输出值。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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