标题: 这是DS 18B2的部分代码,想不明白为什么要|0x30,求各位大佬解答 [打印本页]

作者: wsxwsx    时间: 2020-4-4 16:14
标题: 这是DS 18B2的部分代码,想不明白为什么要|0x30,求各位大佬解答
et=cm&0x000f;
        disply[4]=st[et]|0x30;        //截取后四位,查表转换后,填入显示缓冲区
        et=cm>>4;                                             //去掉小数部分
          if(et>99)                                                //温度过百
          {
                  disply[0]='1';
                  et=et-100;
          }
        disply[1]=(et/10)|0x30;        //取温度整数
        disply[2]=(et%10)|0x30;
        stop=0;


这是DS 18B2的部分代码,想不明白为什么要|0x30,求各位大佬解答


作者: game灬boy    时间: 2020-4-4 19:31
把字符转换成ASCII码比如‘a’的ASCII码就是‘a’|0x30;或者‘a’|‘0’;
作者: xxpp2011    时间: 2020-4-4 20:34
按位或运算,00110000将st[et]第5、6位置1。
作者: sZhou    时间: 2020-4-4 21:04
0x30表示30是十六进制,0x是十六进制的开始符;;“|”是按位或运算符;;百位已经显示1了,十位个位就是取余再转16进制输出送达显存
作者: man1234567    时间: 2020-4-6 09:52
方便数字在1602屏上显示,可查相关说明书。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1