广告

用你自己的IIC接口连接并口字符型LCD

2013-06-25 00:00:00 Jon Gabay/EDNChina编译 阅读:
本文讨论了如何利用微控制器提供的简单IIC串行机制连接并行总线字符型显示器,同时还介绍了如何构造你的固件和驱动程序,并创建非常高效的封装消息和显示模式的数据存储。
我们经常在笔记本电脑、手机和平板电脑等设备上见到薄膜晶体管(TFT)显示屏和触摸屏。虽然这些屏幕看起来非常有吸引力,但并不是每种应用都能承受彩色和图形显示器的成本或复杂性。其实很多时候对应用来说一个简单的字符型显示器就足够了,比如实验室设备、专用机器、现场设备、机架设备和低功耗遥控设备等应用。 有些时候你根本无法使用太好的显示器。绝大多数TFT显示器在阳光下仍然不能清晰显示。虽然有超高亮度的背光照明,但它们会消耗很大的功率并产生很多热量,即使是使用了LED和CCFL也是如此。 因此,大多数基于扭曲向列和超级扭曲向列技术的字符显示器具有独特的优势,因为它们可以在阳光直射或完全黑暗的环境下正常工作。这些字符显示器能以反射方式工作(只需环境或外部光线),或半透反射方式工作(可以用背光灯,或使用环境或外部光线)。 为了最大限度地降低对微控制器的I/O需求,一些制造商提供价格较高的基于串行UART、SPI和IIC的字符型显示器。但目前为止,最流行和最低成本的接口是使用并行总线和控制信号来访问显示器的数据和发送命令。由于并行模块的制造商有很多,所以你可以找到价格很合理的显示器,然后将它们转变成串口显示器。 本文讨论了如何利用微控制器提供的简单IIC串行机制连接并行总线字符型显示器,同时还介绍了如何构造你的固件和驱动程序,并创建非常高效的封装消息和显示模式的数据存储。 并行接口 由于一些早期接口芯片的存在,出现了一个使用公共电子接口的伪标准,它允许用逻辑电平来控制命令模式、数据模式、清除、移位以及读取写入等功能。 一般有两种连接器类型,即14至16脚、100mil间距的SIP,或14至16脚100mil间距的DIN(见图1A和图1B)。需要注意,显示器制造商经常会交换不同地方的引脚或引脚方向,或稍作一些修改,以便使他们的显示器显得与众不同。这通常意味着这种显示器将成为单独来源的部件。在PCB上聪明地设计引脚输出可以适应不同的制造商。


图1:虽然数据和控制信号是相同的,但针对字符显示器有两个伪标准的并行接口类型,分别是DIN类型(左)或SIP类型(右)。

i9aednc

并行接口使用一个组合式的Enable(使能)和Clock(时钟)功能引脚(E),在E信号下降沿选通数据进出显示器。控制位(RS)用于确定是否在向显示器写入命令(L),或是否有数据发送给显示器(H)。R/W信号用于确定是否在读取(H)或写入(L)显示器(见下图2)。还有一条8位的数据总线。注意,可以使用外部调节器或电阻分压器设定或调整显示器的对比度。


图2:到达大多数字符型显示器中嵌入的控制器芯片的电气信号包括数据总线、读/写、时钟、背光灯控制、对比度控制以及将显示器置为命令模式的信号。

i9aednc

因为ASCII字符能够很好地映射到8位宽的空间,因此8位并行总线已经成为连接字符显示器的最普及接口。但使用8个数据位、3个控制位和用于背光灯控制的另一位意味着需要微控制器提供2个端口,而一般微控制器的I/O通常是受限的。 不过并行时序非常简单,很容易理解和实现。操作开始时是使用RS信号确定是发送命令还是传送显示数据。R/W信号确定是读还是写。E信号的下降沿选通数据总线上的数据实现输入或输出(见图3)。


图3:电气信号时序建立工作模式,并将数据用时钟送入或送出显示器。

i9aednc

虽然通常使用8位并行总线,但另外一种模式也很有用。大多数显示器的数据手册中都隐含有关于4位模式的信息。 这种模式可以让单个8位端口完全控制和驱动包含背光灯控制功能的字符显示器(见图4)。显示器上的D4-D7数据位与DO-D3位是复用的。传送整个8位数据需要进行两次数据传输,但显示器可以接收到完整数据并正常工作。


图4:使用4位模式可以将并行接口的整个控制映射进单个8位端口,包括使用NPN晶体管的背光灯控制。

i9aednc

分页导航i9aednc

第1页:并行接口

第2页:串化处理i9aednc


《电子设计技术》网站版权所有,谢绝转载 {pagination} 串化处理 内部集成电路(IIC)协议是一种常见的串行接口,仅使用两条线(时钟和数据)就能实现芯片到芯片的通信。与全双工UART不同,IIC接口使用主从机制。主器件(微控制器)通过创建一个从器件随时倾听的起始位条件启动传送。当时钟线拉到高电平、数据线变到低电平时,通知所有从器件IIC操作即将开始。 从这时开始,主器件随时钟输出它想与之通信的芯片地址,后面紧跟一位指示是想读芯片内容还是向芯片写数据。随后就能收发命令/状态或数据了。来自从芯片的确认位向主芯片证实传送发生了,来自主芯片的停止位状态结束整个周期(时钟拉高,数据线从低变到高)。 一般微控制器至少有一个用硬件实现的IIC端口。如果没有,也可以相对方便地用任意两根通用I/O线创建出一个IIC端口,并编写例程来实现通信。 为了驱动显示器IIC接口,我使用了虽然古老但好用的PCF8574。这个器件TI和恩智浦都可以提供,是一种8位并口到IIC的转换芯片(见图5)。注意,三个地址位(A0-A2)确定了器件要响应的具体IIC地址。这个地址被编码进数据流,因此最多可以有8个PCF8574连接到相同的两根IIC总线,并且可以对这8个器件进行单独寻址和控制。 还有一种‘A’版的芯片,它使用不同的地址。非A版本芯片响应的地址是4x。A版芯片响应的地址是7x。因此在相同的IIC总线上允许连接多达16个这样的器件。


图5:PCF8574内部在写数据时将串行比特流转换为并行数据,在读数据时进行反变换。注意,这个器件在任何输入信号改变状态时都能够产生中断。不过本项目没有用到这个功能。

i9aednc

通过将PCF8574用作数据泵,送出初始化命令、显示模式命令以及简单地通过传送数据块完成显示器写入就相对容易多了。这些块可以封装提示和消息,或在RAM中构建,然后在一次下降沿送出。 为了便于试验,我创建了一个能够用固件很容易实现的符号和数据结构(见图6)。注意,每个IIC器件都有自己的寄存器和功能映射图,PCF8574也不例外。数据手册上有详细规格可供参考。


图6:我使用IIC总线状态的缩写提出了一个草案,它允许我的微控制器定义实际上任何IIC芯片可能需要的任何数据结构。每个芯片有它自己的传送顺序和命令,但他们都使用相同的状态。

i9aednc

为了实现这个方案,我使用了采用类似BASIC的语言设计的微控制器板。它是解释执行的,因此我可以将程序存储在串行EEPROM中(也是IIC),然后在串行(RS-232)端口上通过命令执行。操作符语法如图6所示。


图7:我设计了一个小的PCB板,它能够处理实际上任何类型的显示器和状况。它具有SIP和DIN显示器连接器、对比度定时器、寻址跳线、直通扩展走线和可选的板载电源。

i9aednc

我设计了一块同时具有SIP和DIN连接器的小型PCB板,因此我可以将这块板用于实际上任何类型的字符显示器。我还增加了微调电位器用于对比度调整(见图7)。 为了方便业余爱好者和自己动手的项目,我做的每个东西都是通孔型的,很容易组装和调试。我还在三个边增加了冗余的连接器,因此这些电路板可以连接在一起,无需额外电缆就能连接1个以上的显示器。 你可能注意到,即使只需要4根线(时钟、数据、电源和地),但我的连接器设计了6个引脚。有个引脚可用于中断,因为我想让像按钮等数字I/O共享同样4根线的总线。这个方法可以形成很好的通用型前面板创建技术。另外一个引脚是富余的——这样做通常是个好主意。 你可能还注意到,我增加了本地稳压电源的外形封装。这样做可以让其中任何一块板连接到低压交流电源,再用5V给所有其它板供电。需要时跳线也能完成供电。 电路板经过测试作好使用准备后,我写了两个数据泵的例程,一个用于初始化和模式设置,另一个用于传送数据(见列表1)。语言是BASIC解释器,写进了微控制器——这里是8052的固件中。语法是16进制的,操作符基本上是算术类型(见图8)。


图8:类似BASIC的简单语言使用标准操作符,允许对定制IIC命令和顺序操作进行结构化处理。这样就能方便地写出数据泵例程来控制显示器并向它发送数据。

i9aednc

数据块存储在串行IIC EEPROM中,指向内存的指针指示起始地址。注意,因为数值的单位是字节,但传送到显示器的数据是4位的,因此例程将每个字节分成两次传送。初始化和模式驱动程序从指针计算出地址,然后从内存读取数值,最后将数据泵出到LCD。 另外要注意,不同显示器会将它们内部RAM映射到不同的显示器光标位置。我增加了初始化例程,用于为各种显示器类型(如2x16、2x20、4x40、2x80等)设置指针。 使用这种技术时,同时或单独驱动多个显示器都只需一条4线总线(时钟,数据,电源和地)。我先把两个来自不同制造商的相似显示器连接到了两块LCD接口板。我将两块板的地址都设为40,然后将它们线与在一起,并向它们发送初始化串和一行数据(见图9)。


图9:两个LCD设为相同的地址,它们同时响应单个命令/数据序列,并同时得到更新。

i9aednc

然后我决定将这4块板串在一起,每块板有不同的地址。同样我使用了具有相同配置(2x40)的4家不同制造商的显示器,并向每个地址发送不同的数据串(见图10)。


图10:由于每个板设为不同的地址,我可以向每个显示器发送单独和独特的消息。倒不是说不同制造商的质量和对比度不同。这正是你需要在产品设计确认之前观察显示器的原因。注意,借助穿通走线,每块板可以插入另外一块板,不需要额外的线缆。

i9aednc

本文小结 并行显示器的制造商比串行显示器更多。并行显示器一般成本较低,由于不同制造商的显示器事实上相当一致,因此可以成为第二来源。 串行显示器成本较高,但布线、测试和扩展简单。将并行显示器当作串行显示器来驱动的这种技术可以给你带来两全其美的好处。 以后,我们还会向串行控制总线增加LED和按钮。

分页导航i9aednc

第1页:并行接口

第2页:串化处理i9aednc


《电子设计技术》网站版权所有,谢绝转载
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
广告
热门推荐
广告
广告
EE直播间
在线研讨会
广告
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了