找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3664|回復: 8
收起左側

關于51單片機控制窗簾的設計

[復制鏈接]
ID:238105 發(fā)表于 2017-10-17 22:01 | 顯示全部樓層 |閱讀模式
用51單片機、光敏電阻、步進電機做一個設計 就是 有光的時候步進電機正轉(zhuǎn) 沒光的時候反轉(zhuǎn)
具體用到:STC89C51單片機、ULN2003步進電機驅(qū)動模塊、4線光敏電阻
希望大佬能萌新寫一下Keil程序和接法。。。
回復

使用道具 舉報

ID:166645 發(fā)表于 2017-10-17 22:23 | 顯示全部樓層
這個比較的簡單,,通過光敏電阻和電壓比較器做一個高低電平的輸出接到單片機的外部中斷,通過外部中斷的觸發(fā)實現(xiàn)步進電機的正反轉(zhuǎn).
回復

使用道具 舉報

ID:240533 發(fā)表于 2017-10-18 11:57 | 顯示全部樓層
謝謝樓主的分享
回復

使用道具 舉報

ID:241073 發(fā)表于 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數(shù)據(jù)讀取賦給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 發(fā)表于 2017-10-26 21:42 | 顯示全部樓層
8往事隨風001 發(fā)表于 2017-10-21 16:53
/*這是可以使用的程序,你可以參靠一下*/
#include
#include

怎么連接呢
能不能具體標注一下。。。
謝謝大佬了
回復

使用道具 舉報

ID:82765 發(fā)表于 2017-10-27 10:59 | 顯示全部樓層
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
回復

使用道具 舉報

ID:64150 發(fā)表于 2017-10-27 13:41 | 顯示全部樓層
我覺得這個要用到ADC,不是一個數(shù)字電平能解決的。
回復

使用道具 舉報

ID:212797 發(fā)表于 2017-10-28 16:40 | 顯示全部樓層
一種方法是,將光敏電阻得到的值通過電壓比較器得到一個數(shù)字高低電平,然后單片機通過高低電平判斷控制電機,這種方法麻煩的地方是,你要實際測試調(diào)整比較器輸出的高低電平,最好能設計一個合理的電平緩沖區(qū),軟件設計相對簡單;
另一種方法是,加上AD采樣,設置好跳變的閾值,通過軟件判斷。這種方法硬件設計比較簡單,但是軟件上需要做AD采樣后數(shù)據(jù)處理算法設計,防止采樣得到的的錯誤數(shù)據(jù),另外需要實際測試不同光照下的光敏輸出值。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表