找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1330|回复: 9
收起左侧

单片机+LCD为什么显示不了小数点?

[复制链接]
ID:913310 发表于 2021-12-4 09:26 | 显示全部楼层 |阅读模式
if(L>=100)
        {
                  write_com(0x80+0x40+0x09);
                  write_data(((L*10)/1000)+0x30);    //百
                  write_data(((L*10)%1000/100)+0x30);  //十
                  write_data(((L*10)%100/10)+0x30);     //个
                  write_data(46);           //点
                  write_data(((L*10)%10)+0x30);
}
                else if(L>=10 && L<100)
                {
                  write_com(0x80+0x40+0x09);
                  write_data((L*10/100)+0x30);  //十
                  write_data((L*10%100/10)+0x30);     //个
                  write_data(46);           //点
                  write_data((L*10%10)+0x30); //小数位1
}
                else if(L>=0 && L<10)
                {
                  write_com(0x80+0x40+0x09);
                        write_data((L*10/10)+0x30);  //个
                        write_data(46);           //点
                  write_data((L*10%10)+0x30);     //小数位1
}

回复

使用道具 举报

ID:913310 发表于 2021-12-4 09:31 | 显示全部楼层
比如只能显示十位数,12.0的数字,没有小数位
回复

使用道具 举报

ID:908826 发表于 2021-12-4 10:55 | 显示全部楼层
我记得1602有专门显示字符的函数哎。我看可能太久没玩记错了。
回复

使用道具 举报

ID:913310 发表于 2021-12-4 11:01 | 显示全部楼层
13205495918 发表于 2021-12-4 10:55
我记得1602有专门显示字符的函数哎。我看可能太久没玩记错了。

是有的,但是我的意思是直接判断它的数字,然后我就知道在哪里显示,小数点位置我是确定的,就小数点位置后面不显示,就很尬
回复

使用道具 举报

ID:508718 发表于 2021-12-4 16:00 | 显示全部楼层
你这段代码看不出啥呀。
不显示小数点以后的数字还得看你的驱动代码是怎么写的。
回复

使用道具 举报

ID:913310 发表于 2021-12-6 00:06 来自手机 | 显示全部楼层
logan0279 发表于 2021-12-4 16:00
你这段代码看不出啥呀。
不显示小数点以后的数字还得看你的驱动代码是怎么写的。

比如哪里的驱动代码?我做的是超声波测距
回复

使用道具 举报

ID:213173 发表于 2021-12-6 05:40 | 显示全部楼层
shankmorder 发表于 2021-12-4 11:01
是有的,但是我的意思是直接判断它的数字,然后我就知道在哪里显示,小数点位置我是确定的,就小数点位置 ...

  1.         unsigned char i;
  2.     unsigned char dis_buf[5];

  3.         L*=10;
  4.         if(L%10==0)//没有小数
  5.         {
  6.                 if(L>=1000)
  7.                 {
  8.                         dis_buf[0]=L/1000%10+'0';
  9.                         dis_buf[1]=L/100%10+'0';
  10.                         dis_buf[2]=L/10%10+'0';
  11.                         dis_buf[3]=' ';
  12.                         dis_buf[4]=' ';
  13.                 }
  14.                 else if(L>=100 && L<1000)
  15.                 {
  16.                         dis_buf[0]=L/100%10+'0';
  17.                         dis_buf[1]=L/10%10+'0';
  18.                         dis_buf[2]=' ';
  19.                         dis_buf[3]=' ';
  20.                         dis_buf[4]=' ';
  21.                 }
  22.                 else if(L>=10 && L<100)
  23.                 {
  24.                         dis_buf[0]=L/10%10+'0';
  25.                         dis_buf[1]=' ';
  26.                         dis_buf[2]=' ';
  27.                         dis_buf[3]=' ';
  28.                         dis_buf[4]=' ';
  29.                 }
  30.         }
  31.         else //有小数
  32.         {
  33.                 if(L>=1000)
  34.                 {
  35.                         dis_buf[0]=L/1000%10+'0';
  36.                         dis_buf[1]=L/100%10+'0';
  37.                         dis_buf[2]=L/10%10+'0';
  38.                         dis_buf[3]='.';
  39.                         dis_buf[4]=%10+'0';
  40.                 }
  41.                 else if(L>=100 && L<1000)
  42.                 {
  43.                         dis_buf[0]=L/100%10+'0';
  44.                         dis_buf[1]=L/10%10+'0';
  45.                         dis_buf[2]='.';
  46.                         dis_buf[3]=L%10+'0';
  47.                         dis_buf[4]=' ';
  48.                 }
  49.                 else if(L>=10 && L<100)
  50.                 {
  51.                         dis_buf[0]=L/10%10+'0';
  52.                         dis_buf[1]='.';
  53.                         dis_buf[2]=L%10+'0';
  54.                         dis_buf[3]=' ';
  55.                         dis_buf[4]=' ';
  56.                 }
  57.         }
  58.         write_com(0x80+0x40+0x09);
  59.         for(i=0;i<5;i++)
  60.                 write_data(dis_buf[i]);
复制代码
回复

使用道具 举报

ID:913310 发表于 2021-12-7 10:30 | 显示全部楼层

你的回复很好的,谢谢你,就是我这个还是解决不了
回复

使用道具 举报

ID:313048 发表于 2021-12-7 10:44 | 显示全部楼层
shankmorder 发表于 2021-12-7 10:30
你的回复很好的,谢谢你,就是我这个还是解决不了

你先试试其他特殊的字符是否能显示先,如果可以的话在看是不是你程序哪里出问题
回复

使用道具 举报

ID:965189 发表于 2021-12-7 11:40 | 显示全部楼层
12864的点是:0x2E。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表