項目描述:
串口是一個比較常見的通訊形式,本項目使用一個單片機作為串口數據發送裝置的模擬,另外一個單片機作為串口接收的模擬。
單片機使用傳統的8051單片機,軟件開發工具使用mikro C。
仿真軟件使用proteus。
注意:proteus的波特率設置為119200和單片機設置為9600是對應的,可能是軟件的一些BUG吧。
以上是發送數據的代碼:
目的是發送2個字節的數據,分別是0xaa 0x55 和0x55 0xaa
發送中間可以設置不同時間長度的延時,用來測試接收數據對于不同延時的響應情況。
void main() { UART1_Init(9600); while(1) { //UART1_Write_Text("aaaa"); UART1_Write(0xaa); delay_ms(5); UART1_Write(0x55); delay_ms(50); UART1_Write(0x55); delay_ms(8); UART1_Write(0xaa); delay_ms(50); /*P2=0xff; delay_ms(50); P2=0;*/ } }
接收串口的單片機程序為:
unsigned char receive[2]; unsigned char i; void main() { UART1_Init(9600); i=0; while(1) { if (UART1_Data_Ready() && i<2) { receive[i] = UART1_Read(); i++; } if(i>1) { i=0; /*P0= receive[0]; P2= receive[1];*/ if(receive[0]==0xaa && receive[1]==0x55) { P2_0_bit=1; } if(receive[1]==0xaa && receive[0]==0x55) { P2_0_bit=0; } receive[0]=0; } } }
proteus仿真為:
代碼所在的位置:
lglgang/res (github.com)
所用軟件的版本: