<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 利用單片機實現(xiàn)遠(yuǎn)程電源控制

          利用單片機實現(xiàn)遠(yuǎn)程電源控制

          作者: 時間:2012-11-27 來源:網(wǎng)絡(luò) 收藏

          山頂控制板的程序如下:
          #include "atmelAT89X51.H"
          #define SYN 'Z' //來自山下控制板數(shù)據(jù)幀的同步字符

          char countdown; //時間計數(shù)

          char TX_buf[3]; //發(fā)送緩沖區(qū)
          char TX_len; //發(fā)送字符串長度
          char TX_num;

          char RX_buf[3]; //接收緩沖區(qū)
          char RX_len; //接收字符串長度
          char RX_num;
          char CRC(char *buf,char len) //校驗碼生成函數(shù)
          {char i,temp;
          temp=0;
          for(i=0;ilen;i++) temp=temp^buf[i];
          return(temp);
          }

          void timer0_int() interrupt 1 //定時器0的中斷服務(wù)程序
          { 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; //檢測電源繼電器的吸放狀態(tài),并驅(qū)動P3_7的指示燈
          if(P1_7) TX_buf[1]=0x13; //高電平,電源繼電器已釋放,設(shè)備電源接通
          else TX_buf[1]=0x31; //接地,電源繼電器已吸合,設(shè)備電源中斷
          TX_buf[2]=CRC(TX_buf,2); //生成校驗碼
          TX_num=0;
          SBUF=TX_buf[0]; //向山下控制板報告繼電器的吸放狀態(tài)
          }
          void serial_int() interrupt 4 //串口中斷服務(wù)程序
          { if(TI) //發(fā)送觸發(fā)了中斷
          { TI=0; TX_num++;
          if(TX_numTX_len) SBUF=TX_buf[TX_num];
          }
          else //接收觸發(fā)了中斷
          { RI=0; RX_buf[RX_num]=SBUF;
          if(RX_num==0 RX_buf[RX_num]!=SYN)
          return; //在接收的數(shù)據(jù)中搜索同步字符
          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) ;
          }

          三、山下控制板
          山下控制板的電路圖如下所示,所包括的主要元件有芯片,電平轉(zhuǎn)換芯片MAX232,7805穩(wěn)壓芯片。芯片MAX232的功能是把串口的TTL電平轉(zhuǎn)換成MODEM的RS-232電平,使能通過MODEM收發(fā)數(shù)據(jù)。需要對山上設(shè)備進(jìn)行開關(guān)電操作時,先把連接在2051單片機P1_7腳的斷電開關(guān)撥到“開”或“關(guān)”的位置,然后連續(xù)按下K1按鍵,直到L1、L2、L3三個操作指示燈全亮,接著按一下K2按鍵,L1、L2、L3指示燈全滅,此時2051單片機檢查P1_7腳的電平,如果是低電平,則向山頂控制板發(fā)斷電指令,如果是高電平,則向山頂控制板發(fā)加電指令。K1、K2的其它按鍵組合均不使單片機發(fā)送加斷電指令。這里采取斷電開關(guān)與按鍵相結(jié)合的控制方式,目的是為了防止意外的開關(guān)操作,提高安全性。MODEM通信正常的情況下,山下控制板每秒鐘收到一次山頂控制板發(fā)來的加斷電狀態(tài)報告。當(dāng)接收到狀態(tài)報告后,經(jīng)單片機分析,如果是斷電狀態(tài),則P1_5腳輸出低電平,點亮斷電指示燈,P1_3腳輸出高低脈沖,驅(qū)動蜂鳴器告警提示;如果是加電狀態(tài),斷電指示燈滅,蜂鳴器靜音。如果連續(xù)3秒鐘收不到山頂控制板的狀態(tài)報告,斷電指示燈將作秒閃、蜂鳴器告警,提示操作人員檢查MODEM線路是否正常。
          利用單片機實現(xiàn)遠(yuǎn)程電源控制

          單片機相關(guān)文章:單片機教程


          單片機相關(guān)文章:單片機視頻教程


          單片機相關(guān)文章:單片機工作原理


          上拉電阻相關(guān)文章:上拉電阻原理


          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();