利用單片機實現(xiàn)遠(yuǎn)程電源控制
山頂控制板的程序如下:
#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) ;
}
三、山下控制板
山下控制板的電路圖如下所示,所包括的主要元件有單片機芯片89C2051,電平轉(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線路是否正常。
單片機相關(guān)文章:單片機教程
單片機相關(guān)文章:單片機視頻教程
單片機相關(guān)文章:單片機工作原理
上拉電阻相關(guān)文章:上拉電阻原理
評論