2024年2月19日发(作者:图门灵秋)
HP3457A液晶屏(5181-2813)通信协议分析
By Edward
本文地址:/?mod=viewthread&tid=120390
转载请注明出处!
(是的,没有铺垫,直接进入正题)
HP3457A的液晶屏的HP编号是5181-2813,我的是Rev C的牛屎版。HP以前不少仪器用的都是这个或者类似的LCD,比如说HP3478A,虽然屏幕不完全一样,但是估计协议应该是差不多的。5181-2813液晶外观如下图:
屏幕全部点亮时如下图,共有12位14段数码显示,每位还有一个冒号/小数点、一个逗号和一个三角形箭头。这样一个屏幕就能显示绝大部分ASCII码内容了。十四段是可以区分显示字母的大小写的,HP定义的字母只有大写(后来知道是由于信号位数不够),这样M、m不分不是很爽啊。
屏幕采用脚距2.54mm双排16Pin坑爹插头,经查,引脚定义如下图:
分析参考手册中的电路,Pin32经1kΩ电阻上拉至+5V,应该与Pin24一起是供电的;Pin26接470pF电容到GND,未知用途;Pin18、20、22接了一些普通电阻和热敏电阻,应该是用来根据温度自动补偿对比度的;余下与数据有关的就应该是PW0、01、02、INA、SYNC和ISA了。
分析通信协议嘛,自然就要用到逻辑分析仪了,我只有这种淘宝上只要30多块钱的逻分,标称最高采样24Msps,实际达到12M都费劲,4M的时候比较稳定,不过对付3457的屏幕这个足够了。
当然,这个分析嘛,肯定是有一大堆数据的,为了省事本贴就以下面这个比较典型的屏显内容来说明:
上述内容对应的ASCII码如下,不包含逗号和箭头:
此时,一次完整的通信是这样的,为了方便叙述,按SYNC脉冲进行编号:
总共有6根传输线,看样子应该是串行通信。PW0在整个通信过程中都保持高电平,那么PW0应该就是使能信号。那么其他的呢?01和02是一模一样的,只不过02的信号比01滞后了大概一个脉冲的时间,其余信号线都是和01对齐的。SYNC从名字和实际上看是同步(控制)用的,当然根据电路图,SYNC也是蜂鸣器的信号线。哔声总是在PW0为低电平的时候响起。下图就是开机的时候bi~:
分析通信协议我没啥经验,研究了一阵还没有什么头绪。所以我决定再深度搜索一下。通过使用百度、必应和谷歌反复搜索,终于在数码之家找到一个帖子:
/?tid=499485
帖子作者分析出了HP6632A的液晶屏通信协议。我一看,这不是和3457的一样吗,赶紧拜读:
作者的描述,验证了我的猜想,也提供了思路,不过可惜的是作者并没有说明具体协议。剩下的还要靠自己。现在已知的是:PW0是使能,SYNC是同步(控制),ISA是识别码,INA是数据。把数据最集中的⑥、⑦两段放大看一下,就是下图(图片做了拼接):
转化为二进制数如下图(太长我搞成两行了,后面多余的0都省略了,下同):
哎……还是没什么头绪,这个数据和ASCII码也对不上啊。反复看那个帖子,这段话引起了我
的注意:
以老惠普的性格,像液晶屏这种惠普自己研发出来的东西,肯定会留下些资料,HP3457A的参考手册中没有,那就说明不够老,第一个使用这种LCD的仪器肯定会有介绍。所以我就找啊找,第一个使用类似LCD的仪器可能是HP3478A,反正DMM是第一个,去看看手册里面,果然有说明,不过也就只是一点说明而已:
根据这段叙述补充并验证了之前所有的猜测:
Pin26接的电容是产生LCD内部时钟用的;
PW0是使能信号;
01和02是时钟;
SYNC是控制,高电平表示发送指令,低电平表示发送数据;
ISA是指令;
INA是数据;
这些只是硬件上的,协议上并没有任何描述。我还是觉得HP不可能不对这样一种具有划时代意义的显示器件进行具体描述,而且HP明显有将器件系列化和通用化的习惯。那么HP的第一个LCD肯定会提供一些信息。所以我决定找一找HP第一款使用LCD的设备,不管是什么。这个我只能在《HP Journal》中找了,从上百期中找特定一期还是挺费劲的,不过最终还是找到了:1980年第3期,HP发布了HP-41C计算器,这是HP第一次使用LCD屏幕,而且和3457的很像。HP-41C的手册我也找了,但只有使用方法,没有具体硬件的内容,估计是因为这毕竟不是一台仪器吧。这期HP Journal详细介绍了HP-41C的硬件、软件设计,其中就包括了HP的第一块液晶显示器的方方面面,我关注
的是通信协议,这个也是有了较为详细的介绍。
第8页里面有关于屏幕通信的描述:
翻译一下:每位字符信息是以9bit字符串存储的,7bit存储字符的ASCII码,相当于只能译码并显示80个字符,2bit用于存储标点符号字段。每一位有单独的1bit存储“箭头”。CPU可以以9bit、8bit或4bit(对于数字)的形式按从左侧或者从右侧开始的顺序发送单字符或多字符数据。显示也可以每次向左移或右移一位。(余下的无关就不翻译了)
呀,豁然开朗啊。如此说来,看起来⑥、⑦应该就是字符数据了,④很有可能是“箭头”。验证一下,④放大如下:
转化为二进制:
再和之前的图对比一下:
原来是从从右向左发送的!那字符是怎么表达的呢?经过大量对比,我找到了答案。
之前提到,这个屏幕可以接收多种长度的字符数据,很明显HP3457A采用的是8bit。字符按照从右向左的顺序发送,LSB First,先传4bit×12 LSB,再传4bit×12 MSB。每次传输的前2bit丢弃不用,后面多余的0也丢弃。4bit LSB和4bit MSB组成8bit数据,其中2bit MSB表示可以独立显示的标点符号,对应为:
余下6bit表示字符(包括数字、大写字母和部分标点符号),换算方法如下图:
先将8bit LSB First数值转为MSB First,将8bit数据中的2bit MSB置零(也就是留下6bit数据),判断若值≥0x20,则为ASCII码,可直接转换为字符;若<0x20,则+0x40后为ASCII码,即可转换为字符。
我只分析出了Annunciator和4bit LSB和4bit MSB的指令,别的指令我没太关注,但是还是有不同的,比如开机上电时候发送的指令和平时通信就有些不同,具体什么指令什么作用等需要的时候在仔细研究吧。
我分析这个协议其实是刚开始的时候对HP3457A的屏幕有些想法。不过研究了一段时间后,我觉得还是加背光比较好。可以考虑替换的屏幕类型有VFD、OLED、LCD、LED等等。因为3457的变压器功率很小,上VFD的话,估计变压器就挺不住了。3457这种屏幕的长宽比很大,露出来的部分尺寸为122×18mm,VFD也没有尺寸合适、信息完全的。而尺寸合适的OLED很贵很贵,换了不划算。LCD无论是单色带背光的还是TFT都没有合适尺寸的,而且如果是单色LCD的话估计还不如原来的好看。OLED和LCD如果想多个拼接的话接缝太大。LED嘛,需要笔段完全对应的才行,目前还没有找到完全对应的,最接近的缺冒号。所以最终我还是选择了加背光,目前处于半完成状态,屏幕改完了,供电是临时凑合的。
这个协议只是HP3457A的,其他仪表可能会有所不同,如果有想改装其他仪表的,请一定自己分析一下协议,看一下具体是否一样。
最后要感谢lilith在我购买HP3457A和分析协议期间的全程帮助!
Edward
2015年6月
2024年2月19日发(作者:图门灵秋)
HP3457A液晶屏(5181-2813)通信协议分析
By Edward
本文地址:/?mod=viewthread&tid=120390
转载请注明出处!
(是的,没有铺垫,直接进入正题)
HP3457A的液晶屏的HP编号是5181-2813,我的是Rev C的牛屎版。HP以前不少仪器用的都是这个或者类似的LCD,比如说HP3478A,虽然屏幕不完全一样,但是估计协议应该是差不多的。5181-2813液晶外观如下图:
屏幕全部点亮时如下图,共有12位14段数码显示,每位还有一个冒号/小数点、一个逗号和一个三角形箭头。这样一个屏幕就能显示绝大部分ASCII码内容了。十四段是可以区分显示字母的大小写的,HP定义的字母只有大写(后来知道是由于信号位数不够),这样M、m不分不是很爽啊。
屏幕采用脚距2.54mm双排16Pin坑爹插头,经查,引脚定义如下图:
分析参考手册中的电路,Pin32经1kΩ电阻上拉至+5V,应该与Pin24一起是供电的;Pin26接470pF电容到GND,未知用途;Pin18、20、22接了一些普通电阻和热敏电阻,应该是用来根据温度自动补偿对比度的;余下与数据有关的就应该是PW0、01、02、INA、SYNC和ISA了。
分析通信协议嘛,自然就要用到逻辑分析仪了,我只有这种淘宝上只要30多块钱的逻分,标称最高采样24Msps,实际达到12M都费劲,4M的时候比较稳定,不过对付3457的屏幕这个足够了。
当然,这个分析嘛,肯定是有一大堆数据的,为了省事本贴就以下面这个比较典型的屏显内容来说明:
上述内容对应的ASCII码如下,不包含逗号和箭头:
此时,一次完整的通信是这样的,为了方便叙述,按SYNC脉冲进行编号:
总共有6根传输线,看样子应该是串行通信。PW0在整个通信过程中都保持高电平,那么PW0应该就是使能信号。那么其他的呢?01和02是一模一样的,只不过02的信号比01滞后了大概一个脉冲的时间,其余信号线都是和01对齐的。SYNC从名字和实际上看是同步(控制)用的,当然根据电路图,SYNC也是蜂鸣器的信号线。哔声总是在PW0为低电平的时候响起。下图就是开机的时候bi~:
分析通信协议我没啥经验,研究了一阵还没有什么头绪。所以我决定再深度搜索一下。通过使用百度、必应和谷歌反复搜索,终于在数码之家找到一个帖子:
/?tid=499485
帖子作者分析出了HP6632A的液晶屏通信协议。我一看,这不是和3457的一样吗,赶紧拜读:
作者的描述,验证了我的猜想,也提供了思路,不过可惜的是作者并没有说明具体协议。剩下的还要靠自己。现在已知的是:PW0是使能,SYNC是同步(控制),ISA是识别码,INA是数据。把数据最集中的⑥、⑦两段放大看一下,就是下图(图片做了拼接):
转化为二进制数如下图(太长我搞成两行了,后面多余的0都省略了,下同):
哎……还是没什么头绪,这个数据和ASCII码也对不上啊。反复看那个帖子,这段话引起了我
的注意:
以老惠普的性格,像液晶屏这种惠普自己研发出来的东西,肯定会留下些资料,HP3457A的参考手册中没有,那就说明不够老,第一个使用这种LCD的仪器肯定会有介绍。所以我就找啊找,第一个使用类似LCD的仪器可能是HP3478A,反正DMM是第一个,去看看手册里面,果然有说明,不过也就只是一点说明而已:
根据这段叙述补充并验证了之前所有的猜测:
Pin26接的电容是产生LCD内部时钟用的;
PW0是使能信号;
01和02是时钟;
SYNC是控制,高电平表示发送指令,低电平表示发送数据;
ISA是指令;
INA是数据;
这些只是硬件上的,协议上并没有任何描述。我还是觉得HP不可能不对这样一种具有划时代意义的显示器件进行具体描述,而且HP明显有将器件系列化和通用化的习惯。那么HP的第一个LCD肯定会提供一些信息。所以我决定找一找HP第一款使用LCD的设备,不管是什么。这个我只能在《HP Journal》中找了,从上百期中找特定一期还是挺费劲的,不过最终还是找到了:1980年第3期,HP发布了HP-41C计算器,这是HP第一次使用LCD屏幕,而且和3457的很像。HP-41C的手册我也找了,但只有使用方法,没有具体硬件的内容,估计是因为这毕竟不是一台仪器吧。这期HP Journal详细介绍了HP-41C的硬件、软件设计,其中就包括了HP的第一块液晶显示器的方方面面,我关注
的是通信协议,这个也是有了较为详细的介绍。
第8页里面有关于屏幕通信的描述:
翻译一下:每位字符信息是以9bit字符串存储的,7bit存储字符的ASCII码,相当于只能译码并显示80个字符,2bit用于存储标点符号字段。每一位有单独的1bit存储“箭头”。CPU可以以9bit、8bit或4bit(对于数字)的形式按从左侧或者从右侧开始的顺序发送单字符或多字符数据。显示也可以每次向左移或右移一位。(余下的无关就不翻译了)
呀,豁然开朗啊。如此说来,看起来⑥、⑦应该就是字符数据了,④很有可能是“箭头”。验证一下,④放大如下:
转化为二进制:
再和之前的图对比一下:
原来是从从右向左发送的!那字符是怎么表达的呢?经过大量对比,我找到了答案。
之前提到,这个屏幕可以接收多种长度的字符数据,很明显HP3457A采用的是8bit。字符按照从右向左的顺序发送,LSB First,先传4bit×12 LSB,再传4bit×12 MSB。每次传输的前2bit丢弃不用,后面多余的0也丢弃。4bit LSB和4bit MSB组成8bit数据,其中2bit MSB表示可以独立显示的标点符号,对应为:
余下6bit表示字符(包括数字、大写字母和部分标点符号),换算方法如下图:
先将8bit LSB First数值转为MSB First,将8bit数据中的2bit MSB置零(也就是留下6bit数据),判断若值≥0x20,则为ASCII码,可直接转换为字符;若<0x20,则+0x40后为ASCII码,即可转换为字符。
我只分析出了Annunciator和4bit LSB和4bit MSB的指令,别的指令我没太关注,但是还是有不同的,比如开机上电时候发送的指令和平时通信就有些不同,具体什么指令什么作用等需要的时候在仔细研究吧。
我分析这个协议其实是刚开始的时候对HP3457A的屏幕有些想法。不过研究了一段时间后,我觉得还是加背光比较好。可以考虑替换的屏幕类型有VFD、OLED、LCD、LED等等。因为3457的变压器功率很小,上VFD的话,估计变压器就挺不住了。3457这种屏幕的长宽比很大,露出来的部分尺寸为122×18mm,VFD也没有尺寸合适、信息完全的。而尺寸合适的OLED很贵很贵,换了不划算。LCD无论是单色带背光的还是TFT都没有合适尺寸的,而且如果是单色LCD的话估计还不如原来的好看。OLED和LCD如果想多个拼接的话接缝太大。LED嘛,需要笔段完全对应的才行,目前还没有找到完全对应的,最接近的缺冒号。所以最终我还是选择了加背光,目前处于半完成状态,屏幕改完了,供电是临时凑合的。
这个协议只是HP3457A的,其他仪表可能会有所不同,如果有想改装其他仪表的,请一定自己分析一下协议,看一下具体是否一样。
最后要感谢lilith在我购买HP3457A和分析协议期间的全程帮助!
Edward
2015年6月