1、效果圖
2、虛擬串口
通過VSPD虛擬串口工具虛擬出兩個串口用于通信
VSPD虛擬串口工具下載:http://download.csdn.net/detail/leytton/7565589
3、串口調(diào)試
打開兩份串口調(diào)試工具,第一個打開com1,第二個打開com2,這時在任一串口調(diào)試工具發(fā)送信息,另一個串口調(diào)試工具中能接收到信息
串口調(diào)試工具下載:http://download.csdn.net/detail/leytton/7565561
4、Proteus電路設(shè)計圖
P1串口:屬性原件值COMPIM,Physical port為com2,Physical Baud rate為9600
虛擬終端(Virtual Terminal):接RXD接口的虛擬終端顯示單片機通過com2接收到的信息,接TXD接口的虛擬終端顯示單片機傳出的信息。
5、51單片機程序代碼
#include
void init();
void main(){
unsigned char temp=0xff;
init();
while(1){
if(RI){ //RI=1,判定為串口接收到了數(shù)據(jù),RI要清零,
RI=0;
temp=SBUF;
}else{
P1=temp;
}
}
}
void init(){
TMOD=0x20; //設(shè)置T1工作方式為方式2
TH1=0xfd; //給定時器高位裝初值
TL1=0xfd; //給定時器低位裝初值
TR1=1; //開定時器
//以上是設(shè)置波特率
SM0=0; //設(shè)置串口通訊方式為方式1
SM1=1;
REN=1; //串口是否接收數(shù)據(jù)的開關(guān)
}
6、運行
串口調(diào)試工具接com1口發(fā)送的數(shù)據(jù),可在接RXD的虛擬終端顯示;
但是單片機基本沒反應(yīng),因為我寫的代碼是通過信息來控制燈亮滅,而信息格式不合法。
改進(jìn):在串口調(diào)試工具勾選“按十六進(jìn)制發(fā)送”,虛擬終端勾選“Hex Display Mode”,發(fā)送“0”則燈全亮,發(fā)送“fe”則燈P1.0亮。