郭天祥51单片机教程— IIC总线

#include <reg52.h>
#define uchar unsigned charsbit SDA = P2^0; //数据总线
sbit SCL = p2_1; //时钟总线void delay() //大概延时5us
{;;
}void delay1(uchar x)
{uchar a,b;for(a=x;a>0;a--)for(b=100;b>0;b--);
}//这是一个写数据的整体过程
void wirte_add(uchar address,uchar date)
{start();write_byte(0xa0); //写器件的地址(其中0代表下一个操作是写)respons();write_byte(address); //往芯片第三个地址写(器件内部存储器的地址)respons();wirte_byte(date); //真正的数据respons();stop();
}//这是一个读数据的整体过程
uchar read_add(uchar address)
{uchar date;start();write_byte(0xa0); //写入器件的地址respons();write_byte(address); //写器件内部存储器的地址respons();start();write_byte(0xa1); //写器件的地址(下一个数据操作是读)respons();date = read_byte(); //读出数据stop();return date;
}//起始信号
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();/*收到应答信号(SDA会被置0,表示数据总线被应答数据占用),或者时间超   过,才退出while循环*/while( (SDA == 1) && (i < 250) ) i++;  /*第九个时钟结束(一个字节8位数据传输完毕,第九位是应答信号);把SCL置为0,允许数据变化,不能读数据*/SCL = 0; delay();
}void init()
{SDA = 1; //初始化数据总线为空闲SCL = 1; //初始化时钟总线为数据稳定,可读数据
}//写入一个字节--8位
void write_byte(uchar date)
{uchar i,temp;temp = date;for(i = 0;i < 8;i++){//左移一位就把最高位移到了CY中(CY是左移的溢出位,temp的最高位)temp = temp << 1; SCL = 0; //允许数据改变delay();SDA = CY; //把左移溢出的一位数据写入SDA数据总线中delay();//写好数据到指定地址之后,把SCL置1,不允许变化,把数据稳定一段时间,然后进行下一个位的写操作。SCL = 1; delay();}SCL = 0; //允许SDA数据变化,等待回应数据到来//等待回应SDA = 1; //数据总线被释放,等待应答信号占领总线delay();
}uchar read_byte()
{uchar i,j,k;SCL = 0; //允许SDA传输数据,数据变化delay();SDA = 1; //让数据总线处于空闲状态,允许数据传输delay();for(i = 0;i < 8;i++){SCL = 1; //SCL置为1,让数据稳定一段时间后,才可以读取数据delay();/* K左移之后最低位补为0;SDA要么为0要么为1,按位或之后,就可以把SDA放入K的最低位*/k = (k << 1) | SDA; SCL = 0; //允许数据改变,以便读取数据总线SDA上面的下一位数据delay();}return k;
}void main()
{init();wirte_add(23,0xaa);delay1(100); //必须要延时,否则写和读操作间隔太短,机器反应不过来P1 = read_add(23);while(1);}

郭天祥51单片机教程--- IIC总线相关推荐

  1. 关于郭天祥51单片机教程视频课后题《同时用两个定时器控制蜂鸣器发声》

    题目为:同时用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同个频率持续的时间,间隔300ms依次输出1,10,50,100,200,400,800, 1k(hz)的方波. 给出的代码为: ...

  2. 台达触摸屏modbusRTU与51单片机通讯台达屏与郭天祥51单片机通讯程序

    台达触摸屏modbusRTU与51单片机通讯台达屏与郭天祥51单片机通讯程序亲测过好用,P1口led显示8个位的状态上传给触摸屏,d2至d7为16数据寄存器能写能读,数码管显示当前写入的数码id=60 ...

  3. 51单片机教程哪个好?

    单片机入门51单片机是最好的选择. 很多人可能以为51单片机已经过时了,能这么想的绝对是没实际产品开发经验的. 51最大的优势就是价格便宜,在小家电等消费市场有大量的使用. 新手先学51可以培养你对单 ...

  4. 专业导师告诉你,有哪些51单片机教程值得大力推荐

    专业导师告诉你,有哪些51单片机教程值得大力推荐 摘要:前两天我的学生做了一个电路,功能就是用MOS管来控制一个电源的开关,但是做出来后发现不能用控制MOS管的开关,MOS管一直处于导通状态.一起来看 ...

  5. 51单片机教程:51单片机驱动四个8*8点阵,拼凑16*16点阵显示标准汉字。

    看此篇博文之前建议先看博主的上一篇博文: 51单片机教程:8*8 点阵显示字符.数字.简单汉字 取走点赞哦~ 教你如何用4个8乘8点阵拼成一个16乘16点阵 资料链接:点阵16乘16.rar 一.点阵 ...

  6. 51单片机教程:8*8 点阵显示字符、数字、简单汉字

    点阵显示实验 一.什么是点阵? 我们用之前的方法一个IO口只能控制一个led,如果需要用更少的IO口控制更多的led怎么办呢,于是就有了点阵. 8X8点阵共由64个发光二极管组成,且每个发光二极管是放 ...

  7. PIC16F877A单片机 (IIC总线+PCF8563芯片)

    PIC16F877A单片机 (IIC总线+PCF8563芯片) 1 基本原理 1.1 IIC总线 1.2 PCF8563芯片 2 实现过程 2.1 电路图 2.2 源代码 1 基本原理 1.1 IIC ...

  8. 51单片机对SPI总线上挂接多个25AA040的读写操作+Proteus仿真

    51单片机对SPI总线上挂接多个X5045的读写操作+Proteus仿真 Proteus仿真图 实例代码 //对SPI总线上挂接多个25AA040的读写操作 #include<reg51.h&g ...

  9. 使用51单片机模拟IIC从机,实现主机(51单片机)对模拟从机的读写操作

    51单片机.IIC从机模拟.IIC协议.iiC读写 1.思路 1.1写数据 1.2读数据 2.从机IIC协议 2.1起始信号和结束信号 2.2从机读取和写数据 2.3从机发送和接收ACK 2.4判断主 ...

最新文章

  1. 拜托,面试别再问我时间复杂度了!!!
  2. NOI2011 道路修建
  3. 黄聪:C# webBrowser控件禁用alert,confirm之类的弹窗解决方案
  4. js进阶正则表达式方括号(方括号作用)(js正则是在双正斜杠之中:/[a-z]/g)...
  5. 一个简单的Android音乐播放器
  6. 小米11和华为p40pro哪个好
  7. 手机qq音乐qmc0文件转mp3_录音添加背景音乐最新教程
  8. 我的网络安全第三次实验汇报
  9. Cisco PVLAN的配置
  10. nginx搭建tomcat集群
  11. 日志的处理 —— 使用 log4j
  12. Linkage 使用方法总结
  13. 2022 年不错的 SQL 注入 (SQLi) 检测工具
  14. h264和h265编码所需要的处理器性能
  15. win7从服务器拷文件提示错误,windows7无法复制文件提示“一个意外错误使您无法复制该文件”如何解决...
  16. 闰年和平年的区别python_连续四年中一定有一个闰年吗
  17. 分切机设备的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  18. 密码的自动生成器:密码由大写字母/小写字母/数字组成,生成12位随机密码
  19. 改好DEBUG七处缺点的comexe实现报告
  20. C语言实现根据阳历(公历)显示农历,干支,生肖

热门文章

  1. 陆金所年营收618亿:平安持股41.6% 市值一年蒸发300亿美元
  2. 网络优化工程师常用的测试软件,网络优化工程师要具备什么能力
  3. 【渝粤教育】国家开放大学2018年春季 0169-22T工程制图基础 参考试题
  4. 梅敬成 三维CAD软件发展历程:过去,现在和未来 (ACIS,Parasolid,OCC, 中望OV,华天CRUX IV )
  5. Open-Falcon 安装
  6. 台式电脑win7计算机无法启动,计算机无法启动黑屏win7
  7. 在线CAD-webpack使用插件入门
  8. 20个设计模式和软件设计面试问题
  9. 学习笔记(9):C#急速入门-格式化字符串输出
  10. EMC isilon 磁盘更换手册