Java软件与单片机串口通信


    从菜鸟级的电子爱好者到骨灰级的电子工程师,相信大多数人都经历过制作万年历,毕竟它比较全面的考察对单片机基础知识的掌握,并且体现了C语言编程模块化的思想。

 

    而本文旨在介绍在完成制作万年历后实现软件通过RS-232串口对万年历进行控制。软件的编写采用的Java语言,当然,使用C++、VB等语言也可以编写出与单片机串口通信的软件,使用VB的MSCOMM控件可以更方便的实现串口通信。

 

    Java软件方面

    需要用到Comm包,下载地址和使用方法请自行Google一下。

    部分代码:

1.找出电脑上的串口

 

  static EnumerationportList=CommPortIdentifier.getPortIdentifiers(); 

  while (portList.hasMoreElements()){ //用循环结构找出串口
  portId=(CommPortIdentifier)portList.nextElement(); //强制转换为通讯端口类型
  if(portId.getPortType() == CommPortIdentifier.PORT_SERIAL)
        System.out.println(portId.getName());

2.打开串口

 SerialPort serialPort;//RS-232串口

 try {
  serialPort = (SerialPort) portId.open("ReadComm", 2000);//超时等待
  }
  catch (PortInUseException e) { }

3.设置串口通讯参数
  try {
  serialPort.setSerialPortParams(9600,
  SerialPort.DATABITS_8,
  SerialPort.STOPBITS_1,
  SerialPort.PARITY_NONE);
  }
  catch (UnsupportedCommOperationException e) { }

    单片机方面

1.1602液晶时序图

2.protues仿真图(附Java软件效果图)

 

3.C51部分代码

void write_com(uchar com)//写指令
{
 rs=0;
 lcden=0;
 P0=com;
 delay(5);
 lcden=1;
 delay(5);
 lcden=0; 
}

void write_date(uchar date)//写数据
{
 rs=1;
 lcden=0;
 P0=date;
 delay(5);
 lcden=1;
 delay(5);
 lcden=0; 
}
void init()
{
 uchar num;
 lcden=0;
 write_com(0x38);//初始化
 write_com(0x0c);//不显示光标
 write_com(0x06);//指针自加一,整屏显示不移动
 write_com(0x01);//清屏
 write_com(0x80);//设置光标指针(第一行)
 for(num=0;num<15;num++)
  {
   write_date(table[num]);
   delay(5);
  }
 write_com(0x80+0x40);//设置光标指针(第2行)
 for(num=0;num<12;num++)
  {
   write_date(table1[num]);
   delay(5);
  }
 TMOD=0x21; // 定时器0的方式1,定时器1的方式2
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 EA=1; //开总中断
 ET0=1;
 TR0=1;
 TH1=0xfd;//波特率9600
 TL1=0xfd;
 TR1=1;
}
void initser()
{
 SM0=0;
 SM1=1;//串口中断方式1

 ES=1;
 REN=1; 
}

4.标准字符库


     软件控制单片机

点击软件相应的三个按钮(add、Shift、minus)发送对应的byte数据(0、1、2),单片机接收到byte数据后执行相应的命令(加数、切换、减数)。or

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值