扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
首先,I2C有2个重要的线,SDA数据线SCL时钟线,当总线上没有进行信息传送时,SDA和SCL都为高电平,我们称之为释放总线。开始传送信息时,要有一个开始信号,开始信号:定义为在SCL为高电平的时候,SDA从高电平拉低。
创新互联公司是一家专业提供江海企业网站建设,专注与成都网站建设、做网站、H5网站设计、小程序制作等业务。10年已为江海众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。
没有4位机制,有8位51单片机的汇编程序。还有一个C语言的,可以给你参考,这都是我项目中用到的程序。给你作个参考,在产品的实际工作中也很稳定。
因为开始读取完或者写完一组数据需要一个开始信号和一个终止信号,而这个信号就是数据线的上升下降沿。而后面数据线拉高的原因是为了能正确读取到数据,因为单片机如果是低电平外部器件很有可能不能拉高而一直读到低。
这种东西不要纠结,就是按照iic协议用单片机模拟了要求的时序,实属蛋疼,在实际设计中一般会选择硬件支持iic的芯片。这个就当成单片机C语言的练习就好了,完成的功能就是用单片机的IO口模拟了IIC的读写时序。
code是存储在单片机的flash里面,不是存在内存里面了。所以一般固定意义的数据,比如数码管的段码,一个图片的数据信息,都是用code定义,让这些数据放在flash里面,节省内存空间。
因为开始读取完或者写完一组数据需要一个开始信号和一个终止信号,而这个信号就是数据线的上升下降沿。而后面数据线拉高的原因是为了能正确读取到数据,因为单片机如果是低电平外部器件很有可能不能拉高而一直读到低。
所谓的开始信号跟终止信号也只是双方默认的方式而已,就像是“点头YES,摇头NO”,你也可以选择相反的方式,只要两台通信的机子能懂就好。不过最好是采用大家一起的,这样在软件移植的时候会有帮助,也方便别人看懂。
return(1);///4,为什么要写这句?--读取成功,返回1 --- 51 单片机具有《位操作》功能。就是说,它的变量,可以是一位二进制数字,其数值就是 0、1。
1、你这个例程应该是用io口模仿i2c,这里你没有给出sda的定义。我理解还有程序对其进行判断if(sda==1)输出编码‘1’else 输出编码‘0’。经过for循环8次就输出了一个完整的8bit二进制数。
2、首先,I2C有2个重要的线,SDA数据线SCL时钟线,当总线上没有进行信息传送时,SDA和SCL都为高电平,我们称之为释放总线。开始传送信息时,要有一个开始信号,开始信号 :定义为在SCL为高电平的时候,SDA从高电平拉低。
3、这么长的代码,反正我是懒得一点一点看啊,这个程序我原来写过,给你点建议啊,你的延时算什么?汇编学多了?延时长点没事,还有就是一点就是你最好拿示波器看看数据口和时钟口有没有波形输出。
4、读或者写入一个字节后,一般要加一段延时,最小要是2Ms。
5、这种东西不要纠结,就是按照iic协议用单片机模拟了要求的时序,实属蛋疼,在实际设计中一般会选择硬件支持iic的芯片。这个就当成单片机C语言的练习就好了,完成的功能就是用单片机的IO口模拟了IIC的读写时序。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流