网页控制430单片机

来源:互联网 发布:真趣网络 蔡智 编辑:程序博客网 时间:2024/05/21 13:55

本文用网页控制单片机的实例,实现了软件和硬件之间的沟通。

一、开发技术

硬件: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"%><body style="background-color:orange"><center><form action="kang.jsp" method="post"><br><br><br><input type="radio" name="sh" value="0"/>流水灯   <input type="radio" name="sh" value="1"/>碰撞灯   <input type="radio" name="sh" value="2"/>闪光灯    <input type="radio" name="sh" value="3"/>蜂鸣器<br><br><br><input type="submit" value="提交"/></form></center></body>

接受内容的JSP页面

<%@ page language="java" contentType="text/html;charset=gb2312"%><jsp:useBean id="student" class="filst.Put" scope="application"></jsp:useBean><jsp:useBean id="Shezhi" class="filst.shezhi" scope="application"></jsp:useBean><%     student.put("COM3",9600,7,1,2);     student.send(request.getParameter("sh"));     student.ClosePort();%>


0 0
原创粉丝点击