void point(uchar x,uchar y)
{
uchar y1,hang,lie,msb_data,lsb_data,temp=0x01
if(y1!=y)
{
msb_data=0
lsb_data=0
}
y1=y
if(y<32)
{
hang=0x80+y
lie=0x80
}
if(y>31)
{
hang=0x80+y-32
lie=0x88
}
if(y>63)//return
{
lcm_com(0x80)
_nop_()
hanzi("温度超出显示范轿扰围")
while(1)
flash()
}
lie=lie+x/16
if(x%16==0)
{
msb_data=0
lsb_data=0
}
if(x%16<8)
{
msb_data=msb_data|(temp<<(7-x%16))
lsb_data=0x00|lsb_data
}//保留以前的数据,把第x个点亮闹陪
if(x%16==8)
{
msb_data=msb_data|0x00
lsb_data=lsb_data|0x80
}
if(x%16>8)大于24小于32
{
msb_data=msb_data|0x00
lsb_data=lsb_data|(temp<<(15-x%16))
}
lcm_com(0x34)//扩闭弯旦充指令集
lcm_com(hang)
lcm_com(lie)
lcm_dat(msb_data)
lcm_dat(lsb_data)
lcm_com(0x36)//绘图显示开
}
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。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)