新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Java軟件與單片機串口通信

        Java軟件與單片機串口通信

        作者: 時間:2016-11-23 來源:網絡 收藏
        從菜鳥級的電子愛好者到骨灰級的電子工程師,相信大多數人都經歷過制作萬年歷,畢竟它比較全面的考察對單片機基礎知識的掌握,并且體現了C語言編程模塊化的思想。

        本文引用地址:http://www.104case.com/article/201611/320540.htm

        而本文旨在介紹在完成制作萬年歷后實現軟件通過RS-232串口對萬年歷進行控制。軟件的編寫采用的Java語言,當然,使用C++、VB等語言也可以編寫出與單片機串口通信的軟件,使用VB的MSCOMM控件可以更方便的實現串口通信。

        Java軟件方面

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

        部分代碼:

        1.找出電腦上的串口

        static Enumeration portList=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數據后執行相應的命令(加數、切換、減數)。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 鄯善县| 淮安市| 台东县| 万年县| 永兴县| 广宗县| 西华县| 黄平县| 翼城县| 方城县| 盐边县| 土默特左旗| 汤原县| 新田县| 清远市| 饶平县| 平远县| 肥乡县| 登封市| 怀宁县| 盘山县| 北票市| 调兵山市| 晋城| 扎囊县| 潜江市| 容城县| 顺义区| 大渡口区| 镇安县| 永福县| 樟树市| 弥勒县| 丰镇市| 滨州市| 米易县| 尼玛县| 务川| 衢州市| 盐津县| 麟游县|