DS18B20代码问题

2019-07-15 08:59发布

DS18B20测温和超声波测距程序中的问题

DS18B20测温中,测得的数据需要加0x30,超声波测距程序中不需要加,用的同一个液晶,
为什么,谢谢



4610b912c8fcc3ce6effeeea9945d688d43f202f.jpg
e824b899a9014c086f2b0f7c017b02087af4f4d2.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
tyyhmtyyhm
1楼-- · 2019-07-15 16:05
李雷 发表于 2018-1-18 09:54
你这个太片面了,没有看到LCD12864_SCharDisplay函数中是怎么处理的,没办法判断。
另外测距读回的数据是否已经做了相应的处理(这个可能性很小,但也不排除),这是要看程序和对应的手册的。

/********************************************************
* 函 数 名  : Lcd12864_SCharDisplay
* 函数功能        : 在12864上面书写8X16的数字
* 输    入  : Page, Column, cn
* 注    意  :注意与汉字显示的核心区别就是数字只占一个字节
* 微信公众号: AutoCodes
*********************************************************/
uchar Lcd12864_SCharDisplay(uchar Page, uchar Column, uchar *cn)
{
        uchar j, x1, x2, wordNum;
       
        if(Page > 7)  return 0;      //页坐标只能从0到7,大于则直接返回
        if(Column > 128)         return 0;  //列的坐标只能从0到127,大于则直接返回
       
  Page += 0xB0;                       //求取页坐标的值 不能放在while里面

        while (*cn != '')                 //人为设置结束显示标志
        {       
                LcdSt7565_WriteCmd(Page);    //设置页坐标

                x1 = (Column >> 4)& 0x0F;       //先取出高4位  注释1
                x2 = Column & 0x0F;             //取低四位
                LcdSt7565_WriteCmd(0x10 + x1);  //设置列坐标 高4
                LcdSt7565_WriteCmd(0x00 + x2);        //           低4

                for (wordNum=0; wordNum<100; wordNum++) //50改为100,字符库比较增大
                {
                    //--查询要写的数字在字库中的位置--//
                        if (CN8CHAR[wordNum].Index[0] == *cn)  //每个数字内码只占1个字节
                        {
                                for (j=0; j<16; j++) //写一个数字   
                                {               
                                        if (j == 8) //8X16用到两个页坐标,当大于等于8时,切换页坐标
                                        {
                                           LcdSt7565_WriteCmd(Page + 1);    //设置页坐标                       
                                                LcdSt7565_WriteCmd(0x10 + x1);   //高4位 设置列坐标
                                                LcdSt7565_WriteCmd(0x00 + x2);         //低4位
                                        }
                                        LcdSt7565_WriteData(CN8CHAR[wordNum].Msk[j]);
                                }
                                Column += 8; //下一个数字的新的列地址
                                break;  //我们理解:一旦字库中找到字符,余下字库不用再找
                        }  
                }        
                cn += 1;
        }       
        return 1;
}
这是液晶显示的程序
勇哥-lzu
2楼-- · 2019-07-15 19:07
温度转换为字符的程序,只是将整数转化成了字符串,没有进行显示;把你的运行结果和使用TempBuffer显示的地方发一下
tyyhmtyyhm
3楼-- · 2019-07-15 21:46
 精彩回答 2  元偷偷看……
tyyhmtyyhm
4楼-- · 2019-07-16 01:38
欢迎关注微信公众号:依法编程
获取更多资料!

一周热门 更多>