C程序理解 字节转十进制字符串格式 51单片机I2C与E2PROM

2019-07-15 10:01发布

各位大神帮帮忙,,,下面是E2PROM单字节读写操作,主要想问下C语言相关知识,单个字节是如何转十进制字符串格式的(就是main函数里面加问好注释的那里)?例程看不懂,网上搜索了也是一知半解,谁能帮忙解释一下吗,,,小白入门 望指教


#include<reg52.h>

extern void InitLcd1602();
extern void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str);
extern void I2CStart();
extern void I2CStop();
extern unsigned char I2CReadNAK();
extern bit I2CWrite(unsigned char dat);
unsigned char E2ReadByte(unsigned char addr);
void E2WriteByte(unsigned char addr,unsigned char dat);

void main()
{
    unsigned char dat;
    unsigned char str[10];

    InitLcd1602();
    dat = E2ReadByte(0x02);           //读取E2PROM上指定地址中的一个字节
    str[0] = (dat/100)+'0';           //***转换为十进制字符串格式(???如何转换的)
    str[1] = (dat/10%10)+'0';
    str[2] = (dat%10)+'0';
    str[3] = '';
    LcdShowStr(0,0,str);          //显示在液晶上
    dat++;                          //将其值加1
    E2WriteByte(0x02,dat);          //再写回到原地址中

    while(1);
}

//读取E2PROM中的一个字节,addr为字节地址
unsigned char E2ReadByte(unsigned char addr)
{
    unsigned char dat;

    I2CStart();
    I2CWrite(0x50<<1);
    I2CWrite(addr);
    I2CStart();
    I2CWrite((0x50<<1)|0x01);
    dat = I2CReadNAK;
    I2CStop();

    return dat;
}
//向E2PROM中写入一个字节,addr为字节地址
void E2WriteByte(unsigned char addr,unsigned char dat)
{
    I2CStart();
    I2CWrite(0x50<<1);          //寻址器件,后续为写操作
    I2CWrite(addr);              //写入存储地址
    I2CWrite(dat);              //写入一个字节数据
    I2CStop();
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。