找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2577|回复: 7
打印 上一主题 下一主题
收起左侧

关于单片机控制继电器的问题求助

[复制链接]
跳转到指定楼层
楼主
ID:347070 发表于 2018-6-7 23:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
50黑币
想用单片机控制继电器
买的现成的继电器模块,已经成功用按键控制继电器的开关动作,
现在想请问各位大神,继电器最终是控制电机的
想用光电传感器和码盘来控制  按下按键电机转一圈或两圈继电器关闭
或者是定时关闭  设定一个时间  按下按键继电器工作  倒计时开始  到零时继电器关闭
不需要数码管或其他的显示
只要能工作就行了
本人小白一个  
请各位大神指教
#include<reg51.h>
sbit S4=P3^2;
sbit S3=P3^1;
sbit in=P1^0;

void main()
{
        while(1)                  
        {
                if(S3==0)
                        in=0;
                if(S4==0)
                        in=1;
               
        }
}

这是参考别人案例写出来的
买的成品开发板
继电器模块  光电模块都是现成的
跪求各位大神们的指教

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:347288 发表于 2018-6-8 00:29 | 只看该作者
我是使用DAC0832的直通方式进行数/模变换的,还加了一个按键来控制输出电压的大小
主要是通过控制时间来进行开关控制的,当设定的时间值(这里只是我个人随便设定的)到了的时候就会停止工作,不然就会一直工作,希望可以帮到你

/*****************必要的变量定义***************** /
# include< reg51. h>
unsigned char t= 0;     //定义时间的电压变量
/*****************主程序****************/
main()
{
EA= 1;         //开总中断
EXO= 1;        //开外部中断0
ITo= 1;         //设置外部中断0为下降沿触发方式
while(1)
{
P2=t;     //将速度变量从P2口输出,让DAC0832转换成模拟电压
}
}
/*****************外部中0断子程序***************** /
void into()  interrupt 0
{
if (t== 255) ;       //将t控制在最大值255
else t= t+ 5;   //每次中断以5为步长递增
}
回复

使用道具 举报

板凳
ID:347288 发表于 2018-6-8 00:31 | 只看该作者
因为你没有提供相关图片,所以下面是我参照其他例子给出的答案,希望可以帮到你 /*****************必要的变量定义***************** / # include< reg51. h> unsigned char t= 0;     //定义时间的电压变量 /*****************主程序****************/ main() { EA= 1;         //开总中断 EXO= 1;        //开外部中断0 ITo= 1;         //设置外部中断0为下降沿触发方式 while(1) { P2=t;     //将速度变量从P2口输出,让DAC0832转换成模拟电压 } } /*****************外部中0断子程序***************** / void into()  interrupt 0 { if (t== 255) ;       //将t控制在最大值255 else t= t+ 5;   //每次中断以5为步长递增 }
回复

使用道具 举报

地板
ID:249349 发表于 2018-6-8 09:11 | 只看该作者
根据你所讲的要求,只用到2个IO口,一个按键输入,一个是继电器控制输出。按键按一下,电机运停止行一定时间后自动停止。程序这样:
#include<reg51.h>
sbit S3=P3^1;
sbit in=P1^0;

void main()
{
uint a;
        while(1)                  
        {
                if(S3==0)
                        in=0;
                for(a=????,a>0,a--);//这里延时等待。根据实际需要设置a的初始值
                        in=1;
               
        }
}
回复

使用道具 举报

5#
ID:137261 发表于 2018-6-8 11:12 | 只看该作者
你能收到传感器传回来的电机后,做一个判断,然后就可以控制继电器断开了
回复

使用道具 举报

6#
ID:347070 发表于 2018-6-9 12:15 | 只看该作者
27789111090 发表于 2018-6-8 00:29
我是使用DAC0832的直通方式进行数/模变换的,还加了一个按键来控制输出电压的大小
主要是通过控制时间来进 ...

谢谢老大 但是你的这个方案不太适合我  还需要另外多加一个芯片  我这里买东西不太方便  买个开发板7天才到我这里  不过还是感谢回复
回复

使用道具 举报

7#
ID:347070 发表于 2018-6-9 12:20 | 只看该作者
yesnotgo 发表于 2018-6-8 09:11
根据你所讲的要求,只用到2个IO口,一个按键输入,一个是继电器控制输出。按键按一下,电机运停止行一定时 ...

非常感谢   
恩。。。。应该是这样  按一下按键  继电器工作  从而电机工作   这个a的延时定义  应该怎么写   比方说定时5秒  a应该等于多少   
回复

使用道具 举报

8#
ID:347070 发表于 2018-6-9 12:28 | 只看该作者
淡然若梦 发表于 2018-6-8 11:12
你能收到传感器传回来的电机后,做一个判断,然后就可以控制继电器断开了

感谢回复
这个判断怎么编写呢  
我把传感器直接接到单片机IO上面   按键能启动继电器     光电传感器上面一放上东西遮盖上   继电器就断电了
传感器变成感应开关了
我也需要他是个开关   但是码盘上一般不都好几个遮挡口么(能明白我的意思吧)
这刚一转 就遮上了  达不到我需要电机转动的量
恳请再详细些  可以么
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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