51单片机串口通讯(UART)调试,方式1,波特率9600,8位数据位,无校验。串口调试助手通过测试

//头文件
#include “reg52.h”

//宏定义
#define uchar unsigned char
#define uint unsigned int

//函数声明
/******************************************/
//延时子函数

void delay(unsigned int time);

/******************************************/
uchar Uart_TxRxBuf;

/******************************************/
//延时子函数
//参数范围 0-65536
void delay(unsigned int time) //参数 time 大小
{ //决定延时时间长短

while(time--);

}

//------------------------------------------------串口初始化------------------------------------------------------
void Uart_Init( void )
{ //波特率9600
TMOD = 0x20; //定时器T1使用工作方式2
TL1 = 0xfa;
TH1 = 0xfa;
TR1 = 1; // 开始计时
SCON = 0x50; //工作方式1,波特率9600bps @ 11.0592,允许接收
PCON |= 0x80;
ES = 1;
EA = 1; // 打开所有中断
}

/******************************************/
//主函数
void main(void)
{
Uart_Init();
delay(500);
while(1) //主程序循环
{
;
}
}

void com_isr(void) interrupt 4 //串口中断
{
uchar Temp;
if(RI)
{
RI=0;
Temp=SBUF;
P0=Temp;
SBUF=Temp;
}
if(TI)
TI=0;
}

以下是MPU6050和51单片机串口通信的示例代码: ```c #include <reg51.h> #define MPU6050_ADDRESS 0x68 #define MPU6050_RA_ACCEL_XOUT_H 0x3B sbit LED=P1^0; void delay_ms(unsigned int xms) { unsigned char i, j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void init_uart() { SCON = 0x50; TMOD = 0x20; TH1 = 0xFD; TL1 = TH1; TR1 = 1; } void send_byte(unsigned char byte) { SBUF = byte; while(!TI); TI = 0; } void send_string(unsigned char *str) { while(*str) { send_byte(*str++); } } void main() { unsigned char buf[6]; unsigned short accel_x; unsigned short accel_y; unsigned short accel_z; unsigned char i; init_uart(); while(1) { LED = ~LED; // 读取加速度计数据 buf[0] = 0; for(i=0;i<6;i++) { while(!TI); TI = 0; SBUF = MPU6050_RA_ACCEL_XOUT_H + i; while(!RI); RI = 0; buf[i] = SBUF; } // 将数据转换为加速度值 accel_x = (buf[0] << 8) | buf[1]; accel_y = (buf[2] << 8) | buf[3]; accel_z = (buf[4] << 8) | buf[5]; // 发送加速度值到串口 send_string("accel_x = "); send_byte((accel_x >> 8) & 0xFF); send_byte(accel_x & 0xFF); send_string("\r\n"); send_string("accel_y = "); send_byte((accel_y >> 8) & 0xFF); send_byte(accel_y & 0xFF); send_string("\r\n"); send_string("accel_z = "); send_byte((accel_z >> 8) & 0xFF); send_byte(accel_z & 0xFF); send_string("\r\n"); delay_ms(1000); } } ``` 在串口助手中,设置串口参数为COM3、波特率9600数据位为8、停止位为1、无奇偶校验。然后,打开串口助手,就可以看到MPU6050传输的加速度数据了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值