Java实现与51单片机串口通信 Serie Library
项目结构
测试代码
package com.lius.testS; import com.lius.series.seriesTool; /** * @author 19862 * 51单片机串口通信 Serie Library测试程序 * * seriesTool.INIT(串口号, 比特率); //初始化 * seriesTool.SEND(发送数据); //向串口发送数据 * String receiveData = seriesTool.GET(); //接收串口数据 */ public class testSeries { public static void main(String[] args) { seriesTool.INIT("COM3", 9600); for(int i =0;i<5;i++) { seriesTool.SEND("$51 BEEP#");//串口通信发送蜂鸣器蜂鸣指令 System.out.println(seriesTool.GET());//获取串口返回结果 } } }
51单片机串口通信代码
#include "reg51.h" #include <stdio.h> #include <intrins.h> #include "string.h" sbit beep = P2 ^ 3 ; sbit led1 = P1 ^ 0 ; bit startBit = 0; bit newLineReceive = 0; unsigned char inputString[50]; void initSeries(void) { SCON= 0x50; TMOD= 0x20; TH1 = 0xfd; TL1 = 0xfd; TR1 = 1; ES = 1; EA = 1; } void delay(unsigned int ms) { unsigned int begin = 0; unsigned int loop = 112; for(;begin<ms;begin++) for(loop=112;loop>0;loop--); } void sendData(unsigned char* dataStr)//串口发送数据 { ES = 0;//关闭串口中断 while(*dataStr!=0) { SBUF = *dataStr; while(TI==0); TI = 0; dataStr++; } ES = 1; } void main() { initSeries(); while(1){ if(newLineReceive) { if(inputString[1]=='5' && inputString[2]=='1') { led1 = 0; if( inputString[4]=='B' && inputString[5]=='E' && inputString[6]=='E' && inputString[7]=='P') { beep = 0; delay(200); beep = 1; } } memset(inputString,0x00,sizeof(inputString)); newLineReceive = 0; led1 = 1; sendData("ok"); } } } void receiveData() interrupt 4 { unsigned char n; static int num = 0; if(RI){ RI = 0; n = SBUF; if(n == '$') { led1 = 0; startBit = 1; num = 0; } if(startBit == 1) { inputString[num] = n; num++; } if(startBit == 1 && n == '#') { newLineReceive = 1; num = 0; startBit = 0; } if(num>=50){ startBit = 0; num = 0; newLineReceive = 0; } } }
Java实现与51单片机串口通信 Serie Library
最新推荐文章于 2022-05-25 16:54:08 发布
本文介绍了如何使用Java通过SerieLibrary库与51单片机进行串口通信,包括项目结构、测试代码示例以及51单片机的C语言实现。展示了初始化、发送和接收数据的关键步骤,并提供了完整的测试程序和单片机代码片段。
摘要由CSDN通过智能技术生成