2019-07-15 08:59发布
李雷 发表于 2018-1-18 09:54 你这个太片面了,没有看到LCD12864_SCharDisplay函数中是怎么处理的,没办法判断。 另外测距读回的数据是否已经做了相应的处理(这个可能性很小,但也不排除),这是要看程序和对应的手册的。
最多设置5个标签!
/********************************************************
* 函 数 名 : 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;
}
这是液晶显示的程序
一周热门 更多>