邊增遠 曾碧 鞠儀靜 李雷
摘要:本文介紹了一種通用的LCD顯示電路,并以PIC16F873芯片設計出了結合硬件的較為通用的驅動程序。
LCD顯示屏具有體積小、重量輕、耗電低、顯示內容豐富、易于定制、使用壽命長等優點,被廣泛用于儀器儀表、家電、控制產品等諸多領域。根據不同的LCD顯示屏其驅動程序分為靜態驅動和動態驅動。因為動態驅動比靜態驅動占用的芯片硬件資源少、驅動電路簡單等特點而成為LCD驅動的主流。本文正是采用動態驅動方式,以Microchip公司的PIC16F873芯片,設計出一種較為通用的LCD顯示電路及其LCD顯示的相應驅動程序,目的在于減少研發人員的工作量,避免不必要的重復性工作。
1.LCD顯示的硬件電路
為了達到動態顯示的目的,在電路中使用了三個移位計數器,其中兩個用于LCD顯示,一個用于控制LED雙色燈顯示,顯示部分共占用PIC16F873芯片6個I/O口,分別為RC0、RC1、RC2、RC3、RC4、RC5。可以實現控制的顯示筆劃位數達48個,如圖1所示。其中RC3、RC5配合產生移位輸入信號, RC0、RC1、RC2、RC4配合控制背電極(COM0、COM1、COM2)。當背電極COM0、COM1、COM2與筆畫電極(由移位計數器輸出)之間的電勢差達到5V時,對應的筆畫就顯示,否則不顯示。為了延長液晶顯示屏的壽命,通常間隔交換背電極與筆畫電極的電位。例如,當要COM0顯示的時候可以使得RC0、RC1為5V,RC2、RC4為0V,這樣COM0電壓為5V,COM1、COM2電壓為2.5V,然后RC0、RC1為0V,RC2、RC4為5V,這樣COM0電壓為0V,COM1、COM2電壓為2.5V。達到顯示目的。
2.驅動波形
在電路中使用RC3為時鐘輸入端,RC5作為數據輸入端進行主同步串行。當要輸入COM0行上的數據是1000 1010 1100 0100時,其驅動波形如圖2所示。在正向輸出(COM0端為低電平)結束后,進行反向輸出(COM0端為高電平)。圖3為一個完整顯示周期內COM0、COM1、COM2的波形變化。
3.LCD軟件顯示程序
本文以PIC16F873為芯片,采用PIC匯編語言,在MAPLAB-ICD開發器上實現。程序包括移位輸入數據子程序、顯示矩陣校正程序、LCD顯示輸出程序,具體流程如圖4。其中顯示校正程序是將自己定義的單元值與LCD顯示矩陣的值對應;移位輸入數據子程序是將校正好的數據移位輸入到LCD的筆畫電極;LCD顯示輸出程序則調用移位計數器把數據轉換成正確的顯示結果。在本刊的網站上給出了源程序,其中,移位輸入數據子程序請參照源代碼(a) ;顯示矩陣校正程序請參照源代碼(b) ;LCD顯示輸出程序請參照源代碼(c)。
4.結語
如果LCD顯示屏的顯示矩陣很規則,在設計程序的時候就可以省去矩陣校正子程序部分。本文針對沒有規律的顯示矩陣排列設計了軟件驅動程序,巧妙采用了移位計數器和PIC16F873上面的串行數據輸出功能,達到了通用顯示的目的,本文的方法已經在智能充電器的LCD顯示部分得到了很好的應用,并且顯示效果相當令人滿意。所提供的源程序均為調試過的程序,可以直接使用。◆