axe1 发表于 2013-1-22 17:45:52

求助单片机控制继电器程序。

51单片机,K1=1,K2=1;Q1吸合2s后=0(k1合k2同时=1,继电器吸合2s后断开)。K3=1;Q2=1.K4=1;Q2=0.(K3合K4组成互锁开关)。K5/K6=1,Q3/Q4=1(K5K6与Q3Q4组成自锁开关).求高手帮忙写段完整程序用于学习,本人刚起步只知道一些量的定义。谢谢。

alengend 发表于 2013-1-22 17:50:53

智商太低,没看明白啥意思 {:sweat:}{:sweat:}

Lavion 发表于 2013-1-22 17:53:42

你还是看学校里的教程吧

fulitun 发表于 2013-1-22 18:02:46

plc不懂的飘过

axe1 发表于 2013-1-22 19:14:13

Lavion 发表于 2013-1-22 17:53 static/image/common/back.gif
你还是看学校里的教程吧

未进学校的,手上只有一些开发板的例程。

axe1 发表于 2013-1-22 19:58:34

alengend 发表于 2013-1-22 17:50 static/image/common/back.gif
智商太低,没看明白啥意思

就是K1K2同时按下Q1输出2s高电平,K1K2再同时按下Q1再输出2s高电平。K3按下Q2输出高电平,K4按下Q2输出低电平。K5按下Q3输出高电平,K5再按下Q3输出低电平。k6同k5。麻烦给个程序谢谢。

skynet 发表于 2013-1-22 20:02:47

迷糊了.天书阿

SAI 发表于 2013-1-22 20:03:16

{:sweat:}{:sweat:}{:sweat:}

n0831 发表于 2013-1-22 20:04:16

貌似关系还蛮复杂的。转的头有点晕晕。

shiy 发表于 2013-1-22 20:08:54

这个需要初始化一下定时器会效果更好些,定时器用标计位产生一秒基准

axe1 发表于 2013-1-22 20:25:08

shiy 发表于 2013-1-22 20:08 static/image/common/back.gif
这个需要初始化一下定时器会效果更好些,定时器用标计位产生一秒基准

有请赐教,用12m晶振。

zgxcom123 发表于 2013-1-22 20:27:24

貌似是PLC的程序………………

不过我是考试时候才开始学的这玩意

weichao4808335 发表于 2013-1-22 20:30:17

出rmb吧,我给你写 单片机plc都可,没有rmb没有动力!!!!{:lol:}{:lol:}{:lol:}

shiy 发表于 2013-1-22 20:34:15

#include<reg52.h>
unsigned int tt;

sbit K1=P0^0;
sbit K2=
sbit K3=
sbit K4=
sbit K5=
sbit Q1=
sbit Q2=
sbit Q3=
sbit Q4=

void INIT0(void)
{   
    TMOD=0X01;
    TH0=(65536-5000)/256;
    TL0=(65536-5000)%256;
    EA=1;
    ET0=1;
   
}
void delayms(unsigned int x)

{
   unsigned int i,j;
   for(i=x;i<0;i--)
      for(j=110;j<0;j--);


}

void main(void)
{
   INIT0();//定时器初始化
   while(1)
{
    if((K1==1)&&(K2==1))   
    {
      delayms(30);//消抖
      if((K1==1)&&(K2==1))
      {
       FLAG_Q1=2; tt=0; TR0=1;
      }
    }

    if((k3==1)&&(k4!=1))Q2=1;
    if((k4==1)&&(K3!=1))Q2=0;


    if(k5==1)
    {
      delayms(30);
       if(k5==1)   Q3=~Q3;
    }

    if(k6==1)
    {
      delayms(30);
       if(k5==6)   Q4=~Q4;
    }


    if(FLAG_Q1==0) { Q1=0; TR0=0;}
    else   Q1=1;
}

}


void TIME0()interrupt 1   //序列号
{
          
          TH0=(65536-5000)/256;                       
          TL0=(65536-5000)%256;                       
          tt++;
          if(tt==200)
          {
              tt=0;
            FLAG_Q1--;
          }


}

t2008101037 发表于 2013-1-22 20:34:55

这个最好自己琢磨。

axe1 发表于 2013-1-22 20:39:13

本帖最后由 axe1 于 2013-1-22 20:42 编辑

shiy 发表于 2013-1-22 20:34 static/image/common/back.gif
#include
unsigned int tt;



你好,这里是延时用的吗?(FLAG_Q1=2; tt=0; TR0=1;
)谢谢!
   {
      delayms(30);
       if(k5==6)   Q4=~Q4;
    }

这个应该是这样吧!
   {
      delayms(30);
       if(k6==1)   Q4=~Q4;
    }

shiy 发表于 2013-1-22 20:43:10

axe1 发表于 2013-1-22 20:25 static/image/common/back.gif
有请赐教,用12m晶振。

对 那个代码就是12M的,你这个用梯形图看着会更容易理解些。你所说的自锁互锁都是梯形图里的术语。写的程序不知道能编译过去不,写的匆忙可能有不恰当地地方

shiy 发表于 2013-1-22 20:45:04

axe1 发表于 2013-1-22 20:39 static/image/common/back.gif
你好,这里是延时用的吗?(FLAG_Q1=2; tt=0; TR0=1;
)谢谢!
   {


对                                 

axe1 发表于 2013-1-22 21:05:48

shiy 发表于 2013-1-22 20:45 static/image/common/back.gif


谢谢,明天安装编译软件试试。

axe1 发表于 2013-1-22 21:07:46

weichao4808335 发表于 2013-1-22 20:30 static/image/common/back.gif
出rmb吧,我给你写 单片机plc都可,没有rmb没有动力!!!!

plc的我写不了单片机。谢谢!

axe1 发表于 2013-1-23 11:48:42

shiy 发表于 2013-1-22 20:45 static/image/common/back.gif


你好!请帮忙不能编译。请看图!谢谢!

weichao4808335 发表于 2013-1-23 11:52:52

axe1 发表于 2013-1-22 21:07 static/image/common/back.gif
plc的我写不了单片机。谢谢!

很好弄滴,那个公司的plc啊 什么型号的啊?

zgxcom123 发表于 2013-1-23 12:00:51

axe1 发表于 2013-1-23 11:48 static/image/common/back.gif
你好!请帮忙不能编译。请看图!谢谢!

把K的大小写改一致就行了

axe1 发表于 2013-1-23 12:54:06

weichao4808335 发表于 2013-1-23 11:52 static/image/common/back.gif
很好弄滴,那个公司的plc啊 什么型号的啊?

我没设备,只有51开发板。

axe1 发表于 2013-1-23 12:58:31

zgxcom123 发表于 2013-1-23 12:00 static/image/common/back.gif
把K的大小写改一致就行了

谢谢,请看看还有2个。

zgxcom123 发表于 2013-1-23 13:44:56

axe1 发表于 2013-1-23 12:58 static/image/common/back.gif
谢谢,请看看还有2个。

这几个变量没有定义,定义成char类型就行了…………

想请问一句,你没学过C语言吗???

weichao4808335 发表于 2013-1-23 13:45:41

axe1 发表于 2013-1-23 12:54 static/image/common/back.gif
我没设备,只有51开发板。

{:funk:}无语

axe1 发表于 2013-1-23 14:53:40

zgxcom123 发表于 2013-1-23 13:44 static/image/common/back.gif
这几个变量没有定义,定义成char类型就行了…………

想请问一句,你没学过C语言吗??? ...

请帮忙。确实没学,现在在自学(也就是模仿高人的代码,从中学到一些。)。是这样吗?(#define uchar unsigned char)

zgxcom123 发表于 2013-1-23 15:00:42

sbit那段代码看见了吧,在那后面另起一行

char FLAG_Q1;

axe1 发表于 2013-1-23 15:54:35

zgxcom123 发表于 2013-1-23 15:00 static/image/common/back.gif
sbit那段代码看见了吧,在那后面另起一行

char FLAG_Q1;

谢谢,编译通过了。请问这是什么意思?

zgxcom123 发表于 2013-1-23 16:36:23

axe1 发表于 2013-1-23 15:54 static/image/common/back.gif
谢谢,编译通过了。请问这是什么意思?

变量声明啊╮(╯▽╰)╭
使用之前需要先告诉编译器,你需要用到哪些变量,各是什么类型的
页: [1]
查看完整版本: 求助单片机控制继电器程序。