微機(jī)原理課設(shè)報告_第1頁
微機(jī)原理課設(shè)報告_第2頁
微機(jī)原理課設(shè)報告_第3頁
微機(jī)原理課設(shè)報告_第4頁
微機(jī)原理課設(shè)報告_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

微機(jī)原理及應(yīng)用課程設(shè)計設(shè)計題目:基于PC機(jī)串行通信的點(diǎn)對點(diǎn)聊天系統(tǒng)專業(yè)計算機(jī)科學(xué)與技術(shù)班級計091學(xué)號3090911023學(xué)生孟杰指導(dǎo)教師王理2012年1學(xué)期實驗?zāi)康呐c要求:《微機(jī)原理及應(yīng)用課程設(shè)計》的目的在于檢驗和提高學(xué)生在匯編語言程序設(shè)計、微機(jī)原理與接口綜合應(yīng)用方面分析問題與解決問題的能力,同時也給學(xué)生提供更多、更好的訓(xùn)練機(jī)會。匯編語言程序設(shè)計類題目要求采用32位匯編語言,鼓勵采用GUI界面。硬件接口類題目,要求至少選用微機(jī)實驗裝置中兩部分以上的硬件電路(還需將它們有機(jī)組合起來)并編制相應(yīng)的應(yīng)用軟件,要求軟件設(shè)計應(yīng)盡可能利用實驗裝置資源并提高效率。為了發(fā)揮每一個同學(xué)的創(chuàng)造能力,每一題目依據(jù)題目均給出了設(shè)計要求(分基本要求與進(jìn)一步要求兩部分)及部分設(shè)計提示。學(xué)生可根據(jù)設(shè)計要求,選擇利用合適的器件,構(gòu)成有效的硬件電路來完成。對于學(xué)有余力的學(xué)生,除了完成基本要求與進(jìn)一步要求的內(nèi)容外,還可對同一題選擇不同的器件構(gòu)成不同的硬件電路,或自行進(jìn)行功能擴(kuò)展,提高性能指標(biāo),盡情發(fā)揮和創(chuàng)造。要求完成:(1)符合設(shè)計要求的硬件和軟件設(shè)計、編碼和測試;(2)軟件運(yùn)行需有版權(quán)頁,署上姓名和學(xué)號;(3)完成全部工作后,按設(shè)計要求由教師當(dāng)堂驗收、提問要求,并根據(jù)基本要求、提高和探索實驗完成結(jié)果評定驗收成績,指出問題;(4)整理全部資料,總結(jié)提高,并分別撰寫課程設(shè)計報告。1)基本要求采用VB、VC、C#或其它的開發(fā)工具設(shè)計一個簡易的聊天系統(tǒng),用戶可以設(shè)置波特率或采用自動協(xié)商機(jī)制。界面如下圖。2)設(shè)計提示在Windows平臺上通過API或MSComm控件二種方式實現(xiàn)串行通信。3)進(jìn)一步設(shè)計要求采用多線程完成通信任務(wù)。二.軟件環(huán)境:本次開發(fā)環(huán)境是windowsxp,vs2008。開發(fā)語言:C#。實驗原理:串行端口的本質(zhì)功能是作為CPU和串行設(shè)備間的編碼轉(zhuǎn)換器。當(dāng)數(shù)據(jù)從CPU經(jīng)過串行端口發(fā)送出去時,字節(jié)數(shù)據(jù)轉(zhuǎn)換為串行的位。在接收數(shù)據(jù)時,串行的位被轉(zhuǎn)換為字節(jié)數(shù)據(jù)。在Windows環(huán)境(WindowsNT、Win98、Windows2000)下,串口是系統(tǒng)資源的一部分。應(yīng)用程序要使用串口進(jìn)行通信,必須在使用之前向操作系統(tǒng)提出資源申請要求(打開串口),通信完成后必須釋放資源(關(guān)閉串口)。本次實驗調(diào)用C#自帶的SerialPort控件實現(xiàn)串口通訊。注:看了微軟的MSDN6.0,其WindowsAPI中關(guān)于串行通訊設(shè)備(不一定都是串口RS-232C或RS-422或RS-449)速率的設(shè)置,最大可支持到RS_256000,即256Kbps!也不知道到底是什么串行通訊設(shè)備?但不管怎樣,一般主機(jī)和單片機(jī)的串口通訊大多都在9600bps,可以滿足通訊需求。主要代碼:使用C#自帶的SerialPor控件。1...在“工具箱”的“組件”中選擇SerialPor控件添加。2...設(shè)置串口并打開serialPort1.PortName="COM1";serialPort1.BaudRate=9600;serialPort1.Open();3...寫入數(shù)據(jù)可以使用Write或者下面的函數(shù)serialPort1.WriteLine(str);4...添加數(shù)據(jù)接收的事件privatevoidserialPort1_DataReceived(objectsender,SerialDataReceivedEventArgse)usingSystem;usingSystem.IO.Ports;usingSystem.Linq;usingSystem.Windows.Forms;//調(diào)用C#自帶serialPort控件進(jìn)行串口編程namespaceserialport{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidserialPort1_DataReceived(objectsender,System.IO.Ports.SerialDataReceivedEventArgse){//使用委托進(jìn)行跨線程讀取數(shù)據(jù)Invoke(newEventHandler(delegate{txtreceived.Text+=port.ReadExisting()+"\r\n";}));}privatevoidForm1_Load(objectsender,EventArgse){foreach(stringcominSystem.IO.Ports.SerialPort.GetPortNames())//自動獲取串行口名稱cmbPortName.Items.Add(com);cmbPortName.SelectedIndex=0;}privatevoidbtnopen_Click(objectsender,EventArgse){try{if(port.IsOpen)port.Close();else{//端口設(shè)置//port.BaudRate=(BaudRate)Enum.Parse(typeof(BaudRate),cmbBaudRate.Text);//port.DataBits=(DataBits)Enum.Parse(typeof(DataBits),cmbDataBits.Text);port.BaudRate=int.Parse(cmbBaudRate.Text);//設(shè)置波特率port.DataBits=int.Parse(cmbDataBits.Text);//設(shè)置數(shù)據(jù)位port.StopBits=(StopBits)Enum.Parse(typeof(StopBits),cmbStopBits.Text);port.Parity=(Parity)Enum.Parse(typeof(Parity),cmbParity.Text);//port.Parity=(Parity)Enum.Parse(typeof(Parity),cmbParity.Text);port.PortName=cmbPortName.Text;//打開端口port.Open();}gbPortSettings.Enabled=!port.IsOpen;txtsend.Enabled=btnsend.Enabled=port.IsOpen;if(port.IsOpen)btnopen.Text="斷開連接";elsebtnopen.Text="開始連接";if(port.IsOpen)txtsend.Focus();}catch(Exceptioner){MessageBox.Show("端口連接失??!"+er.Message,"提示");}}privatevoidbtnsend_Click(objectsender,EventArgse){for(inti=0;i<txtsend.Lines.Count();i++)port.WriteLine(txtsend.Lines[i]);txtsend.Text="";}privatevoidbtnexit_Click(objectsender,EventArgse){Close();}privatevoidcmbPortName_SelectedIndexChanged(objectsender,EventArgse){}privatevoidcmbBaudRate_SelectedIndexChanged(objectsender,EventArgse){}privatevoidcmbDataBits_SelectedIndexChanged(objectsender,EventArgse){}privatevoidcmbStopBits_SelectedIndexChanged(objectsender,EventArgse){}privatevoidcmbParity_SelectedIndexChanged(objectsender,EventArgse){}privatevoidtxtreceived_TextChanged(objectsender,EventArgse){}privatevoidtxtsend_TextChanged(objectsender,EventArgse){}privatevoidlabel4_Click(objectsender,EventArgse){}}}實驗截圖本次實驗使用了虛擬端口,因此使用軟件ConfigureVirtualSerialPortDriver虛擬了幾個用于實驗的端口,截圖如下:心得體會:短短一周的課程設(shè)計已經(jīng)結(jié)束,在老師的指導(dǎo)下達(dá)到了基本的要求,我做的是點(diǎn)對點(diǎn)聊天系統(tǒng),使用的是不是很熟悉的C#做的,所以其中出現(xiàn)了多多少少一些問題,但在同學(xué)與老師的幫助下,問題都得到了解決,通過本次串口實驗,我對串口通信的知識了解的更透徹,這是在剛開始對串口通信知識不了解的情況下就編程而造成許多錯誤之后才得到的結(jié)果。在網(wǎng)上查找資料的時候也接觸到了不少其他的編程

溫馨提示

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

最新文檔

評論

0/150

提交評論