找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1056|回复: 4
收起左侧

单片机+LCD1602在想显示65535时会显示65135?

[复制链接]
ID:860840 发表于 2022-5-6 20:04 | 显示全部楼层 |阅读模式
我的LCD1602在想显示65535时会显示65135,
                                65435时会显示65035
不知道为啥,下面是程序
/**
* @brief  显示无符号数字
* @param  x 显示的行数 范围为1~2;
* @param  y 显示的列数 范围为1~40;但初始只显示前16列。
* @param  num 显示的数字 范围 0~65535
* @param  length 显示的数字长度  0~40 但初始只显示前16
* @retval 无
*/
void lcd1602_show_num(unsigned char x,y, unsigned int num, unsigned char length)
{
        unsigned char i=length;
        show_location(x,y);
        while(i)
        {
                lcd1602_w_data((num/(int)(pow(10,i-1)))%10+0x30);
                i--;
        }
}


/**
* @brief  写数据函数
* @param  dat 要写的数据
* @retval 无
*/
void lcd1602_w_data(unsigned char dat)
{
//        while(!check_busy());
        RS=1;
        RW=0;
        P0=dat;
        EN=1;
        _nop_ ();
        EN=0;        
        Delay(1);
}


回复

使用道具 举报

ID:94031 发表于 2022-5-7 10:45 | 显示全部楼层
程序有问题,给的信息不全不好判断。
回复

使用道具 举报

ID:883242 发表于 2022-5-7 10:48 | 显示全部楼层
pow是浮点类型啊!你必须忍受误差。
回复

使用道具 举报

ID:1012735 发表于 2022-5-8 16:40 | 显示全部楼层
把函数参数 “unsigned int num" 改成 unsigned long num
回复

使用道具 举报

ID:1026496 发表于 2022-5-15 22:20 | 显示全部楼层
void lcd1602_show_num(unsigned char x,y, unsigned int num, unsigned char length) 中y 缺少类型
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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