微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于Java语言的51单片机串口通讯PC机程序

基于Java语言的51单片机串口通讯PC机程序

时间:11-20 来源:互联网 点击:
1硬件部分(KeilC)

图1硬件电路图

串口通讯硬件部分电路,收发器件采用max232,5V供电。J31接一单片机如AT89C52,单片机的串口与max232的10和11脚相连。

max232与微机通过9针接头相连。

本文的实验环境是AT89C52,单片机的内部程序是用KeilC语言编写的,程序功能非常简单,检测到开始信号后从串口读数据,然后把读入的数据发送给串口,遇到结束符停止。C语言代码如下供大家参考。在uv3中含有两个文件comm.h和comm.c,代码分别为:

//

/* comm.h*/

/* serial port define, only use in comm project */

//

#define ucharunsigned char

#define uint unsigned int

#define length0x0F //数据包长度

ucharCR = 0x0D;

ucharLF = 0x0A;

ucharESC = 0x1B;

ucharSYNC = 0x01; //数据包启始符

ucharPID = 0x00; //数据包标示字

ucharADDR; //串口接收外部命令(片内地址)

ucharDATA; //串口返回片内数据

ucharENDP = 0x00; //数据包结束符

ucharACK = 0x06; //串口确认

ucharERROR = 0x18; //串口错误

ucharwrong[] = "Bad command";

/*END*/

/*/

/*comm..c*/

/* Write time is 2005.4.15,By Gooseli*/

/* Copyright is changsha HUNU unversity gooseli.com */

/* Cpu is At89C51,Fclk is 11.059MHz */

/* Compiler is keilC51 compiler */

/*/

#include

#include

#include

#include

void commInit(){

////

// 8051串口初始化//

////

SCON = 0x52;

PCON = 0x80;

TMOD = 0x21;

TH1 = 0x0FA;

TL1 = 0x0FA;

TCON = 0x40;

//*//

//串口控制器工作于方式1,8位,频率可变。接收允许//

//串口波特率系数SMOD = 1 //

//定时器1工作于方式1,8位自动装载。定时器0方式1,16位//

// 11.059M晶振,波特率= 9600,TH1 = 0x0FA;//

//19200 0x0FD //

//57600 0x0FF //

// 3.6864M晶振9600 0x0FE //

//19200 0x0FF //

// #3.6864M晶振工作于方式2 //

// #在SMOD = 1时,波特率= 115200//

//开中断TR1 = 1//

//*//

}

uchar flag;

uchar readln();

void println( uchar *str );

main(){

commInit(); //初始化串口

while(1){

flag = readln();

}

}

uchar readln(){

uchar a;

uchar str[length];

int i;

scanf("%c",&a); //寻找起始符,回车则开始

if( a==SYNC || a==LF ){

while(1){

printf("\n>>");

//printf(">>");

scanf("%c",&a);

if( a==ENDP || a == ESC ){ //如果ESC则对话结束

break;

}

for( i="0"; i

//读入数据包,如果溢出或者回车则结束

str[i] = a;

scanf("%c",&a);

}

str[i] = ENDP; //为数据包添加结束符,“\0”

printf("%s",str); //输出输入值

/*To do something by yourself*/

}

return ACK;

}

printf("\n%s\n>>",wrong);

return ERROR;

}

/*END*/

2配置运行环境(JDK)

Java通讯库函数Java Communications API,Java开发工具JBuilderX。

此Java(TM) Communications API Specification 2.0(Windows Platform)是Sun公司为Windows平台提供的一个串口API扩展,可以到http://java.sun.com/products/javacomm/下载。Sun公司还提供了其他操作系统下的API下载,移植性是Java先天的优势,如果需要在其他操作系统运行程序,不需要改动程序本身,只要在操作系统下植入相应的API库函数即可实现。

JBuilder是Borland公司出品的一款功能强大的可视化Java集成开发工具,可以快速开发包括复杂企业级应用系统的各种Java程序,本文的程序都用其实现。当然我们以可使用其他优秀的开发工具,例如开放源代码的Eclipse,功能强大,插件丰富。

在下载Java Communications API压缩文件里找到三个文件:comm.jar,win32comm.dll,javax.comm.properties,这三个文件是把API安装到Windows环境中的重要文件,我们把他们放在我们的JDK里面。

把comm..jar到%JAVA_HOME%\jre\lib\ext,javax.comm.properties到%JAVA_HOME%\jre\lib,win32comm.dll到%JAVA_HOME%\bin即可。这样我们的程序就可以在Windows环境中运行了,Java Communications API压缩文件中自带有例子,我们可以尝试一下。

接下来我们要把Java Communications API安装到JBuilder里面,如果JBuilder不是使用的外部的JDK,照上面的的步骤再做一次。假如我们外部的JDK和JBuilder的JDK是同一的JDK,我们就直接跳到下一步。

1)打开JBuilder,为我们的任务建立一个工程,给它起个有意义的名字,不多讲了。JBuilder会自动生成两个文件,如,工程名为comm,就会生成文件commApplication和commFrame。

2)选择Tools菜单,选择Configure Libraries…,如图1所示。

3)点击New按钮,为JBuilder增加一个函数库。如图2,点击OK即

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top