单片机实验(十五)单片机控制IIC芯片AT24C01读写一个字节数据在LED上显示

1、实验环境:win732位系统,keil2,proteus7.5sp3。
2、实验目的:学习通过编程单片机控制AT24C01读写一个字节数据。
3、实验连接图。
单片机实验(十五)单片机控制IIC芯片AT24C01读写一个字节数据在LED上显示

4、实验代码。

#include<reg52.h>
#define uchar unsigned char
sbit sda=P2^1;
sbit scl=P2^0;
uchar a;
void delay()
{ ; ; }
void delay1ms(uchar c)
{
	uchar a,b;
	for(a=c;a>0;a--)
		for(b=110;b>0;b--);
}
void start()
{
	sda=1;
	delay();
	scl=1;
	delay();
	sda=0;
	delay();
}
void stop()
{	
	sda=0;
	delay();
	scl=1;
	delay();
	sda=1;
	delay();
}
void respons()  //应答
{
	uchar i;
	scl=1;
    delay();
	while((sda==1)&&(i<250))i++;
	scl=0;
	delay();
}
void init()
{
	sda=1;
	delay();
	scl=1;
	delay();
}
void write_byte(uchar date)
{
	uchar i,temp;
	temp=date;
	for(i=0;i<8;i++)
	{	
		temp=temp<<1;
		scl=0;
		delay();
		sda=CY;
		delay();
		scl=1;
		delay();		
	}
	scl=0;
	delay();
	sda=1;
	delay();
}
uchar read_byte()
{
	uchar i,j,k;
	scl=0;
	delay();
	sda=1;
	delay();
	for(i=0;i<8;i++)
	{
		scl=1;
		delay();
		j=sda;
		k=(k<<1)|j;	
		scl=0;
		delay();	
	}
	return k;
}
void main()
{
	init();	//kanshixutu
	start();
	write_byte(0xa0);
	respons();
	write_byte(3);
	respons();
	write_byte(0x55);
	respons();
	stop();

	delay1ms(100);
	start();
	write_byte(0xa0);
	respons();
	write_byte(3);
	respons();
	start();
	write_byte(0xa1);
	respons();
	a=read_byte();
	stop();
	P1=a;
	while(1);
}

5、实验结果:
单片机实验(十五)单片机控制IIC芯片AT24C01读写一个字节数据在LED上显示

6、实验体会:
今天,进行了单片机控制AT24C01读写的实验,了解了AT24C01的结构以及读写操作,还学会了连接单片机的最小系统,对单片机的理解进一步加深,有所收获,感觉棒棒哒,继续加油。

上一篇:几种常用通信协议:IIC协议、SPI协议、UART协议


下一篇:I2C(inter-integrated circuit) 学习笔记