IIC总线使用方法

发布者:阳关三迭最新更新时间:2015-08-21 来源: eefocus关键字:IIC总线  使用方法 手机看文章 扫描二维码
随时随地手机看文章
#include
#define uchar unsigned char
uchar a;
sbit sda=P2^0;
sbit scl=P2^1;
void delay1(uchar z)
{
uchar x,y;
for(x=z;x>0;x--)
for(y==100;y>0;y--);
}
void delay()//延时5微秒左右
{ ;; }
void start()//起始函数,scl高电平时sda下降沿触发起始信号
{
sda=1;
delay();
scl=1;
delay();
sda=0;
delay();
}
void stop()//停止信号,scl高电平时sda下降沿触发停止信号
{
sda=0;
delay();
scl=1;
delay();
sda=1;
delay();
}
void respons()//应答信号
{
uchar i;
scl=1;
delay();
while((sda==1)&&(i<250))//scl=1时候,判断sda是否=1。sda=1时,没有应答,sda=0时,while内部为假,退出while语句。当sda总=1时,延时255时间,如果超出255时间,则while语句为假。退while循环,默认应答了。
i++;
scl=0;//应答后,将scl变成低电平,因为是第九个时钟信号,时钟完了要将电平拉低
delay();//scl=0,持续一会
}
void init()//初始化函数
{
scl=1;//总线释放(空闲)是高电平
sda=1;
}
void write_byte(uchar date)//写字节,一位一位的写,数据左移一位,一位一位的传送最高位
{
uchar i,temp;
temp=date;//要写入的值给temp
scl=0;//scl=0时候数据可以不稳定,随便变化
delay();
for(i=0;i<8;i++)
{
temp=temp<<1;//temp左移一位,将要最高位放入CY,CY就是PSW.7,来源于最近一次数据软件改写的位存储区
sda=CY;//数据线上的第一帧位为temp的最高位,也就是CY当中的一位,此时数据在sda中保持稳定的0或1
   delay();//数据保持4.7微秒以上,稳定
scl=1;//scl=1准备开始传送数据
delay();//在这个延时过程中将要temp的最高位,CY的值传送完毕
scl=0;//传送完毕后scl=0,此时传送数据可以不稳定
delay();
}
sda=1;//将总线释放
delay();
}
uchar read_byte()//读函数
{
uchar i,j,k;
scl=0;//scl先底电平,准备高电平时候读取数据
delay();
sda=1;//释放数据总线,因为此时不知道sda上是高电平还是低电平
delay();
for(i=0;i<8;i++)
{
scl=1;
delay();
j=sda;//将传输的数据的第一个位传送给j
k=(k<<1)|j;//k是读出数据,将要k与上j(传输的位),传输什么得到什么,然后再左移,最终8次后将要一个字节传送给k
scl=0;
delay();
}
return k;
}
void main()
{
init();
start();//起始信号
write_byte(0xa0);//写器件地址,首次写从机地址1010 0000,前四位固定,后三位是外接口低电平,最后一位是写的意思
respons();//应答信号,A
write_byte(3);//写入首地址,随便写个3
respons();//应答信号,A
write_byte(0x55);//写进去一个数据
respons();//应答信号
stop();//结束信号,写入完毕
delay1(200);
 
start();//准备读出的开始信号
write_byte(0xa0);//首先写进去器件地址
respons();//应答信号,A
write_byte(3);//写入器件首地址
respons();//应答信号,A
start();
write_byte(0xa1);//准备读出数据,给器件地址1010 0001的意思是要读出数据
respons();//应答信号,A
a=read_byte();
stop();
P1=a;
while(1);
}
关键字:IIC总线  使用方法 引用地址:IIC总线使用方法

上一篇:搭建使用 RTX51-Tiny 的 C51 Keil 项目环境
下一篇:STM8 MCKIT1.0 BLDC无感控制中的采集实现分析

推荐阅读最新更新时间:2024-03-16 14:29

矿用杂散电流测定仪使用方法
  1、测量前,将测试棒接线分别旋紧于两接线柱中,调节表头指针至零刻度线。   2、将与接线柱相接的测试棒分别置于被测的两点(如:钢轨、水管、电缆外皮、煤炭、大地等),两测点应在不同的导体上,测点距离约为2米,正常每隔50-100M测一次,或根据需要临时确定测试点。将转换开关置于适当档,则表头指示值,经换算得到相应的电流值。   3、测量时,测量探针的硬质合金尖端与被测物接触良好,仪表应水平放置,以保证读数准确。   4、当一处测量不到交流杂散电流时,还应测试直流杂散电流,反之亦然。   5、测量杂散电压值时,其档位是:50mA对应0.2V、250mA对应1V、1A对应4V、5A对应20V、10A对应40V。(即电流值乘4就是
[测试测量]
农药残留测试仪的使用方法及性能特点
农药残留测试仪使用说明,农药残留测试仪【恒美HM-NC10】是检测水果蔬菜农残的关键仪器,该仪器的使用能够让人们正确的认识到农残问题,而不是眼不见为净,农残问题是实实在在存在的,超市中令人垂涎的水果蔬菜很有可能会有农残超标问题,我们利用农药残留测试仪【恒美HM-NC10】可以快速的检测出水果蔬菜中的农残指标,从而整顿农残超标问题。 农药残留测试仪【恒美HM-NC10】使用说明: 无需时间校准,系统自动校准。选择对应的wifi网络连接,输入上传地址、密码、用户名,注意区分大小写,点击保存。检测记录以列表形式显示,包括检测类别,编号、样品名称、吸光度、抑制率、检测结果、检测人员、检测单位,可按照类别或者编号查询历史记录,点击查询的
[测试测量]
示波器是干什么用的_怎样使用示波器_示波器的使用方法图解
  示波器,“人”如其名,就是显示波形的机器,它还被誉为“电子工程师的眼睛”。它的核心功能就是为了把被测信号的实际波形显示在屏幕上,以供工程师查找定位问题或评估系统性能等等。它的发展同样经历了模拟和数字两个时代,还是先来看图认识一下,如图1所示。      示波器是干什么用的   1、可以测量直流信号、交流信号的电压幅度   2、可以测量交流信号的周期,并以此换算出交流信号的频率。   3、可显示交流信号的波形。   4、可以用两个通道分别进行信号测量。   5、可以在屏幕上同时显示两个信号的波形,即双踪测量功能。此功能能够测量两个信号之间的 相位差,和波形之间形状的差别。   怎样使用示波器_示波器的使用方法图解   跟
[测试测量]
示波器是干什么用的_怎样使用示波器_示波器的<font color='red'>使用方法</font>图解
PIC单片机程序编写和动作标志位的使用方法解析
控制部分采用PICl6F7X系列单片机,运用汇编语言编程,运行速度较快,能够达到系统的要求。在这里使用的大多是数字信号的控制,电机的控制只有开和合两种状态。在动作的过程中需要两只手臂、身体、头部、脚部等的协调动作。整个控制系统比较复杂,因而在PIC程序编写和空间分配方面需要注意一些问题。 1、动作标志位的使用 在整个控制中,组合的动作很多,当所有动作定位都通过光电开关控制时,在程序编写上就有一些问题。如要求左手上升到鼓掌位、右手上升到举手位(手初始位置在最下的放下位),光电开关0有效(即为0时是挡住),到达正确位置。用简单的理解可以写成下面的程序: listP=16c73 calllefthandup callrighthan
[单片机]
PIC单片机程序编写和动作标志位的<font color='red'>使用方法</font>解析
示波器的使用方法
1.获得基线:当操作者在使用无使用说明书的示波器时,首先要获得一条最细的水平基线,然后才能用探头进行其他测量,其具体方法如下: (1)预置面板各开关、旋钮。 亮度置适中,聚焦和辅助聚焦置适中,垂直输入耦合置 AC,,,垂直电压量程选择置 5mv/div ,垂直工作方式选择置 CHl ,垂直灵敏度微调校准位置置 CAL ,垂直通道同步源选择置中间位置,垂直位置置中间位置,A和B扫描时间因数一起预置在 0.5ms/div ,A扫描时间微调置校准位置 CAL ,水平位移置中间位置,扫描工作方式置 A ,触发同步方式置 AUTO ,斜率开关置 + ,触发耦合开关置 AC ,触发源选择置 INT 。 (2)按下电源开关,电源指示灯点亮。 (3
[测试测量]
一文看懂万用表原理、使用方法及如何保养
万用表是电子爱好者最常用的测量仪器之一,是一种集成多种常用电学测量功能的仪器。如今不少万用表都向智能化方向发展,市面上的万用表种类、功能都较多,如何选择一款适合自己的万用表?万用表如何使用?你所关心的万用表知识,下面详细介绍。 1、什么是万用表 万用表又称为复用表、多用表、三用表、繁用表等,是电力电子等部门不可缺少的测量仪表,一般以测量电压、电流和电阻为主要目的。万用表按显示方式分为指针万用表和数字万用表。是一种多功能、多量程的测量仪表,一般万用表可测量直流电流、直流电压、交流电流、交流电压、电阻和音频电平等,有的还可以测交流电流、电容量、电感量及半导体的一些参数。 2、万用表的作用 基础功能:电压、电流、电阻三大
[测试测量]
一文看懂万用表原理、<font color='red'>使用方法</font>及如何保养
[51单片机学习笔记ONE]-----LED灯的多种使用方法
一.交替闪烁8个LED灯,时间间隔为1s 1 /****************************************************** 2 实验名称: 交替闪烁8个LED灯,时间间隔1s 3 实验时间: 2014年12月2日 4 ******************************************************/ 5 6 #include reg51.h 7 8 void delay(unsigned char a); 9 10 void main() 11 { 12 while(1) 13 { 14 /*根据原理图,P0置高电平
[单片机]
[51单片机学习笔记ONE]-----LED灯的多种<font color='red'>使用方法</font>
ATMEGA16单片机I0端口的使用方法解析
一、ATMEGA16的I端口的使用:(只有一个实验,下面的部分每个小节可能有几个实验验证,你懂得) 一—(01)、)—使用4*4行列式按键开关的使用 I/O端口介绍: 直接一个图就哦了,因为根本没什么,就是控制寄存器(这里一定要注意,后面的ATmega16的引脚的功能都是控制寄存器来实现引脚或者器件的功能的,说白了,知道了寄存器,会用了寄存器,再来点51的基础,那这些东西真的就没什么了,AVR单片机很简单的) 我用的就是IAR和Pro te us 好了先给个图,这个是按照手机上的设计的你看了就懂了 别的就不费话了,一看图不就全明白了 然后就是今天的代码 其实相当的简单,和51的原理一样,然后就是控制引脚的输入输
[单片机]
ATMEGA16单片机I0端口的<font color='red'>使用方法</font>解析
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved