现在想仿照IIC实验实例来进行对温度值的写入和读取。就是按下KEY0进行数据存储,按下KEY2进行数据读取。程序如下,编译时没有显示错误和警告,但就是显示不出结果。
u8 Code[1];
#define SIZE 1
int main(void)
{
u8 key;
u16 i=0;
u8 datetemp[SIZE];
u16 adcx;
float temp;
float temperate;
float temperature;
Stm32_Clock_Init(9);//系统时钟设置
delay_init(72); //延时初始化
uart_init(72,9600); //串口1初始化
LED_Init(); //LED初始化
KEY_Init(); //按键初始化
LCD_Init(); //TFTLCD液晶初始化
AT24CXX_Init(); //IIC初始化
Adc_Init();
POINT_COLOR=RED;//设置字体为红色
while(AT24CXX_Check())//检测不到24c02
{
LCD_ShowString(60,50,"24C02 Check Failed!");
delay_ms(500);
LCD_ShowString(60,50,"Please Check! ");
delay_ms(500);
LED0=!LED0;//DS0闪烁
}
LCD_ShowString(60,50,"24C02 Ready!");
//显示提示信息
LCD_ShowString(60,70,"KEY0:Write KEY2:Read");
POINT_COLOR=BLUE;//设置字体为蓝色
while(1)
{
adcx=Get_Adc(ADC_CH0);
temp=(float)adcx*(3.3/4096);
temperate=temp;
temperate=68.75*temperate-77.50;
temperature=temperate;
Code[0]=temperature;
delay_ms(50);
key=KEY_Scan();
if(key==1)//KEY0按下,写入24C02
{
LCD_Fill(0,90,239,319,WHITE);//清除半屏
LCD_ShowString(60,90,"Start Write 24C02....");
AT24CXX_Write(0,(u8*)Code[0],SIZE);
LCD_ShowString(60,90,"24C02 Write Finished!");//提示传送完成
}
if(key==3)//KEY_UP按下,读取字符串并显示
{
LCD_ShowString(60,90,"Start Read 24C02.... ");
AT24CXX_Read(0,datetemp,SIZE);
LCD_ShowString(60,90,"The Data Readed Is: ");//提示传送完成
LCD_ShowString(60,110,datetemp);//显示读到的字符串
}
i++;
delay_ms(10);
if(i==20)
{
LED0=!LED0;//提示系统正在运行
i=0;
}
}
}
还请原子大哥和诸位大神帮忙看看。谢谢~