AT89S51I2C控制PCF8576段码LCD模块

  很长的一段时间的捣鼓,手上的这块段码屏、总算是可以按照我的要求显示数字了.这块小数码屏在我手里已经很久了,记得还是刚刚玩

  时买的,当时在地摊上花了3元钱买了一只LCD1601模块和这块屏,当时并不知道如何才能点亮它,只是因为其背面的控制电路是标准的集成块,型号齐全清晰,屏面成色尚可,当时地摊上也时常能见到一些小的显示屏,但多数都是黑色树脂

  的电路模块,我只选带有型号的标准集成电路的买,因为我觉得,只要有型号,就可以在网上查到资料,事实证明,我是对的;随着所学知识的增加,后来玩了一阵子LCD1601,玩明白以后就扔到一边了,而这只模块一直没弄,前些时,在网上找到了这只模块的集成电路资料,才知道这种PCF8576电路、竟然是自成系列的I2C

  控制电路,资料不算多,只有周立功的那两篇文章和应用程序,而找到的C源代码,也多为硬件I2C方式,而AT89S51模拟驱动的C程序也是常被一些网站封锁不能下载,偶尔有见,也弄不懂,至于自己编程,我是无能为力的。后来找到了如下这段程序:

  ;所发送数据的字节数ByteCnt 在中发送的数据在XmtDat 缓冲区中

  这段程序网上转载的最多,也不知道出处,好在其简单易懂,配合PCF8576的PDF资料,总算是弄懂了这种两线控制原件的控制方式,接下来,我剖拆了这个模块,并测绘了其硬件电路图,经与资料比照,因其只有不到40段驱动位,只有一个背极,且其SA0脚接电源正极,从而确认其为静态驱动方式,总线,不需闪烁时闪烁指令字为0x70,没有用到存储体选择指令,没有用到屏幕清零函数。由于这种I2C器件为单向器件,只送数据,不读数据,送入数据的原理就是,不论多少数据,都是利用“一位数据输出函数”在时钟脉冲的配合下,一位一位的送入器件,所以上述这段程序刚刚好用,比起哪些通用I2C程序简单的多。事情往往就是这样,一旦弄懂了原理,改编自己的应用程序就不是很难了。经过改编,得到了自己的程序,这是一段演示程序,由它控制段码屏在最右侧一位累计加1,直到显示99999时屏显清零并重复,我是想,只要做到想在那个位置显示,就能在那个位置显示,也就可以了,至于其他的应用方式也就能够实现了,以下是我改编并测试通过的程序:

  所发送数据的字节数ByteCnt 在中发送的数据在tmp[ ] 缓冲区中

  程序中0-9的数字编码是根据实际测绘的硬件电路图编制的,至于别人程序中或PDF资料中的编码方式,是绝不可以照搬的,因为每一种模块的内部接线都不尽相同,编码也就不同了,这种电路在控制时,最主要的一点就是,一定要根据段码位数先建立一个数组(显示数据存储区),在数据显示之前,先把显示数据装填到数组当中,再把它按位送入显示缓冲区就OK了,至于开总线,关总线,送指令,送数据等等都是模式化操作,只要按规定做好即可,控制起来也没什么太复杂的;因为只是玩玩,不求甚解,至此,这只模块也就玩完了,金牌单双王网址多少如果日后需要数字显示的话或许还能用到它,别的用途我就想不出来了,至于做时间显示,我总觉得它土不土、洋不洋没劲。这种器件已流传很久了,或许已经过时了,或许还有新出的我不知道,虽然我玩过了,但这些资料可能还会有人有用,所以就放在这里共享吧。还是老办法,程序是在V2编译软件窗口中粘贴过来的,若有用的话反向操作即可;如果用到了就知会一声,可以共享可以转载,但不可做为网站的登陆下载资源,发现必究,仅此而已,别无它求。