没写过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位了么?)就可以全笔段显示了,这是为什么?
哪位大哥帮帮手,感激!
此帖出自
小平头技术问答
关键是HT1621的数据位构成是低位在前,高位在后。但这样连发,就算一个8位拆成两个4位,也肯定是高位在前了。
数据发送的高位在前(MSB)还是低位在前(LSB),是由你的程序决定的,
我使用的是高位在前
如果是低位在前,那么这8位数据的低4位,是MA+1地址的数据,高4位是MA地址的数据。
如果发的5位数据,那么第5位数据对应的地址数据是不可预料的(根据不同生产商生产的1621决定)。
多谢你的回覆,你的意思是一次发送8位数据,然后这8位拆分成两个4位,但拆分成两个4位也会有高位和低位之分的(应该算是左高右低)。这样不是与写指令模式的101+6位地址(高到低)+4位数据(低到高)不相符么?
多谢你的回覆,你的意思是一次发送8位数据,然后这8位拆分成两个4位,但拆分成两个4位也会有高位和低位之分的(应该算是左高右低)。这样不是与写指令模式的101+6位地址(高到低)+4位数据(低到高)不相符么?
一周热门 更多>