项目描述:
串口是一个比较常见的通讯形式,本项目使用一个单片机作为串口数据发送装置的模拟,另外一个单片机作为串口接收的模拟。
单片机使用传统的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)
所用软件的版本: