国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

AVR單片機(jī)ATmega16與計(jì)算機(jī)串行通信的實(shí)現(xiàn)

發(fā)布時(shí)間:2012-9-13 17:12    發(fā)布者:wp1981
關(guān)鍵詞: ATmega16 串行通信 , Visual Basic
作者:韋曉茹, 蔡志堅(jiān), 居戩之 來源:微型機(jī)與應(yīng)用2012年第14期

摘  要:介紹AVR單片機(jī)ATmega16和計(jì)算機(jī)的串行通信的軟、硬件設(shè)計(jì),采用Visual Basic6.0中的MSComm通信控件實(shí)現(xiàn)計(jì)算機(jī)與單片機(jī)ATmega16之間的串行通信。文章詳細(xì)闡述了程序的設(shè)計(jì)流程,并給出了部分程序代碼。實(shí)驗(yàn)證明該系統(tǒng)可以實(shí)現(xiàn)ATmega16與計(jì)算機(jī)之間的通信。

AVR單片機(jī)[1]是美國ATMEL公司的精簡指令集單片機(jī),大多數(shù)是單周期指令,運(yùn)行速度快。AVR單片機(jī)帶有Flash程序存儲(chǔ)器,擦寫方便,支持ISP(串行在線下載),便于產(chǎn)品的調(diào)試、開發(fā)和更新。ATmega16是AVR單片機(jī)家族中的高檔產(chǎn)品,是目前占主流、高信價(jià)比的AVR芯片之一。ATmega16的主要特點(diǎn)有:功耗低,在正常模式下只有1.1 mA;最高工作頻率可達(dá)16 MHz;具有可擦寫的16 KB的可編程Flash;內(nèi)含8路10 bit ADC;具有高度靈活的串行通信設(shè)備USART,使用時(shí)只需設(shè)置相關(guān)的寄存器參數(shù)就可以實(shí)現(xiàn)串行通信。

EIA-232是常用的串行通信[2]技術(shù)標(biāo)準(zhǔn)之一,是目前通信工業(yè)中應(yīng)用最廣泛的一種串行接口,這是由于工業(yè)領(lǐng)域?qū)Ξa(chǎn)品的可靠性和穩(wěn)定性的要求更高,EIA標(biāo)準(zhǔn)下的串行通信技術(shù)完全可以滿足人們對(duì)工業(yè)設(shè)備傳輸?shù)母鞣N性能要求,使得EIA串口通信在系統(tǒng)控制[3-5]的范疇中一直占據(jù)著極其重要的地位。計(jì)算機(jī)和單片機(jī)的EIA-232串行通信是許多測控系統(tǒng)常用的一種通信解決方案。本文介紹了計(jì)算機(jī)和單片機(jī)ATmega16之間EIA-232串行通信的實(shí)現(xiàn)。計(jì)算機(jī)作為上位機(jī),單片機(jī)作為下位機(jī)。

1 硬件設(shè)計(jì)

圖1為EIA-232串行通信系統(tǒng)的結(jié)構(gòu)框圖。



EIA-232用正、負(fù)電壓來表示邏輯狀態(tài),有效負(fù)電平的狀態(tài)為邏輯1,有效正電平的狀態(tài)為邏輯0;而單片機(jī)使用的TTL電平是以高、低電平表示1和0兩種邏輯狀態(tài),因此將兩者相連必需進(jìn)行電平邏輯關(guān)系的變換。圖1中的芯片MAX232就是將TTL和RS232電平相互轉(zhuǎn)換的器件。

圖2為EIA-232串行通信電原理圖。電壓VCC可采用5 V供電。



圖2中的D Connector9是用于連接計(jì)算機(jī)串行口的接插件,5腳是接地端,3腳是發(fā)送端TXD,2腳是接收端RXD。TXD端的電平經(jīng)MAX232轉(zhuǎn)換為TTL電平后送給單片機(jī)的接收端;單片機(jī)發(fā)送出的TTL電平的數(shù)據(jù)經(jīng)MAX232轉(zhuǎn)換為RS232電平經(jīng)RXD傳送給計(jì)算機(jī)。ATmega16工作時(shí)使用系統(tǒng)內(nèi)部時(shí)鐘8 MHz,不需外接晶振,只需在燒錄程序時(shí)設(shè)置相關(guān)參數(shù)即可使用內(nèi)部時(shí)鐘。圖2中標(biāo)號(hào)為UP的是一個(gè)10腳的接插件,通過這個(gè)接插件與程序燒錄器相連即可實(shí)現(xiàn)單片機(jī)程序的燒錄操作,方便產(chǎn)品升級(jí)。

2 上位機(jī)程序設(shè)計(jì)

上位機(jī)程序的編寫采用Visual Basic6.0的編程環(huán)境。使用Visual Basic6.0的MSComm串行通信控件,非常容易實(shí)現(xiàn)串口通信,使用時(shí)要對(duì)串行通信的信息格式和協(xié)議進(jìn)行設(shè)置。每個(gè)通信控件對(duì)應(yīng)一個(gè)串口, 如果要訪問多個(gè)通信口, 則要設(shè)計(jì)多個(gè)通信控件。

計(jì)算機(jī)與單片機(jī)之間的通信采用查詢的工作方法,計(jì)算機(jī)作為上位機(jī),單片機(jī)作為下位機(jī)。計(jì)算機(jī)主要負(fù)責(zé)發(fā)送控制命令以及數(shù)據(jù)的發(fā)送、接收、處理、計(jì)算和顯示等功能。計(jì)算機(jī)的程序設(shè)計(jì)包括界面設(shè)計(jì)以及程序代碼的編寫。圖3為設(shè)計(jì)的程序界面,圖3中含有發(fā)送數(shù)據(jù)的輸入框、接收數(shù)據(jù)的顯示框和命令控件按鈕。用鼠標(biāo)點(diǎn)擊“發(fā)送/接收”按鈕后程序開始運(yùn)行,接收數(shù)據(jù)與發(fā)送數(shù)據(jù)一致時(shí)說明通信成功,否則失敗。





圖4為程序設(shè)計(jì)的流程圖。具體的程序代碼包括串口的初始化及數(shù)據(jù)的發(fā)送與接收。初始化代碼主要對(duì)串行通信的信息格式和協(xié)議進(jìn)行設(shè)置,串口的初始化代碼如下:

    MSComm1. CommPort = 1            //使用COM1串口
    MSComm1. Settings="9600,n,8,1"
                        //數(shù)據(jù)格式:波特率9600 b/s,無奇偶
                       校驗(yàn),8 bit數(shù)據(jù)位,1 bit停止位
     MSComm1. OutBufferCount = 0        //清空發(fā)送緩沖區(qū)
     MSComm1. InBufferCount = 0          //清空接收緩沖區(qū)
     MSComm1. InputMode = 1      //以二進(jìn)制形式取回?cái)?shù)據(jù)
     MSComm1. InputLen=0    //一次讀取緩沖區(qū)內(nèi)全部數(shù)據(jù)
      If MSComm1.PortOpen = False Then
     MSComm1.PortOpen = True
     End If                                   //打開串口

數(shù)據(jù)的發(fā)送和接收主要用到下面兩句代碼:

         MSComm1.Output = outdata
         backdata = MSComm1.Input

由于篇幅的限制,其他代碼不再給出。

3 下位機(jī)程序設(shè)計(jì)

Atmega16內(nèi)部的USART是一個(gè)通用的同步和異步串行接收器和發(fā)送器,其高度靈活,使用非常方便。與USART相關(guān)的寄存器有:UDR、UCSRA、UCSRB、UCSRC、UBRRH和UBRRL。UDR是USART發(fā)送數(shù)據(jù)和接收數(shù)據(jù)共享的數(shù)據(jù)寄存器,將數(shù)據(jù)寫入U(xiǎn)DR時(shí)實(shí)際操作的是通過UDR發(fā)送數(shù)據(jù),讀UDR時(shí)實(shí)際返回的是UDR中的數(shù)據(jù)。UCSRA、UCSRC和UCSRB為控制和狀態(tài)寄存器,串行口的通信模式的設(shè)置可通過對(duì)UCSRA和UCSRB的相關(guān)數(shù)據(jù)位進(jìn)行寫操作來實(shí)現(xiàn)。數(shù)據(jù)幀包含的數(shù)據(jù)位數(shù)也是由UCSRB來確定,并與上位機(jī)保持一致。UBRRH和UBRRL為波特率寄存器,UBRRH和UBRRL是16位寄存器UBRR的高8位和低8位。UBRR的值是用于確定串行通信的波特率,對(duì)于異步正常模式(由UCSRA和UCSRB確定),波特率的計(jì)算公式為 ,對(duì)于9 600 b/s的波特率(和上位機(jī)一致),在fosc=8 MHz的情況下,通過計(jì)算得UBRR的值為51。對(duì)UBRR進(jìn)行寫操作時(shí)注意要先寫高8位UBRRH,后寫低8位UBRRL,否則寫入無效。

程序流程如圖5所示。判斷接收是否結(jié)束依據(jù)UCSRA中的標(biāo)志位RXC,當(dāng)RXC=1時(shí)表示接收沒有結(jié)束,繼續(xù)接收;當(dāng)RXC=0時(shí)表示接收結(jié)束,可以從UDR中讀出接收到的數(shù)據(jù)。判斷發(fā)送是否結(jié)束依據(jù)UCSRA中的標(biāo)志位TXC,當(dāng)TXC=1時(shí)表示發(fā)送沒有結(jié)束;當(dāng)TXC=0時(shí)表示發(fā)送結(jié)束。



程序的編寫環(huán)境采用ATMEL公司的AVRstudio軟件。初始化部分程序代碼如下:

    LDI   r16,0x20
  OUT  UCSRA,r16                  //設(shè)置串口通信模式
  LDI   r17,0x00   
  OUT  UBRRH,r17
  LDI   r16,0x33
  OUT  UBRRL,r16                //設(shè)置串口通信的波特率      LDI   r16,0x86   
  OUT  UCSRC,r16              //設(shè)置串口通信的數(shù)據(jù)格式
  LDI   r16,0x18
    OUT  UCSRB,r16                               //使能串口通信
    判斷UCSRA的標(biāo)志位RXC和TXC采用跳轉(zhuǎn)指令SBIS,具體語句為:
    SBIS  UCSRA,RXC
    SBIS  UCSRA,TXC

將編寫好的程序燒錄進(jìn)單片機(jī),硬件連接完成后運(yùn)行上位機(jī)程序即可實(shí)現(xiàn)串行通信,在圖3的程序界面可以查看結(jié)果。如果需要重新燒錄程序,可以進(jìn)行在線燒錄,而不需要把單片機(jī)ATmega16從電路上取下來。因此,可以采用SMD封裝,有利于產(chǎn)品微型化。

本文采用查詢的工作方式,通過電平轉(zhuǎn)換器MAX232實(shí)現(xiàn)了單片機(jī)ATmega16與計(jì)算機(jī)之間的EIA-232串行通信。雖然目前USB的應(yīng)用很廣泛,但由于工業(yè)設(shè)備一般連接好以后很少進(jìn)行重復(fù)插拔,USB的優(yōu)越性不能得到很好的體現(xiàn),使得工業(yè)領(lǐng)域使用USB接口的產(chǎn)品并不多,EIA串行通信仍占據(jù)重要地位,因此研究EIA串行通信是很必要的。

參考文獻(xiàn)
[1] 耿德根,宋建國,馬潮,等. AVR高速嵌入式單片機(jī)原理與應(yīng)用[M]. 北京:北京航空航天大學(xué)出版社,2001.
[2] 謝瑞和. 串行技術(shù)大全[M].北京:清華大學(xué)出版社,2003.
[3] 張艷玲,黃?. 基于VB的機(jī)房計(jì)算機(jī)電源監(jiān)控系統(tǒng)[J].微型機(jī)與應(yīng)用,2004,23(1):41-44.
[4] 王平,張新東. 基于智能儀表的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J]. 自動(dòng)化與儀表,2009,24(4):9-10.
[5] 柳劍,陳於學(xué),楊曙年. 基于編程口的三菱PLC與PC機(jī)串行通信實(shí)現(xiàn)[J]. 自動(dòng)化儀表,2010,31(10):31-37.

本文地址:http://m.qingdxww.cn/thread-97507-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區(qū)
  • 使用SAM-IoT Wx v2開發(fā)板演示AWS IoT Core應(yīng)用程序
  • 使用Harmony3加速TCP/IP應(yīng)用的開發(fā)培訓(xùn)教程
  • 集成高級(jí)模擬外設(shè)的PIC18F-Q71家族介紹培訓(xùn)教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿(mào)澤電子(Mouser)專區(qū)
關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一级做a爱片久久毛片 | 91视频下载网址 | 亚洲精品视频在线 | 亚洲乱码卡一卡二卡三 | 成年网站未满十八禁毛片免费 | 国产福利2021最新在线观看 | h成人3d动漫在线观看网站 | 夜鲁夜鲁夜鲁在线观看福利 | 日本久久久久亚洲中字幕 | 99福利| 日本免费网站 | 久久精品麻豆 | 精品videoss另类日本 | 狠狠色丁香六月色 | 亚洲大黑香蕉在线观看75 | 欧美一区二区三区日韩免费播 | 五月天激情啪啪 | 日韩在线a视频免费播放 | 国产福利片在线观看 | 国内久久精品视频 | 123日本不卡在线观看 | 国产成人综合久久亚洲精品 | 天天影视欧美 | 午夜精品成年片色多多 | 国产青草视频在线观看免费影院 | 在线看片欧美 | 免费人成在线观看网站 | 天堂日韩| 韩国av片永久免费 | 黄辣文| 一级毛片黄色 | 激情 婷婷 | 国产国语一级毛片在线视频 | 天堂素人约啪 | 两个人免费观看高清视频图 | 国产成人亚洲精品乱码在线观看 | 精品视频 久久久 | 在线观看欧美国产 | 久久久久久久久久久9精品视频 | 日本家庭女教师 | 国产91单男3p在线观看 |