基于JAVA的单片机上位机通信软件开发实训小结.docx

上传人:b****0 文档编号:9958888 上传时间:2023-05-22 格式:DOCX 页数:12 大小:195.64KB
下载 相关 举报
基于JAVA的单片机上位机通信软件开发实训小结.docx_第1页
第1页 / 共12页
基于JAVA的单片机上位机通信软件开发实训小结.docx_第2页
第2页 / 共12页
基于JAVA的单片机上位机通信软件开发实训小结.docx_第3页
第3页 / 共12页
基于JAVA的单片机上位机通信软件开发实训小结.docx_第4页
第4页 / 共12页
基于JAVA的单片机上位机通信软件开发实训小结.docx_第5页
第5页 / 共12页
基于JAVA的单片机上位机通信软件开发实训小结.docx_第6页
第6页 / 共12页
基于JAVA的单片机上位机通信软件开发实训小结.docx_第7页
第7页 / 共12页
基于JAVA的单片机上位机通信软件开发实训小结.docx_第8页
第8页 / 共12页
基于JAVA的单片机上位机通信软件开发实训小结.docx_第9页
第9页 / 共12页
基于JAVA的单片机上位机通信软件开发实训小结.docx_第10页
第10页 / 共12页
基于JAVA的单片机上位机通信软件开发实训小结.docx_第11页
第11页 / 共12页
基于JAVA的单片机上位机通信软件开发实训小结.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于JAVA的单片机上位机通信软件开发实训小结.docx

《基于JAVA的单片机上位机通信软件开发实训小结.docx》由会员分享,可在线阅读,更多相关《基于JAVA的单片机上位机通信软件开发实训小结.docx(12页珍藏版)》请在冰点文库上搜索。

基于JAVA的单片机上位机通信软件开发实训小结.docx

基于JAVA的单片机上位机通信软件开发实训小结

淮安信息职业技术学院

面向对象编程

课程设计

 

题目:

基于JAVA的单片机

上位机通信软件开发

作者:

周阳洁

指导老师:

潘汉怀杨永

专业:

电子信息工程(物联网)

时间:

二〇一三年一月六日

摘要

随着计算机技术尤其是单片微型机技术的发展,单片机被广泛应用在工业控制系统中。

在分布式控制系统中多采用单片机进行数据采集和现场控制。

由于单片机的计算能力有限,难以进行复杂的数据处理,因此在功能复杂的控制系统中常采上位机下位机系统,单片机用作下位机进行数据采集和设备控制,而PC机用做上位机进行复杂的数据处理和对单片机的控制。

因此如何实现PC机与单片机之间的通信具有重要的现实意义。

本次实训详细介绍了单片机与PC机通信的软硬件实现。

在硬件设计中,单片机系统与PC机系统通过RS-232串行通信端口进行互连,单片机系统将由PC机传输过来的数据信息控制LED显示屏。

在软件设计中,采用JAVA语言设计PC上的串口通信程序。

(现在Java已用于开发大型企业的应用程序、增强WWW服务器的功能,以及为消费类设备提供应用程序。

它是一个跨平台,能够把真个Internet作为一个统一的运行平台。

 

目录

第一章摘要-1-

第二章目录-2-

第三章硬件设计1

3.1显示屏行驱动电路设计2

-3.2显示屏列驱动电路设计2

3.3PC机与AT89S51串口通信电路设计2

第四章软件设计3

4.1LED显示屏程序设计3

4.2PC机程序设计4

第五章系统调试5

第六章心得体会8

 

第三章硬件设计

本项目采用单片机控制LED显示屏,单片机与PC机通信采用JAVA语言开发,系统的硬件电路设计包含两部分内容:

一是系统扩展,即单片机功能单元,如ROM、RAM、I/O、定时器/计数器、中断系统等不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路;二是系统的配置,即按照系统功能要求配置外围设备,如点阵显示器等,要设计合适的接口电路。

硬件电路设计如图3-1所示,硬件电路主要包括ATmega16单片机最小系统、串口通信电路和LED点阵驱动电路,Proteus软件没有驱动电流仿真能力,所以这里仅对设计电路功能仿真验证。

3.1显示屏行驱动电路设计

从单片机输出五个信号分别输入到2个级联的74HC154译码器(4线16),然后输出16位行信号,接单片机PC口,虚拟串口COMPIM。

3.2显示屏列驱动电路设计

从单片机里出来的列信号通过8个8位74HC595级联而成信号输出端连接16*16的点阵LED的输入端。

74HC595是移位寄存器(SHCP第11脚移位寄存器时钟输入;STCP第12脚存储寄存器时钟输入),不仅起到驱动点阵的作用,而且将串行数据转换成8位数据,可以用它的锁存功能实现硬件电路对数据的刷新,实现点阵的动态显示。

在protues里面COMPIM可以调用实际的串口和外部通信。

3.3PC机与AT89S51串口通信电路设计

PC机与89c52串口通信由RS232转换电路、子模块地址标识电路和点阵驱动电路组成。

由于采用单片机的异步串行口进行多机通信进行数据传输,单元模块应该有和其位置相对应的地址标识地址标识电路采用8位并进串出芯片74HC595组成。

LED点阵采用动态扫描法进行驱动,并且实现16阶灰度显示,为了节省单片机程序中扫描程序的时间消耗,提高扫描速度,显示数据采用并行输出的方法。

3-1LED显示屏硬件电路

第四章软件设计

4.1LED显示屏程序设计

Ø明确AT89C51、74HC595、74HC154芯片的作用;

Ø会使用取模软件,本次我们使用(从上到下从左到右纵向上高位)对AT89C51单片机驱动16*16*4点阵;(淮安信息职业技术)

Ø芯片74HC595控制发送代码

voidSendbyte_H(unsignedcharbb,unsignedcharaa)

{unsignedcharj;

for(j=0;j<8;j++){

H_shcp=0;H_ds=aa&0x01;

H_shcp=1;//数据在上升沿输入

aa>>=1;//数据右移一位}

for(j=0;j<8;j++)//循环8次移入数据{

H_shcp=0;H_ds=bb&0x01;

H_shcp=1;//数据在上升沿输入

bb>>=1;//数据右移一位}

H_stcp=0;H_stcp=1;H_ds=1;}

Ø串口中断4接受的代码

voidINT_UartRcv()interrupt4{

Rcv=SBUF-0x30;//用ASCII码转换

RI=0;//清除发送完成标志位

SBUF=Rcv;//发送数据

while(!

TI);//等待发送结束

TI=0;//清发送完成标志位}

Ø主代码

SCON=0x50;//SCON:

serailmode1,8-bitUART,enableucvr

TMOD|=0x20;//TMOD:

timer1,mode2,8-bitreload

PCON|=0x80;//SMOD=1;

TH1=0xFA;//Baud:

9600fosc=11.0592MHz

ES=1;//opentheenableserialTR1=1;//timer1run

EA=1;//opentheenableallinterrupt

while

(1){

for(i=0,r=k;i<16;i++,r++){

H_G_1=1;

HC154_data=i;

for(j=0;j<4;j++){

Sendbyte_H((display[Rcv*4+3-j][2*r]),(display[Rcv*4+3-j][2*r+1]));}

H_G_1=0;

for(t=0;t<130;t++);}

Sendbyte_H(0xff,0xff);for(t=0;t<200;t++);}

4.2PC机程序设计

✧导入了5个包

importjava.awt.*;

importjava.awt.event.*;//设置关闭窗口用的包

importjava.io.*;//提供了全面的I/O接口和类

importjava.util.*;//Enumeration为枚举型类

importm.*;//API协议中没有该包,SUN公司下的串口包

✧S_Frame类

classS_FrameextendsFrameimplementsRunnable,ActionListener

//定义了一个S_Frame类,父类:

Frame(窗体)接口:

Runnable(java.lang为非Thread子类的类提供了激活方式);ActionListener(java.awt.event接收操作事件的侦听器)

{staticCommPortIdentifierportId;//检测系统中可用的通讯端口类

staticEnumerationportList;//java.utilEnumeration为枚举型类

OutputStreamoutputStream;//java.io输出流接受输出字节并将这些字节发送到某个接收器

✧RS-232的串行口的设计

SerialPortserialPort;

ThreadreadThread;//线程是程序中的执行线程。

Java虚拟机允许应用程序并发地运行多个执行线程。

Panelp=newPanel();//对面板类的对象为P的实例化

TextFieldin_message=newTextField("OpenCOM1,9600baudrate,databits8,1stopbits......");//对象是in_message(允许编辑单行文本的文本组件)

//窗口下方显示"打开COM1,波特率9600,数据位8,停止位1......"(构造方法)

TextAreaout_message=newTextArea();

//对象是out_message显示文本的多行区域,可以将它设置为允许编辑或只读。

ButtonbtnOpen=newButton("Opentheserialport,sendingdata");

//java.awt对按钮类的对象为btnOpen的实例化窗口左上方显示"打开串口,发送数据ButtonbtnClose=newButton("Closetheserialport,stopsendingdata");//java.awt对按钮类的对象为btnOpen的实例化窗口左上方显示"关闭串口,停止发送数据"bytedata[]=newbyte[10240];//对位类的对象为data[]的实例化

booleanmark;/*设置判断要是否关闭串口的标志*/

✧如何安排窗体

a.用"super",让子类不隐藏或覆盖父类的成员变量和成员方法;

b.setSize(200,20)如:

setLocation(30,30);setVisible(true);setBackground(Color.lightGray);

Ø点击按扭打开串口mark=true;//用于中止线程的run()方法

Ø关闭窗口

publicvoidwindowClosing(WindowEvente)//用于接收窗口事件的侦听器接口

System.exit(0);//用户试图从窗口的系统菜单中关闭窗口时调用

Ø其他使用的类和方法

循环语句while判断语句if

异常处理try_catch_finally

第五章系统调试

正确安装JavaCommunicationAPI并将上述程序编译通过以后,可以按如下方法测试这个程序。

如果你只有一台机器,你可以利用一条RS-232电缆将COM1和COM2连接起来,在COM1上运行SerialExample,在COM2上运行Windows提供的超级终端程序。

如果你有两台机器的话,你可以利用一条RS-232电缆将两台机器的COM1(或者是COM2)连接起来,在一端运行例程,另外一端运行Windows提供的超级终端程序。

如果有必要的话,可以对SerialExample中所声明的串口进行相应改动。

本程序在WindowsXP+JavaSDK1.6环境下编译通过并成功运行。

采用计算机仿真调试,运用虚拟串口配对软件VirtualSerialPortsDriver实现COM1和COM2配对,上位机串口设为COM1,单片机串口设为COM2,通过下面步骤调试:

1、下载javaCommunicationsapi开发包。

|

2、将win32com.dll拷贝入C:

\j2sdk1.4.2_04\bin;

3、将comm.jar拷贝入C:

\j2sdk1.4.2_04\jre\lib\ext;

4、将m.properties拷贝入C:

\j2sdk1.4.2_04\jre\lib;

5、编译ReceiveComm.java,SendCom.java文件,运行结果如5-1、5-2所示;

6、打开proteuse软件设计硬件电路图如图3-1所示;

7、配对上位机和单机片串口,通过串口调试程序输入0X00时,LED显示屏显示淮安信息字样;通过串口调试程序输入0X01时,LED显示屏显示职业技术字样。

由于本设计没有编写上位机程序,所以只能串口接收数据采用调用形式显示汉字。

这里仅给出仿真结果如图5-3,图5-4所示。

注意:

由于串口为共享资源,所以在设计程序时应采用单例模式。

图5-1串口输入0时,LED显示屏显示结果

图5-2串口输入1时,LED显示屏显示结果

图5-3采用串口精灵的收发

图5-4ReceiveComm.java运行界面

图5-5采用串口精灵的发与ReceiveComm.java运行结果

第六章心得体会

第一次接触“Java”是在手机里,慢慢才知道它是应用于塞班、安卓系统之上。

本学期我们开设了《面向对象程序设计》,系统的学习JAVA语言。

Java语言是1991年,由美国Sun公司开发,为了解决家用消费电子产品智能化过程中的控制和通讯问题,设计出的一种适合开发跨平台嵌入式软件语言。

它提供了强大的图形、图像、动画、音频、视频、多线程和网络交互功能,这使它特别适合于设计交互式的多媒体网页。

这两周实训:

●在硬件上

A.对单片机AT89C51更进一步学习,它的最小系统、P3.0RXD和P3.1TXD端口;

B.对在数字电路上学习的74HC159译码器和74HC595移位寄存器的应用;

C.新学了虚拟端口COMPIM,在protues里面来实现调用实际的串口和外部通信;

D.对LED显示屏行列扫描熟悉。

●在软件上

A.编写LED显示屏驱动,用Keil的软件采用C语言来编写;

B.用MyEIclipse软件

i.学会I如何设计一个图形界面、对它的优化、窗口的关闭;

ii.发送数据代码编写;

iii.接受数据代码编写;

C.学会使用虚拟配对软件和串口精灵(既可以当上位机,也可以当下位机);

●对Java语言有了进一步掌握:

a)它的每一个程序都至少有一个类,同时每一种类型的程序都要运行在Java虚拟机JVM上;

b)如何对一个对象实例化,怎样使用构造方法;

c)成员的修饰符:

publicprivate缺省protected;

d)类有三大特性:

封装、继承和多态本项目采用“extend”和“super”;

e)异常处理try_catch_finally;

f)学会熟悉使用API协议。

Ø总体上实现主(PC)、从机(AT89C51)上的全双工异步通信功能

通过两周的实训,找出了自身有很多不足之处。

如:

宏定义后不要加“;”,不善于安装包和软件,对一些类和方法不熟悉。

综合能力欠缺,知识点掌握不是很牢,今后在这些方面要加以补充。

当然,我也收获了不少,培养了自己的应用能力和创新能力,对一些专业名称有所了解。

我也知道一个编程师,不断地看代码、修改代码,有一定的耐心,以量得到质变,开发出更好的项目,真心的希望自己能坚持下来!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2