标题: 单片机C语言变量怎么一位一位的取出? [打印本页]

作者: yinnan128    时间: 2021-3-18 15:38
标题: 单片机C语言变量怎么一位一位的取出?
用下面的算法,LCD1602显示一个变量,按键按一次变量++,数值在99内显示正常,超过就显示乱码。比如按了123次,取十位的时候就是123/10=12.3这个运算就不对了,不知道应该怎么写公式
unsigned long MOS_JS;
unsigned char  MOS_jishu[]={};        MOS_JS=123456;
        MOS_jishu[0]=MOS_JS/100000+0x30;//取十万位
        MOS_jishu[1]=MOS_JS/10000+0x30;//取万位
        MOS_jishu[2]=MOS_JS/1000+0x30;//取千位
        MOS_jishu[3]=MOS_JS/100+0x30;//取百位
        MOS_jishu[4]=MOS_JS/10+0x30;//取十位
        MOS_jishu[5]=MOS_JS%10+0x30;//取个位





作者: 天ノ忆    时间: 2021-3-18 17:45
123/10=12.3????明明等于12好不好!
作者: 天ノ忆    时间: 2021-3-18 17:46
你应该把百位取余之后的数进行除10计算
作者: man1234567    时间: 2021-3-18 18:09
我是骑马来的,听人说骑马比走路要快,请问怎样可以找到马
作者: 张天师    时间: 2021-3-18 18:51
例如这样:
MOS_jishu[3]=(MOS_JS/100)%10+0x30;//取百位
MOS_jishu[4]=(MOS_JS/10)%10+0x30;//取十位
MOS_jishu[5]=MOS_JS%10+0x30;//取个位
作者: wulin    时间: 2021-3-18 20:25
        MOS_jishu[0]=MOS_JS/100000%10+0x30;//取十万位
        MOS_jishu[1]=MOS_JS/10000%10+0x30;//取万位
        MOS_jishu[2]=MOS_JS/1000%10+0x30;//取千位
        MOS_jishu[3]=MOS_JS/100%10+0x30;//取百位
        MOS_jishu[4]=MOS_JS/10%10+0x30;//取十位
        MOS_jishu[5]=MOS_JS%10+0x30;//取个位
                //以上方法耗时2.23ms,下面方法耗时1.15ms

                unsigned char i;
                long j;
                j=MOS_JS;//不改变MOS_JS原始数据
                for(i=6;i>0;i--)
                {
                        MOS_jishu[i-1]=j%10+'0';//由低位到高位保存
                        j/=10;
                }




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1