24

主题

1

好友

3161

积分
     

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
29109
帖子
8870
精华
0
经验
3161 点
金钱
2912 ¥
注册时间
2007-10-19
发表于 2014-4-18 10:29 | 显示全部楼层
本帖最后由 落花萧然 于 2014-4-18 21:29 编辑

老早坛子的买了个坏的时序电源
一直在吃灰,没时间修。
这天心血来潮,打开看看,全部是门电路搭的一个顺序控制电源
板子已经被修过,很多地方补过
现在的情况是直通开关打开能全部输出,不能时序控制
因此说明后面的继电器及其驱动回路是好的
只是时序控制这块有问题,犯懒了,不想查电路
简单查了下电源,两个变压器,一个是直通时的电源,一个是时序时的电源
于是想用单片机做个时序控制应该不错,而且电路简单
直通就不用了,于是拆掉直通的变压器,正好放单片机的板子
解除+5V给门电路IC的供电,保持12V给继电器和驱动的电源,+5V正好给单片机用
详细查了下驱动,如下:

IMG_20140418_093502_调整大小.jpg


控制部分采用2051,输出本来想直接驱动继电器,但是由于2051P1口输出上拉不给力
见帖子:http://bbs.mydigit.cn/read.php?tid=834875

改用光耦输出,正好隔离继电器,省的干扰单片机
基本想法:

IMG_20140418_093518_调整大小.jpg


用proteus搭了个电路试了下,keil写了个简单的控制程序,效果还行
单片机真的很多年不动了,发现很多知识都忘了,翻了好几天的书呀!

无标题_调整大小.jpg


代码:

#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code out[]={0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00};
uchar i;

void DelayMS(uint x)
{
     uchar i=0;
    while(x--)
    {
         for(i=100;i>0;i--);
    }
}

void main()
{
     P1 = 0xFF;
    P3 = 0x00;
    i=0;
    while(1)
    {
      if(P3^7==1)
            {                  
               i++;
               P1 =out[ i ];            
              if (i>8) i=8;              
              DelayMS(1000);         

              }

     else    if(P1!=0xFF)
            {            
                 P1 =out[ i ];
                i--;
                if (i<0) i=0;                                   
                  DelayMS(1000);   

             }   
     }
}

实验中的图片:

IMG_20140411_144639_调整大小.jpg





完成后:

IMG_20140414_104110_调整大小.jpg


视频:

评分

参与人数 2经验 +60 收起 理由
一个好人 + 30 不好意思,才看到~~~
ahao + 30 支持动手。

查看全部评分

424

主题

3

好友

1万

积分
     

超级版主 当前离线

Rank: 8Rank: 8

UID
13663
帖子
13726
精华
6
经验
10608 点
金钱
8449 ¥
注册时间
2006-10-21

论坛版主 优秀版主 乐于助人 DIY大赛获奖

发表于 2014-4-18 11:52 | 显示全部楼层
支持。
程序粘贴过来后丢东西了, P1 =out; 应该是out [ i ],由于大部分论坛软件会把[i]自动以为是斜体字标示,粘贴过来就会丢失这个部分,所以现在遇到这部分就把i两边加空格避免。

24

主题

1

好友

3161

积分
     

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
29109
帖子
8870
精华
0
经验
3161 点
金钱
2912 ¥
注册时间
2007-10-19
 楼主| 发表于 2014-4-18 21:32 | 显示全部楼层
本帖最后由 落花萧然 于 2014-4-18 21:33 编辑
ahao 发表于 2014-4-18 11:52
支持。
程序粘贴过来后丢东西了, P1 =out; 应该是out [ i ],由于大部分论坛软件会把自动以为是斜体字 ...


没注意,改了
这个程序很简单
主要是几个边界量和过程量的控制
主要是执行期间要是3.7控制变化,还要反序执行


还有就是给大家提供个思路
很多老的时许电源的继电器和线路还是很不错的
控制要是坏了,简单改一改,就ok
而且算是半个专业设备吧

20

主题

1

好友

191

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
359447
帖子
276
精华
0
经验
191 点
金钱
187 ¥
注册时间
2011-7-2
发表于 2015-8-22 19:54 | 显示全部楼层
注释下程序就更好了 。呵呵。 我对那个数组不是很懂

1

主题

0

好友

43

积分

注册会员 当前离线

Rank: 2

UID
24580
帖子
42
精华
0
经验
43 点
金钱
43 ¥
注册时间
2007-7-12
发表于 2015-8-27 13:10 | 显示全部楼层
顺序控制用CD4017啊,何必这么辛苦

127

主题

0

好友

1万

积分
     

版主 当前离线

脑放进行时

Rank: 7Rank: 7Rank: 7

UID
3986
帖子
18070
精华
2
经验
17401 点
金钱
15138 ¥
注册时间
2005-4-20

社区贡献 优秀设计 论坛版主

发表于 2015-8-27 14:30 | 显示全部楼层
2051很远古的东西

1140

主题

3

好友

1192

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
495566
帖子
5348
精华
0
经验
1192 点
金钱
52 ¥
注册时间
2012-5-11
发表于 2015-8-28 13:53 | 显示全部楼层
学习了。。。。。。。。

17

主题

0

好友

70

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
811133
帖子
99
精华
0
经验
70 点
金钱
51 ¥
注册时间
2016-3-23
发表于 2016-3-25 12:20 | 显示全部楼层
赞一个
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部