如何实现双单片机iic通信模拟iic通信?

21ic官方微信-->
如何用IO口模拟I2C来实现两个STC单片机之间的通讯,求C语言写法
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
由于串口做了其他用处,所以想到用IO口模拟I2C通讯的方式来实现两个STC系列的单片机之间的通讯,STC官方下载的例程都是汇编的,想用C语言的,主机的之前用过,主要是从机的,求各位大侠能够指教
初级技术员, 积分 97, 距离下一级还需 3 积分
初级技术员, 积分 97, 距离下一级还需 3 积分
初级技术员, 积分 97, 距离下一级还需 3 积分
初级技术员, 积分 97, 距离下一级还需 3 积分
只是不用模拟I2C总线,就2根独立方向的脉冲通讯就可以了。速度可以做的很高的。我以前做的就一根IO加GND实现1M左右的通讯。 一根线也可以实现双向通讯,还带通讯仲裁。
资深技术员, 积分 308, 距离下一级还需 192 积分
资深技术员, 积分 308, 距离下一级还需 192 积分
资深技术员, 积分 308, 距离下一级还需 192 积分
资深技术员, 积分 308, 距离下一级还需 192 积分
智能卡就是一根线
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
我有&&嘿嘿
IO模拟I2C,从机很容易丢数据
因为SCK需要一直检测,如果MCU错过了,就丢一大串了
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
实习生, 积分 33, 距离下一级还需 17 积分
你留个QQ或者邮箱给我,我把IO口模拟I2C的C语言的发给你参考下
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
你留个QQ或者邮箱给我,我把IO口模拟I2C的C语言的发给你参考下
能发给我参考一下吗?QQ:
技术总监, 积分 41062, 距离下一级还需 8938 积分
技术总监, 积分 41062, 距离下一级还需 8938 积分
技术总监, 积分 41062, 距离下一级还需 8938 积分
技术总监, 积分 41062, 距离下一级还需 8938 积分
从机难模拟
模拟UART还方便些
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
实习生, 积分 3, 距离下一级还需 47 积分
你留个QQ或者邮箱给我,我把IO口模拟I2C的C语言的发给你参考下
资深技术员, 积分 417, 距离下一级还需 83 积分
资深技术员, 积分 417, 距离下一级还需 83 积分
资深技术员, 积分 417, 距离下一级还需 83 积分
资深技术员, 积分 417, 距离下一级还需 83 积分
现在的MCU基本都有带IIC啊,锦锐MCU带IIC,带UART,带12位的ADC,带PWM,带IAP/ISP,带LCD/LED驱动,带4-20个触摸按键,欢迎了解
中级技术员, 积分 157, 距离下一级还需 143 积分
中级技术员, 积分 157, 距离下一级还需 143 积分
中级技术员, 积分 157, 距离下一级还需 143 积分
中级技术员, 积分 157, 距离下一级还需 143 积分
能发给我参考一下吗?QQ:
技术达人, 积分 8935, 距离下一级还需 1065 积分
技术达人, 积分 8935, 距离下一级还需 1065 积分
技术达人, 积分 8935, 距离下一级还需 1065 积分
技术达人, 积分 8935, 距离下一级还需 1065 积分
从机难模拟。
芯片没有i2C一般都有spi吧?
高级工程师, 积分 7483, 距离下一级还需 517 积分
高级工程师, 积分 7483, 距离下一级还需 517 积分
高级工程师, 积分 7483, 距离下一级还需 517 积分
高级工程师, 积分 7483, 距离下一级还需 517 积分
本帖最后由 autopccopy 于
19:59 编辑
I2C 模拟主机访问24CXX我也用过,从机没玩过。
STC官网有3线的通讯C例程:
但若选自带IIC接口的STC8系列单片机,则有官方IIC的例程:
本帖子中包含更多资源
才可以下载或查看,没有帐号?
初级技术员, 积分 69, 距离下一级还需 31 积分
初级技术员, 积分 69, 距离下一级还需 31 积分
初级技术员, 积分 69, 距离下一级还需 31 积分
初级技术员, 积分 69, 距离下一级还需 31 积分
字节搞个通讯逻辑也可以,不一定非要IC2
扫描二维码,随时随地手机跟帖
技术新星奖章
人才类勋章
时间类勋章
核心会员奖章
等级类勋章
坚毅之洋流
发帖类勋章
时间类勋章
技术导师奖章
人才类勋章
荣誉元老奖章
等级类勋章
技术领袖奖章
人才类勋章
时间类勋章
沉静之湖泊
发帖类勋章
无冕之王奖章
等级类勋章
奔腾之江水
发帖类勋章
您需要登录后才可以回帖
热门推荐 /3【图片】51单片机模拟IIC通信问题 四处提问无人解决_单片机吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:148,876贴子:
51单片机模拟IIC通信问题 四处提问无人解决收藏
开始代码是自己根据书写的,后来逐步改到和书中代码一样也不行各个函数的代码都一样,时序也一样起初的问题是数码管没有显示,卡在了等待应答语句处后来经过CSDN大神提醒将延时改为for语句,现在数码管可以显示。但是数码管始终显示的是数字6.5,不管我怎么改写入的数据和地址都不行PS:复制光盘中的代码可以运行,硬件应该没有问题下面代码中delay()中的空语句改为for循环,其他不变真心求解,这个问题已经困了很长时间了
同步整流升压芯片,小封装升压芯片,大电流升压芯片,免费提供样品及DEM板测试,快充3V升12V/1.5A升压方案 免费提供样品板联系:
每一个人都会经历这个阶段,总以为没有错,就是找不到错
是不是延时函数有问题,写完一个字节数据要延时1ms
你的程序我没看,但是从你说的问题来看,我赞成2楼的说法.我也经常那样,去看看郭老师的例子吧,记得加上一段等待应答延时语句,过了时间就不等待应答了。
我用郭天祥的源程序也跑不起来。因为从主函数跳到延迟函数需要1ms的时间,早就超了10us了。。可以include intrins.h里面有个_nop_();。12m的晶振延时准确1us。用define 把NOP定义为_nop_();_nop_();.....(8个,在一行)。到时候直接用NOP延迟(可以不用分号,因为会自动把NOP替换为8个_nop_();再编译。
试试在启动信号函数里最后加上一句代码scl=0
我有这个程序,仿真完全能够通过,需要的话,来找我,扣
IIC写的话要最少5MS。就是在主函数里面写一个数据要等那么长的时间才可以读。。
个人觉得应该是应答函数出了错,void Responce(){while(sda==1&&k&100)
写函数好像有问题,那个CY是什么?还有,没看到应答函数   --电工初学者关注一下电工学习吧和朝阳电工吧,有学习资料
用逻辑分析仪测试一下,调试程序的神器
我遇到了同样的问题,郭天祥的程序跑不起来,如果楼主现在解决了问题请戳我
登录百度帐号51单片机 模拟IIC通信
[问题点数:50分,结帖人f27ny105t5123]
51单片机 模拟IIC通信
[问题点数:50分,结帖人f27ny105t5123]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2014年7月 硬件/嵌入开发大版内专家分月排行榜第二
2013年10月 硬件/嵌入开发大版内专家分月排行榜第三2013年6月 硬件/嵌入开发大版内专家分月排行榜第三2013年3月 硬件/嵌入开发大版内专家分月排行榜第三
2014年7月 硬件/嵌入开发大版内专家分月排行榜第二
2013年10月 硬件/嵌入开发大版内专家分月排行榜第三2013年6月 硬件/嵌入开发大版内专家分月排行榜第三2013年3月 硬件/嵌入开发大版内专家分月排行榜第三
2014年7月 硬件/嵌入开发大版内专家分月排行榜第二
2013年10月 硬件/嵌入开发大版内专家分月排行榜第三2013年6月 硬件/嵌入开发大版内专家分月排行榜第三2013年3月 硬件/嵌入开发大版内专家分月排行榜第三
2014年7月 硬件/嵌入开发大版内专家分月排行榜第二
2013年10月 硬件/嵌入开发大版内专家分月排行榜第三2013年6月 硬件/嵌入开发大版内专家分月排行榜第三2013年3月 硬件/嵌入开发大版内专家分月排行榜第三
匿名用户不能发表回复!|用51单片机模拟IIC通信
14:18:29来源: eefocus 关键字:&&
在 之前的MCS-51系列单片机中内部没有IIC通信资源,所如果要想用实现IIC通信,就只能通过软件模拟其时序,这样也能实现IIC通信的功 能。如下程序是我用Protues仿真IIC通信的结果,希望对大家有用,非常希望有共同爱好的朋友,多给我提出些宝贵的意见,至诚感谢!这个是IIC的头文件,便于使用调用:#ifndef _IIC_H_#define _IIC_H_/***ucahr和uint 的宏定义很重要,否则下面的函数无法正常运行******/#define uchar unsigned char& &//定义uchar型数据为无符号型#define uint unsigned int&&& &//定义uint型数据为无符号型sbit SCL = P2^3;sbit SDA = P2^4;/***申明外部函数****/extern void delay_1ms(void);extern void IIC_Init(void);&&&//IIC初始化extern void Signal_Start(void);&&//IIC停止信号extern void Signal_Stop(void);&&&//IIC停止信号extern void Write_Byte(uchar wdata);//写一个字节数据函数extern uchar Read_Byte();//读一个字节数据函数extern void Write_Add(uchar add,uchar wdata,uchar comd);//向某个IIC器件写指令,地址和数据extern uchar Read_Add(uchar add,uchar comd);//向某个IIC器件写指令读某个地址里面的数据#endif以下是IIC通信的C语言源代码:#include#include#include"IIC.h"#define& uchar unsigned& char&#define& uint& unsigned& intvoid IIC_Init(void)//IIC初始化{&SDA = 1;&delay_1ms();&SCL = 1;&delay_1ms();}void Signal_Start(void)//IIC起始信号{&SDA = 1;&delay_1ms();&SCL = 1;&delay_1ms();&SDA = 0;&delay_1ms();&}void Signal_Stop(void)//IIC停止信号{&SDA = 0;&delay_1ms();&SCL = 1;&delay_1ms();&SDA = 1;&delay_1ms();&}void Respons(void)//答应信号{&uint i = 0;&SCL = 1;&delay_1ms();&while((SDA == 1)&&(i<=300))&i++;&SCL = 0;&delay_1ms();}void Write_Byte(uchar wdata){&uchar i,&mdata =&for(i=0;i<8;i++)&{&&mdata <<= 1;&&SCL = 0;&&delay_1ms();&&SDA = CY;&&delay_1ms();&&SCL = 1;&&delay_1ms();&&&}&SCL = 0;&delay_1ms();&SCL = 1;&delay_1ms();}uchar Read_Byte(){&uchar i,rdata = 0;&SCL = 0;&delay_1ms();&SCL = 1;&for(i=0;i<8;i++)&{&&SCL = 1;&&delay_1ms();&&rdata = (rdata<<1)|SDA;&&SCL = 0;&&delay_1ms();&}&}void Write_Add(uchar add,uchar wdata,uchar comd){&Signal_Start();//产生一个起始信号&Write_Byte(comd);&Respons();&&//等待答应&Write_Byte(add);&Respons();&&//等待答应&Write_Byte(wdata);&Respons();&&//等待答应&Signal_Stop();//产生一个终止信号}uchar Read_Add(uchar add,uchar comd){&&Signal_Start();&&&//产生一个起始信号&Write_Byte(comd);&Respons(); &&&&//等待答应&Write_Byte(add);&Respons();&&&&//等待答应&Signal_Start();&&&//再产生一个起始信号&Write_Byte(comd|0x01);&Respons(); &&&&//等待答应&tdata = Read_Byte();&Signal_Stop();&&&//产生一个终止信号&&&&&&&&}void delay_1ms(void)&& //误差 0us& 延时1ms{&&& uchar a,b,c;&&& for(c=1;c>0;c--)&&&&&&& for(b=142;b>0;b--)&&&&&&&&&&& for(a=2;a>0;a--);}
关键字:&&
编辑:什么鱼
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
微信扫一扫加关注 论坛活动 E手掌握
微信扫一扫加关注
芯片资讯 锐利解读
热门关键词
大学堂最新课程
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源
热门资源推荐
频道白皮书
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。SPI和IIC通信方式,用两个51单片机模拟的话哪个好写呢??为什么??_百度知道
SPI和IIC通信方式,用两个51单片机模拟的话哪个好写呢??为什么??
是不是用两个51不能模拟单片机和AT24Cxx的通信方式啊~~
我有更好的答案
总体来说,SPI比IIC简单,容易模拟,两个引脚就可以,时钟自己定义,挺方便。IIC协议稍微比SPI复杂点。
采纳率:37%
找个别人写的,再一边看程序,一边看协议,理解之后,再自己根据协议来独立编一个,这样容易上手学起来也快
为您推荐:
其他类似问题
51单片机的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 stc单片机iic 的文章

 

随机推荐