《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)AT90S8515與PC的通訊
單片機(jī)AT90S8515與PC的通訊
來(lái)源:微型機(jī)與應(yīng)用2013年第14期
張紅勇1,方 軍2
(1.西安理工大學(xué),陜西 西安710048;2.西安工業(yè)大學(xué),陜西 西安710032)
摘要: 介紹了單片機(jī)AT90S8515與PC構(gòu)成的測(cè)控系統(tǒng),利用單片機(jī)AT90S8515自身的串行通訊口和Visual Basic編程語(yǔ)言實(shí)現(xiàn)單片機(jī)AT90S8515與PC之間的通訊。
Abstract:
Key words :

摘  要: 介紹了單片機(jī)AT90S8515與PC構(gòu)成的測(cè)控系統(tǒng),利用單片機(jī)AT90S8515自身的串行通訊口和Visual Basic編程語(yǔ)言實(shí)現(xiàn)單片機(jī)AT90S8515與PC之間的通訊。
關(guān)鍵詞: 單片機(jī)AT90S8515;PC機(jī);串行通訊

    工業(yè)領(lǐng)域的測(cè)控系統(tǒng),用作操作、監(jiān)視的上位PC和用作控制的下位單片機(jī)之間必須要進(jìn)行信息交換,串行通訊是兩者之間常用的通訊方式。Atmel公司開(kāi)發(fā)的AT90系列8位單片機(jī)是真正的RISC單片機(jī),具備可多次編程的Flash程序存儲(chǔ)器、EPROM數(shù)據(jù)存儲(chǔ)器、可編程的URAT串行口及外部中斷等,再加上使用方便的SL-AVR程序開(kāi)發(fā)軟件,可以在成本很低的情況下開(kāi)發(fā)小型控制系統(tǒng)。本文主要介紹單片機(jī)AT90S8515與PC之間的串行通訊方法以及應(yīng)用VB在PC上實(shí)現(xiàn)串行通訊的編程方法。
1 串行通訊的接口電路
    PC的串行通訊可以采用Modern方式或零調(diào)制方式,采用Modern方式時(shí),通訊伙伴必須有調(diào)制解調(diào)器,這也是標(biāo)準(zhǔn)的RS232方式;采用零調(diào)制方式時(shí),通訊伙伴沒(méi)有調(diào)制解調(diào)器,通訊時(shí),雙方保證各自輸出的電平滿足RS232接口的邏輯要求。
    單片機(jī)AT90S8515的PD0和PD1口分別為有串行通訊功能的RXD和TXD,但是其輸入/出是TTL電平,而PC的串行口是按照RS232標(biāo)準(zhǔn)設(shè)計(jì)的,兩者的電平不匹配,不能直接連接。需要中間接口電路來(lái)完成電平轉(zhuǎn)換。RS232電平與TTL電平轉(zhuǎn)換用芯片MAX232E實(shí)現(xiàn),電路如圖1所示。
    在圖1中,芯片MAX232E的T1OUT、R1IN和GND分別與PC串口以232電平對(duì)應(yīng)連接;而T1IN、R1OUT為T(mén)TL/CMOS電平,與單片機(jī)AT90S8515的PD0(RXD)和PD1(TXD)對(duì)應(yīng)連接。該電路為+5 V電源供電,其作用一方面使單片機(jī)發(fā)送的TTL信號(hào)轉(zhuǎn)化為RS232的電平信號(hào);另一方面使PC進(jìn)來(lái)的RS232電平轉(zhuǎn)換為單片機(jī)可接收的TTL/CMOS電平信號(hào)[1]。

2 單片機(jī)AT90S8515串行通訊原理及編程
2.1 單片機(jī)AT90S8515串行通訊原理

    AT90系列的單片機(jī)帶有一個(gè)全雙工通用串行異步收發(fā)器(UART)。通訊時(shí)使用4個(gè)寄存器:(1)數(shù)據(jù)寄存器UDR,該寄存器是兩個(gè)物理分離的、但分享同一個(gè)I/O地址的寄存器。當(dāng)寫(xiě)入U(xiǎn)DR寄存器時(shí),UART的發(fā)送數(shù)據(jù)寄存器被寫(xiě)入;當(dāng)讀UDR寄存器時(shí),讀的是UART的接收數(shù)據(jù)寄存器。(2)狀態(tài)寄存器USR,該寄存器是一個(gè)只讀的寄存器,提供UART的狀態(tài)信息。數(shù)據(jù)接收完成標(biāo)志為RXC、發(fā)送完成標(biāo)志為T(mén)XC,數(shù)據(jù)寄存器清空標(biāo)志為UDRE、幀出錯(cuò)標(biāo)志為FE、超時(shí)標(biāo)志為OR。(3)控制寄存器UCR,該寄存器是一個(gè)讀/寫(xiě)寄存器,用來(lái)設(shè)定是否啟動(dòng)發(fā)送或接收、定義數(shù)據(jù)位數(shù)、接收或發(fā)送造成的中斷是否觸發(fā)等控制邏輯。(4)波特率寄存器UBR,該寄存器是一個(gè)讀/寫(xiě)寄存器,用來(lái)設(shè)定通訊的波特率。UBR通過(guò)公式UBR=FCK/BAUD/16-1確定,其中FCK為單片機(jī)的晶振頻率,UBR表示波特率寄存器UBR中的值。
2.2 單片機(jī)AT90S8515串行通訊編程
    單片機(jī)AT90S8515芯片的通訊編程按如下步驟進(jìn)行[2]:
    (1)對(duì)涉及通訊的數(shù)據(jù)、狀態(tài)、控制寄存器和波特率寄存器進(jìn)行初始化,若使用中斷方法進(jìn)行通訊,需同時(shí)對(duì)中斷進(jìn)行定義。
    (2)發(fā)送數(shù)據(jù)編程,根據(jù)數(shù)據(jù)寄存器的清空標(biāo)志UDRE,判斷是否該發(fā)送下一個(gè)數(shù)據(jù)。語(yǔ)句如下:
    Sbi        UCR, TXEN;            啟動(dòng)數(shù)據(jù)發(fā)送
    Out        UDR, u_buffer;        發(fā)送數(shù)據(jù)
    Wait:    sbis USR,  UDRE;        等待數(shù)據(jù)寄存器清空
    Rjmp  wait
    (3)接收數(shù)據(jù)編程,通過(guò)循環(huán)檢測(cè)數(shù)據(jù)接收完成標(biāo)志RXC,確定是否可以讀取新的數(shù)據(jù)。語(yǔ)句如下:
    Sbi        UCR, RXEN;            啟動(dòng)數(shù)據(jù)接收
    Idle:        sbis USR,  RXC;        等待接收
    Rjmp     idle
    In        u_buffer,  UDR        讀入數(shù)據(jù)
3 PC的串行通訊及編程方法
3.1 PC的串行通訊方法

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

 


    (1)通過(guò)CommEvent屬性設(shè)置各通訊參數(shù),打開(kāi)通訊端口,其中各參數(shù)定義如下:
    CommPort    :設(shè)置通訊口號(hào)
    Settings:設(shè)置波特率、奇偶校驗(yàn)、數(shù)據(jù)位和停止位參數(shù)
    HandShaking:設(shè)置硬件握手協(xié)議
    InBufferSize和OutBufferSize:設(shè)置輸入、輸出緩沖區(qū)的大小
    InputLen:設(shè)置接收緩沖區(qū)中讀出的字符數(shù)
    InputMode:設(shè)置接收緩沖區(qū)的數(shù)據(jù)類(lèi)型
    RThreshold:設(shè)置要接收的字符數(shù)
    SThreshold:設(shè)置接收允許的最小字符數(shù)
    PortOpen:打開(kāi)或關(guān)閉串口
    (2)通過(guò)CommEvent屬性的Output項(xiàng)發(fā)送數(shù)據(jù)。如果數(shù)據(jù)為文本數(shù)據(jù),Output項(xiàng)定義為一個(gè)包含一個(gè)字符串的變量;如果數(shù)據(jù)為二進(jìn)制格式,Output項(xiàng)則需定義為一個(gè)包含字節(jié)數(shù)組的變量。MSComm控件為字符串中的每個(gè)字符傳輸8位ANSI編碼。如果發(fā)送一個(gè)ANSI字符串到應(yīng)用程序,可以用文本數(shù)據(jù)格式發(fā)送,如果發(fā)送包含嵌入控制字符等數(shù)據(jù),必須用二進(jìn)制數(shù)據(jù)格式發(fā)送。
    (3)發(fā)送信息編程。首先,在工程窗體上添加一個(gè)多行顯示文本框,內(nèi)容為待發(fā)送的信息,定義其名稱(chēng)屬性為SendTxt;其次,在工程窗體添加一發(fā)送信息的控件按鈕,定義按鈕名稱(chēng)屬性為T(mén)xdCmd;最后,雙擊控件按鈕TxdCmd,對(duì)其編程如下:
    Private Sub TxdCmd Click
    Dim Bufs As Variant
    Bufs=S1vNo.Text
    MSComm. Output’Bufs
    EndSub
    (4)接收信息編程。首先,在工程窗體上添加一個(gè)多行顯示文本框,定義名稱(chēng)屬性為ReTxt;然后雙擊控件MSComm,對(duì)其編程如下:
    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
    單片機(jī)技術(shù)已發(fā)展多年,在工業(yè)和民用多個(gè)領(lǐng)域仍有廣闊的前景。本文闡述了用VB語(yǔ)言使Atmel公司的AT90S8515單片機(jī)與PC通訊的技術(shù)。但是由于篇幅所限,再加涉及軟件編程,難以給出具體的細(xì)節(jié),請(qǐng)讀者參考本文時(shí),同時(shí)詳細(xì)參考有關(guān)的技術(shù)手冊(cè),便于更深
刻地理解及實(shí)際應(yīng)用。
參考文獻(xiàn)
[1] NELSON M.串行通訊指南[M].北京:中國(guó)水利水電出版社,2002.
[2] 耿德根.AVR高速嵌入式單片機(jī)原理與應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2001.
[3] 范逸之.Visual Basic與分布式監(jiān)控系統(tǒng)[M].北京:清華大學(xué)出版社,2002.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国内精品一区二区| 精品福利av| 久久综合久久综合久久综合| 亚洲自拍偷拍一区| 99国产精品私拍| 中日韩美女免费视频网址在线观看 | 亚洲天堂av在线免费| 亚洲激情一区二区| 欧美在线一区二区三区| 欧美一区二区三区视频| 亚洲欧美日韩一区二区三区在线观看| 一区二区三区久久精品| 99re成人精品视频| 亚洲精选一区二区| 亚洲精品在线一区二区| 久久精品91久久久久久再现| 99视频精品全部免费在线| 亚洲国产精品久久久久| 亚洲成色777777在线观看影院| 欧美一区二区视频网站| 欧美一区二区三区免费在线看| 亚洲欧美日本伦理| 亚洲欧美视频一区二区三区| 亚洲欧美三级伦理| 欧美一级精品大片| 亚洲电影观看| 亚洲人成在线观看网站高清| 亚洲精品一区二区三区四区高清| 亚洲精品激情| 在线综合亚洲| 亚洲一二三区在线| 亚久久调教视频| 久久久www免费人成黑人精品 | 国内揄拍国内精品久久| 国产亚洲午夜| 伊人久久亚洲热| 亚洲人成网在线播放| 99pao成人国产永久免费视频| 一区二区三区 在线观看视频| 国产精品99久久久久久久女警| 亚洲欧美成人| 久久精品视频网| 日韩亚洲欧美一区| 亚洲永久免费| 久久久国产亚洲精品| 久久精品理论片| 欧美国产日韩一区二区三区| 欧美日韩一区二区三区在线视频| 国产精品久久久久天堂| 国产有码一区二区| 亚洲国产综合91精品麻豆| 99re热这里只有精品免费视频| 亚洲网站在线看| 久久av一区二区三区漫画| 亚洲美女黄网| 亚洲欧美一区二区三区久久| 久久黄色影院| 欧美成人tv| 国产精品xxxav免费视频| 国产一区二区久久久| 亚洲成人自拍视频| 亚洲视频在线观看一区| 欧美在线在线| 一区二区欧美日韩视频| 欧美主播一区二区三区美女 久久精品人 | 久久久福利视频| 欧美精品18+| 国产日韩一区二区| 亚洲七七久久综合桃花剧情介绍| 亚洲一级黄色| 亚洲欧洲日本mm| 午夜一区二区三区不卡视频| 免费观看30秒视频久久| 国产精品国产三级国产| 黄网站免费久久| 亚洲视频在线免费观看| 亚洲国产精品成人综合色在线婷婷 | 欧美人与性动交a欧美精品| 亚洲经典自拍| 亚洲免费在线电影| 日韩视频免费大全中文字幕| 欧美一级视频一区二区| 欧美精品一区二| 国产手机视频一区二区| 99精品免费| 亚洲欧洲综合另类| 久久精品一区二区国产| 欧美日韩综合在线| 在线观看中文字幕不卡| 销魂美女一区二区三区视频在线| 在线亚洲欧美专区二区| 麻豆久久精品| 国产午夜精品全部视频播放 | 亚洲精品一品区二品区三品区| 欧美在线网站| 国产精品a久久久久久| 亚洲激情欧美| 久久精品30| 欧美一区二区三区成人| 欧美三区在线观看| 亚洲欧洲一区二区天堂久久| 久久精品理论片| 久久av一区二区三区漫画| 欧美天天综合网| 亚洲精品美女久久7777777| 久久精品五月婷婷| 欧美主播一区二区三区| 国产精品成人在线观看| 亚洲欧洲在线观看| 亚洲三级电影全部在线观看高清| 久久久久成人精品| 国产日韩一区二区三区| 亚洲亚洲精品三区日韩精品在线视频 | 亚洲第一福利视频| 久久激情网站| 国产美女一区二区| 亚洲在线观看| 亚洲欧美美女| 国产精品国色综合久久| 亚洲最快最全在线视频| 欧美视频在线观看免费| 亚洲精品一区在线观看| 免费观看日韩| 亚洲福利视频专区| 亚洲欧洲精品一区二区三区波多野1战4 | 亚洲福利在线视频| 亚洲国产三级在线| 免费观看亚洲视频大全| 在线观看日韩www视频免费 | 国产精品福利在线观看| 一本色道久久综合亚洲精品不卡 | 亚洲午夜精品在线| 欧美日韩国产精品自在自线| 亚洲片在线观看| av成人免费在线观看| 欧美另类videos死尸| 亚洲精品在线免费| 亚洲调教视频在线观看| 欧美午夜精品电影| 中文精品一区二区三区| 亚洲欧美日韩国产综合在线| 国产精品日韩欧美一区| 亚洲欧美中文字幕| 久久久欧美一区二区| 伊人色综合久久天天| 亚洲欧洲日本专区| 欧美日韩在线观看一区二区| 在线一区二区日韩| 欧美一区二区在线播放| 韩国成人理伦片免费播放| 亚洲国产精品久久久久婷婷老年 | 男女精品网站| 亚洲激情二区| 中文在线一区| 国产裸体写真av一区二区| 欧美一级片在线播放| 久久综合99re88久久爱| 亚洲激情自拍| 亚洲男人天堂2024| 国产无一区二区| 亚洲国产欧美日韩精品| 欧美激情一二三区| 在线视频你懂得一区| 欧美在线观看视频一区二区| 国产一区91精品张津瑜| 91久久久久久久久久久久久| 欧美美女福利视频| 亚洲一区视频在线| 美女成人午夜| 日韩视频一区二区三区在线播放免费观看 | 亚洲日本电影在线| 国产精品va在线播放| 销魂美女一区二区三区视频在线| 欧美成人官网二区| 亚洲视频在线观看网站| 蜜乳av另类精品一区二区| 一本在线高清不卡dvd| 久久久免费精品| 99视频一区二区三区| 久久久久久久久蜜桃| 亚洲三级免费| 欧美一区日韩一区| 亚洲国产精品成人va在线观看| 亚洲免费在线观看| 激情小说另类小说亚洲欧美| 亚洲夜晚福利在线观看| 雨宫琴音一区二区在线| 亚洲在线观看视频| 亚洲电影免费观看高清完整版在线| 亚洲视频一区在线| 韩国一区二区三区在线观看| 亚洲图片你懂的| 激情五月***国产精品| 日韩视频在线播放| 久久精品理论片| 一本色道久久综合亚洲精品不 | 欧美视频网址| 亚洲黑丝一区二区| 国产精品人人爽人人做我的可爱| 亚洲国产老妈|