在STM32控制12864屏发送数据时为什么高4位和低4位分开发送?

2019-03-23 18:18发布

/***********************************************************
函数名称:LCD_write_byte
函数功能:写一个字节的数据到12864液晶,包括指令或数据
入口参数:RW、RS、W_data
出口参数:无
备 注:RW=1,从液晶读数据到MCU;RW=0,写一个数据到液晶;
   (一般RW都设为0,即只向液晶写数据,不读数据)
          RS=1,写入的是数据;RS=0,写入的是指令;
    一般模式:RW=0,RS=1;写数据
       RW="0",RS=0;写指令
***********************************************************/
void LCD_write_byte(unsigned char RW, unsigned char RS, unsigned char W_data)
{
    unsigned int H_data,L_data,S_ID = 0xf8;  //11111RWRS0
    if(RW == 0)                          //RW=0,MCU写一个数据到液晶;
      {
          S_ID &=~ 0x04;
      }
    else                  //RW=1,从液晶读数据到MCU
      {
         S_ID |= 0X04;
      }
    if(RS == 0)                          //RS=1,写入的是数据
      {
         S_ID &=~ 0x02;
      }
    else                  //RS=0,写入的是指令;
      {
         S_ID |= 0X02;
      }
    H_data = W_data;
    H_data &= 0xf0;       //屏蔽低4位的数据
    L_data = W_data;      //xxxx0000格式
    L_data &= 0x0f;       //屏蔽高4位的数据
    L_data <<= 4;         //xxxx0000格式
    LCD_CS = 1;
    serial_write_byte(S_ID);   //发送S_ID
    serial_write_byte(H_data); //发送H_data
    serial_write_byte(L_data); //发送L_data
    LCD_CS = 0;
}
求大神讲解,急急急!!!

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。