1. 单片机中的串口通信—51单片机中串行t通信的波特率发生器由定时器1来产生—()
电脑发送USB信号
单片机发送TTL信号
1.1 单片机向电脑发送信息
单片机由P3.1 TxD 向电脑发送TTL电平信号,TTL信号经过CH340转化为USB信号发送到电脑上
1.2 电脑向单片机发送信息
电脑由P3.0 RxD 单片机发送USB电平信号,USB信号经过CH340转化为TTL信号发送到单片机上
1.3 单片机通过串口通信给电脑发送数据
#include <reg51.h>
#include <string.h>void init_uart(void)
{SCON &= ~(1 << 7); //工作方式选择SCON |= ((1 << 6) | (1 << 4));//允许接收1 << 4PCON |= (1 << 7); //波特率加倍TMOD &= ~(1 << 4); //定时器1工作模式选择TMOD |= (1 << 5);TH1 = 204; //根据波特率计算的定时器初值(定时器的作用是产生需要发送数据的波特率)TL1 = 204;TCON |= (1 << 6); //打开定时器1
}void send_char(char ch)
{SBUF = ch;while (0 == (SCON & (1 << 1)));//判断发送第八位数据是否结束SCON &= ~(1 << 1); //手动复原发送中断请求标志
}void send_buffer(unsigned char *s, unsigned int len)
{unsigned int i = 0;for (i = 0; i < len; i++){send_char(s[i]);}
}void delay(unsigned int n)
{ while (n--);
}int main(void)
{const char *s = "hello world!";init_uart();while (1){send_buffer(s, strlen(s));delay(0xffff);}return 0;
}