基于JAVA的單片機(jī)上位機(jī)通信軟件開發(fā)實(shí)訓(xùn)小結(jié)_第1頁
基于JAVA的單片機(jī)上位機(jī)通信軟件開發(fā)實(shí)訓(xùn)小結(jié)_第2頁
基于JAVA的單片機(jī)上位機(jī)通信軟件開發(fā)實(shí)訓(xùn)小結(jié)_第3頁
基于JAVA的單片機(jī)上位機(jī)通信軟件開發(fā)實(shí)訓(xùn)小結(jié)_第4頁
基于JAVA的單片機(jī)上位機(jī)通信軟件開發(fā)實(shí)訓(xùn)小結(jié)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、淮安信息職業(yè)技術(shù)學(xué)院面向?qū)ο缶幊陶n程設(shè)計(jì)題目:基于JAVA的單片機(jī)上位機(jī)通信軟件開發(fā)作者: 周陽潔 指導(dǎo)老師:潘漢懷 楊 永 專業(yè):電子信息工程(物聯(lián)網(wǎng))時(shí)間:二一三年一月六日 9 / 12文檔可自由編輯打印摘要隨著計(jì)算機(jī)技術(shù)尤其是單片微型機(jī)技術(shù)的發(fā)展,單片機(jī)被廣泛應(yīng)用在工業(yè)控制系統(tǒng)中。在分布式控制系統(tǒng)中多采用單片機(jī)進(jìn)行數(shù)據(jù)采集和現(xiàn)場控制。由于單片機(jī)的計(jì)算能力有限,難以進(jìn)行復(fù)雜的數(shù)據(jù)處理,因此在功能復(fù)雜的控制系統(tǒng)中常采上位機(jī)下位機(jī)系統(tǒng),單片機(jī)用作下位機(jī)進(jìn)行數(shù)據(jù)采集和設(shè)備控制,而PC機(jī)用做上位機(jī)進(jìn)行復(fù)雜的數(shù)據(jù)處理和對單片機(jī)的控制。因此如何實(shí)現(xiàn)PC機(jī)與單片機(jī)之間的通信具有重要的現(xiàn)實(shí)意義。本次實(shí)訓(xùn)詳

2、細(xì)介紹了單片機(jī)與PC機(jī)通信的軟硬件實(shí)現(xiàn)。在硬件設(shè)計(jì)中,單片機(jī)系統(tǒng)與PC機(jī)系統(tǒng)通過RS-232串行通信端口進(jìn)行互連,單片機(jī)系統(tǒng)將由PC 機(jī)傳輸過來的數(shù)據(jù)信息控制LED顯示屏。在軟件設(shè)計(jì)中,采用JAVA語言設(shè)計(jì)PC上的串口通信程序。(現(xiàn)在Java已用于開發(fā)大型企業(yè)的應(yīng)用程序、增強(qiáng)WWW服務(wù)器的功能,以及為消費(fèi)類設(shè)備提供應(yīng)用程序。它是一個(gè)跨平臺(tái),能夠把真?zhèn)€Internet作為一個(gè)統(tǒng)一的運(yùn)行平臺(tái)。)目 錄第一章 摘要-1-第二章 目錄-2-第三章 硬件設(shè)計(jì)13.1 顯示屏行驅(qū)動(dòng)電路設(shè)計(jì)2-3.2 顯示屏列驅(qū)動(dòng)電路設(shè)計(jì)23.3 PC 機(jī)與AT89S51串口通信電路設(shè)計(jì)2第四章 軟件設(shè)計(jì)34.1LED顯示

3、屏程序設(shè)計(jì)34.2 PC機(jī)程序設(shè)計(jì)4第五章 系統(tǒng)調(diào)試5第六章 心得體會(huì)8第三章 硬件設(shè)計(jì)本項(xiàng)目采用單片機(jī)控制LED顯示屏,單片機(jī)與PC機(jī)通信采用JAVA語言開發(fā),系統(tǒng)的硬件電路設(shè)計(jì)包含兩部分內(nèi)容:一是系統(tǒng)擴(kuò)展,即單片機(jī)功能單元,如ROM、RAM、I/O、定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)等不能滿足應(yīng)用系統(tǒng)的要求時(shí),必須在片外進(jìn)行擴(kuò)展,選擇適當(dāng)?shù)男酒?,設(shè)計(jì)相應(yīng)的電路;二是系統(tǒng)的配置,即按照系統(tǒng)功能要求配置外圍設(shè)備,如點(diǎn)陣顯示器等,要設(shè)計(jì)合適的接口電路。硬件電路設(shè)計(jì)如圖3-1所示,硬件電路主要包括ATmega16單片機(jī)最小系統(tǒng)、串口通信電路和LED點(diǎn)陣驅(qū)動(dòng)電路,Proteus軟件沒有驅(qū)動(dòng)電流仿真能力,所以這

4、里僅對設(shè)計(jì)電路功能仿真驗(yàn)證。3.1 顯示屏行驅(qū)動(dòng)電路設(shè)計(jì)從單片機(jī)輸出五個(gè)信號(hào)分別輸入到2 個(gè)級(jí)聯(lián)的74HC154譯碼器(4線16),然后輸出16 位行信號(hào),接單片機(jī)PC口,虛擬串口COMPIM。3.2 顯示屏列驅(qū)動(dòng)電路設(shè)計(jì)從單片機(jī)里出來的列信號(hào)通過8個(gè)8 位74HC595 級(jí)聯(lián)而成信號(hào)輸出端連接16*16 的點(diǎn)陣LED 的輸入端。74HC595是移位寄存器(SHCP 第11腳 移位寄存器時(shí)鐘輸入; STCP 第12腳 存儲(chǔ)寄存器時(shí)鐘輸入),不僅起到驅(qū)動(dòng)點(diǎn)陣的作用,而且將串行數(shù)據(jù)轉(zhuǎn)換成8 位數(shù)據(jù),可以用它的鎖存功能實(shí)現(xiàn)硬件電路對數(shù)據(jù)的刷新,實(shí)現(xiàn)點(diǎn)陣的動(dòng)態(tài)顯示。在protues里面COMPIM可以

5、調(diào)用實(shí)際的串口和外部通信。3.3 PC 機(jī)與AT89S51串口通信電路設(shè)計(jì)PC 機(jī)與89c52 串口通信由RS232 轉(zhuǎn)換電路、子模塊地址標(biāo)識(shí)電路和點(diǎn)陣驅(qū)動(dòng)電路組成。由于采用單片機(jī)的異步串行口進(jìn)行多機(jī)通信進(jìn)行數(shù)據(jù)傳輸,單元模塊應(yīng)該有和其位置相對應(yīng)的地址標(biāo)識(shí)地址標(biāo)識(shí)電路采用8 位并進(jìn)串出芯片74HC595組成。LED 點(diǎn)陣采用動(dòng)態(tài)掃描法進(jìn)行驅(qū)動(dòng),并且實(shí)現(xiàn)16 階灰度顯示,為了節(jié)省單片機(jī)程序中掃描程序的時(shí)間消耗,提高掃描速度,顯示數(shù)據(jù)采用并行輸出的方法。3-1 LED顯示屏硬件電路第四章 軟件設(shè)計(jì)4.1 LED顯示屏程序設(shè)計(jì)Ø 明確AT89C51、74HC595、74HC154芯片的作用

6、;Ø 會(huì)使用取模軟件,本次我們使用(從上到下 從左到右 縱向上高位)對AT89C51單片機(jī)驅(qū)動(dòng)16*16*4點(diǎn)陣;(淮安信息 職業(yè)技術(shù))Ø 芯片74HC595控制發(fā)送代碼 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; /數(shù)據(jù)在上升沿輸入 aa>>=1; /數(shù)據(jù)右移一位 for(j=0;j<8;j+) /循環(huán)8次移入數(shù)據(jù) H_shcp=0; H_ds=bb&

7、amp;0x01; H_shcp=1; /數(shù)據(jù)在上升沿輸入 bb>>=1; /數(shù)據(jù)右移一位 H_stcp=0; H_stcp=1; H_ds=1;Ø 串口中斷4接受的代碼 void INT_UartRcv() interrupt 4 Rcv=SBUF-0x30; /用ASCII碼轉(zhuǎn)換 RI=0; /清除發(fā)送完成標(biāo)志位 SBUF=Rcv; /發(fā)送數(shù)據(jù) while(!TI); /等待發(fā)送結(jié)束 TI=0; /清發(fā)送完成標(biāo)志位Ø 主代碼 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機(jī)程序設(shè)計(jì)² 導(dǎo)入了5個(gè)包import java.awt.*; import java.awt.event.*; /設(shè)置關(guān)閉窗口用的包import java.io.*; /提供了全面的I/O接口和類import java.util.*; /Enumeration 為枚舉型類import m.*; /API協(xié)議中沒有該包,SUN公司下的串口包² S_Frame類class S_

10、Frame extends Frame implements Runnable,ActionListener /定義了一個(gè)S_Frame類,父類:Frame(窗體)接口:Runnable(java.lang 為非 Thread 子類的類提供了激活方式);ActionListener(java.awt.event 接收操作事件的偵聽器) static CommPortIdentifier portId; /檢測系統(tǒng)中可用的通訊端口類 static Enumeration portList; /java.util Enumeration 為枚舉型類 OutputStream outputStrea

11、m; /java.io 輸出流接受輸出字節(jié)并將這些字節(jié)發(fā)送到某個(gè)接收器² RS-232的串行口的設(shè)計(jì) SerialPort serialPort; Thread readThread;/線程 是程序中的執(zhí)行線程。Java 虛擬機(jī)允許應(yīng)用程序并發(fā)地運(yùn)行多個(gè)執(zhí)行線程。 Panel p=new Panel(); /對面板類的對象為P的實(shí)例化 TextField in_message=new TextField("Open COM1, 9600 baud rate, data bits 8, 1 stop bits."); /對象是in_message(允許編輯單行文本的

12、文本組件) /窗口下方顯示"打開COM1,波特率9600,數(shù)據(jù)位8,停止位1."(構(gòu)造方法) TextArea out_message=new TextArea(); /對象是out_message顯示文本的多行區(qū)域,可以將它設(shè)置為允許編輯或只讀。 Button btnOpen=new Button("Open the serial port, sending data"); /java.awt 對按鈕類的對象為btnOpen的實(shí)例化窗口左上方顯示"打開串口, 發(fā)送數(shù)據(jù) Button btnClose=new Button("Clos

13、e the serial port, stop sending data"); /java.awt 對按鈕類的對象為btnOpen的實(shí)例化窗口左上方顯示"關(guān)閉串口, 停止發(fā)送數(shù)據(jù)" byte data=new byte10240; /對位類的對象為data的實(shí)例化 boolean mark; /*設(shè)置判斷要是否關(guān)閉串口的標(biāo)志*/² 如何安排窗體a. 用"super",讓子類不隱藏或覆蓋父類的成員變量和成員方法;b. setSize(200,20)如:setLocation(30,30); setVisible(true); setBa

14、ckground(Color.lightGray);Ø 點(diǎn)擊按扭打開串口 mark=true; /用于中止線程的run()方法Ø 關(guān)閉窗口 public void windowClosing(WindowEvent e) /用于接收窗口事件的偵聽器接口 System.exit(0);/用戶試圖從窗口的系統(tǒng)菜單中關(guān)閉窗口時(shí)調(diào)用Ø 其他使用的類和方法 循環(huán)語句 while 判斷語句 if異常處理 try_ catch_finally 第五章 系統(tǒng)調(diào)試正確安裝Java Communication API并將上述程序編譯通過以后,可以按如下方法測試這個(gè)程序。如果你只有一臺(tái)

15、機(jī)器,你可以利用一條RS-232電纜將COM1和COM2連接起來,在COM1上運(yùn)行SerialExample,在COM2上運(yùn)行Windows提供的超級(jí)終端程序。如果你有兩臺(tái)機(jī)器的話,你可以利用一條RS-232電纜將兩臺(tái)機(jī)器的COM1(或者是COM2)連接起來,在一端運(yùn)行例程,另外一端運(yùn)行Windows提供的超級(jí)終端程序。如果有必要的話,可以對SerialExample中所聲明的串口進(jìn)行相應(yīng)改動(dòng)。 本程序在Windows XP + Java SDK 1.6環(huán)境下編譯通過并成功運(yùn)行。采用計(jì)算機(jī)仿真調(diào)試, 運(yùn)用虛擬串口配對軟件Virtual Serial Ports Driver實(shí)現(xiàn)COM1和COM

16、2配對,上位機(jī)串口設(shè)為COM1,單片機(jī)串口設(shè)為COM2,通過下面步驟調(diào)試:1、下載java Communications api開發(fā)包。|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文件,運(yùn)行結(jié)果如5-1、5-2所示;6、打開proteuse軟件設(shè)計(jì)硬件電路圖如圖3-1所示;7、配對上位機(jī)和單機(jī)片串口,通過串口調(diào)試程序輸入0X00時(shí),LE

17、D顯示屏 顯示淮安信息字樣;通過串口調(diào)試程序輸入0X01時(shí),LED顯示屏顯示職業(yè)技術(shù)字樣。由于本設(shè)計(jì)沒有編寫上位機(jī)程序,所以只能串口接收數(shù)據(jù)采用調(diào)用形式顯示漢字。這里僅給出仿真結(jié)果如圖5-3,圖5-4所示。 注意:由于串口為共享資源,所以在設(shè)計(jì)程序時(shí)應(yīng)采用單例模式。圖5-1串口輸入0時(shí),LED顯示屏顯示結(jié)果圖5-2串口輸入1時(shí),LED顯示屏顯示結(jié)果圖5-3采用串口精靈的收發(fā)圖5-4 ReceiveComm.java運(yùn)行界面 圖5-5采用串口精靈的發(fā)與ReceiveComm.java運(yùn)行結(jié)果第六章 心得體會(huì)第一次接觸“Java”是在手機(jī)里,慢慢才知道它是應(yīng)用于塞班、安卓系統(tǒng)之上。本學(xué)期我們開設(shè)了

18、面向?qū)ο蟪绦蛟O(shè)計(jì),系統(tǒng)的學(xué)習(xí)JAVA語言。 Java語言是1991年,由美國Sun公司開發(fā),為了解決家用消費(fèi)電子產(chǎn)品智能化過程中的控制和通訊問題,設(shè)計(jì)出的一種適合開發(fā)跨平臺(tái)嵌入式軟件語言。它提供了強(qiáng)大的圖形、圖像、動(dòng)畫、音頻、視頻、多線程和網(wǎng)絡(luò)交互功能,這使它特別適合于設(shè)計(jì)交互式的多媒體網(wǎng)頁。這兩周實(shí)訓(xùn):l 在硬件上A. 對單片機(jī)AT89C51更進(jìn)一步學(xué)習(xí),它的最小系統(tǒng)、P3.0RXD和P3.1TXD端口;B. 對在數(shù)字電路上學(xué)習(xí)的74HC159譯碼器和74HC595移位寄存器的應(yīng)用;C. 新學(xué)了虛擬端口COMPIM,在protues里面來實(shí)現(xiàn)調(diào)用實(shí)際的串口和外部通信;D. 對LED顯示屏行列掃描熟悉。l 在軟件上A. 編寫LED顯示屏驅(qū)動(dòng),用Keil的軟件采用C語言來編寫;B. 用MyEIclipse軟件i. 學(xué)會(huì)I如何設(shè)計(jì)一個(gè)圖形界面、對它的優(yōu)化、窗口的關(guān)閉;ii. 發(fā)送數(shù)據(jù)代碼編寫;iii. 接受數(shù)據(jù)代碼編寫;C.學(xué)會(huì)使用虛擬配對軟件和串口精靈(既可以當(dāng)上位機(jī),也可以當(dāng)下位機(jī));l 對Java語言有了進(jìn)一步掌握:a) 它的每一個(gè)程序都至少有一個(gè)類,同時(shí)每一種類型的程序都要運(yùn)行在Java虛擬機(jī)JVM上;b) 如何對一個(gè)對象實(shí)例化,怎樣使用構(gòu)造方法;c) 成員的修飾符:public private 缺省 protected;d) 類有三大

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論