freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于i2c總線的數(shù)據(jù)采集系統(tǒng)自動(dòng)化專(zhuān)業(yè)畢業(yè)設(shè)計(jì)畢業(yè)論-資料下載頁(yè)

2025-06-05 15:41本頁(yè)面
  

【正文】 第 9 個(gè) SCL 時(shí)鐘內(nèi)置高 SDA 線,而從器件的響應(yīng)信號(hào)將 SDA 拉低,從而給出一個(gè)應(yīng)答位。 了解了 I2C 傳輸數(shù)據(jù)的格式,現(xiàn)在來(lái)研究雙方傳送的協(xié)議問(wèn)題。 圖 232 2I C 總線 傳送數(shù)據(jù) 開(kāi)始和結(jié)束信號(hào)的時(shí)序圖 基于 I2C 總線的數(shù)據(jù)采集系統(tǒng) 30 2I C 數(shù)據(jù)傳輸協(xié)議 2I C 總線的數(shù)據(jù)傳輸協(xié)議如下: ( 1)、主器件發(fā)出開(kāi)始信號(hào) ( 2)、主器件發(fā)出第一個(gè)字節(jié),用來(lái)選通相應(yīng)的從器件。其中前 7 位為地址碼,第 8 位為方向位 (R/W)。方向位為 “0”表示發(fā)送,方向位為 “1”表示接受。 ( 3)、從機(jī)產(chǎn)生應(yīng)答信號(hào),進(jìn)入下一個(gè)傳送周期,如果從器件沒(méi)有給出應(yīng)答信號(hào),此時(shí)主器件產(chǎn)生一個(gè)結(jié)束信號(hào)使得傳送結(jié)束,傳送數(shù)據(jù)無(wú)效。 ( 4)、接下來(lái)主、從器件正式進(jìn)行數(shù)據(jù)的傳送,這時(shí)在 I2C 總線上每次傳送的數(shù)據(jù)字節(jié)數(shù)不限,但每一個(gè)字節(jié)必須為 8 位(傳送的時(shí)候先送高位,再送低位)。當(dāng)一個(gè)字節(jié)傳送完畢時(shí),再發(fā)送一個(gè)應(yīng)答位(第 9 位),如上一條所述,這樣每次傳送一個(gè)字節(jié)都需要 9 個(gè)時(shí)鐘脈沖。數(shù)據(jù)的傳送過(guò)程如下圖 24 所示 圖 24 2I C 總線 數(shù)據(jù)的傳送過(guò)程 圖 基于 I2C 總線的數(shù)據(jù)采集系統(tǒng) 31 串行 EEPROM 24C02 的硬件連接 如圖 25 所示, 24C02 與單片機(jī) AT89C52 的連接采用的是 I2C 總線結(jié)構(gòu)。 I2C 總線是由串行數(shù)據(jù)線 SDA 和串行時(shí)鐘線 SCL 構(gòu)成的,所有的控制命令和數(shù)據(jù) 傳輸 均通過(guò)這兩條線傳輸。單片機(jī) AT89C52 作為主器件,它在 I2C 總線上產(chǎn)生時(shí)鐘脈沖、尋址信號(hào)、起至信號(hào); 24C02 作為從器件,它通過(guò)串行數(shù)據(jù)線 SDA 和竄行時(shí)鐘線 SCL 與單片機(jī) AT89C52的引腳 P3^6 和 P3^7 相連。 24C02 提供 2KB 串行 EEPROM,內(nèi)部組態(tài)為 256 8 B。 A0、 A A2 為芯片的地址線,在使用中把這三條線接點(diǎn)。 WP 為低電平時(shí),允許寫(xiě)操作。 單片機(jī) AT89C52 是一種低功耗、高性能的 CMOS 的 8 位微控制器,具有 8 KB 的可編程 Flash 存儲(chǔ)器,與工業(yè) 8051 產(chǎn)片的指令及各引腳完全兼容。 圖 25 24C02 與單片機(jī)的連接 基于 I2C 總線的數(shù)據(jù)采集系統(tǒng) 32 24C02 芯片相關(guān)介紹 24c01/24c02 是一個(gè) 1K/2K/4K/8K/16K 位串行 CMOS E2PROM, 內(nèi)部含有128/256/512/1024/2048 個(gè) 8 位字節(jié) ,CATALYST 公司的先進(jìn) CMOS 技術(shù)實(shí)質(zhì)上減少 了器件的功耗 。 CAT24WC01 有一個(gè) 8 字節(jié)頁(yè)寫(xiě)緩沖器 ,24c01/24c02 有一個(gè) 16 字節(jié)頁(yè)寫(xiě)緩沖器 .該器件通過(guò) I2C 總線接口進(jìn)行操作有一個(gè)專(zhuān)門(mén)的寫(xiě)保護(hù)功能 .、 圖 261 24C02 芯片管腳及其描述 AT24C02 是帶有 2I C 總線接口的 E2PROM 存儲(chǔ)器,具有掉電記憶的功能,并且可以象普通 RAM 一樣用程序改寫(xiě)。它的容量是 256 個(gè)字節(jié)( 00h~ 0ffh),有 A AA0 三位地址,可見(jiàn) 2I C 總線上可以連接 8 片 AT24C02,它的尋址字節(jié)是 1010 A2A1A0 R/W。 圖 262 是 DIP 封裝的 24C02 與 80C51 的接口方案。其中 A0、 A A2 是芯片地址線,單片使用時(shí)接地; SCL 是串行移位時(shí)鐘端; SDA 是串行數(shù)據(jù)或地址端, CPU 通過(guò) SDA 訪問(wèn)芯片; WP 是寫(xiě)保護(hù)端,接高電平時(shí)芯片只能讀。 基于 I2C 總線的數(shù)據(jù)采集系統(tǒng) 33 圖 262 24C02 執(zhí)行寫(xiě)操作時(shí)與 80C51 的接口 基于 I2C 總線的數(shù)據(jù)采集系統(tǒng) 34 EEPROM 概述 EEPROM是一種可用電氣方法在線擦除和再 編程的只讀存儲(chǔ)器 .它既有 RAM在連機(jī)操 作中可讀可改寫(xiě)的特性 ,又具有非易失性存儲(chǔ) ROM 在掉電后仍然能夠保持所存儲(chǔ)的數(shù)據(jù) 的優(yōu)點(diǎn) .寫(xiě)入的數(shù)據(jù)在常溫下至少可以保持 10 年 . 圖 27 EEPROM 內(nèi)部結(jié)構(gòu)框圖 基于 I2C 總線的數(shù)據(jù)采集系統(tǒng) 35 第三章 程序設(shè)計(jì) 實(shí)驗(yàn)電路圖 基于 I2C 總線的數(shù)據(jù)采集系統(tǒng) 36 圖 31 程序設(shè)計(jì)電路圖 基于 I2C 總線的數(shù)據(jù)采集系統(tǒng) 程序 include include define uchar unsigned char define uint unsigned int define OP1_READ 0xa1 // 器件地址以及讀取操作 ,0xa1 即為 1010 0001B define OP1_WRITE 0xa0 // 器件地址以及寫(xiě)入操作 ,0xa1 即為 1010 0000B sbit SCL=P3^5。 //將串行時(shí)鐘總線 SCL 位定義在為 P3^5 引腳 sbit SDA=P3^6。 //將串行數(shù)據(jù)總線 SDA 位定義在為 P3^6 引腳 uchar disp_seg[16]={0x40,0xf9,0x24,0x30,0x19,0x12,0x02,0x78,0x00, 0x10,0x08,0x03,0x46,0x21,0x06,0x0e}。 //共陽(yáng) /***************************************************/ void delay1ms() { unsigned char i,j。 for(i=0。i10。i++) for(j=0。j33。j++)。 } /***************************************************** 函數(shù)功能:延時(shí)若干毫秒 入口參數(shù): n ***************************************************/ void delaynms(unsigned char n) { unsigned char i。 for(i=0。in。i++) delay1ms()。 } /******************************************************************************* 基于 I2C 總線的數(shù)據(jù)采集系統(tǒng) 37 以下是對(duì) AT24C02 的讀寫(xiě)操作程序 ********************************************************************************/ /*************************************************** 函數(shù)功能:開(kāi)始數(shù)據(jù)傳送 ***************************************************/ void start() // 開(kāi)始位 { SDA = 1。 //SDA 初始化為高電平“ 1” SCL = 1。 //開(kāi)始數(shù)據(jù)傳送時(shí),要求 SCL 為高電平“ 1” _nop_()。 //等待一個(gè)機(jī)器周期 _nop_()。 //等待一個(gè)機(jī)器周期 SDA = 0。 //SDA 的下降沿被認(rèn)為是開(kāi)始信號(hào) _nop_()。 //等待一個(gè)機(jī)器周期 _nop_()。 //等待一個(gè)機(jī)器周期 _nop_()。 //等待一個(gè)機(jī)器周期 _nop_()。 //等待一個(gè)機(jī)器周期 SCL = 0。 //SCL 為低電平時(shí), SDA 上數(shù)據(jù)才允許變化 (即允許以后的數(shù)據(jù)傳遞) } /*************************************************** 函數(shù)功能:結(jié)束數(shù)據(jù)傳送 ***************************************************/ void stop() // 停止位 { SDA = 0。 //SDA 初始化為低電平“ 0” _nop_()。 //等待一個(gè)機(jī)器周期 _nop_()。 //等待一個(gè)機(jī)器周期 SCL = 1。 //結(jié)束數(shù)據(jù)傳送時(shí),要求 SCL 為高電平“ 1” _nop_()。 //等待一個(gè)機(jī)器周期 _nop_()。 //等待一個(gè)機(jī)器周期 _nop_()。 //等待一個(gè)機(jī)器周期 _nop_()。 //等待一個(gè)機(jī)器周期 SDA = 1。 //SDA 的上升沿被認(rèn)為是結(jié)束信號(hào) } /*************************************************** 函數(shù)功能:從 AT24Cxx 讀取數(shù)據(jù) 出口參數(shù): x ***************************************************/ unsigned char ReadData() // 從 AT24Cxx 移入數(shù)據(jù)到 MCU { unsigned char i。 基于 I2C 總線的數(shù)據(jù)采集系統(tǒng) 38 unsigned char x。 //儲(chǔ)存從 AT24Cxx 中讀出的數(shù)據(jù) for(i = 0。 i 8。 i++) { SCL = 1。 //SCL 置為高電平 x=1。 //將 x 中的各二進(jìn)位向左移一位 x|=(unsigned char)SDA。 //將 SDA 上的數(shù)據(jù)通過(guò)按位“或“運(yùn)算存入 x 中 SCL = 0。 //在 SCL 的下降沿讀出數(shù)據(jù) } return(x)。 //將讀取的數(shù)據(jù)返回 } /*************************************************** 函數(shù)功能:向 AT24Cxx 的當(dāng)前地址寫(xiě)入數(shù)據(jù) 入口參數(shù): y (儲(chǔ)存待寫(xiě)入的數(shù)據(jù)) ***************************************************/ //在調(diào)用此數(shù)據(jù)寫(xiě)入函數(shù)前需首先調(diào)用開(kāi)始函數(shù) start(),所以 SCL=0 bit WriteCurrent(unsigned char y) { unsigned char i。 bit ack_bit。 //儲(chǔ)存應(yīng)答位 for(i = 0。 i 8。 i++) // 循環(huán)移入 8 個(gè)位 { SDA = (bit)(yamp。0x80)。 //通過(guò)按位“與”運(yùn)算將最高位數(shù)據(jù)送到 S //因?yàn)閭魉蜁r(shí)高位在前,低位在后 _nop_()。 //等待一個(gè)機(jī)器周期 SCL = 1。 //在 SCL 的上升沿將數(shù)據(jù)寫(xiě)入 AT24Cxx _nop_()。 //等待一個(gè)機(jī)器周期 _nop_()。 //等待一個(gè)機(jī)器周期 SCL = 0。 //將 SCL 重新置為低電平,以在 SCL線形 成傳送數(shù)據(jù)所需的8?jìng)€(gè)脈沖 y = 1。 //將 y 中的各二進(jìn)位向左移一位 } SDA = 1。 // 發(fā)送設(shè)備(主機(jī))應(yīng)在時(shí)鐘脈沖的高電平期間 (SCL=1)釋放SDA 線, //以讓 SDA 線轉(zhuǎn)由接收設(shè)備 (AT24Cxx)控制 _nop_()。 //等待一個(gè)機(jī)器周期 _nop_()。 //等待一個(gè)機(jī)器周期 SCL = 1。 //根據(jù)上述規(guī)定, SCL 應(yīng)為高電平 _nop_()。 //等待一個(gè)機(jī)器周期 _nop_()。 //等待一個(gè)機(jī)器周期 _nop_()。 //等待一個(gè)機(jī)器周期 _nop_()。 //等待一個(gè)機(jī)器周期 ack_bit = SDA。 //接受設(shè)備( AT24Cxx)向 SDA 送低電平,表示已經(jīng)接收到一個(gè)字節(jié) //若送高電平,表示沒(méi)有接收到,傳送異常 基于 I2C 總線的數(shù)據(jù)采集系統(tǒng) 39 SCL = 0。 //SCL 為低電平時(shí), SDA 上數(shù)據(jù)才允許變化 (即允許以后的數(shù)據(jù)傳遞) return ack_bit。 // 返回 AT24Cxx 應(yīng)答位 } /*************************************************** 函數(shù)功能:向 AT24Cxx 中的指定地址寫(xiě)入數(shù)據(jù) 入口參數(shù): add (儲(chǔ)存指定的地址); dat(儲(chǔ)存待寫(xiě)入的數(shù)據(jù)) ***************************************************/ void WriteRom(uchar OP_WRITE, uchar add, uchar dat) // 在指定地址 addr 處寫(xiě)入數(shù)據(jù) WriteCurrent { start()。 //開(kāi)始數(shù)據(jù)傳遞 WriteCurrent(OP_WRITE)。 //選擇要操作的 AT24Cxx 芯片,并告知要對(duì)其寫(xiě)入數(shù)據(jù) WriteCurrent(add)。 //寫(xiě)入指定地址 WriteCurrent(dat)。 //向當(dāng)前地址(上面指定的地址)寫(xiě)入數(shù)據(jù) stop()。 //停止數(shù)據(jù)傳遞 delaynms(4)。 //1 個(gè)字節(jié)的寫(xiě)入周期為 1ms, 最好延時(shí) 1ms 以上 } /***********************************
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1