打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
利用单片机实现远程电源控制 (2)
利用单片机实现远程电源控制 (2)
  

山顶控制板的程序如下:
#include "atmelAT89X51.H"
#define  SYN  'Z'    //来自山下控制板数据帧的同步字符

char countdown;      //时间计数

char TX_buf[3];      //发送缓冲区
char TX_len;         //发送字符串长度
char TX_num;       

char RX_buf[3];      //接收缓冲区
char RX_len;         //接收字符串长度
char RX_num;      
char CRC(char *buf,char len)        //校验码生成函数
{char i,temp;
  temp=0;
  for(i=0;i<len;i++)   temp=temp^buf[i];
  return(temp);
}

void timer0_int() interrupt 1         //定时器0的中断服务程序
{ TL0=0x00;   TH0=0x0A6;
  countdown--;
  if(countdown==0 || countdown==20)    
       P1_0=!P1_0;              //控制CPU运行指示灯的秒闪
      
  if(countdown!=0) return;
  countdown=40;   //过了一秒钟
  P3_7=P1_7;      //检测电源继电器的吸放状态,并驱动P3_7的指示灯
  if(P1_7)  TX_buf[1]=0x13;     //高电平,电源继电器已释放,设备电源接通
  else      TX_buf[1]=0x31;    //接地,电源继电器已吸合,设备电源中断
  TX_buf[2]=CRC(TX_buf,2);    //生成校验码
  TX_num=0;
  SBUF=TX_buf[0];            //向山下控制板报告继电器的吸放状态
}
void serial_int() interrupt 4        //串口中断服务程序
{ if(TI)                        //发送触发了中断
   { TI=0;    TX_num++;
     if(TX_num<TX_len)   SBUF=TX_buf[TX_num];
     }
  else                         //接收触发了中断
   { RI=0;    RX_buf[RX_num]=SBUF;
     if(RX_num==0 && RX_buf[RX_num]!=SYN)
       return;                  //在接收的数据中搜索同步字符
     RX_num++;
     if(RX_num==RX_len)       //收完一条指令
     { RX_num=0;
       if(RX_buf[RX_len-1]==CRC(RX_buf,RX_len-1)) //检查校验码是否正确
          { if(RX_buf[1]==0x13)   P1_4=1;   //释放小继电器RY1及电源继电器RY2
            if(RX_buf[1]==0x31)   P1_4=0;  //吸合小继电器RY1及电源继电器RY2
           }
      }
    }
}

void main()
{  IE=0x92;
   TMOD=0x21;               //定时器1:模式2,定时器2:模式1
   TL1=253;     TH1=253;     // 9600波特率
   TR1=1;                    //启动定时器1
   SCON=0x50;                //串口:模式1

   TL0=0x00;    TH0=0x0A6;   //定时器0定时0.025秒
   TR0=1;                    //启动定时器0
   countdown=40;              //1秒=0.025*40
   P1_4=1;                    //释放继电器RY1、RY2

   TX_buf[0]=0x7E;   TX_len=3;
   RX_num=0;        RX_len=3;

   while(1) ;
}
三、 山下控制板
    山下控制板的电路图如下所示,所包括的主要元件有单片机芯片89C2051,电平转换芯片MAX232,7805稳压芯片。芯片MAX232的功能是把单片机串口的TTL电平转换成MODEM的RS-232电平,使单片机能通过MODEM收发数据。需要对山上设备进行开关电操作时,先把连接在2051单片机P1_7脚的断电开关拨到“开”或“关”的位置,然后连续按下K1按键,直到L1、L2、L3三个操作指示灯全亮,接着按一下K2按键,L1、L2、L3指示灯全灭,此时2051单片机检查P1_7脚的电平,如果是低电平,则向山顶控制板发断电指令,如果是高电平,则向山顶控制板发加电指令。K1、K2的其它按键组合均不使单片机发送加断电指令。这里采取断电开关与按键相结合的控制方式,目的是为了防止意外的开关操作,提高安全性。MODEM通信正常的情况下,山下控制板每秒钟收到一次山顶控制板发来的加断电状态报告。当接收到状态报告后,经单片机分析,如果是断电状态,则P1_5脚输出低电平,点亮断电指示灯,P1_3脚输出高低脉冲,驱动蜂鸣器告警提示;如果是加电状态,断电指示灯灭,蜂鸣器静音。如果连续3秒钟收不到山顶控制板的状态报告,断电指示灯将作秒闪、蜂鸣器告警,提示操作人员检查MODEM线路是否正常。

 
 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
单片机很好玩7,制作一个智能温度计和湿度计,点击鼠标就能查询
电路学习01
单片机双机通信c51程序
51单片机实现scanf和printf函数
MSP430单片机硬件IIC
串口通信的原理,IO口模拟UART串口通信
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服