切换到宽版
爱科技/爱创意/爱折腾;电子/数码爱好者的家!欢迎访问新版数码之家网站
  • 3056阅读
  • 29回复

需帮助,求一小程序,赠送话费20元 [复制链接]

上一主题 下一主题
离线我是鑫鑫

发帖
265
M币
1174
专家
5
粉丝
106
只看该作者 10楼 发表于: 2015-06-15
1.12V/200MA 是允许的最大的电流,还是电流会超过这个值,是直流还是交流(12V应该是直流吧),如果公共地的则无需光电隔离。
2.继电器用低电平触发方式相比之下安全稳定一些。
3.楼主既然在学习就应该自己大胆尝试。














------------------------------------------鑫鑫
离线firstbird

发帖
6145
M币
236
专家
2
粉丝
18
只看该作者 11楼 发表于: 2015-06-15
他那电流,怀疑是个电流环,毕竟工控用这个比较稳定。
离线hewayking

发帖
803
M币
175
专家
1
粉丝
6
只看该作者 12楼 发表于: 2015-06-15
再简单 的程序 也不只20吧     还不够叨叨的
离线de34r

发帖
906
M币
6548
专家
-1
粉丝
33
只看该作者 13楼 发表于: 2015-06-15
回 blueflash 的帖子
blueflash:也不能这么说,PLC比简单的继电器电路好多了,象以前的任天堂红白机,JS们在仿制中发现,现在这里能省几个元件,那里能省几个电容,最后就造出来了成本超便宜,结构超精简的国寨机了,但实际上无论寿命,质量,和稳定性都和原来比差远了,作为机械化控制,一定要求是严谨和稳定, .. (2015-06-15 08:14) 回 blueflash 的帖子

我的意思不是省元件,是用所谓的”高端科技“制造。比如你这个,可以用继电器定时器控制,当然复杂了说可以用PLC什么的,当然也可以用一台工控电脑控制。,当然说到稳定性就不好说了
离线moplive

发帖
589
M币
2700
专家
2
粉丝
44
只看该作者 14楼 发表于: 2015-06-15
低电压电路低电平出发安全些 ,程序简单,lz可以自己尝试写写,12V200ma直接电阻分压加运放输入ad就可以了。。。 需要的帮助可以交流交流。。。
离线elecfun

发帖
1331
M币
164
专家
12
粉丝
86
只看该作者 15楼 发表于: 2015-06-15
1、建议用光耦隔离,如果共地的话可以电阻分压到5V触发,并加上稳压管。
2、STC单片机复位时IO为高电平,所以低电平控制是合理的。

以下代码在 STC-ISP(V6.85F)范例程序STC12C5Axx/STC12LE5Axx Series - 定时器0 - C 的基础上改写的,只是编译通过,未经验证。IO口配置请自行修改。



C Code
/*------------------------------------------------------------------*/
/* --- STC MCU Limited ---------------------------------------------*/
/* --- STC12C5Axx Series 16-bit Timer Demo -------------------------*/
/* --- Mobile: (86)13922805190 -------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ---------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966----------------------*/
/* --- Web: www.STCMCU.com -----------------------------------------*/
/* --- Web: www.GXWMCU.com -----------------------------------------*/
/* If you want to use the program or the program referenced in the  */
/* article, please specify in which data and procedures from STC    */
/*------------------------------------------------------------------*/

#include "reg51.h"

typedef unsigned char BYTE;
typedef unsigned int WORD;

//-----------------------------------------------

/* define constants */
#define FOSC 12000000L
#define MODE1T                      //Timer clock mode, comment this line is 12T mode, uncomment is 1T mode

#ifdef MODE1T
#define T1MS (65536-FOSC/1000)      //1ms timer calculation method in 1T mode
#else
#define T1MS (65536-FOSC/12/1000)   //1ms timer calculation method in 12T mode
#endif

/* define SFR */
sfr AUXR = 0x8e;                    //Auxiliary register

sbit TRIG   = P1^0;
sbit IO1    = P2^0;
sbit IO2    = P2^1;
sbit IO3    = P2^2;
sbit IO4    = P2^3;
sbit IO5    = P2^4;
sbit IO6    = P2^5;
sbit IO7    = P2^6;
sbit IO8    = P2^7;

/* define variables */
WORD count;                         //1000 times counter
WORD second;

//-----------------------------------------------

/* Timer0 interrupt routine */
void tm0_isr() interrupt 1 using 1
{
    TL0 = T1MS;                     //reload timer0 low byte
    TH0 = T1MS >> 8;                //reload timer0 high byte
    if (count-- == 0)               //1ms * 1000 -> 1s
    {
        count = 1000;               //reset counter
        switch(++second)
        {
        case   2: IO2 = 0; break;
        case  32: IO1 = 1; IO2 = 1; break;
        case 112: IO3 = 0; break;
        case 114: IO4 = 0; break;
        case 119: IO5 = 0; break;
        case 149: IO3 = 1; IO4 = 1; IO5 = 1; break;
        case 229: IO6 = 0; break;
        case 231: IO7 = 0; break;
        case 236: IO8 = 0; break;
        case 266: IO6 = 1; IO7 = 1; IO8 = 1;  TR0 = 0; second = 0; break;
        }
    }
}

//-----------------------------------------------

/* main program */
void main()
{
#ifdef MODE1T
    AUXR = 0x80;                    //timer0 work in 1T mode
#endif
    TMOD = 0x01;                    //set timer0 as mode1 (16-bit)
    TL0 = T1MS;                     //initial timer0 low byte
    TH0 = T1MS >> 8;                //initial timer0 high byte
    TR0 = 0;                        //timer0 start running
    ET0 = 1;                        //enable timer0 interrupt
    EA = 1;                         //open global interrupt switch
    count = 1000;                      //initial counter
    second = 0;
    
    TRIG = 1;
    IO1  = 1;
    IO2  = 1;
    IO3  = 1;
    IO4  = 1;
    IO5  = 1;
    IO6  = 1;
    IO7  = 1;
    IO8  = 1;
    
    while (~TRIG);                      //high triger
    TR0 = 1;
    IO1 = 0;
    while(1);
}
离线18675537031

发帖
270
M币
446
专家
0
粉丝
16
只看该作者 16楼 发表于: 2015-06-15
我是鑫鑫:1.12V/200MA 是允许的最大的电流,还是电流会超过这个值,是直流还是交流(12V应该是直流吧),如果公共地的则无需光电隔离。
2.继电器用低电平触发方式相比之下安全稳定一些。
3.楼主既然在学习就应该自己大胆尝试。
....... (2015-06-15 09:35) 

星星怎么现在没有好货出品了啊!

内容来自Android手机客户端

离线drsd

发帖
276
M币
482
专家
0
粉丝
17
只看该作者 17楼 发表于: 2015-06-15
谢谢大家的热情指点,大家想复杂了,就一简单的小程序,用来跑跑试试,只是控制下LED灯的开启关闭。
程序本身不复杂,只是本人对时间函数不熟悉。这程序对时间精度要求不高的,至于你们提到的plc,确实不懂。
以前就是用时间继电器,老坏。

因本意是学习,东西本身价值又不高,充话费只是聊表谢意,找人问个路也得搭支烟吧。
至于用12C5A60S2,是因为买学习机时顺带买了几块,手里边有3块这芯片,正好利用。


谢谢楼上的帮助,我先试试,能行的话,你私信我手机号,我回头就充、
再次感谢




离线drsd

发帖
276
M币
482
专家
0
粉丝
17
只看该作者 18楼 发表于: 2015-06-15
回 elecfun 的帖子
elecfun:1、建议用光耦隔离,如果共地的话可以电阻分压到5V触发,并加上稳压管。
2、STC单片机复位时IO为高电平,所以低电平控制是合理的。
以下代码在 STC-ISP(V6.85F)范例程序STC12C5Axx/STC12LE5Axx Series - 定时器0 - C 的基础上改写的,只是编译通过,未经验证。IO口配置请自行修改 .. (2015-06-15 12:47) 回 elecfun 的帖子

*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
    SYMBOL:  MAIN
    MODULE:  lsgw.obj (LSGW)
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?MAIN?LSGW
Program Size: data=21.0 xdata=0 code=289
目标未产生


第一个错误是重复定义的原因吗?后边的警告看不懂,


不好意思,我搞错了,在试试
[ 此帖被drsd在2015-06-15 18:01重新编辑 ]
离线我是鑫鑫

发帖
265
M币
1174
专家
5
粉丝
106
只看该作者 19楼 发表于: 2015-06-15
回 18675537031 的帖子
18675537031:星星怎么现在没有好货出品了啊!
 (2015-06-15 16:03) 回 18675537031 的帖子

最近连生活费都还差一大截,没有资金了啊。
快速回复
限80 字节
温馨提示:欢迎交流讨论,请勿发布纯表情、纯引用等灌水帖子;以免被删除
 
上一个 下一个