找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1484|回复: 11
打印 上一主题 下一主题
收起左侧

求助,下边程序只要添加dat_code[],数码管就无法正常显示 求解?

[复制链接]
跳转到指定楼层
楼主
ID:1017989 发表于 2022-8-14 06:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include"public.h"
#include"smg.h"
#include"ds18b20.h"

void main()
{
        int temp_temperture=0;
        uchar temp_buff[6];
        uchar ds18b20_init(void);    //初始化 根据返回值判断 DS18B20是否在线
        while(1)
        {
                 temp_temperture=125.23*100;
                if(temp_temperture<0)
                {
                        temp_buff[0]=0x40;
                }
                else temp_buff[0]=0x00;                                                 

                temp_buff[1]=dat_code[temp_temperture%10];                //个位
                temp_buff[2]=dat_code[temp_temperture%100/10];                //十位
                temp_buff[3]=dat_code[temp_temperture%1000/100];            //百位         加小数点
                temp_buff[4]=dat_code[temp_temperture%10000/1000];                //千位
                temp_buff[5]=dat_code[temp_temperture/10000];

                display(1,temp_buff[1]);
                display(2,temp_buff[2]);
                display(3,temp_buff[3]);
                display(4,temp_buff[4]);
                display(5,temp_buff[5]);
                display(6,temp_buff[0]);
        }
}





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:332444 发表于 2022-8-14 10:44 | 只看该作者
盲人摸象还是管中窥豹?
回复

使用道具 举报

板凳
ID:404160 发表于 2022-8-14 11:39 | 只看该作者
dat_code[temp_temperture%10]应该是dat_code[temp_temperture]%10。下面同理
回复

使用道具 举报

地板
ID:155507 发表于 2022-8-14 13:02 | 只看该作者
你有资料我们没有,你有原理图我们没有,你有模块化程序我们没有。就你那两句描述,怎么帮你

你这个程序不完整,没法给你看是哪里出问题了!
回复

使用道具 举报

5#
ID:824490 发表于 2022-8-14 17:09 | 只看该作者
第8行:
uchar ds18b20_init(void);    //初始化 根据返回值判断 DS18B20是否在线
是什么鬼?
回复

使用道具 举报

6#
ID:824490 发表于 2022-8-14 17:26 来自手机 | 只看该作者
飞云居士 发表于 2022-8-14 11:39
dat_code[temp_temperture%10]应该是dat_code[temp_temperture]%10。下面同理

你确定?
回复

使用道具 举报

7#
ID:883242 发表于 2022-8-14 19:59 | 只看该作者
飞云居士 发表于 2022-8-14 11:39
dat_code[temp_temperture%10]应该是dat_code[temp_temperture]%10。下面同理

这一句显然楼主是对的,你是错的。
回复

使用道具 举报

8#
ID:161164 发表于 2022-8-14 22:31 | 只看该作者
display函数是怎么写的?
回复

使用道具 举报

9#
ID:264021 发表于 2022-8-19 21:45 | 只看该作者
uchar ds18b20_init(void);   把括号里的void去掉就行了
回复

使用道具 举报

10#
ID:883242 发表于 2022-8-19 23:37 | 只看该作者
单片机学习习 发表于 2022-8-19 21:45
uchar ds18b20_init(void);   把括号里的void去掉就行了

你的回复毫无道理啊!
回复

使用道具 举报

11#
ID:451718 发表于 2022-8-20 12:58 | 只看该作者
temp_buff[4]=dat_code[temp_temperture%10000/1000];                //千位
temp_buff[5]=dat_code[temp_temperture/10000];


temp_buff[]  是 int 类型吧?  你把int类型来除以10000。  大概率是这里卡住了。 尝试把 上面两句注释掉试试看看。
回复

使用道具 举报

12#
ID:59202 发表于 2022-8-25 15:01 | 只看该作者
楼主只是说数码管无法正常显示,是显示不出来吗?还是显示的和自己预想的不一样,从给出的程序看,除
temp_temperture=125.23*100;这句有取值范围的问题(temp_temperture是int值,而125.23是浮点数,但这里编译器可以隐式转换过去),整个主程序应该可以编译过去,楼主要想搞清楚问题所在还是要把情况再说清楚些
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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