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

1、实验环境:win732位系统,keil2,proteus7.5sp3。
2、实验目的:学习通过编程单片机控制AT24C01读写一个字节数据。
3、实验连接图。
在这里插入图片描述

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、实验结果:
在这里插入图片描述

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

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值