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

基于C51實時時鐘器件串口通信程序設計技術

發布時間:2010-6-30 12:21    發布者:我芯依舊
關鍵詞: C51 , 串口通信 , 實時時鐘
1 引言
實時時鐘(RTC)器件是一種能提供日歷/時鐘、數據存儲等功能的專用集成電路,常常用作各種計算機系統的時鐘信號源和設置參數的存儲電路。它具有計時準確、耗電低和體積小等特點,特別是在各種嵌入式系統諸如照相機、洗衣機等智能家電中得到廣泛的應用。隨著集成電路技術的不斷發展,RTC器件的新品也不斷推出,美國的Xicor 和Dallas公司推出了X1203、X1228 [1]和DS1302、DS1616[2]等新品。這些新品不僅具有準確的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 所示。


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微控制器應用軟件的編寫速度,縮短系統的開發周期。
本文地址:http://www.qingdxww.cn/thread-14137-1-1.html     【打印本頁】

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

廠商推薦

  • Microchip視頻專區
  • 想要避免發生災難,就用MPLAB® SiC電源仿真器!
  • 5分鐘詳解定時器/計數器E和波形擴展!
  • 了解一下Microchip強大的PIC18-Q24 MCU系列
  • 基于CEC1712實現的處理器SPI FLASH固件安全彈性方案培訓教程
  • 貿澤電子(Mouser)專區

相關在線工具

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产视频一区二区 | 成在线人免费视频一区二区三区 | 精品一区二区在线欧美日韩 | 亚洲一区日韩二区欧美三区 | 亚洲网视频| 欧美一级久久久久久久久大 | 欧美xxxxx性视频 | 99综合视频| 幸福宝草莓视频 | 欧美一区二区三区gg高清影视 | 青青国产在线播放 | 四虎成人欧美精品在永久在线 | 麻豆久久婷婷国产综合五月 | 99久久免费精品国产免费高清 | 二次元美女被虐流白浆漫画 | 好吊色青青青国产综合在线观看 | 欧美性色xo影院永久禁欲 | 久久r热这里有精品视频 | 最新国产午夜精品视频成人 | 精品欧美一区二区三区四区 | 污污成人一区二区三区四区 | 五月婷婷综合网 | 欧美成人免费一区在线播放 | 尤物国产在线精品福利一区 | 男女爱视频免费高清在线观看 | 韩国一级毛片视频 | 女人张开腿让男人桶免费最新 | 日韩天堂网 | 日本黄色免费片 | 亚洲日本在线看片 | 成人精品一区二区久久 | 亚洲欧美日本国产 | 99视屏| 羞羞视频导航 | 国产精品日韩 | 女人与禽交视频免费看 | 日本午夜精品 | 日本精品一区二区三区四区 | 日韩欧美一区二区三区视频 | 国产自产视频在线观看香蕉 | 国产欧美日韩精品第一区 |