nbhkdz.com冰点文库

基于51单片机的IIC总线控制程序

时间:2011-10-18


////////////////////////////////////////////////////////////////////////////////// //函数功能:void iic_start() 启动信号 // void iic_stop(void) 停止信号 // void iic_check_answer() 应答信号 // void iic_write_byte(uchar dat) 写字节函数 // void iic_write_n_byte(uchar *buffer,uchar n) 写 n 个字节函数 // void iic_write_at_addr(uchar addr,uchar dat) 指定地址写字节函数 // uchar iic_read_byte(void) 读字节函数 // // uchar iic_read_at_addr(uchar addr) 读指定地址字节 ///////////////////////////////////////////////////////////////////////////////////

#ifndef __iic_H__ #define __iic_H__

sbit scl=P1^0; sbit sda=P1^1;

//延时 4us@12mhz void delay_iic() { ;;; }

//启动 iic 总线的函数,当 scl 为高电平时使 sda 产生一个负跳变 void iic_start(void) { sda=1; delay_iic(); scl=1; delay_iic(); sda=0; delay_iic(); }

//终止 iic 总线,当 scl 为高电平时使 sda 产生一个正跳变 void iic_stop(void) { sda=0;

delay_iic(); scl=1; delay_iic(); sda=1; delay_iic(); }

//发送完一个字节后检验设备的应答信号 void iic_check_answer() { uchar i; scl=1; delay_iic(); while((sda==1) && (i<250)) i++; scl=0; delay_iic(); }

//向 iic 总线写一个字节 void iic_write_byte(uchar dat) { uchar i,temp; temp=dat; for(i=0;i<8;i++) { temp=temp<<1; scl=0; delay_iic(); sda=CY; delay_iic(); scl=1; delay_iic(); } scl=0; delay_iic(); sda=1; delay_iic(); }

//向 I2C 总线写 n 个字节 void iic_write_n_byte(uchar *buffer,uchar n) { uchar i; iic_start(); for(i=0;i<n;i++) { iic_write_byte(buffer[i]); } iic_stop(); }

//向芯片的指定地址,写入字节 void iic_write_at_addr(uchar addr,uchar dat) { iic_start(); //设定地址,AT24C02 固定地址为 1010,再加上 设定的地址, iic_write_byte(0xa0); //最后一位表示读或写,0 表示写,所以为 1010 0000,即 0xa0 iic_check_answer(); //等待芯片应答 iic_write_byte(addr); //设置要写入数据的地址 iic_check_answer(); //等待芯片应答 iic_write_byte(dat); //写入要保存的数据 iic_check_answer(); //等待芯片应答 iic_stop(); } //从 I2C 总线读一个字节 uchar iic_read_byte(void) { uchar i,k; scl=0; delay_iic(); sda=1; delay_iic(); for(i=0; i<8; i++) { scl=1; delay_iic();

k =(k<<1)|sda; scl=0; delay_iic(); } return k; }

/*//从 I2C 总线读 n 个字节 bit iic_read_n_byte(uchar SlaveAdr,uchar n,uchar *buffer) { uchar i; iic_start(); Write_byte(SlaveAdr); //向总线发送接收器地址 if(!check_answer()) //等待接收器应答信号 return 0; for(i=0;i<n;i++) { buffer[i]=READ_byte(); if(i!=n) SEND_0(); //发送应答 else SEND_1(); //发送非应答 } iic_stop(); return 1; } */ //读取芯片指定地址的数据 uchar iic_read_at_addr(uchar addr) { uchar dat; iic_start(); iic_write_byte(0xa0);//向芯片发送一个写操作信号 iic_check_answer(); iic_write_byte(addr);//设置要读取的地址 iic_check_answer(); iic_start(); iic_write_byte(0xa1);//向芯片发送一个读操作信号 iic_check_answer(); dat=iic_read_byte(); iic_stop(); return dat; }

#endif


基于51单片机的IIC总线控制程序.doc

基于51单片机的IIC总线控制程序 - 此文件为.H文件,作者:liuzqiang_1016... 基于51单片机的IIC总线控制程序_信息与通信_工程科技_专业资料。此文件为.H文件,作者:l...

51单片机IIC总线程序.doc

51单片机IIC总线程序 - //===头文件加载=== #include &l

51单片机的模拟IIC总线程序.doc

51单片机的模拟IIC总线程序 - #include <reg764.h&

51单片机的模拟IIC总线程序.doc

51单片机的模拟IIC总线程序 - /*** VI2C_C51...

51单片机IIC总线操作及24c02指定地址的读写.doc

51 单片机 IIC 总线操作及 24c02 指定地址的读写 (单片机用 STC89C58RD+) //24c02 数据读写操作。程序实现每一秒钟往 24c02 的指定地址内写入数据(既每...

51单片机IIC程序.doc

标签: 信息通信| 单片机| 程序|51单片机IIC程序_信息与通信_工程科技_专业资料。基于51单片机的IIC通信程序,其中IIC协议实现是通过单片机模拟时序完成 ...

单片机教程-51系列单片机读写IIC总线(28)_图文.ppt

单片机教程-51系列单片机读写IIC总线(28) - 第28章 51系列单片机读写I2C总线 ? I2C总线是Philips公司推出的一种双向二线制总线,全称为 芯片间总线(Inter Inte...

基于软件模拟的51单片机IIC总线的实现[1].pdf

基于软件模拟的51单片机IIC总线的实现[1] - 《电子技术》2004 年第 5 期 计算机应用 基于软件模拟的 51 单片机 IIC 总线的实现 安徽理工大学电气工程系(232001)...

51单片机综合学习系统之 IIC总线学习篇_图文.pdf

51单片机综合学习系统之 IIC 总线学习篇大家好,通过以前的学习,我们已经对51单片机综合学习系统的使用方法及学习方式有所了解与熟悉, 学会了使用无线遥控模块的基本...

51单片机IO口线模拟IIC总线3部曲之第3部.doc

51单片机IO口线模拟IIC总线3部曲之第3部 - 本文是对第 1,2 部的使用

51单片机IO口线模拟IIC总线3部曲之第3部.txt

51单片机IO口线模拟IIC总线3部曲之第3部 - 本文是对第 1,2 部的使用

实验八 51系列单片机IIC_图文.ppt

实验八 51系列单片机IIC - 实验八 51系列单片机读写I2C总线 ? I2C总线是Philips公司推出的一种双向二线制总线,全称为 芯片间总线(Inter Integrate Circ...

IIC总线的使用EEPROM芯片的读写程序.doc

51单片机第二十二课 IIC 总线的使用 EEPROM 芯片的读写所属类别: 课

单片机IIC总线协议_图文.ppt

总线要通 过总线仲裁,以决定由哪一台主机控制总线...“1”的模拟时序 : 二、典型信号模拟子程序 (1)...51单片机IO口模拟IIC总线... 12页 2下载券 IIC...

51单片机IO口线模拟IIC总线3部曲之第3部.txt

51单片机IO口线模拟IIC总线3部曲之第3部.txt12思念是一首诗,让你在普

51单片机IO口线模拟IIC总线3部曲之第2部.doc

(SCL_ON) sbit SCL = P1^6; // 模拟 I2C 时钟控制位,移植时请修改此处...基于51单片机的IIC总线控... 5页 2下载券 喜欢此文档的还喜欢 51...

51单片机模拟双击IIC通讯.doc

() //启动 I2C 总线 { sda = 1; delay(); scl = 1; delay(); sda ...基于软件模拟的51单片机... 4页 1下载券 51单片机IO口线模拟IIC总... ...

如何对AT24C02编写驱动程序IIC总线协议剖析_图文.ppt

如何对AT24C02编写驱动程序IIC总线协议剖析_中职中专_职业教育_教育专区。...8.2 80C51单片机I2C串行总线器件的接口 8.2.1 总线数据传送的模拟主机可以...

GY电子罗盘51单片机IIC程序.doc

GY电子罗盘51单片机IIC程序 - // GY-26 IIC 测试程序 //

51单片机 IIc总线24c02 08 16 系列存储芯片开机自加.txt

51单片机 IIc总线24c02 08 16 系列存储芯片开机自加 - #inc