结果输出到LCD1602显示总是"hhhhhh"
main.c
void main(void)
{
bit ack;
uchar str[10] = "hello";
uchar str1[10];
lcd_init();
ack = iic_write_page(0x20,str,6);
lcd_write_char(2,16,(uchar)ack+'0');
iic_read_page(0x20,str1,6);
lcd_write_string(1,1,str1);
while(1);
}
at24c02.c部分程序
//顺序写
bit iic_write_page(uchar addr,uchar *sdat,uchar len)
{
bit ack;
uchar i = 0;
iic_start(); //起始信号
ack = iic_writeData(0xa0); //写器件地址,表明写操作
if(ack == 1) //应答检测
{
iic_stop();
return ack;
}
ack = iic_writeData(addr); //首地址
if(ack == 1) //应答检测
{
iic_stop();
return ack;
}
while(i < len)
{
ack = iic_writeData(*(sdat+i)); //写数据
if(ack == 1) //应答检测
{
iic_stop();
return ack;
}
i++;
// delay_1ms(5);
}
iic_stop();
delay_1ms(20);
return 0;
}
//顺序读
bit iic_read_page(uchar addr,uchar *p,uchar len)
{
uchar ack,dat,i = 0;
iic_start(); //起始信号
ack = iic_writeData(0xa0); //写器件地址
if(ack == 1) //应答检测
{
iic_stop();
return ack;
}
ack = iic_writeData(addr); //写内存首地址
if(ack == 1) //应答检测
{
iic_stop();
return ack;
}
iic_start(); //起始信号
ack = iic_writeData(0xa1); //写器件地址,表明读操作
if(ack == 1) //应答检测
{
iic_stop();
return ack;
}
while(i < len)
{
dat = iic_readData();
*(p+i) = dat;
iic_ack();
i++;
//delay_1ms(5);
}
iic_nack();
iic_stop();
delay_1ms(20);
return 0;
}
请高手们帮我指点迷津!!谢谢
51单片机AT24c02顺序读写问题
答案:1 悬赏:20 手机版
解决时间 2021-02-05 16:33
- 提问者网友:那叫心脏的地方装的都是你
- 2021-02-05 01:11
最佳答案
- 五星知识达人网友:北方的南先生
- 2021-02-05 02:40
写进去后延时等待至少10ms才能读。
24C02固化数据至少要8ms。
24C02固化数据至少要8ms。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯