<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 關(guān)于51單片機模擬IIC總線(xiàn)的程序

關(guān)于51單片機模擬IIC總線(xiàn)的程序

作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò ) 收藏
下面是一個(gè)關(guān)于IIC總線(xiàn)的程序,用的是51單片機做控制器,對24c16的EEPROM進(jìn)行數據的讀寫(xiě),由于51沒(méi)有IIC總線(xiàn)接口,所以需要根據IIC的協(xié)議模擬它進(jìn)行數據傳輸。IIC是一中同步串口總線(xiàn),scl為時(shí)鐘線(xiàn),sda為數據線(xiàn);scl為低時(shí)sda的數據允許變化,scl為高時(shí)sda的數據必須保持穩定。同一個(gè)IIC總線(xiàn)根據器件地址的不同可以同時(shí)對多個(gè)器件進(jìn)行讀寫(xiě),例如可以同時(shí)接8個(gè)24c16系列的EEPROM。

本文引用地址:http://dyxdggzs.com/article/201611/321664.htm

下面的程序是一個(gè)時(shí)鐘程序,當斷電時(shí)將數據將保存在24c16中。重新上電后先讀出24c16中存的數據,之后一直對24c16進(jìn)行寫(xiě)操作,這樣斷電就可以保持最后次數據在14c16里面了。

對24c16系列的EEPROM寫(xiě)的過(guò)程:起始信號 寫(xiě)器件地址 應答寫(xiě)地址 應答 寫(xiě)數據.....無(wú)應答 停止

對24c16系列的EEPROM寫(xiě)的過(guò)程:起始信號寫(xiě)器件地址 應答寫(xiě)地址 應答 重新開(kāi)始 寫(xiě)器件+1 應答 讀出數據停止

#include
#define uchar unsigned char
sbit sda=P2^1;
sbit scl=P2^0;
sbit p1_0=P1^0;
sbit p1_1=P1^1;
sbit p1_2=P1^2;
uchar a,tt;
uchar tem=0;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay()
{ ;; }
void start()//開(kāi)始信號,scl在高電平時(shí)sda由高變低產(chǎn)生開(kāi)始信號
{
sda=1;
delay();
scl=1;
delay();
sda=0;
delay();
}

void stop()//停止信號,scl在高電平時(shí)sda由低變高產(chǎn)生停止信號

{
sda=0;
delay();
scl=1;
delay();
sda=1;
delay();
}

void respons()//應答,sda為高時(shí)表示從機有應答,沒(méi)有就默認應答
{
uchar i;
scl=1;
delay();
while((sda==1)&&(i<250))i++;
scl=0;
delay();
}

void init()//初始化定時(shí)器
{
sda=1;
delay();
scl=1;
delay();
TMOD=0x01;
TH0=(65536-50000)/256;
TH0=(65536-50000)%6;
EA=1;
ET0=1;
TR0=1;
p1_1=1;
p1_0=1;
}

void write_byte(uchar date)//寫(xiě)一個(gè)字節
{
uchar i,temp;
temp=date;


for(i=0;i<8;i++)
{
temp=temp<<1;
scl=0;
delay();
sda=CY;//利用了CY這個(gè)移除來(lái)寫(xiě)
delay();
scl=1;
delay();
scl=0;
delay();
}
scl=0;
delay();
sda=1;
delay();
}

uchar read_byte()//讀一個(gè)字節
{
uchar i,k;
scl=0;
delay();
sda=1;//釋放sda
delay();
for(i=0;i<8;i++)
{
scl=1;
delay();
k=(k<<1)|sda;//讀出來(lái)的字節存在k中
scl=0;
delay();
}
return k;
}

void delay1(uchar x)
{
uchar a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}

void write_add(uchar address,uchar date)//寫(xiě)數據的整個(gè)過(guò)程

{
start();
write_byte(0xa0);//a0為從機器件地址,最后位為0表示寫(xiě)
respons();
write_byte(address);//要寫(xiě)的地址
respons();
write_byte(date);//要寫(xiě)的數據
respons();
stop();
}

uchar read_add(uchar address))//讀數據的整個(gè)過(guò)程
{
uchar date;
start();
write_byte(0xa0);
respons();
write_byte(address);//待讀數據的地址
respons();
start();//由寫(xiě)變?yōu)樽x的過(guò)程需要重新執行start的過(guò)程
write_byte(0xa1);//最后位為一表示讀
respons();
date=read_byte();//讀出數據
stop();
return date;
}

void main()
{

uchar shi,ge;
init();

if(read_add(20))
{
tem=read_add(20);
}
else
{
tem=0;
}
while(1)
{

if(tem>99)
{
tem=0;
}

shi=tem/10;
ge=tem;
p1_1=0;
P3=table[shi];
delay1(14);
p1_1=1;
p1_0=0;
P3=table[ge];
delay1(14);
p1_0=1;
}

}
void zhongd() interrupt 1

{
TH0=(65536-50000)/256;
TL0=(65536-50000)%6;
tt++;
if(tt==20)
{
tt=0;
tem++;
write_add(20,tem);
}
}



關(guān)鍵詞: 51單片機模擬IIC總

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>