在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于DS1616與微控制器實現串行通信接口的設計

電子設計 ? 來源:半導體技術 ? 作者:徐大誠 ? 2021-05-22 10:14 ? 次閱讀

1 引言

實時時鐘(RTC)器件是一種能提供日歷/時鐘、數據存儲等功能的專用集成電路,常常用作各種計算機系統的時鐘信號源和設置參數的存儲電路。它具有計時準確、耗電低和體積小等特點,特別是在各種嵌入式系統諸如照相機、洗衣機等智能家電中得到廣泛的應用。隨著集成電路技術的不斷發展,RTC器件的新品也不斷推出,美國的Xicor 和Dallas公司推出了X1203、X1228 和DS1302、DS1616等新品。這些新品不僅具有準確的RTC,還有大容量的存儲器、溫度傳感器和A/D數據采集通道等,已成為集RTC、數據采集和存儲于一體的綜合功能器件,特別適用于以微控制器為核心的嵌入式系統。這些器件與微控制器之間的接口大都采用連線簡單的串行接口,但其通信時序是比較復雜的,怎樣利用高效的編程語言設計出通信程序就顯得尤為重要。本文以DS1616與微控制器的通信過程為例,在介紹通信組成和原理后,重點討論了用C51編寫其通信程序的過程和方法。

2 串行通信接口構成及工作原理

由于微控制器具有內嵌功能很強的CPU內核特點,因此微控制器用于數據傳輸獨具智能化的優勢。利用其智能化的特點就可以構成連線簡單的串口通信,諸如I2C、SPI、MICROWIRE和CAN [3]等串行總線接口。這些串口由2~3根線連接,分為同步和異步。

DS1616是一種具有數據采集功能的實時時鐘器件,由控制邏輯、實時時鐘、通信接口等電路和溫度傳感器、A/D轉換器、存儲器等部分構成。片外32.768 kHz石英晶體和內部振蕩電路產生的時鐘信號經分頻后得到相應日歷/時間寄存器的計時值;控制邏輯電路根據控制寄存器的設定值實現計時、溫度數據采集、A/D轉換和通信方式等的控制;DS1616的存儲器采用分頁結構,每頁共有32個字節。第0頁和第1頁為實時時鐘和特殊功能寄存器,特殊功能寄存器有兩個控制寄存器和兩個狀態寄存器;第2頁為用戶非易失 RAM;第17頁到第19頁用來存儲報警時間標簽和持續時間;第64頁到71頁用來存儲直方圖數據;第128頁到191頁2k字節用來存儲記錄數據;第3到第16頁、20到63 頁、68到127頁及192以上為將來擴展預留。用戶只能修改實時時鐘RTC、特殊功能寄存器和非易失 RAM的數據,其余存儲空間只能讀不能寫,存儲器的每個單元都有一個16位地址。CPU通過給控制寄存器寫入相應控制字來確定其工作方式,讀取狀態寄存器值判斷其狀態,采集數據在2k字節的存儲器中讀取。

DS1616有兩種通信方式,即同步和異步通信方式。當COMSEL端置高電平后,DS1616與微控制器之間實現三線同步通信,實現對片內存儲器的單字節讀寫和頁數據讀。圖1給出了與AT89C51微控制器的連接關系。輸入端接收高電平后就啟動所有的數據傳送。的輸入有兩種功能:首先,置高電平后接通控制邏輯,允許命令、地址、數據序列送入/讀出片內移位寄存器;其次,置低電平后終止單字節或多字節數據的傳送。SCL是移位同步時鐘,通過每個SCLK時鐘的上升沿把每位數據寫入DS1616,下降沿讀出DS1616的逐位數據。傳送的數據都是從低位到高位逐位寫入/讀出。每次傳送的數據由命令字節、地址和數據三部分構成,時序如圖2所示,地址視不同的訪問單元而定。DS1616的讀寫過程是由命令字節控制的,共有5個命令字節,其功能如表1 所示。

基于DS1616與微控制器實現串行通信接口的設計

pIYBAGCoaaOAC9ETAAAVl0Cmidg815.png

3 通信程序設計

C語言是目前公認的最為流行的一種計算機高級程序設計語言。為了使C語言更加貼近硬件,使微控制器的開發者從艱苦的匯編語言設計中解脫出來,縮短開發周期,美國Archimedes和Franklin Software公司在90年代推出了適于以MCS51為內核的微控制器的高級程序開發工具C51。目前C51 主要有Archimedes和Franklin兩種版本,兩種版本均符合ANSI C的標準[4]。

下面通過C51編譯器的編程,說明通信程序的編寫方法,其中 WriteB()為寫入單字節、ReadB()為讀出單字節,Wait()為等待,Delay()延時函數用匯編程序實現。

#include

#define uchar unsigned char

#define SCL P3_5

#define IO P3_6

#define RST P3_7

extern void WriteB( uchar ); //向DS1616寫入一個字節函數 extern uchar ReadB(); //從DS1616中讀取一個字節函數

extern void Wait();//等待

extern void Delay( uchar ); //延時函數

uchar data Data[32];//存放32字節內容的數組

3.1 向DS1616指定單元中寫入一個字節的函數

void WDS1616( uchar Address, uchar Data )

{

SCL = 0;

RST = 1;//開始通訊

WriteB( 0x22 ); Wait();//發送寫字節命令22H

WriteB( Address ); Wait(); //發送地址

WriteB( Data ); Wait();//發送數據

RST = 0;//結束通訊

}

3.2 讀取頁數據的函數

void RPageDS1616( uchar AddressH, uchar AddressL )

{

uchar i;

RST = 1;//開始通訊

Wait();

WriteB( 0x33 );Wait();//發送讀頁節命令33H

WriteB( AddressH ); Wait(); //發送高位地址

WriteB( AddressL ); Wait(); //發送低位地址

for( i = 0; i 《 32; i++ )

{

Data = ReadB();//獲取一頁數據

Wait();

}

IO = 0;

RST = 0; //結束通訊

SCL = 0;

}

3.3 啟動DS1616立即進行A/D轉換或溫度檢測, 并將數據存入相應寄存器的函數

void RDS1616( )

{

RST = 1;//開始通訊

WriteB( 0x55 );//發送命令

IO = 0;

RST = 0;//結束通訊

SCL = 0; }

3.4 初始化DS1616并讀取數據的主程序

void main()

{//COMSEL為高電平,DS1616采用同步通訊 RST = 0;//通訊復位

WDS1616( 0x0e, 0x40 ); Wait();//允許執行內存清0命令

WriteB( 0xA5 ); Wait();//清除寄存器和RAM

WDS1616( 0x0d, 0x01 ); Wait();//設置采樣速率為每分鐘一次

WDS1616( 0x29, 0x41 ); Wait();//啟動溫度傳感器

WDS1616( 0x00, 0x32 ); Wait();//設置秒寄存器為32s

WDS1616( 0x01, 0x59 ); Wait();//分寄存器為59min

WDS1616( 0x02, 0x20 ); Wait();//20h

WDS1616( 0x03, 0x05 ); Wait();//星期五

WDS1616( 0x04, 0x05 ); Wait();//5號

WDS1616( 0x05, 0x84 ); Wait();//4月份,并且是20世紀(Y2K = 1)

WDS1616( 0x06, 0x02 ); Wait();//02年

while(1)

{ //以下是從地址0000H開始讀取一頁數據,其中包含有RTC,當前溫度狀態寄存器1等

RPageDS1616( 0x00, 0x00 );Wait();

RDS1616( ); //立即進行A/D轉換或溫度檢測,并將數據存入相應寄存器

Delay( 100 );

Delay( 100 );

RPageDS1616( 0x00, 0x20 ); //從地址0020開始讀取一頁數據

Wait(); //其中包含有3路ADC數據和狀態寄存器2等

}

}

4 結束語

使用C51編寫MCS51與RTC器件的通信程序使編譯變得簡捷有序,并且調試和移植方便。以上程序稍加修改就可用于I 2C、SPI、MICROWIRE和CAN等總線接口的通信中。在單鏡頭反光相機的嵌入式系統的測光信號處理、日歷/時鐘模塊與MCS51微控制器的通信中就應用了以上程序。C51 編程可大大提高MCS51微控制器應用軟件的編寫速度,縮短系統的開發周期。

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7830

    瀏覽量

    153166
  • 傳感器
    +關注

    關注

    2560

    文章

    52064

    瀏覽量

    760759
  • 接口
    +關注

    關注

    33

    文章

    8861

    瀏覽量

    152838
收藏 人收藏

    評論

    相關推薦

    DS1318與8051微控制器接口

    輸出數據都將傳遞到μC,通過PC終端仿真的RS-232接口進行通信。有關本應用筆記中DS80C323微控制器的詳細信息可從公司網站下載。程
    發表于 12-18 10:14

    應用串行外圍接口實現微控制器通信

    應用串行外圍接口實現微控制器通信:
    發表于 06-23 10:54 ?24次下載
    應用<b class='flag-5'>串行</b>外圍<b class='flag-5'>接口實現</b>多<b class='flag-5'>微控制器</b>間<b class='flag-5'>通信</b>

    DS1302 RTC與8051微控制器接口

    摘要:本應用筆記說明了DS1302 RTC通過3線接口與8051微控制器的連接方式,設計實例包括電路原理圖和C語言接口程序。 DS1302引
    發表于 04-21 11:14 ?2374次閱讀
    <b class='flag-5'>DS</b>1302 RTC與8051<b class='flag-5'>微控制器</b>的<b class='flag-5'>接口</b>

    DS1388實時時鐘與8051微控制器接口

    摘要:本應用筆記介紹了DS1388與8051微控制器的連接,所提供的軟件用C語言編寫。本文提供了基本接口程序的代碼,所采用的微控制器DS2
    發表于 04-21 11:15 ?1314次閱讀
    <b class='flag-5'>DS</b>1388實時時鐘與8051<b class='flag-5'>微控制器</b>的<b class='flag-5'>接口</b>

    DS3231與8051微控制器接口

    摘要:本應用筆記提供了一個DS3231與8051微控制器接口的硬件電路和軟件例程。 圖1. DS3231引
    發表于 04-21 11:16 ?2130次閱讀
    <b class='flag-5'>DS</b>3231與8051<b class='flag-5'>微控制器</b>的<b class='flag-5'>接口</b>

    DS1305 RTC與8051微控制器接口

    摘要:本文介紹DS1305實時時鐘與8051微控制器DS2250的連接,所提供的基本接口程序用C語言編寫。 DS1305引腳配置 概述
    發表于 04-21 11:16 ?1693次閱讀
    <b class='flag-5'>DS</b>1305 RTC與8051<b class='flag-5'>微控制器</b>的<b class='flag-5'>接口</b>

    基于微控制器串行端口接口(SPI)啟動電路

    本應用筆記描述基于微控制器的通用串行端口接口(SPI)啟動電路的工作原理。對于需要在上電時修改某些器件參數的用戶而言,這是一種低成本解決方案。本電路實現了一種用于對轉換
    發表于 09-15 11:17 ?39次下載
    基于<b class='flag-5'>微控制器</b>的<b class='flag-5'>串行</b>端口<b class='flag-5'>接口</b>(SPI)啟動電路

    基于DMA控制器的UART串行通信設計

    針對大數據量的串口間通信,在常規的UART串行數據通信的基礎上,結合Cortex-M3微控制器中DMA控制器的作用,實現DMA
    發表于 04-20 10:54 ?46次下載
    基于DMA<b class='flag-5'>控制器</b>的UART<b class='flag-5'>串行</b><b class='flag-5'>通信</b>設計

    AN-812: 基于微控制器串行端口接口(SPI?)啟動電路

    AN-812: 基于微控制器串行端口接口(SPI?)啟動電路
    發表于 03-21 08:35 ?14次下載
    AN-812: 基于<b class='flag-5'>微控制器</b>的<b class='flag-5'>串行</b>端口<b class='flag-5'>接口</b>(SPI?)啟動電路

    DS1616 時鐘/定時 - 實時時鐘

    電子發燒友網為你提供Maxim(Maxim)DS1616相關產品參數、數據手冊,更有DS1616的引腳圖、接線圖、封裝手冊、中文資料、英文資料,DS1616真值表,DS1616管腳等資
    發表于 11-18 21:59
    <b class='flag-5'>DS1616</b> 時鐘/定時 - 實時時鐘

    DS1302與8051型微控制器接口

    本應用介紹如何使用3線接口DS1302 RTC連接至8051型微控制器。該示例包括用 C 語言編寫的原理圖和示例軟件。
    的頭像 發表于 01-09 17:01 ?977次閱讀
    <b class='flag-5'>DS</b>1302與8051型<b class='flag-5'>微控制器</b><b class='flag-5'>接口</b>

    如何在MAXQ3180微控制器上使用串行外設接口

    MAXQ3180微控制器為電表的多相模擬前端。它集成了現代多功能電能計量所需的所有功能。MAXQ3180通過串行外設接口(SPI?)總線將其讀數傳送給主機微控制器。本應用筆記描述了該
    的頭像 發表于 01-16 09:30 ?1727次閱讀
    如何在MAXQ3180<b class='flag-5'>微控制器</b>上使用<b class='flag-5'>串行</b>外設<b class='flag-5'>接口</b>

    怎樣使用MAXQ3180微控制器串行外設接口

    MAXQ3180微控制器是電表多相模擬前端。它具備現代多功能電表的所有功能。MAXQ3180通過串行外設互聯(SPI?)總線將其讀數傳送給主機微控制器。本應用筆記介紹怎樣實現這一
    的頭像 發表于 02-14 18:21 ?1094次閱讀
    怎樣使用MAXQ3180<b class='flag-5'>微控制器</b>的<b class='flag-5'>串行</b>外設<b class='flag-5'>接口</b>

    DS1307與兼容8051的微控制器接口

    DS1307串行實時時鐘集成了2線串行接口,可使用兼容8051的微控制器進行控制。本例中的
    的頭像 發表于 03-01 13:52 ?1691次閱讀
    <b class='flag-5'>DS</b>1307與兼容8051的<b class='flag-5'>微控制器</b><b class='flag-5'>接口</b>

    DS1620與DS5000/8051微控制器接口

    本應用筆記向用戶介紹DS5000(兼容8051)微控制器DS1620數字溫度傳感接口軟件。DS
    的頭像 發表于 03-01 15:29 ?829次閱讀
    <b class='flag-5'>DS</b>1620與<b class='flag-5'>DS</b>5000/8051<b class='flag-5'>微控制器</b><b class='flag-5'>接口</b>
    主站蜘蛛池模板: 91福利网winktv | 久久精品30| 午夜国产福利在线 | 国模小丫大尺度啪啪人体 | 色宅男午夜电影在线观看 | 中文字幕一区二区三区四区五区 | 在线免费成人 | 美女大黄三级视频在线观看 | 狠狠五月天 | 一区二区三区四区精品 | 国产区一区二区三 | 国产精品福利久久2020 | 天天久| 国产在线精品一区二区夜色 | free性乌克兰高清videos | 久久精品国产亚洲aa | 天天干天天摸天天操 | 中文字幕1区 | 手机在线观看一级午夜片 | 1000部禁片黄的免费看 | 国产特黄特色的大片观看免费视频 | 窝窝午夜看片成人精品 | 午夜影院一级片 | 同性男男肉交短文 | sese久久| 亚洲一卡2卡4卡5卡6卡在线99 | 天天视频一区二区三区 | 上课被同桌摸下面做羞羞 | 九九热在线精品视频 | 国产叼嘿网站免费观看不用充会员 | 一区二区免费 | 久久性感美女视频 | 亚洲综合图片人成综合网 | 九九热国产 | 流不尽奶水的大乳h | 美女色黄一男一女 | 99色视频在线 | 在线观看你懂的网址 | 性生生活三级视频在线观看 | 特级片网站 | 色牛网 |