导航:首页 > 操作系统 > 单片机模拟iic

单片机模拟iic

发布时间:2022-09-11 09:28:00

① 51单片机模拟IIC总线问题

IIC的地址你可以自己定义的
在硬件上提供过IIC地址的你可以直接选择他的地址进行发送
像你这种情况的话可以自己定义地址:
假设你有两台或者以上的S3C2410,单片机作为主机,然后单片机发送数据,所有S3C接收(接收的前提是他的接收端口上获得IIC的开始信号,你可以选择利用中断进行检测),然后你在软件里可以预先设置好每台S3C的地址,即接收单片机的前8BIT,然后对照地址,一样的话就开始接收接下来的信息,没有就放弃这个通信,这样的话8BIT就可以控制256台S3C了

其实IIC也只是一种通信方式,你可以选择自己的协议,以IIC为基础,比如地址位选择16BIT甚至更多,如果从机是S3C这种32位的RAM9的话,数据位的传输可以32位的传。所谓的开始信号跟终止信号也只是双方默认的方式而已,就像是“点头YES,摇头NO”,你也可以选择相反的方式,只要两台通信的机子能懂就好。
不过最好是采用大家一起的,这样在软件移植的时候会有帮助,也方便别人看懂。当大家在某一领域都用一种方式的时候也就形成所谓的协议,比如TCP/IP,UART,IIC等等。

② 【关于51单片机的模拟IIC总线电路的上拉电阻】

单片机输出高电平的时候,基本没有输出电流的能力,上拉电阻,是用来辅助输出电流的。
4K7,在很多的说明材料中,都用了这个数值。
它应该是““为IIC器件提供所需要电流””的最合理数值。

③ C51单片机模拟IIC总线,应答函数的疑问

应答是接收设别自动产生的,不一定是从机。在IIC上除了开始,停止和重复开始外,所有数据都在在时钟的低电平变化的,也就是为高后,数据就应该稳定了。所以如果是模拟总线,应先有下降沿,再设为输入,然后读ACK,如果是从机的应答,是自动产生的,是作为数据通信正确的判断标志,为了可靠,是要判断的。主机的应答一般是程序控制的,如果要结束总线,可以给也可以不给应答;如果要继续读数据,就必须给出应答。

④ 51单片机IIC总线模拟

首先要声明的是,如果你使用I2C时序的话,一般来说只能实现I2C主器件。
如果有电平检测中断倒是有可能实现从模块,不过也会相当复杂的。

发送一个字节,跟发送多个字节其实没多大差别。

I2C时序首先执行开始时序,然后发送从模块地址还有读写命令
接着发送数据字节,如果你要发送多字节,就不要马上执行I2C结束时序,
继续发送你要数据,等数据发送完成后再执行结束时序。
当然,也要有响应信号的处理。

程序如下:
void sendstr(uchar addr)
{
start_i2c();
send_byte(addr);
reply();
send_byte(dat1);
reply();
send_byte(dat2);
reply();
send_byte(dat3);
reply();
stop_i2c();
}

篇幅有限,只能提供大致思路,各时序子程序还需自行思考。
希望对你有帮助。

⑤ 为什么单片机模拟IIC驱动SH1106刷新和显示慢呢

能把程序放上来! 这样可以帮你看看原因! 有时候不一定是IIC协议的问题。模拟的IIC虽然慢 但是速度也不至于肉眼可见的闪烁。

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

对于疑问1:for循环已经把数据从主器件发送到从器件,没错,后面加那几句是为了释放数据总线,这是芯片协议已经规定了的,为什么是scl=0;而sda=1呢,应该总线SCL与SDA都是线与关系,任意一个器件输出低电平,都使该总线的信号变低,你可能会这么想:为什么不是scl=1;delay();sda=1;delay();呢?那是因为当scl=1;sda=1;这是终止信号。对吧,这样写的话IIC将会停止工作。
对于疑问2:加这几句也一样,是芯片现已规定:无论是写数据还是读数据,写完读完之后需释放总线,for循环语句的意思是:
for(i=0;i<8;i++)
{
scl=1; //拉高时钟总线,开始读数据
delay();
k=(k<<1)|sda; // 将读取到的sda数据存放到k中,这里你可能有点无法理解,我举个例子:刚开始k=0x00(系统默认),当读取到的sda数据为1时,k=0x01;对吧,反之当读取到的sda数据为0时,k=0x00;
scl=0;// 读取完一个数据,拉低时钟总线
delay();
}
就这样循环8次,这样一个字节的数据就从主器件读到了从器件了。对吧。
如果那个释放总线你理解不了,你就记住,这是芯片协议规定,读完或写完都必须释放总线。iic协议都是如此。
希望能帮助到你。

⑦ 在89C51单片机中如何使用I/O口模拟IIC总

89C51中任何IO口都可以模拟IIC总线通讯,典型的应用就是DS18B20温度检测,AT24C02的存储等等。

⑧ 51单片机 iic 总线程序,用IO口模拟和用自带IIC口有什么不同

其实程序是一模一样的,唯一的区别是模拟IIC需要CPU运算,这样就增加了单片机的运算时间,而带IIC接口的单片机,程序还是需要的,但是IIC的运算通过集成在单片机里面的寄存器硬件电路来运算,就像定时器电路一样自己会运算,这样就不要cpu来运算过程了,从而节省了时间,使cpu运算的更快。当然这样就的多付出经济成本哦

⑨ 单片机模拟IIC总线通信的速率是标准还是快速还是高速模式最高速率能达到多大

I2C总线的工作速度分为 3 种版本:S(标准模式) 测量与控制场合;F(快速模式) ,速率为 400kb/s;Hs(高速模式) ,速率为 3.4Mb/s。
具体要用多快的速度这个要看你用的是什么器件了。找器件手册上面会有标明最高速率只要不超过最高速就行了。单片机一般是400K或以下的常用。

⑩ 单片机模拟IIC总线的应答信号问题

1.应答信号SDA是在SCL的上升沿变化为0的;
2.读操作的应答信号和写操作的应答信号都由从设备驱动。
可参考“I2C总线协议规范”,网上搜一下即可。

阅读全文

与单片机模拟iic相关的资料

热点内容
如来佛祖命令雷神去下界 浏览:854
新电脑管家下载好怎么解压 浏览:528
php获取接口数据 浏览:763
最后的命令 浏览:921
如何添加手机app桌面快捷图标 浏览:427
ui设计师与程序员 浏览:417
寿司pdf 浏览:828
pythonbg是什么 浏览:248
c数值算法程序大全 浏览:785
android整点报时 浏览:221
稀土pdf 浏览:536
单片机电子锁 浏览:596
通达信机智资金流指标公式源码 浏览:216
php安装xsl扩展 浏览:842
python如何使用help 浏览:367
上汽荣威app在哪里查询 浏览:903
冰柜压缩机温度108 浏览:720
阿里云邮smtp服务器地址 浏览:252
解压馆认知理解 浏览:239
为什么使用非官方服务器会封号 浏览:9