用C语言写一段PC端向51单片机串口发送数据的代码
时间: 2024-02-05 20:12:53 浏览: 109
采用C语言对51单片机编程.doc
下面是一段简单的 PC 端向 51 单片机串口发送数据的 C 语言代码:
```c
#include <stdio.h>
#include <conio.h>
#include <Windows.h>
#define COM_PORT "COM1" // 串口号
#define BAUD_RATE 9600 // 波特率
int main(void)
{
HANDLE hCom; // 串口句柄
DCB dcb; // 设备控制块
COMMTIMEOUTS timeouts; // 超时时间
char send_buf[] = "Hello, 51 MCU!"; // 发送的数据
DWORD bytes_written = 0; // 实际写入的字节数
// 打开串口
hCom = CreateFile(COM_PORT, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hCom == INVALID_HANDLE_VALUE)
{
printf("Error: Failed to open serial port %s.\n", COM_PORT);
return -1;
}
// 配置串口
FillMemory(&dcb, sizeof(dcb), 0);
dcb.DCBlength = sizeof(dcb);
GetCommState(hCom, &dcb);
dcb.BaudRate = BAUD_RATE;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
SetCommState(hCom, &dcb);
// 配置串口超时时间
timeouts.ReadIntervalTimeout = 50;
timeouts.ReadTotalTimeoutMultiplier = 10;
timeouts.ReadTotalTimeoutConstant = 100;
timeouts.WriteTotalTimeoutMultiplier = 10;
timeouts.WriteTotalTimeoutConstant = 100;
SetCommTimeouts(hCom, &timeouts);
// 发送数据
WriteFile(hCom, send_buf, sizeof(send_buf), &bytes_written, NULL);
printf("Successfully sent %d bytes.\n", bytes_written);
// 关闭串口
CloseHandle(hCom);
return 0;
}
```
注:本代码是在 Windows 环境下编写的,需要链接 `kernel32.lib` 库。另外,需要根据实际情况修改串口号和波特率。
阅读全文