1610|0

2015

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

网页控制430单片机 [复制链接]

用网页控制单片机的实例,实现了软件和硬件之间的沟通。
一、开发技术
硬件:430单片机;
软件:jsp,servlet。
二、开发思路
我们在430单片机上写上我们的程序,把单片机连接到串口上,能够通过串口精灵来控制430单片机。然后我们在servlet中开发Java控制串口的程序,该servlet相当于前面的串口精灵。通过点击网页上的不同数字,传递到单片机上,通过不同的数字来控制单片机实现不同的效果。


三、程序如下
430单片机程序
#include "msp430x14x.h"
int a=10;
unsigned char j=0x01,j2=0x00;
unsigned char j1=0X80,K1=0X01;
void delay(int i)
{
  while(i--)
  {
    for(int j=0;j<125;j++);
  }
}
void main( void )
{
  WDTCTL = WDTPW + WDTHOLD;   //停止看门狗
  P2DIR=0xff;   //把p2设为输出。
  P2OUT=0xff;   //把p2设为高电平
  P3SEL|=0x30;  
  P6DIR=0xff;
  P6OUT=0xff;
  ME1|=UTXE0+URXE0;
  UCTL0|=CHAR;
  UTCTL0|=SSEL0;
  UBR00=0x0D;
  UBR10=0x00;
  UMCTL0=0x6B;
  UCTL0&=~SWRST;
  IE1|=URXIE0;
  _EINT();
  while(1)
  {
    if(a=='0')    //实现流水灯。
    {
      P2OUT=~j;
      j=j<<1;
      if(j==0X00)
          j=0x01;
      for(int i=0;i<10000;i++)
        for(int k=0;k<3;k++);
    }
    if(a=='1')    //实现碰撞灯
    {
      j1=j1>>1;
      K1=K1<<1;
      if(j1==0x01)
        j1=0x80;
      if(K1==0x80)
        K1=0x01;
      P2OUT=~(j1|K1);
      for(int i=0;i<10000;i++)
        for(int k=0;k<2;k++);
    }
    if(a=='2')     //实现闪光灯
    {
      j2^=0XFF;
      P2OUT=j2;
      for(int i=0;i<10000;i++)
        for(int k=0;k<2;k++);
    }
    if(a=='3')     //实现蜂鸣器
    {
      P6OUT^=0xff;
      for(int i=0;i<10000;i++)
        for(int k=0;k<2;k++);
    }
  }
}
#pragma vector = UART0RX_VECTOR   //中断服务子程序
__interrupt void shen(void)
{
  P6OUT=0xff;     
  a=RXBUF0;
  while(!(IFG1&UTXIFG0));
     TXBUF0 = a;
     
}
Servlet程序
package filst;
import java.io.* ;
import java.util.*;  
import gnu.io.*;
public class Put{  
    InputStream inputStream;
    OutputStream outputStream;
    SerialPort serialPort;
    CommPortIdentifier portId;  
    int x0=0,x1=0,x2=0,x3=0;
    public void put(String name,int x0,int x1,int x2,int x3) {    //参数分别表示:串口号,波特率,数据位,停止位,校验位
        Enumeration portList = CommPortIdentifier.getPortIdentifiers();
        while (portList.hasMoreElements()) {  
            CommPortIdentifier temp = (CommPortIdentifier) portList.nextElement();  
            if (temp.getPortType() == CommPortIdentifier.PORT_SERIAL) {// 判断如果端口类型是串口  
                if (temp.getName().equals(name)) { // 判断如果端口已经启动就连接  
                    portId = temp;  
                }  
            }
        }
        try {  
            serialPort = (SerialPort) portId.open(name, 2000);  
            inputStream = serialPort.getInputStream();  
            outputStream = serialPort.getOutputStream();
            serialPort.setSerialPortParams(x0,x1,x2,x3);  
        } catch (Exception e) {}  
      
    }  
  
    public void send(String content){     // 发送的内容。
        try {  
            outputStream.write(content.getBytes());  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }  
      
    public void ClosePort() {      //关闭串口。
        if (serialPort != null) {  
          serialPort.close();  
        }  
      }  
}


jsp程序
<%@ page language="java" contentType="text/html;charset=gb2312"%>






流水灯   
碰撞灯   
闪光灯   
蜂鸣器









接受内容的JSP页面
<%@ page language="java" contentType="text/html;charset=gb2312"%>


<%
     student.put("COM3",9600,7,1,2);
     student.send(request.getParameter("sh"));
     student.ClosePort();
%>



 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表