永发信息网

一个关于12864的显示问题,程序如下其中页左移1位和行*8是什么意思啊,看不懂,账号没什么悬赏分意思意思

答案:1  悬赏:0  手机版
解决时间 2021-03-15 20:09
  • 提问者网友:轻浮
  • 2021-03-14 21:04

void play16(uchar ch,uchar row,uchar page,uchar *adr)
{
uchar i;
choose12864(ch);
page=page<<1; //
row=row*8;
cmd_w12864(row+0x40);
cmd_w12864(page+0xb8);
for(i=0;i<16;i++)
{
dat_w12864(*(adr+i));
}
cmd_w12864(row+0x40);
cmd_w12864(page+0xb9);
for(i=16;i<32;i++)
{
dat_w12864(*(adr+i));
}
}
最佳答案
  • 五星知识达人网友:琴狂剑也妄
  • 2021-03-14 21:40
12864有左半屏和右半屏之分,它们是两个独立的64*64屏幕组合到一起的;
按汉字结构来定义,1个汉字16*16;,半个屏可以显示4*4个汉字;

按屏幕的物理结构来定义,半个屏幕分64行*64列;
由于屏幕每次只能接收8bit的数据,又将屏幕划分8行*8列;这里划分行也称为页(page 0-page 7),起始页地址为0xB8 ;这里划分的列,第一列地址为0x40;

输入汉字代码之前,需要定位;
page=page<<1;等号右边的page(按汉字来划分的) 取值0,1,2,3;当左移一位相对,等号左边的page(屏幕物理结构上)取值:0,2,4,6,这几个数正是你要选择输入汉字代码的行的起始位置;

row=row*8 ,等号右边的row的 取值应该0,2,4,6;必须为8的整数倍,是屏幕的物理结构规定的。你可以尝试将row的值为8,系统会默认回到0列,进行定位;

定位完成后,再进行汉字代码的输入,它输入都是有规律。
具体你还是要看12864的datasheet。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯