4801|18

68

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

HT1621写命令的低位为什么是8位? [复制链接]

 
没写过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位了么?)就可以全笔段显示了,这是为什么?

哪位大哥帮帮手,感激!

最新回复

我们这边有合泰原厂技术支持   详情 回复 发表于 2020-7-17 15:10
点赞 关注
 

回复
举报

1702

帖子

4

TA的资源

纯净的硅(初级)

沙发
 
用TM1621直接找原厂技术支持,
 
 
 

回复

637

帖子

2

TA的资源

版主

板凳
 
HT1621的数据显示,与LCD段位表息息相关,首先要看段位表对应的数据,其实发送8位已经是两个段位的数据了

点评

不管LCD的真值表如何,但1621发送写命令的指令始终是“101+6位地址+4位数据”格式,如果后面是8位的数据,不是有4位不能发出吗?这样写个8位还有什么意义呢?  详情 回复 发表于 2018-6-14 09:44
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(高级)

4
 
dingzy_2002 发表于 2018-6-13 15:28
HT1621的数据显示,与LCD段位表息息相关,首先要看段位表对应的数据,其实发送8位已经是两个段位的数据了

不管LCD的真值表如何,但1621发送写命令的指令始终是“101+6位地址+4位数据”格式,如果后面是8位的数据,不是有4位不能发出吗?这样写个8位还有什么意义呢?

点评

[attachimg]359213[/attachimg] 这个是HT1621的写命令时序图 发4位是单地址显示,如果发8位数据,将是连续写模式,包含两个地址的数据.  详情 回复 发表于 2018-6-14 12:05
 
 
 

回复

637

帖子

2

TA的资源

版主

5
 
yealien 发表于 2018-6-14 09:44
不管LCD的真值表如何,但1621发送写命令的指令始终是“101+6位地址+4位数据”格式,如果后面是8位的数据 ...


这个是HT1621的写命令时序图
发4位是单地址显示,如果发8位数据,将是连续写模式,包含两个地址的数据.

点评

关键是HT1621的数据位构成是低位在前,高位在后。但这样连发,就算一个8位拆成两个4位,也肯定是高位在前了。  详情 回复 发表于 2018-6-14 16:41
我也看到这个的,但连续写模式,也是先6位地址,后面跟的4位数据的,只不过这4位数据是连续的,就不知道这个4位与发数据的8位有什么联系。 当然你也会说一个8位等于两个4位,但是万一我想写入5个数据呢?不是要发两  详情 回复 发表于 2018-6-14 15:43
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(高级)

6
 
dingzy_2002 发表于 2018-6-14 12:05
这个是HT1621的写命令时序图
发4位是单地址显示,如果发8位数据,将是连续写模式,包含两个地址的数据.

我也看到这个的,但连续写模式,也是先6位地址,后面跟的4位数据的,只不过这4位数据是连续的,就不知道这个4位与发数据的8位有什么联系。
当然你也会说一个8位等于两个4位,但是万一我想写入5个数据呢?不是要发两个8位数据加一个半位?

点评

如果发的5位数据,那么第5位数据对应的地址数据是不可预料的(根据不同生产商生产的1621决定)。  详情 回复 发表于 2018-6-15 09:45
 
 
 

回复

3183

帖子

0

TA的资源

纯净的硅(高级)

7
 
我有个51的程序,好像写4位、8位都可以,不明白有什么不同
 
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 
 

回复

68

帖子

0

TA的资源

一粒金砂(高级)

8
 
dingzy_2002 发表于 2018-6-14 12:05
这个是HT1621的写命令时序图
发4位是单地址显示,如果发8位数据,将是连续写模式,包含两个地址的数据.

关键是HT1621的数据位构成是低位在前,高位在后。但这样连发,就算一个8位拆成两个4位,也肯定是高位在前了。

点评

数据发送的高位在前(MSB)还是低位在前(LSB),是由你的程序决定的, 我使用的是高位在前 如果是低位在前,那么这8位数据的低4位,是MA+1地址的数据,高4位是MA地址的数据。  详情 回复 发表于 2018-6-15 09:41
 
 
 

回复

637

帖子

2

TA的资源

版主

9
 
yealien 发表于 2018-6-14 16:41
关键是HT1621的数据位构成是低位在前,高位在后。但这样连发,就算一个8位拆成两个4位,也肯定是高位在前 ...

数据发送的高位在前(MSB)还是低位在前(LSB),是由你的程序决定的,
我使用的是高位在前
如果是低位在前,那么这8位数据的低4位,是MA+1地址的数据,高4位是MA地址的数据。

点评

多谢你的回覆,你的意思是一次发送8位数据,然后这8位拆分成两个4位,但拆分成两个4位也会有高位和低位之分的(应该算是左高右低)。这样不是与写指令模式的101+6位地址(高到低)+4位数据(低到高)不相符么?  详情 回复 发表于 2018-6-16 10:50
多谢你的回覆,你的意思是一次发送8位数据,然后这8位拆分成两个4位,但拆分成两个4位也会有高位和低位之分的(应该算是左高右低)。这样不是与写指令模式的101+6位地址(高到低)+4位数据(低到高)不相符么?  详情 回复 发表于 2018-6-16 10:50
 
 
 

回复

637

帖子

2

TA的资源

版主

10
 
yealien 发表于 2018-6-14 15:43
我也看到这个的,但连续写模式,也是先6位地址,后面跟的4位数据的,只不过这4位数据是连续的,就不知道 ...

如果发的5位数据,那么第5位数据对应的地址数据是不可预料的(根据不同生产商生产的1621决定)。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(高级)

11
 
dingzy_2002 发表于 2018-6-15 09:41
数据发送的高位在前(MSB)还是低位在前(LSB),是由你的程序决定的,
我使用的是高位在前
如果是低位在前 ...

多谢你的回覆,你的意思是一次发送8位数据,然后这8位拆分成两个4位,但拆分成两个4位也会有高位和低位之分的(应该算是左高右低)。这样不是与写指令模式的101+6位地址(高到低)+4位数据(低到高)不相符么?
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(高级)

12
 
dingzy_2002 发表于 2018-6-15 09:41
数据发送的高位在前(MSB)还是低位在前(LSB),是由你的程序决定的,
我使用的是高位在前
如果是低位在前 ...

多谢你的回覆,你的意思是一次发送8位数据,然后这8位拆分成两个4位,但拆分成两个4位也会有高位和低位之分的(应该算是左高右低)。这样不是与写指令模式的101+6位地址(高到低)+4位数据(低到高)不相符么?

点评

并且只是一个6位地址,怎么分配这么多的数据?一个8位拆分成两个数据,怎么分配地址呢?  详情 回复 发表于 2018-6-17 17:14
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(高级)

13
 
yealien 发表于 2018-6-16 10:50
多谢你的回覆,你的意思是一次发送8位数据,然后这8位拆分成两个4位,但拆分成两个4位也会有高位和低位之 ...

并且只是一个6位地址,怎么分配这么多的数据?一个8位拆分成两个数据,怎么分配地址呢?

点评

你可以这样:101+6位地址+4位数据,这样就能按地址发送数据了. 4位数据是根据COM口来的,HT1621是4个COM口,所以是4位数据 如果是HT1622呢,这个料是8个COM口,那么其数据就是8位了.  详情 回复 发表于 2018-6-19 10:32
 
 
 

回复

637

帖子

2

TA的资源

版主

14
 
yealien 发表于 2018-6-17 17:14
并且只是一个6位地址,怎么分配这么多的数据?一个8位拆分成两个数据,怎么分配地址呢?

你可以这样:101+6位地址+4位数据,这样就能按地址发送数据了.
4位数据是根据COM口来的,HT1621是4个COM口,所以是4位数据
如果是HT1622呢,这个料是8个COM口,那么其数据就是8位了.

点评

感谢你的回覆,但是HT1621的官网程序确实有连续发送。 ///////////////////////////////////////////////////////////////////////////////// void WriteAll_1621(uchar addr,uchar *p,uchar cnt) { uchar i;  详情 回复 发表于 2018-6-19 11:22
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(高级)

15
 
dingzy_2002 发表于 2018-6-19 10:32
你可以这样:101+6位地址+4位数据,这样就能按地址发送数据了.
4位数据是根据COM口来的,HT1621是4个COM口, ...

感谢你的回覆,但是HT1621的官网程序确实有连续发送。
/////////////////////////////////////////////////////////////////////////////////
void WriteAll_1621(uchar addr,uchar *p,uchar cnt)
{
        uchar i;
        CS=0;
        SendBit_1621(0xa0,3);                 //传送写指令ID=101
        SendBit_1621(addr<<2,6);         //传地址码
        for(i=0;i         {
           SendDataBit_1621(*p,8);        //连续传送cnt个数据,每个数据传送8位
        }
        CS=1;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
他这个连续传送是怎么分配地址的呢?

点评

SendBit_1621(0xa0,3) 这段来看,数据是按高位在前发送的 SendBit_1621(addr  详情 回复 发表于 2018-6-19 13:07
 
 
 

回复

637

帖子

2

TA的资源

版主

16
 
yealien 发表于 2018-6-19 11:22
感谢你的回覆,但是HT1621的官网程序确实有连续发送。
////////////////////////////////////////////// ...

SendBit_1621(0xa0,3)
这段来看,数据是按高位在前发送的
SendBit_1621(addr<<2,6)
这段说明是向地址*4(嘛意思)发送数据
SendDataBit_1621(*p,8)
这段是说明以P间接寻址的数据,发送一个字节
那么,这个字节的高4位的地址是addr*4+1
低4位的地址是addr*4

点评

我用的HT1621程序示例: /*------------------------------------------------ 函数名: LCD_INIT 描述: HT1621芯片初始化 输入: 无 输出: 无 ------------------------------------------------*/ void LC  详情 回复 发表于 2018-6-19 13:09
 
 
 

回复

637

帖子

2

TA的资源

版主

17
 
本帖最后由 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. }
复制代码


 
 
 

回复

42

帖子

15

TA的资源

一粒金砂(中级)

18
 
之前有用过VK1621,用得还不错,你可以看看资料对比下

VK1621B液晶显示驱动IC 中文资料.pdf

1.41 MB, 下载次数: 3

 
个人签名联系人:许先生 QQ:1918885898  电话:18898582398  免费样品赠送,工程技术支持,PDF产品资料提供!
 
 

回复

11

帖子

0

TA的资源

一粒金砂(初级)

19
 

我们这边有合泰原厂技术支持

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表