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();
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
hello_mcu
1楼-- · 2019-07-15 23:07
好不容易输入完,回帖后竟然是这么个格式,尴尬。
wulinwl
2楼-- · 2019-07-16 00:38
 精彩回答 2  元偷偷看……
hello_mcu
3楼-- · 2019-07-16 04:07
wulinwl 发表于 2017-8-4 09:47
解释的很好,好像ASCII码引用有误,‘1’在ASCII码里是31,‘I’在ASCII码里才是49。

哦,对,记错了。谢谢提醒。

一周热门 更多>