搜索
bottom↓
回复: 30

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

[复制链接]

出0入0汤圆

发表于 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组成自锁开关).求高手帮忙写段完整程序用于学习,本人刚起步只知道一些量的定义。谢谢。

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-1-22 17:50:53 | 显示全部楼层
智商太低,没看明白啥意思

出0入0汤圆

发表于 2013-1-22 17:53:42 | 显示全部楼层
你还是看学校里的教程吧

出0入4汤圆

发表于 2013-1-22 18:02:46 | 显示全部楼层
plc不懂的飘过

出0入0汤圆

 楼主| 发表于 2013-1-22 19:14:13 | 显示全部楼层
Lavion 发表于 2013-1-22 17:53
你还是看学校里的教程吧

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

出0入0汤圆

 楼主| 发表于 2013-1-22 19:58:34 | 显示全部楼层
alengend 发表于 2013-1-22 17:50
智商太低,没看明白啥意思

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

出0入12汤圆

发表于 2013-1-22 20:02:47 | 显示全部楼层
迷糊了.天书阿

出0入0汤圆

发表于 2013-1-22 20:03:16 | 显示全部楼层

出0入42汤圆

发表于 2013-1-22 20:04:16 | 显示全部楼层
貌似关系还蛮复杂的。转的头有点晕晕。

出0入0汤圆

发表于 2013-1-22 20:08:54 来自手机 | 显示全部楼层
这个需要初始化一下定时器会效果更好些,定时器用标计位产生一秒基准

出0入0汤圆

 楼主| 发表于 2013-1-22 20:25:08 | 显示全部楼层
shiy 发表于 2013-1-22 20:08
这个需要初始化一下定时器会效果更好些,定时器用标计位产生一秒基准

有请赐教,用12m晶振。

出0入0汤圆

发表于 2013-1-22 20:27:24 | 显示全部楼层
貌似是PLC的程序………………

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

出0入0汤圆

发表于 2013-1-22 20:30:17 | 显示全部楼层
出rmb吧,我给你写 单片机plc都可,没有rmb没有动力!!!!

出0入0汤圆

发表于 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--;
            }


}

出0入0汤圆

发表于 2013-1-22 20:34:55 来自手机 | 显示全部楼层
这个最好自己琢磨。

出0入0汤圆

 楼主| 发表于 2013-1-22 20:39:13 | 显示全部楼层
本帖最后由 axe1 于 2013-1-22 20:42 编辑
shiy 发表于 2013-1-22 20:34
#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;
    }

出0入0汤圆

发表于 2013-1-22 20:43:10 | 显示全部楼层
axe1 发表于 2013-1-22 20:25
有请赐教,用12m晶振。

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

出0入0汤圆

发表于 2013-1-22 20:45:04 | 显示全部楼层
axe1 发表于 2013-1-22 20:39
你好,这里是延时用的吗?(FLAG_Q1=2; tt=0; TR0=1;
)谢谢!
   {

对                                 

出0入0汤圆

 楼主| 发表于 2013-1-22 21:05:48 | 显示全部楼层
shiy 发表于 2013-1-22 20:45

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

出0入0汤圆

 楼主| 发表于 2013-1-22 21:07:46 | 显示全部楼层
weichao4808335 发表于 2013-1-22 20:30
出rmb吧,我给你写 单片机plc都可,没有rmb没有动力!!!!

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

出0入0汤圆

 楼主| 发表于 2013-1-23 11:48:42 | 显示全部楼层
shiy 发表于 2013-1-22 20:45

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-1-23 11:52:52 | 显示全部楼层
axe1 发表于 2013-1-22 21:07
plc的我写不了单片机。谢谢!

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

出0入0汤圆

发表于 2013-1-23 12:00:51 | 显示全部楼层
axe1 发表于 2013-1-23 11:48
你好!请帮忙不能编译。请看图!谢谢!

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

出0入0汤圆

 楼主| 发表于 2013-1-23 12:54:06 | 显示全部楼层
weichao4808335 发表于 2013-1-23 11:52
很好弄滴,那个公司的plc啊 什么型号的啊?

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

出0入0汤圆

 楼主| 发表于 2013-1-23 12:58:31 | 显示全部楼层
zgxcom123 发表于 2013-1-23 12:00
把K的大小写改一致就行了

谢谢,请看看还有2个。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-1-23 13:44:56 | 显示全部楼层
axe1 发表于 2013-1-23 12:58
谢谢,请看看还有2个。

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

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

出0入0汤圆

发表于 2013-1-23 13:45:41 | 显示全部楼层
axe1 发表于 2013-1-23 12:54
我没设备,只有51开发板。

  无语

出0入0汤圆

 楼主| 发表于 2013-1-23 14:53:40 | 显示全部楼层
zgxcom123 发表于 2013-1-23 13:44
这几个变量没有定义,定义成char类型就行了…………

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

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

出0入0汤圆

发表于 2013-1-23 15:00:42 | 显示全部楼层
sbit那段代码看见了吧,在那后面另起一行

char FLAG_Q1;

出0入0汤圆

 楼主| 发表于 2013-1-23 15:54:35 | 显示全部楼层
zgxcom123 发表于 2013-1-23 15:00
sbit那段代码看见了吧,在那后面另起一行

char FLAG_Q1;

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

出0入0汤圆

发表于 2013-1-23 16:36:23 | 显示全部楼层
axe1 发表于 2013-1-23 15:54
谢谢,编译通过了。请问这是什么意思?

变量声明啊╮(╯▽╰)╭
使用之前需要先告诉编译器,你需要用到哪些变量,各是什么类型的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 18:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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