×
嵌入式 > 技术百科 > 详情

st7920控制的12864打点

发布时间:2020-06-20 发布时间:
|
可以在任意位置打点了,在这里谢谢那些好心的人,把易于出现问题的地方给大家说明下,一定要仔细阅读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<     Write_data(GDRAM_lbit);               //显示GDRAM区低8位数据 
    }
    else
    {
    Write_data(GDRAM_hbit);
    Write_data(GDRAM_lbit|(0x01<     } 
  }
  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);   
}

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
压敏电阻器的选用