• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    單片機AT90S8515與PC的通訊

    2013-03-11 10:50:20張紅勇
    關(guān)鍵詞:波特率控件寄存器

    張紅勇,方 軍

    (1.西安理工大學,陜西 西安710048;2.西安工業(yè)大學,陜西 西安710032)

    工業(yè)領(lǐng)域的測控系統(tǒng),用作操作、監(jiān)視的上位PC和用作控制的下位單片機之間必須要進行信息交換,串行通訊是兩者之間常用的通訊方式。Atmel公司開發(fā)的AT90系列8位單片機是真正的RISC單片機,具備可多次編程的Flash程序存儲器、EPROM數(shù)據(jù)存儲器、可編程的URAT串行口及外部中斷等,再加上使用方便的SL-AVR程序開發(fā)軟件,可以在成本很低的情況下開發(fā)小型控制系統(tǒng)。本文主要介紹單片機AT90S8515與PC之間的串行通訊方法以及應用VB在PC上實現(xiàn)串行通訊的編程方法。

    1 串行通訊的接口電路

    PC的串行通訊可以采用Modern方式或零調(diào)制方式,采用Modern方式時,通訊伙伴必須有調(diào)制解調(diào)器,這也是標準的RS232方式;采用零調(diào)制方式時,通訊伙伴沒有調(diào)制解調(diào)器,通訊時,雙方保證各自輸出的電平滿足RS232接口的邏輯要求。

    單片機AT90S8515的PD0和PD1口分別為有串行通訊功能的RXD和TXD,但是其輸入/出是TTL電平,而PC的串行口是按照RS232標準設(shè)計的,兩者的電平不匹配,不能直接連接。需要中間接口電路來完成電平轉(zhuǎn)換。RS232電平與TTL電平轉(zhuǎn)換用芯片MAX232E實現(xiàn),電路如圖1所示。

    圖1 電平轉(zhuǎn)換電路

    在 圖1中,芯 片MAX232E的T1OUT、R1IN和GND分別與PC串口以232電平對應連接;而T1IN、R1OUT為TTL/CMOS電 平,與單片機AT90S8515的PD0(RXD)和PD1(TXD)對應連接。該電路為+5 V電源供電,其作用一方面使單片機發(fā)送的TTL信號轉(zhuǎn)化為RS232的電平信號;另一方面使PC進來的RS232電平轉(zhuǎn)換為單片機可接收的TTL/CMOS電平信號[1]。

    2 單片機AT90S8515串行通訊原理及編程

    2.1 單片機AT90S8515串行通訊原理

    AT90系列的單片機帶有一個全雙工通用串行異步收發(fā)器(UART)。通訊時使用4個寄存器:(1)數(shù)據(jù)寄存器UDR,該寄存器是兩個物理分離的、但分享同一個I/O地址的寄存器。當寫入UDR寄存器時,UART的發(fā)送數(shù)據(jù)寄存器被寫入;當讀UDR寄存器時,讀的是UART的接收數(shù)據(jù)寄存器。(2)狀態(tài)寄存器USR,該寄存器是一個只讀的寄存器,提供UART的狀態(tài)信息。數(shù)據(jù)接收完成標志為RXC、發(fā)送完成標志為TXC,數(shù)據(jù)寄存器清空標志為UDRE、幀出錯標志為FE、超時標志為OR。(3)控制寄存器UCR,該寄存器是一個讀/寫寄存器,用來設(shè)定是否啟動發(fā)送或接收、定義數(shù)據(jù)位數(shù)、接收或發(fā)送造成的中斷是否觸發(fā)等控制邏輯。(4)波特率寄存器UBR,該寄存器是一個讀/寫寄存器,用來設(shè)定通訊的波特率。UBR通過公式UBR=FCK/BAUD/16-1確定,其中FCK為單片機的晶振頻率,UBR表示波特率寄存器UBR中的值。

    2.2 單片機AT90S8515串行通訊編程

    單片機AT90S8515芯片的通訊編程按如下步驟進行[2]:

    (1)對涉及通訊的數(shù)據(jù)、狀態(tài)、控制寄存器和波特率寄存器進行初始化,若使用中斷方法進行通訊,需同時對中斷進行定義。

    (2)發(fā)送數(shù)據(jù)編程,根據(jù)數(shù)據(jù)寄存器的清空標志UDRE,判斷是否該發(fā)送下一個數(shù)據(jù)。語句如下:

    (3)接收數(shù)據(jù)編程,通過循環(huán)檢測數(shù)據(jù)接收完成標志RXC,確定是否可以讀取新的數(shù)據(jù)。語句如下:

    3 PC的串行通訊及編程方法

    3.1 PC的串行通訊方法

    PC的VB軟件為用戶提供了串口通訊使用的專用MSComm控件,MSComm控件唯一的事件是OnComm事件,對應的CommEvent屬性是MSComm控件記錄事件發(fā)生和錯誤的唯一屬性,該屬性用來配置通訊端口、傳輸數(shù)據(jù)、使用握手信號以及識別控件。使用該控件進行通訊時,有兩種方法可以選擇,查詢方式或事件觸發(fā)方式。其中,查詢方式是通過周期性地檢測CommEvent屬性的數(shù)值代碼判斷發(fā)生了哪種通訊錯誤或者事件;而事件觸發(fā)方式是利用OnComm事件的觸發(fā)器進行事件捕獲和處理,OnComm對輸入數(shù)據(jù)進行連續(xù)檢查,查明遠端的接收者是否準備好接收新的數(shù)據(jù),當滿足OnComm的事件發(fā)生時,應用程序會自動設(shè)置CommEvent屬性,跳到控件的OnComm通訊子程序[3]。

    3.2 PC的串行通訊編程步驟

    (1)通過CommEvent屬性設(shè)置各通訊參數(shù),打開通訊端口,其中各參數(shù)定義如下:

    CommPort:設(shè)置通訊口號

    Settings:設(shè)置波特率、奇偶校驗、數(shù)據(jù)位和停止位參數(shù)

    HandShaking:設(shè)置硬件握手協(xié)議

    InBufferSize和OutBufferSize:設(shè)置輸入、輸出緩沖區(qū)的大小

    InputLen:設(shè)置接收緩沖區(qū)中讀出的字符數(shù)

    InputMode:設(shè)置接收緩沖區(qū)的數(shù)據(jù)類型

    RThreshold:設(shè)置要接收的字符數(shù)

    SThreshold:設(shè)置接收允許的最小字符數(shù)

    PortOpen:打開或關(guān)閉串口

    (2)通過CommEvent屬性的Output項發(fā)送數(shù)據(jù)。如果數(shù)據(jù)為文本數(shù)據(jù),Output項定義為一個包含一個字符串的變量;如果數(shù)據(jù)為二進制格式,Output項則需定義為一個包含字節(jié)數(shù)組的變量。MSComm控件為字符串中的每個字符傳輸8位ANSI編碼。如果發(fā)送一個ANSI字符串到應用程序,可以用文本數(shù)據(jù)格式發(fā)送,如果發(fā)送包含嵌入控制字符等數(shù)據(jù),必須用二進制數(shù)據(jù)格式發(fā)送。

    (3)發(fā)送信息編程。首先,在工程窗體上添加一個多行顯示文本框,內(nèi)容為待發(fā)送的信息,定義其名稱屬性為SendTxt;其次,在工程窗體添加一發(fā)送信息的控件按鈕,定義按鈕名稱屬性為TxdCmd;最后,雙擊控件按鈕TxdCmd,對其編程如下:

    Private Sub TxdCmd Click

    Dim Bufs As Variant

    Bufs=S1vNo.Text

    MSComm.Output’Bufs

    EndSub

    (4)接收信息編程。首先,在工程窗體上添加一個多行顯示文本框,定義名稱屬性為ReTxt;然后雙擊控件MSComm,對其編程如下:

    Private Sub MSComm_OnComm

    Dim ComEventMessage As String

    Select Case MSComm.CommEvent

    Case commEvReceive

    CommEventMessage=Receive buffer has RThreshold number of characters.

    ReTxt.Text=MSComm.Input

    End Select

    MsgBox(CommEventMessage)

    EndSub

    單片機技術(shù)已發(fā)展多年,在工業(yè)和民用多個領(lǐng)域仍有廣闊的前景。本文闡述了用VB語言使Atmel公司的AT90S8515單片機與PC通訊的技術(shù)。但是由于篇幅所限,再加涉及軟件編程,難以給出具體的細節(jié),請讀者參考本文時,同時詳細參考有關(guān)的技術(shù)手冊,便于更深刻地理解及實際應用。

    [1]NELSON M.串行通訊指南[M].北京:中國水利水電出版社,2002.

    [2]耿德根.AVR高速嵌入式單片機原理與應用[M].北京:北京航空航天大學出版社,2001.

    [3]范逸之.Visual Basic與分布式監(jiān)控系統(tǒng)[M].北京:清華大學出版社,2002.

    猜你喜歡
    波特率控件寄存器
    CAN 總線波特率自適應程序設(shè)計
    智能制造(2020年5期)2020-07-03 06:24:00
    Lite寄存器模型的設(shè)計與實現(xiàn)
    計算機應用(2020年5期)2020-06-07 07:06:44
    關(guān)于.net控件數(shù)組的探討
    軟件(2018年7期)2018-08-13 09:44:42
    基于FPGA的異步串行通信波特率容錯設(shè)計
    電子測試(2018年7期)2018-05-16 06:27:18
    分簇結(jié)構(gòu)向量寄存器分配策略研究*
    C*Core芯片SCI串口波特率容限優(yōu)化
    就這樣玩會VBA中常見的自定義控件
    電腦迷(2012年24期)2012-04-29 00:44:03
    高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應用
    一種可重構(gòu)線性反饋移位寄存器設(shè)計
    計算機多設(shè)備接口波特率不匹配的研究
    甘谷县| 水富县| 遵化市| 西城区| 思南县| 通化市| 策勒县| 东阿县| 康马县| 南和县| 台山市| 汕尾市| 乐昌市| 宝丰县| 鹰潭市| 云林县| 安泽县| 松江区| 灵台县| 清河县| 赤城县| 邮箱| 方城县| 宁武县| 宁河县| 手游| 定兴县| 江城| 牡丹江市| 宁都县| 明水县| 巴彦淖尔市| 嫩江县| 铜陵市| 六安市| 彩票| 瓮安县| 奉贤区| 正宁县| 贵溪市| 安阳县|