想请问下12864怎么画线?(串口)

2019-07-15 12:28发布

  1. 打点绘图,适用于在屏幕上打稀疏的几个点,不能用于横行连续打点
  2. void LCD_draw_point(u8 x, u8 y)
  3. {
  4.    u8 x_byte, x_bit;         //在横坐标的哪一个字节,哪一个位
  5.    u8 y_byte, y_bit;    //在纵坐标的哪一个字节,哪一个位
  6.    x_byte=x/16;                   //算出它在哪一个字节(地址)
  7.                                       //注意一个地址是16位的
  8.    x_bit=x%16;                    //(取模)算出它在哪一个位
  9.    y_byte=y/32;                    //y是没在哪个字节这个说法
  10.                              //这里只是确定它在上半屏(32行为一屏)还是下半屏
  11.                                      //0:上半屏 1:下半屏
  12.    y_bit=y%32;                    //y_bit确定它是在第几行
  13.    LCD_write_com(0x34);         //打开扩展指令集
  14.   
  15. LCD_write_com(0x80+y_bit);       //垂直地址(上)   貌似与说明书正好相反
  16.    LCD_write_com(0x80+x_byte+8*y_byte);  //先写水平坐标(下)   貌似与说明书正好相反    ???????

  17.                                       //具体参照数据手册
  18.                                                //下半屏的水平坐标起始地址为0x88
  19.                                      //(+8*y_byte)就是用来确定在上半屏还是下半屏
  20.    if(x_bit<8)                              //如果x_bit位数小于8
  21.    {
  22.        LCD_write_dat(0x01<<(7-x_bit));    //写高字节。因为坐标是从左向右的
  23.                                                 //而GDRAM高位在左,低位在右
  24.     LCD_write_dat(0x00);                   //低字节全部填0
  25.    }
  26.    else
  27.    {
  28.        LCD_write_dat(0x00);                   //高字节全部填0
  29.        LCD_write_dat(0x01<<(15-x_bit));
  30.    }
  31.    LCD_write_com(0x36);                     //打开绘图显示
  32.    LCD_write_com(0x30);               //回到基本指令集
  33. }
复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。