基于JAVA的单片机上位机通信软件开发实训小结_第1页
基于JAVA的单片机上位机通信软件开发实训小结_第2页
基于JAVA的单片机上位机通信软件开发实训小结_第3页
基于JAVA的单片机上位机通信软件开发实训小结_第4页
基于JAVA的单片机上位机通信软件开发实训小结_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、淮安信息职业技术学院面向对象编程课程设计题目:基于JAVA的单片机上位机通信软件开发作者: 周阳洁 指导老师:潘汉怀 杨 永 专业:电子信息工程(物联网)时间:二一三年一月六日 9 / 12文档可自由编辑打印摘要随着计算机技术尤其是单片微型机技术的发展,单片机被广泛应用在工业控制系统中。在分布式控制系统中多采用单片机进行数据采集和现场控制。由于单片机的计算能力有限,难以进行复杂的数据处理,因此在功能复杂的控制系统中常采上位机下位机系统,单片机用作下位机进行数据采集和设备控制,而PC机用做上位机进行复杂的数据处理和对单片机的控制。因此如何实现PC机与单片机之间的通信具有重要的现实意义。本次实训详

2、细介绍了单片机与PC机通信的软硬件实现。在硬件设计中,单片机系统与PC机系统通过RS-232串行通信端口进行互连,单片机系统将由PC 机传输过来的数据信息控制LED显示屏。在软件设计中,采用JAVA语言设计PC上的串口通信程序。(现在Java已用于开发大型企业的应用程序、增强WWW服务器的功能,以及为消费类设备提供应用程序。它是一个跨平台,能够把真个Internet作为一个统一的运行平台。)目 录第一章 摘要-1-第二章 目录-2-第三章 硬件设计13.1 显示屏行驱动电路设计2-3.2 显示屏列驱动电路设计23.3 PC 机与AT89S51串口通信电路设计2第四章 软件设计34.1LED显示

3、屏程序设计34.2 PC机程序设计4第五章 系统调试5第六章 心得体会8第三章 硬件设计本项目采用单片机控制LED显示屏,单片机与PC机通信采用JAVA语言开发,系统的硬件电路设计包含两部分内容:一是系统扩展,即单片机功能单元,如ROM、RAM、I/O、定时器/计数器、中断系统等不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路;二是系统的配置,即按照系统功能要求配置外围设备,如点阵显示器等,要设计合适的接口电路。硬件电路设计如图3-1所示,硬件电路主要包括ATmega16单片机最小系统、串口通信电路和LED点阵驱动电路,Proteus软件没有驱动电流仿真能力,所以这

4、里仅对设计电路功能仿真验证。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可以

5、调用实际的串口和外部通信。3.3 PC 机与AT89S51串口通信电路设计PC 机与89c52 串口通信由RS232 转换电路、子模块地址标识电路和点阵驱动电路组成。由于采用单片机的异步串行口进行多机通信进行数据传输,单元模块应该有和其位置相对应的地址标识地址标识电路采用8 位并进串出芯片74HC595组成。LED 点阵采用动态扫描法进行驱动,并且实现16 阶灰度显示,为了节省单片机程序中扫描程序的时间消耗,提高扫描速度,显示数据采用并行输出的方法。3-1 LED显示屏硬件电路第四章 软件设计4.1 LED显示屏程序设计Ø 明确AT89C51、74HC595、74HC154芯片的作用

6、;Ø 会使用取模软件,本次我们使用(从上到下 从左到右 纵向上高位)对AT89C51单片机驱动16*16*4点阵;(淮安信息 职业技术)Ø 芯片74HC595控制发送代码 void Sendbyte_H(unsigned char bb,unsigned char aa) unsigned char j; 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&

7、amp;0x01; H_shcp=1; /数据在上升沿输入 bb>>=1; /数据右移一位 H_stcp=0; H_stcp=1; H_ds=1;Ø 串口中断4接受的代码 void INT_UartRcv() interrupt 4 Rcv=SBUF-0x30; /用ASCII码转换 RI=0; /清除发送完成标志位 SBUF=Rcv; /发送数据 while(!TI); /等待发送结束 TI=0; /清发送完成标志位Ø 主代码 SCON=0x50; /SCON: serail mode 1, 8-bit UART, enable ucvr TMOD |=0x2

8、0; /TMOD: timer 1, mode 2, 8-bit reload PCON |=0x80; /SMOD=1; TH1=0xFA; /Baud:9600 fosc=11.0592MHz ES=1; /open the enable serial TR1=1; /timer 1 run EA=1; /open the enable all interrupt 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(displayRcv*4+3-j2*r),(displ

9、ayRcv*4+3-j2*r+1); H_G_1=0; for(t=0;t<130;t+); Sendbyte_H(0xff,0xff); for(t=0;t<200;t+); 4.2 PC机程序设计² 导入了5个包import java.awt.*; import java.awt.event.*; /设置关闭窗口用的包import java.io.*; /提供了全面的I/O接口和类import java.util.*; /Enumeration 为枚举型类import m.*; /API协议中没有该包,SUN公司下的串口包² S_Frame类class S_

10、Frame extends Frame implements Runnable,ActionListener /定义了一个S_Frame类,父类:Frame(窗体)接口:Runnable(java.lang 为非 Thread 子类的类提供了激活方式);ActionListener(java.awt.event 接收操作事件的侦听器) static CommPortIdentifier portId; /检测系统中可用的通讯端口类 static Enumeration portList; /java.util Enumeration 为枚举型类 OutputStream outputStrea

11、m; /java.io 输出流接受输出字节并将这些字节发送到某个接收器² RS-232的串行口的设计 SerialPort serialPort; Thread readThread;/线程 是程序中的执行线程。Java 虚拟机允许应用程序并发地运行多个执行线程。 Panel p=new Panel(); /对面板类的对象为P的实例化 TextField in_message=new TextField("Open COM1, 9600 baud rate, data bits 8, 1 stop bits."); /对象是in_message(允许编辑单行文本的

12、文本组件) /窗口下方显示"打开COM1,波特率9600,数据位8,停止位1."(构造方法) TextArea out_message=new TextArea(); /对象是out_message显示文本的多行区域,可以将它设置为允许编辑或只读。 Button btnOpen=new Button("Open the serial port, sending data"); /java.awt 对按钮类的对象为btnOpen的实例化窗口左上方显示"打开串口, 发送数据 Button btnClose=new Button("Clos

13、e the serial port, stop sending data"); /java.awt 对按钮类的对象为btnOpen的实例化窗口左上方显示"关闭串口, 停止发送数据" byte data=new byte10240; /对位类的对象为data的实例化 boolean mark; /*设置判断要是否关闭串口的标志*/² 如何安排窗体a. 用"super",让子类不隐藏或覆盖父类的成员变量和成员方法;b. setSize(200,20)如:setLocation(30,30); setVisible(true); setBa

14、ckground(Color.lightGray);Ø 点击按扭打开串口 mark=true; /用于中止线程的run()方法Ø 关闭窗口 public void windowClosing(WindowEvent e) /用于接收窗口事件的侦听器接口 System.exit(0);/用户试图从窗口的系统菜单中关闭窗口时调用Ø 其他使用的类和方法 循环语句 while 判断语句 if异常处理 try_ catch_finally 第五章 系统调试正确安装Java Communication API并将上述程序编译通过以后,可以按如下方法测试这个程序。如果你只有一台

15、机器,你可以利用一条RS-232电缆将COM1和COM2连接起来,在COM1上运行SerialExample,在COM2上运行Windows提供的超级终端程序。如果你有两台机器的话,你可以利用一条RS-232电缆将两台机器的COM1(或者是COM2)连接起来,在一端运行例程,另外一端运行Windows提供的超级终端程序。如果有必要的话,可以对SerialExample中所声明的串口进行相应改动。 本程序在Windows XP + Java SDK 1.6环境下编译通过并成功运行。采用计算机仿真调试, 运用虚拟串口配对软件Virtual Serial Ports Driver实现COM1和COM

16、2配对,上位机串口设为COM1,单片机串口设为COM2,通过下面步骤调试:1、下载java Communications api开发包。|2、将win32com.dll拷贝入C:j2sdk1.4.2_04bin; 3、将comm.jar拷贝入C:j2sdk1.4.2_04jrelibext ;4、将perties拷贝入C:j2sdk1.4.2_04jrelib; 5、编译ReceiveComm.java,SendCom.java文件,运行结果如5-1、5-2所示;6、打开proteuse软件设计硬件电路图如图3-1所示;7、配对上位机和单机片串口,通过串口调试程序输入0X00时,LE

17、D显示屏 显示淮安信息字样;通过串口调试程序输入0X01时,LED显示屏显示职业技术字样。由于本设计没有编写上位机程序,所以只能串口接收数据采用调用形式显示汉字。这里仅给出仿真结果如图5-3,图5-4所示。 注意:由于串口为共享资源,所以在设计程序时应采用单例模式。图5-1串口输入0时,LED显示屏显示结果图5-2串口输入1时,LED显示屏显示结果图5-3采用串口精灵的收发图5-4 ReceiveComm.java运行界面 图5-5采用串口精灵的发与ReceiveComm.java运行结果第六章 心得体会第一次接触“Java”是在手机里,慢慢才知道它是应用于塞班、安卓系统之上。本学期我们开设了

18、面向对象程序设计,系统的学习JAVA语言。 Java语言是1991年,由美国Sun公司开发,为了解决家用消费电子产品智能化过程中的控制和通讯问题,设计出的一种适合开发跨平台嵌入式软件语言。它提供了强大的图形、图像、动画、音频、视频、多线程和网络交互功能,这使它特别适合于设计交互式的多媒体网页。这两周实训:l 在硬件上A. 对单片机AT89C51更进一步学习,它的最小系统、P3.0RXD和P3.1TXD端口;B. 对在数字电路上学习的74HC159译码器和74HC595移位寄存器的应用;C. 新学了虚拟端口COMPIM,在protues里面来实现调用实际的串口和外部通信;D. 对LED显示屏行列扫描熟悉。l 在软件上A. 编写LED显示屏驱动,用Keil的软件采用C语言来编写;B. 用MyEIclipse软件i. 学会I如何设计一个图形界面、对它的优化、窗口的关闭;ii. 发送数据代码编写;iii. 接受数据代码编写;C.学会使用虚拟配对软件和串口精灵(既可以当上位机,也可以当下位机);l 对Java语言有了进一步掌握:a) 它的每一个程序都至少有一个类,同时每一种类型的程序都要运行在Java虚拟机JVM上;b) 如何对一个对象实例化,怎样使用构造方法;c) 成员的修饰符:public private 缺省 protected;d) 类有三大

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论