51单片机学习笔记———12.1模拟法用于串口通信
51单片机学习笔记———12.1模拟法用于串口通信
通信无非就是两种
加上两种方式:
- 发送
- 接收
单片机与电脑通讯原理图:
当我们的单片机向电脑发送数据时,并不是一下子全部发完,而是根据字节数一位一位的发送,每发送一位数据就需要一定的时间,发送两位数据相隔的时间就是通讯的波特率倒数,而一般波特率都非常高,所以发送的时间非常短,所以当单片机要发送数据时,肯定要用到P3.1引脚的TXD。
所以一开始TXD
- 为高电平
- 然后变为低电平
- 并且延时一小段时间
- 然后开始按位发送数据
- 每发送一次延时相应时间
- 然后开始发送下一位
- 直到八位全部发送完毕
直观图如下:
代码如下:
void main()
{while(1){UART_Send_Char('A');//不断发送字符A}
}
void UART_Send_Char(unsigned int uartData)//要发送的数据
{unsigened int i = 0;uartTXD = 1;delay();//延时一段时间uartTXD = 0;//开始位置低0delay();for(i = 0;i<8;i++){if(uartData&0x01)//判断要发送的数据的最低位是高还是低{uartTXD = 1;//}else{uartTXD = 0;//如果是0则置为0}//到此发送完所要发送数据的最低一位,然后开始向前移动delay();//发完延时一段时间uartData>>=1;//向前移动一位}
}
然而容易让人忽略的是,并不是要发送的数据每一位都是高电平,需要我们判断。
51单片机学习笔记———12.1模拟法用于串口通信
51单片机学习笔记———12.1模拟法用于串口通信
通信无非就是两种
加上两种方式:
- 发送
- 接收
单片机与电脑通讯原理图:
当我们的单片机向电脑发送数据时,并不是一下子全部发完,而是根据字节数一位一位的发送,每发送一位数据就需要一定的时间,发送两位数据相隔的时间就是通讯的波特率倒数,而一般波特率都非常高,所以发送的时间非常短,所以当单片机要发送数据时,肯定要用到P3.1引脚的TXD。
所以一开始TXD
- 为高电平
- 然后变为低电平
- 并且延时一小段时间
- 然后开始按位发送数据
- 每发送一次延时相应时间
- 然后开始发送下一位
- 直到八位全部发送完毕
直观图如下:
代码如下:
void main()
{while(1){UART_Send_Char('A');//不断发送字符A}
}
void UART_Send_Char(unsigned int uartData)//要发送的数据
{unsigened int i = 0;uartTXD = 1;delay();//延时一段时间uartTXD = 0;//开始位置低0delay();for(i = 0;i<8;i++){if(uartData&0x01)//判断要发送的数据的最低位是高还是低{uartTXD = 1;//}else{uartTXD = 0;//如果是0则置为0}//到此发送完所要发送数据的最低一位,然后开始向前移动delay();//发完延时一段时间uartData>>=1;//向前移动一位}
}
然而容易让人忽略的是,并不是要发送的数据每一位都是高电平,需要我们判断。
发布评论