由于51单片机没有IIc总线的协议,但是可以控制单片机模拟出来IIC的时序,从而与从器件进行数据传输的操作 总结:
模拟起始信号:scl在高电平期间(持续时间4us多),sda有一个从从高到低的跳变,且低电平要保持4us多
模拟停止信号:scl在高电平期间(持续时间4us多),sda有一个从从低到高的跳变,且高电平要保持4us多
模拟应答信号: scl在高电平期间(持续时间4us多), 先释放sda总线,检测从器件在scl高电平期间是否有低电平响应 单片机向从器件写字节:scl在低电平期间,让sda线上的数据变化,之后scl置高,数据保持稳定从器件接收数据 单片机从器件读字节:sda线先释放,scl低电平期间准备接收从器件的数据,置scl为高使数据稳定有效同时读取。 下面这个是验证从AT24C02中读出一个字节数据并送至发光二极管显示从而验证读出的数据是否正确。 首先当然是写一个字节到AT24C02芯片中,然后读出来。 原理图 AT24C02的A2,A1,A0我都接的是0,所以寻址时器件的地址为1010 0000,即0xa0 因为向AT24C02中写入的是0x00即 0000 0000,读出送至P1口,结果应该是发光二极管全点亮。 仿真如下:
|