请教12864(ST7920)液晶滚动显示的程序问题

请教12864(ST7920)液晶滚动显示的程序问题,第1张

7920只能驱动32路,12864为两改孝个7920控制,你旁厅想一个一个的卷动必须设置CS1,CS2,加入CS1上屏,CS2,下屏,你先控核启稿制CS1=0,CS2=1然后COM地址加一,32以后,CS2=0,CS1=1然后COM地址加一就搞定

/****************打点******************/

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。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/12272261.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存