PC機之間串口通信的實現一、實驗目的 1.熟悉微機接口實驗裝置的結構和使用方法。 2.掌握通信接口芯片8251和8250的功能和使用方法。 3.學會串行通信程序的編制方法。 二、實驗內容與要求 1.基本要求主機接收開關量輸入的數據(二進制或十六進制),從鍵盤上按“傳輸”鍵(可自行定義),就將該數據通過8251A傳輸出去。終端接收后在顯示器上顯示數據。具體操作說明如下:(1)出現提示信息“start with R in the board!”,通過調整乒乓開關的狀態,設置8位數據;(2)在小鍵盤上按“R”鍵,系統將此時乒乓開關的狀態讀入計算機I中,并顯示出來,同時顯示經串行通訊后,計算機II接收到的數據;(3)完成后,系統提示“do you want to send another data? Y/N”,根據用戶需要,在鍵盤按下“Y”鍵,則重復步驟(1),進行另一數據的通訊;在鍵盤按除“Y”鍵外的任意鍵,將退出本程序。2.提高要求 能夠進行出錯處理,例如采用奇偶校驗,出錯重傳或者采用接收方回傳和發送方確認來保證發送和接收正確。 三、設計報告要求 1.設計目的和內容 2.總體設計 3.硬件設計:原理圖(接線圖)及簡要說明 4.軟件設計框圖及程序清單5.設計結果和體會(包括遇到的問題及解決的方法) 四、8251A通用串行輸入/輸出接口芯片由于CPU與接口之間按并行方式傳輸,接口與外設之間按串行方式傳輸,因此,在串行接口中,必須要有“接收移位寄存器”(串→并)和“發送移位寄存器”(并→串)。能夠完成上述“串←→并”轉換功能的電路,通常稱為“通用異步收發器”(UART:Universal Asynchronous Receiver and Transmitter),典型的芯片有:Intel 8250/8251。8251A異步工作方式:如果8251A編程為異步方式,在需要發送字符時,必須首先設置TXEN和CTS#為有效狀態,TXEN(Transmitter Enable)是允許發送信號,是命令寄存器中的一位;CTS#(Clear To Send)是由外設發來的對CPU請求發送信號的響應信號。然后就開始發送過程。在發送時,每當CPU送往發送緩沖器一個字符,發送器自動為這個字符加上1個起始位,并且按照編程要求加上奇/偶校驗位以及1個、1.5個或者2個停止位。串行數據以起始位開始,接著是最低有效數據位,最高有效位的后面是奇/偶校驗位,然后是停止位。按位發送的數據是以發送時鐘TXC的下降沿同步的,也就是說這些數據總是在發送時鐘TXC的下降沿從8251A發出。數據傳輸的波特率取決于編程時指定的波特率因子,為發送器時鐘頻率的1、1/16或1/64。當波特率指定為16時,數據傳輸的波特率就是發送器時鐘頻率的1/16。CPU通過數據總線將數據送到8251A的數據輸出緩沖寄存器以后,再傳輸到發送緩沖器,經移位寄存器移位,將并行數據變為串行數據,從TxD端送往外部設備。在8251A接收字符時,命令寄存器的接收允許位RxE(Receiver Enable)必須為1。8251A通過檢測RxD引腳上的低電平來準備接收字符,在沒有字符傳送時RxD端為高電平。8251A不斷地檢測RxD引腳,從RxD端上檢測到低電平以后,便認為是串行數據的起始位,并且啟動接收控制電路中的一個計數器來進行計數,計數器的頻率等于接收器時鐘頻率。計數器是作為接收器采樣定時,當計數到相當于半個數位的傳輸時間時再次對RxD端進行采樣,如果仍為低電平,則確認該數位是一個有效的起始位。若傳輸一個字符需要16個時鐘,那么就是要在計數8個時鐘后采樣到低電平。之后,8251A每隔一個數位的傳輸時間對RxD端采樣一次,依次確定串行數據位的值。串行數據位順序進入接收移位寄存器,通過校驗并除去停止位,變成并行數據以后通過內部數據總線送入接收緩沖器,此時發出有效狀態的RxRDY信號通知CPU,通知CPU8251A已經收到一個有效的數據。一個字符對應的數據可以是5~8位。如果一個字符對應的數據不到8位,8251A會在移位轉換成并行數據的時候,自動把他們的高位補成0。 五、系統總體設計方案根據系統設計的要求,對系統設計的總體方案進行論證分析如下:1.獲取8位開關量可使用實驗臺上的8255A可編程并行接口芯片,因為只要獲取8位數據量,只需使用基本輸入和8位數據線,所以將8255A工作在方式0,PA0-PA7接實驗臺上的8位開關量。2.當使用串口進行數據傳送時,雖然同步通信速度遠遠高于異步通信,可達500kbit/s,但由于其需要有一個時鐘來實現發送端和接收端之間的同步,硬件電路復雜,通常計算機之間的通信只采用異步通信。3.由于8251A本身沒有時鐘,需要外部提供,所以本設計中使用實驗臺上的8253芯片的計數器2來實現。4:顯示和鍵盤輸入均使用DOS功能調用來實現。設計思路框圖,如下圖所示: 六、硬件設計硬件電路主要分為8位開關量數據獲取電路,串行通信數據發送電路,串行通信數據接收電路三個部分。1.8位開關量數據獲取電路該電路主要是利用8255并行接口讀取8位乒乓開關的數據。此次設計在獲取8位開關數據量時采用8255令其工作在方式0,A口輸入8位數據,CS#接實驗臺上CS1口,對應端口為280H-283H,PA0-PA7接8個開關。2.串行通信電路串行通信電路本設計中8253主要為8251充當頻率發生器,接線如下圖所示。
上傳時間: 2013-12-19
上傳用戶:小火車啦啦啦
在單片機應用開發中,代碼的使用效率問題、單片機抗干擾性和可靠性等問題仍困擾著 工程師。為幫助工程師解決單片機設計上的難題,《電子工程專輯》網站特邀Holtek香 港分公司工程部處長鄧宏杰先生擔任《單片機應用編程技巧》專題討論的嘉賓,與廣大 設計工程師交流單片機設計開發經驗。現根據論壇中的討論歸納出單片機開發中應掌握 的幾個基本技巧。一、 如何提高C語言編程代碼的效率鄧宏杰指出,用C語言進行單片機程序設計是單片機開發與應用的必然趨勢。他強調:“ 如果使用C編程時,要達到最高的效率,最好熟悉所使用的C編譯器。先試驗一下每條C語言編譯以后對應的匯編語言的語句行數,這樣就可以很明確的知道效率。在今后編程的 時候,使用編譯效率最高的語句。” 他指出,各家的C編譯器都會有一定的差異,故編譯效率也會有所不同,優秀的嵌入式系統C編譯器代碼長度和執行時間僅比以匯編語言編寫的同樣功能程度長5-20%。他說:“對于復雜而開發時間緊的項目時,可以采用C語言,但前提是要求你對該MCU系統的C語言和C編譯器非常熟悉,特別要注意該C編譯系統所能支持的數據類型和算法。雖然C語言是最普遍的一種高級語言,但由于不同的MCU廠家其C語言編譯系統是有所差別的,特別是在一些特殊功能模塊的操作上。所以如果對這些特性不了解,那么調試起來問題就會很 多,反而導致執行效率低于匯編語言。” 二、 如何減少程序中的bug? 對于如何減少程序的bug,鄧宏杰給出了一些建議,他指出系統運行中應考慮的超范圍管理參數有: 1.物理參數。這些參數主要是系統的輸入參數,它包括激勵參數、采集處理中的運行參 數和處理結束的結果參數。合理設定這些邊界,將超出邊界的參數都視為非正常激勵或 非正常回應進行出錯處理。 2.資源參數。這些參數主要是系統中的電路、器件、功能單元的資源,如記憶體容量、 存儲單元長度、堆疊深度。在程式設計中,對資源參數不允許超范圍使用。 3.應用參數。這些應用參數常表現為一些單片機、功能單元的應用條件。如E2PROM的擦 寫次數與資料存儲時間等應用參數界限。 4.過程參數。指系統運行中的有序變化的參數。
上傳時間: 2013-10-21
上傳用戶:chukeey
PLC 以 其 可靠性高、抗干擾能力強、配套齊全、功能完善、適應性強等特點,廣泛應用于各種控制領域。PLC作為通用工業控制計算機,是面向工礦企業的工控設備,使用梯形圖符號進行編程,與繼電器電路相當接近,被廣大工程技術人員接受。但是在實際應用中,如何編程能夠提高PLC程序運行速度是一個值得我們思考研究的問題。1 PLC工作原理PLC 與 計 算機的工作原理基本相同,即在系統程序的管理下,通過運行應用程序完成用戶任務。但兩者的工作方式有所不同。計算機一般采用等待命令的工作方式,而PLC在確定了工作任務并裝人了專用程序后成為一種專用機,它采用循環掃描工作方式,系統工作任務管理及應用程序執行都是用循環掃描方式完成的。PLC 有 兩 種基本的工作狀態,即運行(RUN)與停止(STOP)狀態。在這兩種狀態下,PLC的掃描過程及所要完成的任務是不盡相同的,如圖1所示。 PLC在RUN工作狀態時,執行一次掃描操作所的時間稱為掃描周期,其典型值通常為1一100nis,不同PLC廠家的產品則略有不同。掃描周期由內部處理時間、輸A/ 輸出處理執行時間、指令執行時間等三部分組成。通常在一個掃描過程中,執行指令的時間占了絕大部分,而執行指令的時間與用戶程序的長短有關。用戶 程 序 是根據控制要求由用戶編制,由許多條PLC指令所組成。不同的指令所對應的程序步不同,以三菱FX2N系列的PLC為例,PLC對每一個程序步操作處理時間為:基本指令占0.741s/步,功能指令占幾百微米/步。完成一個控制任務可以有多種編制程序的方法,因此,選擇合理、巧妙的編程方法既可以大大提高程序運行速度,又可以保證可靠性。 提高PLC程序運行速度的幾種編程方法2.1 用數據傳送給位元件組合的方法來控制輸出在 PL C應 用編程中,最后都會有一段輸出控制程序,一般都是用邏輯取及輸出指令來編寫,如圖2所示。在圖2所示的程序中,邏輯取的程序步為1,輸出的程序步為2,執行上述程序共需3個程序步。通常情況下,PLC要控制的輸出都不會是少量的,比如,有8個輸出,在條件滿足時要同時輸出。此時,執行圖2所示的程序共需17個程序步。若我們通過位元件的組合并采用數據傳送的方法來完成圖2所示的程序,就會大大減少程序步驟。在三 菱 PLC中,只處理ON/OFF狀態的元件(如X,Y,M和S),稱為位元件。但將位元件組合起來也可以處理數據。位元件組合由Kn加首元件號來表示。位元件每4bit為一組組合成單元。如KYO中的n是組數,當n=1時,K,Yo 對應的是Y3一Yo。當n二2時,KZYo對應的是Y7一Yo。通過位元件組合,就可以用處理數據的方式來處理位元件,圖2程序所示的功能可用圖3所示的傳送數據的方式來完成。
上傳時間: 2013-11-11
上傳用戶:幾何公差
摘 要 瞬態仿真領域的許多工作需要獲得可視化數據, 仿真電路不能將輸出參數繪制成圖形時研究工作將受到很大影響. 而權威電路仿真軟件PSpice 在這個方面不盡如人意. 本文提出了一種有效的解決辦法: 通過MATLAB 編程搭建一個PSpice 與MATLAB 的數據接口,使PSpice輸出數據文件可以導入到MATLAB中繪制圖形. 這令我們能夠很方便地獲得數據的規律以有效地分析仿真結果, 這項技術對于教學和工程實踐都有比較實際的幫助.關鍵詞: 瞬態仿真 仿真程序 PSpice MATLAB 可視化數據The Data Transfer from Pspice to MATLABWu hao Ning yuanzhong Liang yingAbstract Many works in the area of transient simulation has shown how a emulator such asPSpice can be interfaced to an control analysis package such as MATLAB to get viewdata. Thepaper describes how such interfaces can be made using the MATLAB programming. The platformas a typical platform will solve the problem that PSpice software sometimes can not draw the datato a picture. It can make us find the rule from numerous data very expediently, so we can analyzethe outcome of the simulation. And it also can be used in the field of education.Keywords Transient Simulation Emulator PSpice MATLAB Viewdata1 引言科學研究和工程應用常需要進行電路仿真 PSpice可進行直流 交流 瞬態等基本電路特性分析 也可進行蒙托卡諾 MC 統計分析 最壞情況 Wcase 分析 優化設計等復雜電路特性分析 它是國際上仿真電路的權威軟件 而MATLAB的主要特點有 高效方便的矩陣和數組運算 編程效率高 結構化面向對象 方便的繪圖功能 用戶使用方便 工具箱功能強大 兩者各有著重點 兩種軟件結合應用 對研究工作有很重要的意義香港理工大學Y. S. LEE 等人首先將PSpice和MATLAB結合 開發了電力電子電路優化用的CAD 程序MATSPICE[6] 將兩者相結合的關鍵在于 如何用MATLAB 獲取PSpice的仿真數據 對此參考文獻 6 里沒有詳細敘述 本文著重說明用MATLAB 讀取PSpice仿真數據的具體方法本論文利用MATLAB對PSpice仿真出的數據處理繪制出后者無法得到或是效果不好的仿真圖形 下面就兩者結合使用的例子 進行具體說明
上傳時間: 2013-10-20
上傳用戶:wuchunzhong
01_靜態時序分析基本原理和時序分析模型
上傳時間: 2013-11-17
上傳用戶:evil
Verilog基本電路設計指導書
上傳時間: 2013-11-19
上傳用戶:xsnjzljj
Verilog_HDL的基本語法詳解(夏宇聞版):Verilog HDL是一種用于數字邏輯電路設計的語言。用Verilog HDL描述的電路設計就是該電路的Verilog HDL模型。Verilog HDL既是一種行為描述的語言也是一種結構描述的語言。這也就是說,既可以用電路的功能描述也可以用元器件和它們之間的連接來建立所設計電路的Verilog HDL模型。Verilog模型可以是實際電路的不同級別的抽象。這些抽象的級別和它們對應的模型類型共有以下五種: 系統級(system):用高級語言結構實現設計模塊的外部性能的模型。 算法級(algorithm):用高級語言結構實現設計算法的模型。 RTL級(Register Transfer Level):描述數據在寄存器之間流動和如何處理這些數據的模型。 門級(gate-level):描述邏輯門以及邏輯門之間的連接的模型。 開關級(switch-level):描述器件中三極管和儲存節點以及它們之間連接的模型。 一個復雜電路系統的完整Verilog HDL模型是由若干個Verilog HDL模塊構成的,每一個模塊又可以由若干個子模塊構成。其中有些模塊需要綜合成具體電路,而有些模塊只是與用戶所設計的模塊交互的現存電路或激勵信號源。利用Verilog HDL語言結構所提供的這種功能就可以構造一個模塊間的清晰層次結構來描述極其復雜的大型設計,并對所作設計的邏輯電路進行嚴格的驗證。 Verilog HDL行為描述語言作為一種結構化和過程性的語言,其語法結構非常適合于算法級和RTL級的模型設計。這種行為描述語言具有以下功能: · 可描述順序執行或并行執行的程序結構。 · 用延遲表達式或事件表達式來明確地控制過程的啟動時間。 · 通過命名的事件來觸發其它過程里的激活行為或停止行為。 · 提供了條件、if-else、case、循環程序結構。 · 提供了可帶參數且非零延續時間的任務(task)程序結構。 · 提供了可定義新的操作符的函數結構(function)。 · 提供了用于建立表達式的算術運算符、邏輯運算符、位運算符。 · Verilog HDL語言作為一種結構化的語言也非常適合于門級和開關級的模型設計。因其結構化的特點又使它具有以下功能: - 提供了完整的一套組合型原語(primitive); - 提供了雙向通路和電阻器件的原語; - 可建立MOS器件的電荷分享和電荷衰減動態模型。 Verilog HDL的構造性語句可以精確地建立信號的模型。這是因為在Verilog HDL中,提供了延遲和輸出強度的原語來建立精確程度很高的信號模型。信號值可以有不同的的強度,可以通過設定寬范圍的模糊值來降低不確定條件的影響。 Verilog HDL作為一種高級的硬件描述編程語言,有著類似C語言的風格。其中有許多語句如:if語句、case語句等和C語言中的對應語句十分相似。如果讀者已經掌握C語言編程的基礎,那么學習Verilog HDL并不困難,我們只要對Verilog HDL某些語句的特殊方面著重理解,并加強上機練習就能很好地掌握它,利用它的強大功能來設計復雜的數字邏輯電路。下面我們將對Verilog HDL中的基本語法逐一加以介紹。
標簽: Verilog_HDL
上傳時間: 2013-11-23
上傳用戶:青春給了作業95
第6章 FPGA設計中的基本問題
標簽: FPGA
上傳時間: 2013-11-06
上傳用戶:hongmo
veriloghdl進行fpga設計的一些基本方法,對初學者很有幫助
標簽: veriloghdl fpga
上傳時間: 2013-11-17
上傳用戶:muhongqing
GPRS基本原理
標簽: GPRS
上傳時間: 2013-10-18
上傳用戶:liufei