第二张加了延时,读出和写入数据一致0x19(25) |
|
楼主的意思是存放的数据是25,但读出来的数据是255,而不是25。 我用proteus简单仿真了I2C器件(没接数码管),发现从I2C读出的数据为0xFF(即255)。 试了多次发现,在主函数里对I2C读写操作太快,以至于无法稳定的读出25(0x19)(具体原因不清楚)。 你可以在 AT24C02_Write(1,num); 和 display_num = AT24C02_Read(1); 这两句后面都加个延时 Delay(100); 这样就可以从I2C里面正确读出数据了。但我没接数码管,不知道数码管上能不能正常显示。 后面我贴两个图,你看看,希望能有帮助。 如果没看到图的话,就是审核没通过 |
uchar num = 25; //存放数据 display_num 数据类型最大就是255 uchar是8位的,占一个寄存器, 无符号字符型,范围(0-255) unsigned char的取值范围是0-255 char是有长度的,你好好看看书,会有详细的解释 |