




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、傳播優(yōu)秀word版文檔 ,希望對您有幫助,可雙擊去除!i2c總線上接兩個at24c02讀寫實例、本例對i2c總線上關節(jié)兩個at24c02進行讀寫操作,想將數(shù)據(jù)0xaa寫入第一個at24c02的指定地址,再將該數(shù)據(jù)讀出后存入第二個at24c02的指定地址,最后讀出該數(shù)據(jù)并送p1口用8位led顯示驗證 2、實現(xiàn)方法:1)兩個器件地址的確定由于第一個at24c02的3位地址位(a0a1a2)均接地(低電平),第二個at24c02的三個地址位(a0a1a2)均接電源(高電平),因此第一個at24c02的地址為000,第二個at24c02的地址為111.在寫命令時,指名要操作的器件地址,即可對
2、不同的at24c02進行操作 3、在keil c51中新建工程ex54,編寫如下程序代碼,編譯并生成ex54.hex文件傳播優(yōu)秀word版文檔 ,希望對您有幫助,可雙擊去除!/對i2c總線上掛接多個at24c02的讀寫操作#include <reg51.h> / 包含51單片機寄存器定義的頭文件#include <intrins.h> /包含_nop_()函數(shù)定義的頭文件#defin
3、e op_read1 0xa1 / 器件1地址以及讀取操作,0xa1即為1010 0001b#define op_write1 0xa0 / 器件1地址以及寫入操作,0xa1即為1010 0000b#define op_read2 0xaf / 器件2地址以及讀取操作,0xa1即為1010 1111b#define op_write2 0xae / 器件2地址以及寫入操作,0xa1即為1010 1110bsbit sda=p34;
4、60; /將串行數(shù)據(jù)總線sda位定義在為p3.4引腳sbit scl=p33; /將串行時鐘總線sda位定義在為p3.3引腳/*函數(shù)功能:延時1ms(3j+2)*i=(3×33+2)×10=1010(微秒),可以認為是1毫秒*/void delay1ms() unsigned char i,
5、j; for(i=0;i<10;i+) for(j=0;j<33;j+) ; /*函數(shù)功能:延時若干毫秒入口參數(shù):n*/ void delaynms(unsigned char n) unsigned char i; for(i=0;i<n;i+) delay1ms(); /*函數(shù)功能:開始數(shù)據(jù)傳送*/void start()/ 開始位 sda =
6、 1; /sda初始化為高電平“1” scl = 1; /開始數(shù)據(jù)傳送時,要求scl為高電平“1” _nop_(); /等待一個機器周期 _nop_(); /等待一個機器周期 sda = 0; /sda的下降沿被認為是開始信號 _nop_(); /等待一個機器周期 _nop_(); /等
7、待一個機器周期 _nop_(); /等待一個機器周期 _nop_(); /等待一個機器周期 scl = 0; /scl為低電平時,sda上數(shù)據(jù)才允許變化(即允許以后的數(shù)據(jù)傳遞) _nop_(); /等待一個機器周期/*函數(shù)功能:結束數(shù)據(jù)傳送*/void stop()/ 停止位 sda = 0; /sda初始化為低電平“0” _nop_();
8、60; /等待一個機器周期 _nop_(); /等待一個機器周期 scl = 1; /結束數(shù)據(jù)傳送時,要求scl為高電平“1” _nop_(); /等待一個機器周期 _nop_(); /等待一個機器周期 _nop_(); /等待一個機器周期 _nop_();
9、60; /等待一個機器周期 _nop_(); /等待一個機器周期 _nop_(); /等待一個機器周期 sda = 1; /sda的上升沿被認為是結束信號 /*函數(shù)功能:從at24cxx讀取數(shù)據(jù)出口參數(shù):x*/unsigned char readdata()/ 從at24cxx移入數(shù)據(jù)到mcu unsigned char i; unsigned char x;
10、; /儲存從at24cxx中讀出的數(shù)據(jù) for(i = 0; i < 8; i+) scl = 1; /scl置為高電平 x<<=1;
11、; /將x中的各二進位向左移一位 x|=(unsigned char)sda; /將sda上的數(shù)據(jù)通過按位“或“運算存入x中 scl = 0; /在scl的下降沿讀出數(shù)據(jù) return(x);
12、60; /將讀取的數(shù)據(jù)返回/*函數(shù)功能:向at24cxx的當前地址寫入數(shù)據(jù)入口參數(shù):y (儲存待寫入的數(shù)據(jù))*/在調用此數(shù)據(jù)寫入函數(shù)前需首先調用開始函數(shù)start(),所以scl=0bit writecurrent(unsigned char y) unsigned char i; bit ack_bit;
13、0; /儲存應答位 for(i = 0; i < 8; i+) / 循環(huán)移入8個位 sda = (bit)(y&0x80); /通過按位“與”運算將最高位數(shù)據(jù)送到s /因為傳送時高位
14、在前,低位在后 _nop_(); /等待一個機器周期 scl = 1; /在scl的上升沿將數(shù)據(jù)寫入at24cxx &
15、#160;_nop_(); /等待一個機器周期 _nop_(); /等待一個機器周期 scl = 0; &
16、#160; /將scl重新置為低電平,以在sc線形成傳送數(shù)據(jù)所需的個脈沖 y <<= 1; /將y中的各二進位向左移一位 sda = 1; / 發(fā)送設備(主機)應在時鐘脈沖的高電平期間(scl=1)釋放sda
17、線, /以讓sda線轉由接收設備(at24cxx)控制 _nop_(); /等待一個機器周期 _nop_(); /等待一個機器周期 scl = 1;
18、; /根據(jù)上述規(guī)定,scl應為高電平 _nop_(); /等待一個機器周期 _nop_(); /等待一個機器周期 _nop_(); /等待一個機器周期 _nop_(); /等待一個機器周期 ack_bit = sda; /接受設備(at24c
19、xx)向sda送低電平,表示已經接收到一個字節(jié) /若送高電平,表示沒有接收到,傳送異常 scl = 0; /scl為低電平時,sda上數(shù)據(jù)才允許變化(即允許以后的數(shù)據(jù)傳遞) return ack_bit;/ 返回at24cxx應答位/*函數(shù)功能:向第一個at24cxx中的指定地址寫入數(shù)據(jù)入口參數(shù):add (儲存指定
20、的地址);dat(儲存待寫入的數(shù)據(jù))*/void writeset1(unsigned char add, unsigned char dat)/ 在指定地址addr處寫入數(shù)據(jù)writecurrent start(); /開始數(shù)據(jù)傳遞 writecurrent(op_write1); /選擇要操作的第一個at24cxx芯片,并告知要對其寫入數(shù)據(jù) wri
21、tecurrent(add); /寫入指定地址 writecurrent(dat); /向當前地址(上面指定的地址)寫入數(shù)據(jù) stop(); /停止數(shù)據(jù)傳遞 delaynms(4);
22、160; /1個字節(jié)的寫入周期為1ms, 最好延時1ms以上/*函數(shù)功能:向第二個at24cxx中的指定地址寫入數(shù)據(jù)入口參數(shù):add (儲存指定的地址);dat(儲存待寫入的數(shù)據(jù))*/void writeset2(unsigned char add, unsigned char dat)/ 在指定地址addr處寫入數(shù)據(jù)writecurrent start();
23、 /開始數(shù)據(jù)傳遞 writecurrent(op_write2); /選擇要操作的at24cxx芯片,并告知要對其寫入數(shù)據(jù) writecurrent(add); /寫入指定地址 writecurrent(dat); /向當前地址(上面指定的地址)寫入數(shù)據(jù) stop(); &
24、#160; /停止數(shù)據(jù)傳遞 delaynms(4); /1個字節(jié)的寫入周期為1ms, 最好延時1ms以上/*函數(shù)功能:從第一個at24cxx中的當前地址讀取數(shù)據(jù)出口參數(shù):x (儲存讀出的數(shù)據(jù)) */unsigned char readcurrent1()
25、unsigned char x; start(); /開始數(shù)據(jù)傳遞 writecurrent(op_read1); /選擇要操作的第一個at24cxx芯片,并告知要讀其數(shù)據(jù) x=readdata();
26、; /將讀取的數(shù)據(jù)存入x stop(); /停止數(shù)據(jù)傳遞 return x; /返回讀取的數(shù)據(jù)傳播優(yōu)秀word版文檔 ,希望對您有幫助,可雙擊去除!傳播優(yōu)秀wo
27、rd版文檔 ,希望對您有幫助,可雙擊去除!/*函數(shù)功能:從第二個at24cxx中的當前地址讀取數(shù)據(jù)出口參數(shù):x (儲存讀出的數(shù)據(jù)) */unsigned char readcurrent2() unsigned char x; start(); /開始數(shù)據(jù)傳遞 writecurrent(op_read2); /選擇要
28、操作的第二個at24cxx芯片,并告知要讀其數(shù)據(jù) x=readdata(); /將讀取的數(shù)據(jù)存入x stop(); /停止數(shù)據(jù)傳遞 return x;
29、 /返回讀取的數(shù)據(jù)/*函數(shù)功能:從第一個at24cxx中的指定地址讀取數(shù)據(jù)入口參數(shù):set_addr出口參數(shù):x */unsigned char readset1(unsigned char set_addr)/ 在指定地址讀取 start();
30、0; /開始數(shù)據(jù)傳遞 writecurrent(op_write1); /選擇要操作的第一個at24cxx芯片,并告知要對其寫入數(shù)據(jù) writecurrent(set_addr); /寫入指定地址 return(readcurrent1(); /從第一個at24cxx芯片指定地址讀出數(shù)據(jù)并返回/*函數(shù)功能:從第二個at24cxx中的指定地址讀取數(shù)據(jù)入口參數(shù):set_addr出口參數(shù):x */unsigned char readset2(unsigned char set_addr)/ 在指定地址讀取 start();
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權】 IEC 62680-1-3:2024 EN-FR Universal serial bus interfaces for data and power - Part 1-3: Common components - USB Type-C?cable and connector specification
- 2025-2030年中國鋁包木門窗行業(yè)運行現(xiàn)狀及發(fā)展前景分析報告
- 2025-2030年中國金融資產交易所行業(yè)發(fā)展趨勢規(guī)劃研究報告
- 2025-2030年中國葡萄及深加工行業(yè)發(fā)展狀況及營銷戰(zhàn)略研究報告
- 2025-2030年中國色紡紗市場運行動態(tài)及發(fā)展趨勢預測報告
- 2025-2030年中國羊絨產業(yè)運行態(tài)勢及投資戰(zhàn)略研究報告
- 2025-2030年中國程控交換機行業(yè)發(fā)展現(xiàn)狀及前景趨勢分析報告
- 2025遼寧省安全員C證考試(專職安全員)題庫附答案
- 2025廣東省安全員《C證》考試題庫及答案
- 申論公務員考試試題與參考答案(2024年)
- 《幼兒行為觀察與分析案例教程》教學教案
- 小學科學教育課程實施方案
- DB11T 1035-2013 城市軌道交通能源消耗評價方法
- 2024新能源光伏電站運行規(guī)程和檢修規(guī)程
- 供應室課件大全
- 銀行存管三方協(xié)議書
- 2024義務教育道德與法治課程標準(2022版)
- 2024年新人教版化學九年級上冊全冊課件(新版教材)
- 智能體脂秤市場洞察報告
- 教科版 二年級科學上冊第一單元第6課《不同的季節(jié)》同步練習(附答案解析)
評論
0/150
提交評論