51单片机串口通信

1、常见的电平标准

  • 电平标准是数据1和数据0的表达方式,是传输线缆中人为规定的电压与数据的对应关系,串口常用的电平标准有如下三种:

2、51单片机串口通信原理图

3、为什么串口通信需要定时器进行驱动

4、单片机向电脑发送信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <REGX52.H>
#include<stdio.h>

void Delayxms(unsigned int xms); //@12.000MHz
void UartInit(void); //4800bps@12.000MHz
void SendByte(unsigned char byte);

void main(){
UartInit();
while(1){
SendByte(0x56);
Delayxms(100);
}
}

void Delayxms(unsigned int xms) //@12.000MHz
{
unsigned char i, j;
while(xms){
i = 12;
j = 169;
do
{
while (--j);
} while (--i);
xms--;
}
}

void UartInit(void) //4800bps@12.000MHz
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位数据,可变波特率
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xF3; //设定定时初值
TH1 = 0xF3; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}

void SendByte(unsigned char byte){
SBUF=byte;
while(TI==0);
TI=0;
}

5、单片机接受电脑发送信息

其实单片机接受电脑发送的信息跟上面的那个向电脑发送信息的代码一样。
只是需要开启中断,代码如下:

1
2
ES=1;		//在这里我们需要开启串口的中断
EA=1; //在这里我们需要开启串口的中断

最终代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <REGX52.H>
#include<stdio.h>

void Delayxms(unsigned int xms); //@12.000MHz
void UartInit(void); //4800bps@12.000MHz
void SendByte(unsigned char byte);

unsigned char receive_byte;

void main(){
UartInit();
while(1){

}
}

void Delayxms(unsigned int xms) //@12.000MHz
{
unsigned char i, j;
while(xms){
i = 12;
j = 169;
do
{
while (--j);
} while (--i);
xms--;
}
}

void UartInit(void) //4800bps@12.000MHz
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位数据,可变波特率
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xF3; //设定定时初值
TH1 = 0xF3; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
ES=1; //在这里我们需要开启串口的中断
EA=1; //在这里我们需要开启串口的中断
}

void SendByte(unsigned char byte){
SBUF=byte;
while(TI==0);
TI=0;
}

void UART_Routine() interrupt 4
{
if(RI==1){
receive_byte=SBUF;
SendByte(receive_byte);
RI=0;
}
}

51单片机串口通信
http://example.com/2025/05/10/51单片机串口通信/
Author
John Doe
Posted on
May 10, 2025
Licensed under