在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;
}
求大神讲解,急急急!!!

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
shiefe
2019-03-24 03:39
一个完整的串行传输周期由一下部分组成?
   首先送入启动字节?送入5个连续的“1”用来启动一个周期?此时传输计
数被重置?并且串行传输被同步。紧接的两个位指定传输方向?RW?确定读还
是写?和传输性质?RS?确定是命令寄存器还是数据寄存器??最后的第八位是
一个“0”。
   送完启动字节之后?可以送入指令或是显示数据?或是字型代码?。指令或
者代码是以字节为单位的?每个字节的内容?指令或数据?在被送入时分为两个
字节来处理?高四位放在第一个字节的高四位?低四位放在第二个字节的高四位。
无关位都补“0”

一周热门 更多>