OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2602|回复: 12

有人帮忙讲下这串代码的执行结果吗,谢谢

[复制链接]

9

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2018-3-28
在线时间
16 小时
发表于 2018-5-19 20:24:48 | 显示全部楼层 |阅读模式
1金钱
//按指定位置显示一个字符  LCD显示字符
//Y取值:0或者1

void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
        Y &= 0x1;
        X &= 0xF; //限制X不能大于15,Y不能大于1
        if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
        X |= 0x80; //算出指令码
        Lcd1602_Write_Cmd(X); //发命令字
        Lcd1602_Write_Data(DData); //发数据
}



然后这是这个函数再程序里用的时候
       
        temp1 = (uint32)result;

        aa=        temp1/10000;
        DisplayOneChar(0,1,aa+0x30);
       
        bb=        (temp1%10000)/1000;
        DisplayOneChar(1,1,bb+0x30);
       
        cc=(temp1%1000)/100;
        DisplayOneChar(2,1,cc+0x30);
       
        dd=        (temp1%100)/10;
        DisplayOneChar(3,1,dd+0x30);
       
        ee=temp1%10;
        DisplayOneChar(4,1,ee+0x30);
       
        LcdShowStr(6,1," mA");



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-5-19 20:27:09 | 显示全部楼层
就是把result显示出来,他处理的太麻烦了
回复

使用道具 举报

9

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2018-3-28
在线时间
16 小时
 楼主| 发表于 2018-5-19 20:29:16 | 显示全部楼层
其实这串代码是用LCD1602显示出单片机ADC采集到的电压以及电流的数值,但是这串代码烧进去后,LCD显示出的都是DisplayOneChar函数的第三个参数(例如其中有一个是aa+0x30)的最后一位0。不知道为什么,可能因为我看不到这个显示函数
回复

使用道具 举报

9

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2018-3-28
在线时间
16 小时
 楼主| 发表于 2018-5-19 20:30:05 | 显示全部楼层
于傍晚 发表于 2018-5-19 20:29
其实这串代码是用LCD1602显示出单片机ADC采集到的电压以及电流的数值,但是这串代码烧进去后,LCD显示出的 ...

看不懂这个显示函数
回复

使用道具 举报

9

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2018-3-28
在线时间
16 小时
 楼主| 发表于 2018-5-19 20:31:13 | 显示全部楼层
emmmm,有谁可以帮讲下怎么实现吗
回复

使用道具 举报

9

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2018-3-28
在线时间
16 小时
 楼主| 发表于 2018-5-19 20:32:08 | 显示全部楼层
贴完另一个函数吧
/*************************************************************
** 函数名称:CS5463_GetCurrentRMS
** 函数功能:读取电流有效值函数
** 函数参数:无
** 创建时间:2009-9-15
** 第一次修改时间:无
**************************************************************/
static void CS5463_GetCurrentRMS(void)
{
        fp32 G = 0.5,result;
        uint32 temp1;
        uint8 temp,i,j;
        CS5463ReadReg(REG_IRMSR,RX_Buff);                   //读取电流有效值
        //SndCom1Data(RX_Buff,3);
       
        i = 0;
        result = 0;
        while(i<3)
        {
                temp = RX_Buff[i];                //  读写缓冲区?                
                j = 0;
                while(j<8)
                {
                        if(temp&0x80)
                        {
                                result += G;       
                        }
                        temp <<= 1;
                        j++;
                        G = G/2;       
                }
                i++;
        }
        result = result*CS5463_IScale;//I_Coff;                                                //计算电流值 暂时不用
        result *= 1000;                                                                //单位mA(毫安)  12345ma
       
        temp1 = (uint32)result;

        aa=        temp1/10000;
        DisplayOneChar(0,1,aa+0x30);
       
        bb=        (temp1%10000)/1000;
        DisplayOneChar(1,1,bb+0x30);
       
        cc=(temp1%1000)/100;
        DisplayOneChar(2,1,cc+0x30);
       
        dd=        (temp1%100)/10;
        DisplayOneChar(3,1,dd+0x30);
       
        ee=temp1%10;
        DisplayOneChar(4,1,ee+0x30);
       
        LcdShowStr(6,1," mA");

}
回复

使用道具 举报

9

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2018-3-28
在线时间
16 小时
 楼主| 发表于 2018-5-19 20:42:20 | 显示全部楼层
275891381 发表于 2018-5-19 20:27
就是把result显示出来,他处理的太麻烦了

关键是LCD上显示的全是0,没有真正显示显示出来,感觉这代码哪个地方错了吧
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-5-19 20:48:17 | 显示全部楼层
于傍晚 发表于 2018-5-19 20:42
关键是LCD上显示的全是0,没有真正显示显示出来,感觉这代码哪个地方错了吧

串口打印下result看看这个值是不是0
回复

使用道具 举报

9

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2018-3-28
在线时间
16 小时
 楼主| 发表于 2018-5-19 21:03:57 | 显示全部楼层
275891381 发表于 2018-5-19 20:48
串口打印下result看看这个值是不是0

......呃,其实就是因为用串口打印出来,它总是发送0,所以才想用LCD显示出来的
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-5-19 21:52:38 | 显示全部楼层
于傍晚 发表于 2018-5-19 21:03
......呃,其实就是因为用串口打印出来,它总是发送0,所以才想用LCD显示出来的

那就是上面的采集过程代码不对吧
回复

使用道具 举报

12

主题

129

帖子

0

精华

高级会员

Rank: 4

积分
951
金钱
951
注册时间
2018-4-5
在线时间
71 小时
发表于 2018-5-20 11:23:57 | 显示全部楼层
应该是数据读取出错,导致数据读取出来的值为0
保守秘密,守望共济,等价交换,尊重知识,探求真知。
回复

使用道具 举报

7

主题

188

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
385
金钱
385
注册时间
2018-7-19
在线时间
126 小时
发表于 2018-7-27 10:35:58 | 显示全部楼层
串口都出0了,还不想看一下result还显示到液晶..
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-7-27 11:01:06 | 显示全部楼层
调试呀...何必显示到屏幕上  何必串口打印...根据你的描述看  应该是ADC没配置好或者没有正确运行,排查一下问题吧
猪猪熊呢?
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 14:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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