亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于AVR單片機串行口的研究

        2013-10-08 03:04:12黃劍波
        中國科技信息 2013年19期
        關(guān)鍵詞:置位發(fā)送數(shù)據(jù)數(shù)碼管

        黃劍波

        安徽理工大學(xué)電氣與信息工程學(xué)院,安徽 淮南 232001

        引言

        ATmega128為基于AVR RISC結(jié)構(gòu)的8位低功耗CMO S微處理器。由于其先進的指令集以及單周期指令執(zhí)行時間,ATmega128的數(shù)據(jù)吞吐率高達1MIPS/MHz,從而減緩系統(tǒng)在功耗和處理速度之間的矛盾。我們研究的對象主要是基于ATmega128的綜合開發(fā)系統(tǒng),研究內(nèi)容包括TWI接口與AT24C01的通信功能實現(xiàn),USART接口與PC的通信功能實現(xiàn),SPI接口控制相關(guān)數(shù)碼管的數(shù)據(jù)顯示的功能實現(xiàn)。

        1 串行口功能概述

        1.1 SPI接口概述

        SPI總線是由MOTOROLA公司提出的一種同步串行外設(shè)接口。本次研究的開發(fā)板采用的是4根信號線,即兩條控制信號線 (低電平有效)和SCLK以及兩條數(shù)據(jù)信號線SDI和SDO。

        通過將需要的從機的 引腳拉低,主機啟動一次通訊過程。主機和從機將需要發(fā)送的數(shù)據(jù)放入相應(yīng)的移位寄存器。主機在SCK引腳上產(chǎn)生時鐘脈沖以交換數(shù)據(jù)。主機通過將從機的 拉高實現(xiàn)與從機的同步。

        1.2 兩線串行接口TWI

        TWI協(xié)議允許系統(tǒng)設(shè)計者只用兩根雙向傳輸線就可以將128個不同的設(shè)備互連到一起。這兩根線一是時鐘SCL,一是數(shù)據(jù)SDA。外部硬件只需要兩個上拉電阻,每根線上一個。所有連接到總線上的設(shè)備都有自己的地址。TWI 協(xié)議解決了總線仲裁的問題。

        TWI總線進行數(shù)據(jù)傳輸時,SDA線上的數(shù)據(jù)必須在時鐘的高電平周期保持穩(wěn)定。數(shù)據(jù)線的高或低電平狀態(tài)只有在SCL線的時鐘信號時低電平時才能改變。

        TWI總線協(xié)議規(guī)定,在SCL線是高電平時,SDA線從高電平向低電平切換表示其實條件;當(dāng)SCL是高電平時,SDA線由低電平向高電平切換表示停止條件。

        發(fā)送到SDA線上的每個字節(jié)必須是8位。每次傳輸可以發(fā)送的字節(jié)數(shù)量不受限制,每個字節(jié)后跟一個響應(yīng)位(ACK)。首先傳輸?shù)氖菙?shù)據(jù)的最高位。

        1.3 通用同步和異步串行接收和轉(zhuǎn)發(fā)器 USART

        USART分為了三個主要部分:時鐘發(fā)生器,發(fā)送器和接收器。控制寄存器由三個單元共享。時鐘發(fā)生器包括同步從機操作用來與外部輸入時鐘進行同步的邏輯,以及波特率發(fā)生器。XCK ( 發(fā)送器時鐘)引腳用于同步發(fā)送模式。發(fā)送器包括單個寫緩沖器,串行移位寄存器,奇偶發(fā)生器以及處理不同的幀格式所需的控制邏輯。寫緩沖器可以保持連續(xù)發(fā)送數(shù)據(jù)而不會在數(shù)據(jù)幀之間引入延遲。由于接收器具有時鐘和數(shù)據(jù)恢復(fù)單元,它是USART 模塊中最復(fù)雜的?;謴?fù)單元用于異步數(shù)據(jù)的接收。除了恢復(fù)單元,接收器還包括奇偶校驗,控制邏輯,移位寄存器和兩個接收緩沖器UDR。接收器支持與發(fā)送器相同的幀格式,而且可以檢測幀錯誤,數(shù)據(jù)過速和奇偶校驗錯誤。

        2 功能實現(xiàn)

        2.1 TWI串口通信模塊的功能實現(xiàn)

        對于TWI串口來說,它所要實現(xiàn)的功能就是對AT24C01進行訪問,包括對指定單元寫入內(nèi)容0xaa,并將該單元內(nèi)容讀取。

        (1)TWI通信初始化

        在這一部分,我們采用了“twi_init(void)”函數(shù)以實現(xiàn)TWI通信的初始化。函數(shù)具體實現(xiàn)是首先對TWI控制寄存器——TWCR進行設(shè)置,將其所有比特位置為0,以禁止TWI。在這之后,對TWI比特率寄存器——TWBR設(shè)置比特率,設(shè)置為01100100.然后將TWI狀態(tài)寄存器——TWSR的所有的比特位置為0,其目的主要是令TWSR的后三位比特位為0,選擇不分頻,和系統(tǒng)鐘保持一致。然后通過對TWI(從機)地址寄存器——TWAR賦值以設(shè)置從機地址。最后,再將TWCR寄存器的TWEN比特位——TWI使能位置位,啟動TWI。

        (2)TWI通信開始

        在這一部分,我們采用了“TWIstart(void)”函數(shù)以實現(xiàn)TWI通信的開始。函數(shù)實現(xiàn)的功能就是發(fā)送幀格式中的START信號。函數(shù)具體實現(xiàn)是首先將TWCR寄存器的TWEN,TWSTA,TWINT置為1,發(fā)送START信號。這里需要注意的是TWINT的特殊,TWINT標(biāo)志的清零必須通過軟件寫“1”來完成,只要這一位被清零,TWI立即開始工作。然后用“while (!(TWCR & (1<

        (3)TWI寫數(shù)據(jù)

        這一部分當(dāng)中,我們采用了“unsigned char TWIwt(unsigned char data)”函數(shù)實現(xiàn)TWI寫數(shù)據(jù)。我們需要進行兩步操作:將數(shù)據(jù)裝入TWDR寄存器,啟動數(shù)據(jù)發(fā)送;等待TWINT置位。ATmega128向AT24C01寫入一個字節(jié)的數(shù)據(jù),數(shù)據(jù)類型可以包括從機地址,AT24C01的地址單元,寫入地址單元的內(nèi)容。函數(shù)具體實現(xiàn)是首先將數(shù)據(jù)裝入到TWDR寄存器,然后將TWINT清零,啟動發(fā)送數(shù)據(jù),并且用“while (!(TWCR & (1<

        (4)TWI讀數(shù)據(jù)

        同寫數(shù)據(jù)類似的,我們采用了“unsigned char TWIrd(void)”函數(shù)實現(xiàn)TWI讀數(shù)據(jù)。處理器從AT24C01某個地址單元讀取數(shù)據(jù)。首先將TWCR寄存器的TWEN,TWEA,TWINT置為1,TWEA標(biāo)志控制應(yīng)答脈沖的產(chǎn)生,在主機/ 從機接收模式下接收到一個字節(jié)的數(shù)據(jù)時接口發(fā)出ACK脈沖。在等待TWINT置位后完成數(shù)據(jù)的讀取。

        (5)TWI停止

        本部分我們運用了“T W I s t o p(v o i d)”函數(shù)完成TWI串口通信停止。通過將TWCR寄存器的TWEN,TWSTO,TWINT置為1,發(fā)送STOP 信號。在寫入值時 TWINT 位要置位,這非常重要。給TWINT寫"1”清除此標(biāo)志。TWCR寄存器中的TWINT置位期間TWI不會啟動任何操作。一旦TWINT清零,TWI啟動STOP信號的傳送。注意TWINT在STOP狀態(tài)發(fā)送后不會置位。

        TWI的寫操作和讀操作的流程圖分別如下圖1,圖2所示:

        圖1 AT24C01寫流程圖

        圖2 AT24C01讀流程圖

        2.2 USART串口通信模塊的功能實現(xiàn)

        ATmega128具有兩個USART,USART0和USART1。本次我使用的是USART0。USART的硬件圖如下所示:

        圖3 USART串口連接圖

        在USART0的初始化實現(xiàn)了對波特率9600,8位數(shù)據(jù)位,一位停止位,無校驗位等要求的設(shè)定。數(shù)據(jù)位是8位,所以USART端口發(fā)送數(shù)據(jù)的方式是按字節(jié)發(fā)送。

        USART0端口的數(shù)據(jù)發(fā)送有查詢方式和中斷方式兩種,這里我們采用了查詢方式。數(shù)據(jù)發(fā)送結(jié)束標(biāo)志有“USART發(fā)送結(jié)束”和“USART數(shù)據(jù)寄存器空”兩種,我們采用的是“USART數(shù)據(jù)寄存器空”。這兩種結(jié)束標(biāo)志的區(qū)別主要體現(xiàn)在發(fā)送緩沖器(UDRn)中的數(shù)據(jù)是否被送出,在數(shù)據(jù)沒有被送出的情況下,不能使用“USART發(fā)送結(jié)束”標(biāo)志。

        USART0端口的數(shù)據(jù)發(fā)送我們采用了異步方式。

        2.3 SPI串口通信模塊的功能實現(xiàn)

        SPI與74HC595的硬件連接如下圖所示

        圖4 SPI串口連接圖

        由上圖我們可以看到處理器A T m e g a 1 2 8的S P I串口通信中的 接到7 4 H C 5 9 5口的R C L K口,ATmega128的SPI串口通信中的SCK接到74HC595口的SRCLK,ATmega128的SPI串口通信中的MOSI接到74HC595口的SER,處理器ATmega128的SPI串口通信中的MISO接到74HC595口的SRCLR上。PC7接到使能口上。本次課題串口通信中只實現(xiàn)主出從入。

        (1)SPI初始化

        這一部分當(dāng)中,我們采用了“spi_init(void)”完成SPI的初始化。通過對端口B數(shù)據(jù)方向寄存器DDRB賦值,將MOSI,SCK,SS設(shè)置為輸出,之后對SPI控制寄存器——SPCR賦值,使能SPI,選擇主機模式,并且設(shè)置傳送速度。

        (2)SPI主機發(fā)送數(shù)據(jù)

        “SPI_MasterTransmit(char Data)” 可以完成SPI主機發(fā)送數(shù)據(jù)的操作。將數(shù)據(jù)寫入SPI數(shù)據(jù)寄存器——SPDR,串行發(fā)送結(jié)束后,SPIF置位。

        2.4 數(shù)碼管顯示模塊功能實現(xiàn)

        (1)HC595初始化

        我們采用“void HC_595_init(void)”將HC595初始化。主要需要完成 的方向和值的設(shè)置。首先將 設(shè)置為輸出,賦值為1以禁止其啟動。初始化PORTB的值使得數(shù)碼管的選通全部禁止,并將SPI的主從同步信號設(shè)置為高電平。之后調(diào)用SPI的初始化程序,最后將數(shù)碼管的顯示數(shù)據(jù)設(shè)為16即不顯示。

        (2)HC595寫數(shù)據(jù)

        送數(shù)據(jù)的操作比較簡單,主要通過調(diào)用函數(shù)實現(xiàn)。首先通過調(diào)用函數(shù)設(shè)置 的值以啟動從機SPI通信,然后調(diào)用SPI主機發(fā)送數(shù)據(jù)函數(shù)“SPI_MasterTransmit(char Data)”,最后調(diào)用函數(shù)將PB0( )設(shè)置為1,恢復(fù)到初始狀態(tài)。

        (3)HC595顯示整形數(shù)據(jù)

        這部分函數(shù)主要實現(xiàn)的功能是待顯示數(shù)據(jù)通過處理后,分別將百位,十位,個位存儲在相應(yīng)的單元中。在程序中,存儲單元指的是數(shù)組Seg7_Led_Buf[]。

        (4)HC595刷新顯示

        這部分函數(shù)主要實現(xiàn)的功能:4個數(shù)碼管依次選通顯示相應(yīng)數(shù)值,顯示的數(shù)值通過查表,通過SPI接口發(fā)送。由于刷新顯示程序的運行時間比較短,可以保證數(shù)碼管的穩(wěn)定顯示。

        3 結(jié)語

        本次研究運用編程實現(xiàn)處理器通過串行接口與外設(shè)之間的聯(lián)系。顯示結(jié)果表明處理器與外設(shè)之間通信狀況良好,顯示延遲小,數(shù)據(jù)準確,對于運用此系統(tǒng)進行后續(xù)的開發(fā)具有重要的意義。

        [1]馬潮. AVR單片機嵌入式系統(tǒng)原理與應(yīng)用實踐[M]. 第一版.北京:北京航空航天大學(xué)出版社,2007

        [2]金鐘夫. AVR ATmega128單片機C程序設(shè)計與實踐[M]. 第一版.北京: 北京航空航天大學(xué)出版社,2008

        [3]朱飛,楊平. AVR單片機C語言開發(fā)入門與典型實例[M]. 第一版.北京:人民郵電出版社,2010

        猜你喜歡
        置位發(fā)送數(shù)據(jù)數(shù)碼管
        移動自組網(wǎng)中MAC層協(xié)議研究
        一種變電站測控防誤閉鎖邏輯智能校驗裝置的設(shè)計
        機電信息(2021年25期)2021-10-15 14:51:22
        M310 核電機組重要廠用水泵運行置位信號邏輯優(yōu)化
        Arduino編程
        電腦報(2019年2期)2019-09-10 07:22:44
        MC9S08FL16單片機數(shù)碼管靜態(tài)顯示分析
        單片機控制的四位數(shù)碼管動態(tài)顯示編程
        基于雙引導(dǎo)值的三軸天線等待點置位效率的初步研究
        基于Qt的數(shù)碼管數(shù)字編碼系統(tǒng)的設(shè)計與實現(xiàn)
        基于馬爾科夫鏈的LoRaWAN網(wǎng)絡(luò)節(jié)點性能分析
        帶標(biāo)記方式的CRDSA++協(xié)議性能分析*
        久久久久久亚洲av成人无码国产 | 青青草好吊色在线观看| 国产一区二区三区在线观看完整版| 日本中国内射bbxx| 国产成人av片在线观看| 国产精品自产拍在线观看免费| 国产精品女同久久久久久| 国产一区二区三区中出| 国产在线播放一区二区不卡| 中文字幕乱码熟妇五十中出| 亚洲国产成人精品无码区99| 无码高清视频在线播放十区| 性色av一区二区三区四区久久| 日韩精品在线视频一二三| 中国老熟妇506070| 熟妇人妻av无码一区二区三区| 亚洲公开免费在线视频| 国产自拍伦理在线观看| 国内揄拍国内精品人妻久久| 无码人妻一区二区三区兔费| 国产乱子伦一区二区三区| 四虎影视国产884a精品亚洲| 青青草视频网站免费看| 产美女被爽到高潮免费a| 乱中年女人伦av一区二区| 男女野外做爰电影免费| 中文字幕日韩精品美一区二区三区 | av一区二区三区亚洲| 日本高清人妻一区二区| 丝袜美腿一区二区国产| 日韩在线不卡一区三区av| 性高朝久久久久久久3小时| 亚洲午夜无码av毛片久久| 国产免费久久精品99re丫y| 人妻中出中文字幕在线| 日产一区二区三区免费看| 人妻少妇不满足中文字幕| 亚洲色大成网站www在线观看 | 中文字日产幕码三区的做法步| 女人和拘做受全程看视频| 99久久精品国产一区二区蜜芽|