關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > PIC16F877單片機的圖形液顯示模塊接口技術

        PIC16F877單片機的圖形液顯示模塊接口技術

        作者: 時間:2004-12-07 來源:網絡 收藏
        摘要:詳述16單片機的MG-12232圖形點陣式液晶顯示器的硬件接口電路特點和接口軟件編程方法。

        關鍵詞:16 LCD 接口

        引言

        由于液晶顯示器(LCD)具有功耗低、體積小、質量輕、超薄等其他顯示器無法比擬的優點,它廣泛用于各種智能型儀器和低功耗電子產品中。點陣式(或圖形式)LCD不僅可以顯示字符、數字,還可以顯示各種圖形、曲線及漢字,并且可以實現屏幕上下左右滾動、動畫、閃爍、文本特征顯示等功能,用途十分廣泛。本文在簡介液晶顯示器MG-12232的驅動器SED1520F0A的結構、功能的基礎上,介紹了16單片機的LCD硬件接口電路和軟件編程特點。

        一、PIC877與MG-12232的硬件接口電路

        1.SED1520F0A的接口信號

        SED1520F0A屬行列驅動及控制合一的小規模液晶顯示驅動芯片,電路簡單,經濟實用,內含振蕩器,只須外接振蕩電阻即可工作。模塊工作的穩定性好。SED1520F0A與微處理器的接口信號如下。

        DB0~DB7:數據總線。

        A0:數據/指令選擇信號。A0=1表示出現在數據總線上的是數據;A0=0,表示出現在數據總線上的是指令或讀出的狀態。

        RES:接口時序類型選擇。RES=1為M6800時序,其操作信號是E和R/W;RES=0為Intel8080時序,操作信號是RD和WR。

        RD(E):在Intel 8080時序時為讀,低電平有效;在M6800時序時為使能信號,是個正脈沖,在下降沿處為寫操作,在高電平時為讀操作。

        WR(R/W):在Intel 8080時序時為寫,低電平有效;在M6800時序時為讀、寫選擇信號,R/W=1為讀,R/W=0為寫。

        SED1520F0A與兩種總線的接口信號和時序的詳細資料見液晶顯示模塊使用手冊。

        2.MG-12232模塊的引腳說明

        MG-12232模塊共有18個引腳,各引腳定義如表1所列。

        表1 MG-12232模塊的引腳定義

        序 號符 號狀 態功 能 說 明
        1Vcc-邏輯電源正
        2GND-邏輯電源地
        3V0-液晶顯示驅動電源
        4RES-接口時序類型選擇
        5E2輸入主工作方式IC使能信號
        6E2輸入從工作方式IC使能信號
        7R/W輸入讀/寫選擇信號
        8A0輸入寄存器選擇信號
        9~16DB0~DB7三態數據總線(低位)
        17SLA- 
        18SLK-背光燈負電源

        3.PIC877與MG-12232模塊的接口電路

        現以功能強、價格低的PIC877為例說明PIC與MG-12232模塊的硬件接口電路。其接口控制時序采用M6800操作時序,這樣SED1520F0A引出的控制信號R/W,A0,E1和E2由PIC16F877的I/O端口portb的4個腳控制。接口電路如圖1所示。圖中利用可調電阻R3實現液晶的背光亮度調節,直接用電阻R2驅動液晶的背光燈。由于PIC16F877的位操作指令豐富,所以用軟件不難模擬出M6800操作時序。

        二、接口軟件編程

        1.SED1520F0A指令集

        SED1520F0A液晶顯示驅動器有13條指令。表2所列的以與M6800系列MPU接口為例(RES=1)而總結出的指令。

        表2 SED1520F0A指令集

        指 令 名 稱控 制 信 號控 制 代 碼
        R/WA0D7D6D5D4D3D2D1D0
        顯示開/關指令001010111I/O
        顯示起始行設置00110顯示起行(0~31)
        設置頁地址00101110頁地址(0~3)
        設置列地址00

        0

        列地址(0~79)

        讀狀態指令10BUSYADCOFF/ONRESET0000
        寫數據01顯示的數據
        讀數據11顯示的數據
        ADC選擇指令0010100000/1
        靜態驅動開/關0010100100/1
        占空比選擇0010101000/1
        改寫開始指令0011100000
        改寫結束指令0011101110
        復位0011100010

        2.MG-12232模塊的編程

        下面是以圖1的接口電路為例編寫的只含E1主方式的程序(表1中E1=1,E2=0)。E2從方式(表1中E1=0,E2=1)的程序類推。

        在系統程序的初始化部分應該對程序中用到的寄存器和臨時變量作說明,如:

        lcdfial equ 0x20 ;存放標志位

        sbdata equ lcdflag+1 ;存放顯示數據

        clmadd equ sbdata+1 ;存放列地址

        pageadd equ clmadd+1 ;存放頁地址

        pagenum equ pageadd+1 ;存放總頁數

        clmsum equ pagenum+1 ;存放總列數

        intscode equ clmsum+1 ;存放指令代碼

        讀液晶顯示器狀態子程序

        Ste bsf STATUS,RP0;選中存儲區1

        movlw 0xff

        movwf TRISD ;設置D口為輸入

        bcf STATUS,RP0;選中存儲區0

        bsf PORTB,4 ;E1=1

        bsf PORTB,1 ;R/W=1

        bcf PORTB,0 ;A0=0

        Tae movf PORTD,0 ;將狀態字讀入W中

        movwf lcdfiag ;將W中的狀態字存入lcdfiag中

        btfsc lcdflag,7 ;判斷D7位是否為0

        goto Tae ;D7=1,為忙狀態

        return

        對液晶顯示器發指令子程序(指令保存在W寄存器中)

        Cwe

        Movwf intscode ;指令暫存intscode

        Bcf PORTB,1 ;R/W=0

        Bcf PORTB,0 ;A0=0

        movf intscode,0

        movwf PORTD

        bcf PORTB,4 ;E1=0寫入指令

        return

        對液晶顯示器寫數據子程序(數據保存在W寄存器中)

        Dwe

        Movwf sbdata ;數據暫存sbdata

        Movf clmadd,0

        Call Cwe ;設置列地址

        Call Ste

        Bsf STATUS,RP0

        clrf TRISD ;設置D口為輸出方式

        bcf STATUS,RP0

        bsf PORTB,4 ;E1=1

        bcf PORTB,1 ;R/W=0

        bsf PORTB,0 ;A0=1

        movf sbdata,0

        movwf PORTD

        bcf PORTB,4 ;E1=0,寫入數據

        call Ste

        inct clmadd,1 ;列地址加1

        return

        液晶顯示器開顯示、關顯示和清屏子程序

        Disp ;開E1顯示

        movlw 0xal ;將控制命令放在W中

        call Cwe

        bsf PORTB,4 ;E1=1

        call Ste ;判是否忙

        bsf STATUS,RP0

        clrf TRISD ;設置D口輸出方式

        bcf STATUS,RP0

        bsf PORTB,4 ;E1=1

        bsf PORTB,1 ;R/W=1

        bcf PORTB,0 ;A0=0

        bsf STATUS,RP0

        movlw 0xff

        movwf TRISD ;設置D口輸入方式

        bcf STATUS,RP0

        movf PORTD,0

        movwf lcdflag ;讀入狀態并查詢

        btfsc lcdflag,5 ;是否確定打開

        goto Disp

        return

        Disoff ;關E1顯示

        movlw 0xae ;控制命令入在W中

        call Cwe

        bsf PORTB,4 ;E1=1

        bsf PORTB,1 ;R/W=1

        bcf PORTB,0 ;A0=0

        bsf STATUS,RP0

        movlw 0xff

        movwf TRISD

        bcf STATUS,RP0

        movf PORTD,0

        movwf lcdfiag ;讀入狀態并查詢

        btfss lcdfiag,5 ;判是否關閉

        gogo Disoff

        return

        Cler ;清屏

        movlw 0xb8 ;設置頁地址代碼

        movwf pageadd

        movlw 0x04

        movwf pagenum ;設置總頁數

        clr1 movf pageadd,0

        call Cwe

        movlw 0x50 ;設置總列數

        movwf clmsum ;80或60列

        movlw 0x00

        movwf clmadd ;設置起始列

        clr2 movlw 0x00

        call Dwe ;寫入00H

        clar decfsz clmsum,1 ;本頁未清完

        goto pageadd,1 ;頁號增1

        decfsz pagenum,1 ;4頁未清完

        goto clr1 ;返回繼續

        return

        有了以上的通用子程序,就可以構造出各種顯示程序,如字符、漢字、曲線等。當然,在這些程序執行前必須對液晶進行初始化。初始化的順序為:關顯示→正常顯示驅動設置→占空比設置→復位→ADC選擇→清屏→開顯示。程序如下:

        初始化子程序

        Lcdinit

        call Disoff ;關顯示

        movlw 0xa4 ;靜態顯示驅動

        call Cwe

        movlw 0xe2 ;復位

        call Cwe

        movlw 0xa0 ;ADC選擇正常輸出

        call Cwe

        movlw 0x9 ;占空比為1/32

        call Cwe

        call Cler ;清零

        call Disp ;開顯示

        return

        對于字符、漢字和曲線顯示的原理是類似的。它們都是以字節為單位進行顯示。關鍵在于形成字模庫時必須保證每個上字節數據的最高位是與每一列最下面一個點相對應,最低位與每一列最上面點相對應。當然,這可以用專門的軟件來生成相應的代碼,然后再將這些代碼逐字節地寫到相應的頁和列。

        結束語

        PIC單片機與液晶模塊的接口只在硬件上滿足液晶模塊的接口要求,軟件上能夠模擬出要求的時序,并且初始化正確后,就可以隨心所欲地顯示信息了。

        以上接口電路和程序在PIC試驗板上調試通過,可作為其他單片機與LCD接口的參考。



        關鍵詞: F877 PIC 16F

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 曲水县| 肥乡县| 贞丰县| 仪陇县| 阿坝| 油尖旺区| 汤阴县| 赤壁市| 阿瓦提县| 东城区| 平顺县| 通河县| 涞水县| 克山县| 密云县| 浪卡子县| 若尔盖县| 通城县| 万全县| 苗栗县| 汝阳县| 滦平县| 溆浦县| 巴彦淖尔市| 荆州市| 黄骅市| 十堰市| 贵德县| 双鸭山市| 宜兰县| 凌源市| 西峡县| 于田县| 德惠市| 临邑县| 新乡县| 太白县| 姚安县| 彭水| 汉沽区| 新平|