曰本美女∴一区二区特级A级黄色大片, 国产亚洲精品美女久久久久久2025, 页岩实心砖-高密市宏伟建材有限公司, 午夜小视频在线观看欧美日韩手机在线,国产人妻奶水一区二区,国产玉足,妺妺窝人体色WWW网站孕妇,色综合天天综合网中文伊,成人在线麻豆网观看

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

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

3天內(nèi)不再提示

如何使用C語言實現(xiàn)51單片機模擬I2C總線

Wildesbeast ? 來源:網(wǎng)絡(luò)整理 ? 作者:佚名 ? 2020-05-05 15:32 ? 次閱讀

電路原理

EEPROMATMEL公司的AT24C01A。單片機為ATMEL公司的AT89C51。

軟件說明

C語言為Franklin C V3.2。將源程序另存為testi2c.c,用命令

C51 testi2c.c

L51 TESTI2C.OBJ

OHS51 TESTI2C

編譯,連接,得到TESTI2C.HEX文件,即可由編程器讀入并進行寫片,實驗。

3.源程序

#include 《reg51.h》

#include 《intrins.h》

#define uchar unsigned char

#define uint unsigned int

#define AddWr 0xa0 /*器件地址選擇及寫標志*/

#define AddRd 0xa1 /*器件地址選擇及讀標志*/

#define Hidden 0x0e /*顯示器的消隱碼*/

/*有關(guān)全局變量*/

sbit Sda= P3^7; /*串行數(shù)據(jù)*/

sbit Scl= P3^6; /*串行時鐘*/

sbit WP= P3^5; /*硬件寫保護*/

void mDelay(uchar j)

{ uint i;

for(;j》0;j--)

{ for(i=0;i《125;i--)

{;}

}

}

/*發(fā)送起始條件*/

void Start(void) /*起始條件*/

{

Sda=1;

Scl=1;

_nop_ ();

_nop_ ();

_nop_ ();

_nop_ ();

Sda=0;

_nop_ ();

_nop_ ();

_nop_ ();

_nop_ ();

}

void Stop(void) /*停止條件*/

{

Sda=0;

Scl=1;

_nop_ ();

_nop_ ();

_nop_ ();

_nop_ ();

Sda=1;

_nop_ ();

_nop_ ();

_nop_ ();

_nop_ ();

}

void Ack(void) /*應(yīng)答位*/

{

Sda=0;

_nop_ ();

_nop_ ();

_nop_ ();

_nop_ ();

Scl=1;

_nop_ ();

_nop_ ();

_nop_ ();

_nop_ ();

Scl=0;

}

void NoAck(void) /*反向應(yīng)答位*/

{

Sda=1;

_nop_ ();

_nop_ ();

_nop_ ();

_nop_ ();

Scl=1;

_nop_ ();

_nop_ ();

_nop_ ();

_nop_ ();

Scl=0;

}

void Send(uchar Data) /*發(fā)送數(shù)據(jù)子程序,Data為要求發(fā)送的數(shù)據(jù)*/

{

uchar BitCounter=8; /*位數(shù)控制*/

uchar temp; /*中間變量控制*/

do

{

temp=Data;

Scl=0;

_nop_ ();

_nop_ ();

_nop_ ();

_nop_ ();

if((temp&0x80)==0x80)/* 如果最高位是1*/

Sda=1;

else

Sda=0;

Scl=1;

temp=Data《《1; /*RLC*/

Data=temp;

BitCounter--;

}while(BitCounter);

Scl=0;

}

uchar Read(void) /*讀一個字節(jié)的數(shù)據(jù),并返回該字節(jié)值*/

{

uchar temp=0;

uchar temp1=0;

uchar BitCounter=8;

Sda=1;

do{

Scl=0;

_nop_ ();

_nop_ ();

_nop_ ();

_nop_ ();

Scl=1;

_nop_ ();

_nop_ ();

_nop_ ();

_nop_ ();

if(Sda) /*如果Sda=1;*/

temp=temp|0x01; /*temp的最低位置1*/

else

temp=temp&0xfe; /*否則temp的最低位清0*/

if(BitCounter-1)

{ temp1=temp《《1;

temp=temp1;

}

BitCounter--;

}while(BitCounter);

return(temp);

}

void WrToROM(uchar Data[],uchar Address,uchar Num)

{

uchar i;

uchar *PData;

PData=Data;

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

{

Start(); /*發(fā)送啟動信號*/

Send(0xa0); /*發(fā)送SLA+W*/

Ack();

Send(Address+i); /*發(fā)送地址*/

Ack();

Send(*(PData+i));

Ack();

Stop();

mDelay(20);

}

}

void RdFromROM(uchar Data[],uchar Address,uchar Num)

{

uchar i;

uchar *PData;

PData=Data;

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

{

Start();

Send(0xa0);

Ack();

Send(Address+i);

Ack();

Start();

Send(0xa1);

Ack();

*(PData+i)=Read();

Scl=0;

NoAck();

Stop();

}

}

void main()

{

uchar Number[4]={1,2,3,4};

WP= 1;

WrToROM(Number,4,4); /*將初始化后的數(shù)值寫入EEPROM*/

mDelay(20);

Number[0]=0;

Number[1]=0;

Number[2]=0;

Number[3]=0; /*將數(shù)組中的值清掉,以驗證讀出的數(shù)是否正確*/

RdFromROM(Number,4,4);

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 51單片機
    +關(guān)注

    關(guān)注

    277

    文章

    5707

    瀏覽量

    126121
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7628

    瀏覽量

    139953
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1522

    瀏覽量

    126702
收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    C51單片機模擬I2C總線C語言實現(xiàn)

    EEPROM為ATMEL公司的AT24C01A。單片機為ATMEL公司的AT89C51。2. 軟件說明 C
    發(fā)表于 08-13 13:55 ?88次下載

    億恒C166 系列單片機I2C 總線的軟件模擬

    億恒C166 系列單片機I2C 總線的軟件模擬
    發(fā)表于 05-14 16:11 ?6次下載

    基于I2C總線單片機暖水鍋爐測溫系統(tǒng)實現(xiàn)

    基于I2C總線單片機暖水鍋爐測溫系統(tǒng)實現(xiàn):摘要:溫度測量是工程控制領(lǐng)域常見的一種情況,本文介紹了一種基于I2C
    發(fā)表于 06-21 22:40 ?23次下載

    I2C總線單片機C語言實現(xiàn)及其應(yīng)用

    I2C總線單片機C語言實現(xiàn)及其應(yīng)用 本文介紹了I2C總線
    發(fā)表于 10-17 08:36 ?3089次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>總線</b>的<b class='flag-5'>單片機</b><b class='flag-5'>C</b><b class='flag-5'>語言實現(xiàn)</b>及其應(yīng)用

    51系列單片機模擬串行口的C語言實現(xiàn)_栗小寬

    5 1 系列單片機模擬串行口的C 語言實現(xiàn).pdf
    發(fā)表于 10-29 11:34 ?4次下載

    軟件模擬I2C總線C51實現(xiàn)

    軟件模擬I2C總線C51實現(xiàn)
    發(fā)表于 10-13 11:03 ?8次下載
    軟件<b class='flag-5'>模擬</b><b class='flag-5'>I2C</b><b class='flag-5'>總線</b>的<b class='flag-5'>C51</b><b class='flag-5'>實現(xiàn)</b>

    80C51單片機模擬I2C總線的主機程序分享

    I2C總線協(xié)議程序 在使用的過程中一定要注意時序、時間的問題。 i2c.c /* I2C.c 標準80C51
    發(fā)表于 12-05 15:39 ?3667次閱讀
    80<b class='flag-5'>C51</b><b class='flag-5'>單片機</b><b class='flag-5'>模擬</b><b class='flag-5'>I2C</b><b class='flag-5'>總線</b>的主機程序分享

    使用51單片機模擬I2C總線的驅(qū)動程序免費下載

    本文檔的主要內(nèi)容詳細介紹的是使用51單片機模擬I2C總線的驅(qū)動程序免費下載。
    發(fā)表于 04-17 17:27 ?0次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>模擬</b><b class='flag-5'>I2C</b><b class='flag-5'>總線</b>的驅(qū)動程序免費下載

    使用C語言模擬51單片機I2C總線的資料和程序免費下載

    本文檔的主要內(nèi)容詳細介紹的是使用C語言模擬51單片機I2C
    發(fā)表于 08-06 17:34 ?11次下載
    使用<b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>模擬</b><b class='flag-5'>51</b><b class='flag-5'>單片機</b>的<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>的資料和程序免費下載

    使用51單片機模擬I2C總線的程序免費下載

    本文檔的主要內(nèi)容詳細介紹的是使用51單片機模擬I2C總線的程序免費下載我見過最好的,與大家共享。
    發(fā)表于 06-18 17:44 ?3次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>模擬</b><b class='flag-5'>I2C</b><b class='flag-5'>總線</b>的程序免費下載

    基于MCS-51單片機I2C總線接口電路的設(shè)計

    單片機控制系統(tǒng)中,廣泛使用I2C器件。如果單片機自帶I2C總線接口,則所有I2C器件對應(yīng)連接到
    發(fā)表于 10-15 16:13 ?3659次閱讀
    基于MCS-<b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>I2C</b><b class='flag-5'>總線</b>接口電路的設(shè)計

    I2C總線驅(qū)動的C語言源程序詳細說明

     i2c 總線單片機系統(tǒng)中常用到的總線技術(shù)這里給大家介紹一個I2C總線驅(qū)動的
    的頭像 發(fā)表于 09-26 11:07 ?5450次閱讀

    使用單片機實現(xiàn)I2C接口存儲器AT24C04的讀寫與顯示的C語言實

    本文檔的主要內(nèi)容詳細介紹的是使用單片機實現(xiàn)I2C接口存儲器AT24C04的讀寫與顯示的C語言實
    發(fā)表于 03-31 11:20 ?19次下載

    使用單片機實現(xiàn)I2C存儲器設(shè)計的中文硬件字庫應(yīng)用的C語言實

    本文檔的主要內(nèi)容詳細介紹的是使用單片機實現(xiàn)I2C存儲器設(shè)計的中文硬件字庫應(yīng)用的C語言實例。
    發(fā)表于 03-31 14:45 ?2次下載

    使用單片機實現(xiàn)I2C接口數(shù)字電位器AD5242應(yīng)用的C語言實例免費下載

    本文檔的主要內(nèi)容詳細介紹的是使用單片機實現(xiàn)I2C接口數(shù)字電位器AD5242應(yīng)用的C語言實例免費下載。
    發(fā)表于 03-31 16:31 ?62次下載