C編寫的ATC詳細(xì)的讀寫程序_第1頁(yè)
C編寫的ATC詳細(xì)的讀寫程序_第2頁(yè)
C編寫的ATC詳細(xì)的讀寫程序_第3頁(yè)
C編寫的ATC詳細(xì)的讀寫程序_第4頁(yè)
C編寫的ATC詳細(xì)的讀寫程序_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、C51A T 24 C 02 讀 寫 程 序/*voidstart()/開(kāi)始信號(hào)voidstop()/停止信號(hào)sbit P2_3=P2A3;/74HC138-/EIvoidAck()/發(fā)確認(rèn)信號(hào)voidNoAck()/ 發(fā)無(wú)確認(rèn)信號(hào)void in it()/初始化信號(hào),拉高SDA和SCL兩條總線bitwrite_byte(uchardate)/寫一字節(jié),將date寫入AT24C02中ucharread_byte()/讀一字節(jié),從 AT24C02中讀一字節(jié)bitbusy()/應(yīng)答查詢,stop()后,啟動(dòng)AT24C02內(nèi)部寫周期,啟動(dòng)查詢 初始化EEPR0子程序內(nèi)容為 0XFF,nPage(03

2、1)向AT24C02中寫數(shù)據(jù)voidInit_Flash(ucharnPage)/8bytes/1pageinit0xFF voidwrite_add(ucharaddress,uchardate)/ /從AT24C02中給定的地址nAddr起,將存放在以指針 nContent幵頭的存儲(chǔ)空間中的 nLen 個(gè)字節(jié)數(shù)據(jù),連續(xù)寫入 AT24C02 voidwrite_flash(uchar*nContent,ucharnAddr,ucharnLen)ucharread_add(ucharaddress)/從 AT24C02中讀出數(shù)據(jù) /從AT24C02中給定的地址nAddr起,讀取nLen個(gè)字節(jié)數(shù)

3、據(jù)存放在以指針 nContent開(kāi)頭的存儲(chǔ)空間。voidread_flash(uchar*nContent,ucharnAddr,ucharnLen) */ /*單片機(jī) P2 口接 74HC138(三八譯碼器)P2.3-74HC138:/EI 、P2.2-74HC138:A2、P2.1-74HC138:A1 、 P2.0-74HC138:A0譯碼器輸出YO, Y1、Y2、Y3、Y4 Y5、Y6、Y7均低電平有效,分別選通 18個(gè)數(shù)碼管。包括2個(gè)四位一體數(shù)碼管LG3641BH共2x4=8個(gè)數(shù)碼管。數(shù)碼管數(shù)據(jù)口為P0 口。數(shù)碼管為共陽(yáng)4位一體數(shù)碼管。功能:譯碼器輸出為 18個(gè)數(shù)碼管的段選信號(hào),輪流

4、選擇 18數(shù)碼管。voiddisplay(uchar*nContent,ucharnLen)功能:在8段數(shù)碼管上顯示nLen個(gè)字符,這些字符存儲(chǔ)在指針 nContent 開(kāi)頭的往下的內(nèi)容中。顯示原理:1 、送出要顯示的段數(shù)2、P2譯碼,選擇要顯示的位3、延時(shí) 1 2ms,時(shí)間不能太長(zhǎng),否則會(huì)閃爍,也不能太短,否則會(huì)很暗。4、取消段選,消隱!若要顯示多段,重復(fù)以上4 步!*/ #include<reg51.h> #include<intrins.h> #defineucharunsignedchar #defineuintunsignedint sbitL8二 P1A7;

5、sbit P2_2=P 2八2;/74HC138-A2_nop_();sbit P2_1=P 2"/74HC138-A1sbit P2_0=PO;/74HC138-A0ucharcodetable=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;/ 共陽(yáng)數(shù)碼管 0 Fsbitsda=卩1八2;sbitscl 二P19uchara;voiddelay()/延時(shí)函數(shù); voidstart()/ 開(kāi)始信號(hào)sda=1;_nop_();scl=1;sda=0;_nop_();void

6、stop()/ 停止信號(hào)sda=0;_nop_();scl=1;_nop_();sda=1;_nop_();voidAck()/ 發(fā)確認(rèn)信號(hào)scl=0;_nop_();sda=0;_nop_();scl=1;_nop_();scl=0;_nop_();voidNoAck()/ 發(fā)無(wú)確認(rèn)信號(hào)scl=0;_nop_();sda=1;_nop_();scl=1;_nop_();scl=0;_nop_();/voidrespons()/ 應(yīng)答,在數(shù)據(jù)傳輸 8 位后,等待或者發(fā)送一個(gè)應(yīng)答信號(hào)/ /uchari;/scl=0;/_nop_();/sda=1;/_nop_();/scl=1;/scl 拉高,

7、準(zhǔn)備讀數(shù)據(jù)讀數(shù)據(jù)/delay();/while(sda=1)&&(i<250)i+;/ /scl=0;/scl 拉低,數(shù)據(jù)讀完畢 , (必須)/ /delay();void in it()/初始化信號(hào),拉高SDA和SCL兩條總線sda=1;scl=1;bitwrite_byte(uchardate)/寫一字節(jié),將date寫入AT24C02中_nop_();uchari;scl=0;for(i=0;i<8;i+) date=date<<1;sda=CY;/ 將要寫入的數(shù)據(jù)送入 SDAscl=1;/scl拉高,準(zhǔn)備寫數(shù)據(jù)_nop_();scl=0;/scl拉

8、低,寫數(shù)據(jù)完畢_nop_();sda=1;/ 應(yīng)答時(shí)序中,該線必須為高_(dá)nop_();scl=1;/scl 拉高,準(zhǔn)備讀數(shù)據(jù)CY=sda;/ 將 sda 中的數(shù)據(jù)讀出scl=0;/scl 拉低,數(shù)據(jù)讀完畢(必須)return(CY);ucharread_byte()/讀一字節(jié),從 AT24C02中讀一字節(jié) uchari,k;for(i=0;i<8;i+) sda=1;_nop_();scl=1;/scl 拉高,準(zhǔn)備讀數(shù)據(jù)_nop_();k=(k<<1)|sda;/ 將 sda 中的數(shù)據(jù)讀出scl=0;/scl 拉低,數(shù)據(jù)讀完畢(必須)_nop_();returnk;/void

9、delay2(ucharx)/ 延時(shí),放在寫入與讀出之間/ /uchara,b;/for(a=x;a>0;a-) /for(b=100;b>0;b-);/bitbusy()/應(yīng)答查詢,stop()后,啟動(dòng)AT24C02內(nèi)部寫周期,啟動(dòng)查詢start();CY=write_byte(0xa0);return(CY);/初始化EEPRO子程序內(nèi)容為 0XFF,nPage(031) voidInit_Flash(ucharnPage)/8bytes/1pageinit0xFFucharnLen;ucharAddr;nLen=8;Addr=8*nPage;start();write_byt

10、e(0xa0);write_byte(Addr);for(;nLen!=0;nLen-)向AT24C02中寫數(shù)據(jù)write_byte(0xff);voidwrite_add(ucharaddress,uchardate)/start();write_byte(0xa0);/respons();write_byte(address);/respons();write_byte(date);/respons();stop();/從AT24C02中給定的地址nAddr起,將存放在以指針 nContent幵頭的存儲(chǔ)空間中的 nLen 個(gè)字節(jié)數(shù)據(jù),連續(xù)寫入 AT24C02 voidwrite_flash

11、(uchar*nContent,ucharnAddr,ucharnLen)uchari,temp;ucharAddr;Addr=nAddr;start();write_byte(0xa0);write_byte(Addr);for(i=0;i<nLen;i+)if(Addr%8=0)stop();while(busy();start();write_byte(0xa0);write_byte(Addr);temp=*nContent;write_byte(temp);nContent+;Addr+;stop();ucharread_add(ucharaddress)/從 AT24C02中

12、讀出數(shù)據(jù) uchardate;start();write_byte(0xa0);write_byte(address);/respons();start();/respons();write_byte(0xa1);/respons();date=read_byte();NoAck();stop();returndate;/從AT24C02中給定的地址nAddr起,讀取nLen個(gè)字節(jié)數(shù)據(jù)存放在以指針 nContent開(kāi)頭的存儲(chǔ)空間。voidread_flash(uchar*nContent,ucharnAddr,ucharnLen)ucharAddr;Addr=nAddr;start();wri

13、te_byte(0xa0);write_byte(Addr);start();write_byte(0xa1);while(-nLen)nContent+;Ack();/ 發(fā)確認(rèn)信號(hào)*nContent=read_byte();*nContent=read_byte();NoAck(); / 無(wú)確認(rèn)信號(hào)stop();/ 發(fā)停止信號(hào)/*功能:延時(shí) x*0.14ms*/voiddelay1(unsignedcharx)/x*0.14MS unsignedchari;while(x-) for(i=0;i<13;i+)/*/ /*功能:在 8 段數(shù)碼管上顯示 nLen 個(gè)字符 , 這些字符存儲(chǔ)在

14、指針 nContent開(kāi)頭的往下的內(nèi)容中。*/voiddisplay(uchar*nContent,ucharnLen)uchartemp;uchari;if(nLen>8)/ 最多顯示 8 段nLen=8;for(i=0;i<nLen;i+)temp=*nContent;nContent+;P0=tabletemp;P2=P2&0xf0|i;/ 譯中 74HC138: Yi(i=0,1,.7),選中第 i+1 個(gè)數(shù)碼管delay1(10); / 延時(shí)P2=P2|0x0f;/ 取消位選,消隱/*主程序 功能:實(shí)現(xiàn)存儲(chǔ)器EE PROMAT24C02數(shù)據(jù)讀寫操作*/voidmain() uchardat16=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,i;ucharout116=0;ucharout2;P0=0xff;P1=0xff;P2=0xff;P3=0xff;init();/ 初始化 AT24C02Init_Flash(0);/ 將第 31 頁(yè)初始化為 0xFFwhile(busy();/write_add(23,0x5);/在 23 地址處寫入數(shù)據(jù) 0x5;write_flas

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論