標(biāo)題:
單片機(jī)智能窗簾的單片機(jī)程序,怎么實(shí)現(xiàn)開啟1/2窗簾
[打印本頁]
作者:
xiaoxiaov5
時(shí)間:
2018-6-13 19:39
標(biāo)題:
單片機(jī)智能窗簾的單片機(jī)程序,怎么實(shí)現(xiàn)開啟1/2窗簾
怎么用delay實(shí)現(xiàn) 窗簾開啟1/2 且讓電機(jī)隨時(shí)停止
#include<reg52.h>
#define uchar unsigned char
sbit D0 = P2^0;
sbit D1 = P2^1;
sbit D2 = P2^2;
sbit K1=P3^0;
sbit K2=P3^1;
sbit IN1=P1^0;
sbit IN2=P1^1;
void delay(unsigned int z);
void run(void)
{
IN1=0;
IN2=1;
}
void stop(void)
{
IN1=0;
IN2=0;
}
void back(void)
{
IN1=1;
IN2=0;
}
void main(void)
{
uchar flag=0;
P2=0x08;
while(1)
{
if(D1==1)
{
if(D1==1)
{
flag++;
if(flag==3)
{
flag=0;
}
while(D1);
}
switch(flag)
{
case 1:
back();
D1=0;
delay(5000);
stop();
break;
case 2:
back();
D1=0;
break;
}
}
if(D2==1)
{
if(D2==1)
{
flag++;
if(flag==3)
{
flag=0;
}
while(D2);
}
switch(flag)
{
case 1:
run();
D2=0;
delay(5000);
stop();
break;
case 2:
run();
D2=0;
break;
}
}
if(K1==0||K2==0)
{
stop();
}
if(D0==1)
{
while(D0==1)
{
stop() ;
}
}
}
}
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
作者:
yzwzfyz
時(shí)間:
2018-6-14 05:10
不是程序如何寫?而是你如何構(gòu)思窗簾的起、停。
作者:
zhanghyg
時(shí)間:
2018-6-14 09:02
你要用時(shí)間控制的話很難到1/2的,最好的辦法就是在1/2的位置加個傳感器做限位。
作者:
17854168230
時(shí)間:
2018-6-14 09:47
中間加一個繼電器來控制
作者:
ahshmj
時(shí)間:
2018-6-14 10:48
如果你是用步進(jìn)電機(jī)作動力,通過控制運(yùn)行的步數(shù)可以實(shí)現(xiàn)。
作者:
dzbj
時(shí)間:
2018-6-14 13:13
用時(shí)間 至少要有起點(diǎn)和止點(diǎn)開關(guān) 每次都從止點(diǎn)或起點(diǎn)開始計(jì)時(shí) 運(yùn)行全行程的一半時(shí)間
用步進(jìn)電機(jī) 起點(diǎn)脈沖數(shù)清零 到終點(diǎn)的一半就是1/2
用角度傳感器 計(jì)算旋轉(zhuǎn)多少度折算成距離
用碼軌 總計(jì)多少個脈沖 走一半就是1/2
用編碼器或者碼盤
還有更高級的 用個紅外測距頭模塊 讀距離
等等 等等
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1