51单片机如何通过java和电脑进行通信

本文介绍了如何使用51单片机通过Java实现串口通信。51单片机采用中断方式,接收到数据后立即回传。在Java端,通过特定库配置串口参数并发送、接收数据。通过设置波特率、数据位、停止位等确保通信匹配。
摘要由CSDN通过智能技术生成

对于51单片机的串口:从逻辑上来说,SBUF独有一个,它既表示发送寄存器,又表示接管寄存器,具有同一个单元地址99H。但在物理构造上,则有两个完全独立的SBUF,一个是发送缓冲寄存器SBUF,另一个相对应的就是接管缓冲寄存器SBUF。假如CPU写SBUF,数据就会被送入发送寄存器准备发送;假如CPU读SBUF,则读入的数据一定来自接管缓冲器。即CPU对SBUF的读写,其实是分别访问上述两个不同的寄存器。 a = SBUF; SBUF = a;也就是说:51单片机的sbuf寄存器是以字节为单位进行接管和发送的,一次只能接管一个字节。

6d9721b88c07d000c5278c640b31e530.png

我们整个程序的逻辑就是:

51单片机端每收到一个字节就发送一个字节到电脑。也就是数据全部原样返回。

电脑端是直接调用API进行底层的字节数组写入,先写入一堆字符串。然后延时500ms,然后再从串口中读取单片机返回的数据。我的猜想是电脑的串口也和51单片机的串口应该类似,有专门接管的寄存器或者其它存储格式,然后有个缓冲的字节数组进行字节缓冲。电脑直接从缓冲数组读取过来即可。

d0927e7a0c607c0b089fd0b6133865fa.png4ce30cc46d42461484df796816102515.png

然后先来看51单片机端的代码:

#include

#define uchar unsigned char

#define uint unsigned int

uchar num;

void UART_init()

{

TMOD = 0x20; //T1工作模式2 8位自动重装

TH1 = 0xfd;

TL1 = 0xfd; //比特率9600

TR1 = 1;//启动T1定时器

SM0 = 0;

SM1 = 1; //串口工作方式1 10位异步

REN = 1;//串口允许接收

EA = 1;/

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值