HT1621写命令的低位为什么是8位?

2019-03-25 18:45发布

没写过HT1621的程序,最近看了一些资料,说写命令是101+6位地址+4位数据组成。6位地址是SEG位,4位数据是什么位组成?是不是COM?
还有,数据位是4位,为什么别人写的程序都是8位呢?是什么意思呢?
下面是我看到的一段程序:
/////////////////////////////////////////////////////
void WriteByte_1621(INT8U addr,INT8U data)
{
     addr<<=2;
     cs=0;
     Nop();
     Nop();
     Nop();
     Nop();
     SendBit_1621(0xa0,3);                //写入标志码"101"
     SendBit_1621(addr,6);                //写入addr的高6位
     SendDataBit_1621(data,8);                //写入data的低8位
     cs=1;
}
//////////////////////////////////////////////////////////////////////////////
我试过将data写成0x0f(因为数据是低4位)LCD显示不全,而改成0xf0(这不是高4位了么?)就可以全笔段显示了,这是为什么?

哪位大哥帮帮手,感激! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
17条回答
dingzy_2002
2019-03-28 06:32
本帖最后由 dingzy_2002 于 2018-6-19 13:14 编辑
dingzy_2002 发表于 2018-6-19 13:07
SendBit_1621(0xa0,3)
这段来看,数据是按高位在前发送的
SendBit_1621(addr

我用的HT1621程序示例:
  1. /*------------------------------------------------
  2.         函数名:        LCD_INIT
  3.         描述:        HT1621芯片初始化
  4.         输入:        无
  5.         输出:        无
  6. ------------------------------------------------*/
  7. void        LCD_INIT(void)
  8. {
  9.                 //uint8_t        *point;
  10.                 //point=        (uint8_t*)LCD_SET;
  11.                 CLR_LCD_CK;
  12.                 delay_2us;

  13.                 CLR_LCD_CS;                //CS=0;液晶屏选通;
  14.                 delay_2us;

  15.                 for(uint8_t i=0;i<6;i++)
  16.                 {
  17.                         LCD_PIN_OUT(LCD_SET[i]);
  18.                 }

  19.                 delay_2us;
  20.                 SET_LCD_CS;                //CS=1;液晶屏关闭;
  21. }

  22. /*------------------------------------------------
  23.         函数名:        LCD_OUT
  24.         描述:        将显示数据发送到TM0310液晶屏上
  25.         输入:        无
  26.         输出:        无
  27. ------------------------------------------------*/
  28. void        LCD_OUT(void)
  29. {

  30.                 CLR_LCD_CK;
  31.                 delay_2us;

  32.                 CLR_LCD_CS;                //CS=0;液晶屏选通;
  33.                 delay_2us;

  34.                 LCD_PIN_OUT(0xA0);//写显示数据指令:0xA0

  35.                 SET_LCD_CK;                //第9位数据时钟:
  36.                 delay_2us;

  37.                 CLR_LCD_CK;
  38.                 delay_2us;

  39.                 for(uint8_t i=0;i<6;i++)
  40.                 {
  41.                 LCD_PIN_OUT(LCD_SY[i]);
  42.                 }

  43.                 delay_2us;
  44.                 SET_LCD_CS;

  45. }
  46. /*------------------------------------------------
  47.         函数名:        LCD_PIN_OUT
  48.         描述:        IO模拟SPI,输出1字节数据,MSB在前
  49.         资源:        计数器j=8
  50.         端口:        LCD_DA,LCD_CK
  51.         输入:        LCD_DATA
  52.         输出:        无
  53. ------------------------------------------------*/
  54. void        LCD_PIN_OUT(uint8_t LCD_DATA)
  55. {
  56.         uint8_t        data_tmp,j;
  57.         for(j=8;j!=0;j--)
  58.         {
  59.                 data_tmp=LCD_DATA;
  60.                 if (data_tmp&=0x80)
  61.                         SET_LCD_DA;
  62.                 else
  63.                         CLR_LCD_DA;
  64.                
  65.                 delay_2us;
  66.                 SET_LCD_CK;
  67.                 delay_2us;

  68.                 CLR_LCD_CK;
  69.                 delay_2us;

  70.                 LCD_DATA<<=1;
  71.         }
  72. }
复制代码

一周热门 更多>