您的位置 首页 动态

st7920操控的12864打点

可以在任意位置打点了,在这里谢谢那些好心的人,把易于出现问题的地方给大家说明下,一定要仔细阅读DATESHEET,方便后人。1、打点位置…

能够在恣意方位打点了,在这里谢谢那些好意的人,把易于出现问题的当地给我们阐明下,一定要仔细阅读DATESHEET,便利后人。
1、打点方位的定位
2、读取当时显现的数据
3、或和移位,即从头写人的新数据
程序如下:
void GUI_Point(uchar x,uchar y,uchar flag)
{
uchar x_Dyte,x_byte; //界说列地址的字节位,及在字节中的哪1位
uchar y_Dyte,y_byte; //界说为上下两个屏(取值为0,1),行地址(取值为0~31)
Write_command(0x36); //绘图形式指令
/***X,Y坐标交换,即一般的X,Y坐标***/
x_Dyte=y/16; //计算在16个字节中的哪一个
x_byte=y&0x0f; //计算在该字节中的哪一位
y_Dyte=x/32; //0为上半屏,1为下半屏
y_byte=x&0x1f; //计算在0~31傍边的哪一行

Write_command(0x80+y_byte); //设定行地址(y坐标)
Write_command(0x80+x_Dyte+8*y_Dyte); //设定列地址(x坐标),并经过8*y_Dyte选定上下屏

Read_data();
GDRAM_hbit=Read_data(); //读取当时显现高8位数据
GDRAM_lbit=Read_data(); //读取当时显现低8位数据
delay_us(5);

if(flag==1)
{
Write_command(0x80+y_byte); //设定行地址(y坐标)
Write_command(0x80+x_Dyte+8*y_Dyte); //设定列地址(x坐标),并经过8*y_Dyte选定上下屏
delay_us(5);
if(x_byte<8) //判别其在高8位,仍是在低8位
{
Write_data(GDRAM_hbit|(0X01<<(7-x_byte))); //显现GDRAM区高8位数据
Write_data(GDRAM_lbit); //显现GDRAM区低8位数据
}
else
{
Write_data(GDRAM_hbit);
Write_data(GDRAM_lbit|(0x01<<(15-x_byte)));
}
}
else
{
Write_data(0x00)); //铲除GDRAM区高8位数据
Write_data(0x00)); //铲除GDRAM区低8位数据
}
}


/**********读取当时地址的LCD显现数据**********/
uchar Read_data()
{
uchar shuju;
LCD_DATA_set_in; //端口PB设置输入
LCD_DATA_PORT=0xff;
SET_DI; // D/I=1,代表数据
SET_RW; // R/W=1.读取
delay_us(10);
SET_E;
delay_us(100);
shuju=PINB; //读取当时显现的数据
CLR_E;
return(shuju);
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/dongtai/254947.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部