找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机控制继电器通断电设计

查看数: 9893 | 评论数: 27 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-3-24 21:39

正文摘要:

题目是通过单片机来控制继电器从而达到通断电的效果,通过DC12V电压或者DC5V电压来控制AC220V的通断。然后达到的效果是类似5s通5s断,之后每1s累加一次,即下一次6s通5s断,再下一次7s通,5s断...... 直至40s通,5s ...

回复

ID:402168 发表于 2018-10-20 14:21
想要楼主的程序
ID:192243 发表于 2017-5-10 21:32
原理图正确,带上计时器按时间输出基本就行了
ID:182910 发表于 2017-5-10 20:24
dzbj 发表于 2017-4-11 23:52
刚才少看最后一句了 补上

bit flag_one=0;                //第一次工作标记

谢谢,我已经编出来了
ID:196701 发表于 2017-5-5 10:01
dzbj 发表于 2017-4-11 23:52
刚才少看最后一句了 补上

bit flag_one=0;                //第一次工作标记

请问,用单片机控制固态继电器,再控制高频电磁阀每秒钟开关50次,请问这个程序应该怎么写
ID:158774 发表于 2017-4-12 16:22
三极管驱动继电器
ID:47286 发表于 2017-4-11 23:52
刚才少看最后一句了 补上

bit flag_one=0;                //第一次工作标记
uchar num1s=0;                //1s计数器
uchar n=5;                        //总秒数计数器

void mast()        //主控
{
        if(flag_one==0)                //如果 第一次工作标记为0 这里是你要求的第一次5s开5s关
        {
                jk=1;                                //继电器吸合
                num1s=0;                        //延时5s
                while(num1s<n);
                jk=0;                                //继电器关闭
                num1s=0;                        //延时5s
                while(num1s<n);
                flag_one=1;                        //第一次工作标记置1 不再运行5s间隔的状态
                n++;                                //总秒数计数器自加
        }

        jk=1;                                //继电器吸合
        num1s=0;                        //延时5+n秒 每次+1S
        while(num1s<n);
        n++;                                //总秒计数器自加
        jk=0;                                //继电器关闭
        num1s=0;                        //延时5s 你要求开时间每次+1S 关时间不变
        while(n<5);
//刚才没看见你最后一句话没写这段
        if(n==40)                        //判断总次数 如果总次数是40
        {
                flag_one=0;                        //第一次工作标记清零                       
                n=5;                                //总秒数计数器置5
        }
}

void Server_Time0() interrupt 1        //定时器服务程序
{
        TH0 = xx;                        //重装定时初值 1s
        TL0 = xx;                        //重装定时初值 1s
       
        num1s++;                        //1s计数器自加       
}

void main()
{
        Init_Time();        //定时器初始化 没给你写 基础程序了

        while(1)
        {
                mast();                        //调用 主控程序
        }
}
ID:47286 发表于 2017-4-11 23:47
Vanessa 发表于 2017-3-26 18:00
三极管接法查的比较容易坏,正在考虑要不要用2003驱动数码管

三极管没有很容易坏 现在有很多集成片子 有UN2008 当年没这些片子的时候 还不都是三极管干 也没见几个坏的

我喜欢用N-MOS 比三极管好用 不需要电流 51的准双向端口直接就能驱动了

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

ID:47286 发表于 2017-4-11 23:41
我写了一个 不知道对不对 一起学习吧

bit flag_one=0;                //第一次工作标记
uchar num1s=0;                //1s计数器
uchar n=5;                        //总秒数计数器

void mast()        //主控
{
        if(flag_one==0)                //如果 第一次工作标记为0 这里是你要求的第一次5s开5s关
        {
                jk=1;                                //继电器吸合
                num1s=0;                        //延时5s
                while(num1s<n);
                jk=0;                                //继电器关闭
                num1s=0;                        //延时5s
                while(num1s<n);
                flag_one=1;                        //第一次工作标记置1 不再运行5s间隔的状态
                n++;                                //总秒数计数器自加
        }

        jk=1;                                //继电器吸合
        num1s=0;                        //延时5+n秒 每次+1S
        while(num1s<n);
        n++;                                //总秒计数器自加
        jk=0;                                //继电器关闭
        num1s=0;                        //延时5s 你要求开时间每次+1S 关时间不变
        while(n<5);
}

void Server_Time0() interrupt 1        //定时器服务程序
{
        TH0 = xx;                        //重装定时初值 1s
        TL0 = xx;                        //重装定时初值 1s
       
        num1s++;                        //1s计数器自加       
}

void main()
{
        Init_Time();        //定时器初始化 没给你写 基础程序了

        while(1)
        {
                mast();                        //调用 主控程序
        }
}

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

ID:186936 发表于 2017-4-11 23:09
原理图基本没错误,程序中如果能达到设计的那样,完全可以实现。加油

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

ID:165180 发表于 2017-3-29 16:42
用三极管驱动,继电器。也可以用可控硅控制。
ID:151348 发表于 2017-3-27 08:31

不是用来做调光啊,看来我猜错了。调光把灯的亮度进行调节

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

ID:111634 发表于 2017-3-26 22:15
Vanessa 发表于 2017-3-26 18:00
三极管接法查的比较容易坏,正在考虑要不要用2003驱动数码管

只要在继电器驱动线圈两端并联二极管就可。
ID:182910 发表于 2017-3-26 22:14
越快乐越堕落 发表于 2017-3-26 21:09
直接用三极管驱动继电器,加一个保护继电器的二极管就好了,用ULN2003太浪费了

已经改成三极管的了
ID:99130 发表于 2017-3-26 21:09
直接用三极管驱动继电器,加一个保护继电器的二极管就好了,用ULN2003太浪费了

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

ID:183604 发表于 2017-3-26 19:14
用个8050驱动继电器

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

ID:182910 发表于 2017-3-26 19:13
yzwzfyz 发表于 2017-3-25 01:12
基本正确,可以实现。
但复按钮,接法不当,复位一次后,C3上的电放不掉。就不能再复位了。要等电容自放电 ...

那应该怎么改呢?
ID:182910 发表于 2017-3-26 18:02
yzwzfyz 发表于 2017-3-25 01:12
基本正确,可以实现。
但复按钮,接法不当,复位一次后,C3上的电放不掉。就不能再复位了。要等电容自放电 ...

能给个建议改正吗,有点不太懂,谢谢
ID:182910 发表于 2017-3-26 18:01
199419zzq 发表于 2017-3-26 14:31
原理图正确,就看你编程能不能实现了

正在往出憋程序
ID:182910 发表于 2017-3-26 18:01
imxuheng 发表于 2017-3-26 11:13
用三极管驱动继电器就行了,给继电器线圈并联一个二极管来保护继电器线圈。如果你要做调光建议用光耦+可控 ...

调光是什么呢
ID:182910 发表于 2017-3-26 18:00
zl2168 发表于 2017-3-25 09:05
2003驱动电路7路用了一路,真可惜。没有性价比更好的方案吗?

三极管接法查的比较容易坏,正在考虑要不要用2003驱动数码管
ID:68468 发表于 2017-3-26 14:42
三极管驱动继电器会省点,继电器触点处应并上一个消火花电容

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

ID:162841 发表于 2017-3-26 14:31
原理图正确,就看你编程能不能实现了
ID:151348 发表于 2017-3-26 11:13
用三极管驱动继电器就行了,给继电器线圈并联一个二极管来保护继电器线圈。如果你要做调光建议用光耦+可控硅硬件电路,PWM控制方式

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

ID:111634 发表于 2017-3-25 09:05
2003驱动电路7路用了一路,真可惜。没有性价比更好的方案吗?
ID:123289 发表于 2017-3-25 01:12
基本正确,可以实现。
但复按钮,接法不当,复位一次后,C3上的电放不掉。就不能再复位了。要等电容自放电结束,这需要很长时间。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

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

Powered by 单片机教程网

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