新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 簡單實用的四線點陣液晶驅動方式

        簡單實用的四線點陣液晶驅動方式

        作者: 時間:2009-02-26 來源:網絡 收藏

        隨著科學技術的飛速發展,電子產品越來越向智能化、小型化、人性化、低功耗等方面發展。而顯示屏的興起,為上述要求的實現提供了可能。顯示屏大致可分為段式、字符式、式,或者單色、彩色等。大多顯示屏都實現了標準化和模塊化,采用通用的控制芯片(例如SED1330、SED1520、HD61202等)實現與單片機等的連接,但此類液晶顯示模塊多采用并行的數據線和控制線連接。在實際應用中,考慮到產品的成本和體積,采用并行的數據線和控制線連接,使用起來不是很方便。因此希望采用標準的工業總線I2C、SPI等連接,而這類產品卻很少見。本文巧妙地利用液晶顯示模塊的特點,采用一片74LS164實現液晶的四線控制,電路

        本文引用地址:http://www.104case.com/article/173887.htm

        1 液晶顯示模塊簡介

          本文介紹的是一種采用SED1520芯片控制的122×32圖形,它主要由行/列及122×32全點陣液晶顯示器組成,可完成圖形顯示,也可顯示七個半(16×16點陣)漢字。主要技術參數和顯示特性如下:

          ?電源:VDD為+3V~+5V;LCD外接電壓VDD-VLCD=5.0V。

          ?顯示內容:122(列)×32(行)點。

          ?顯示顏色:黃綠底藍字。

          ?顯示角度:6點鐘直視。

          ?STN正視反射模式。

          ?驅動:1/32 Duty,1/6 Bias。

          ?驅動電流:最大240μA。

        液晶顯示模塊驅動原理圖如圖1所示。

        液晶顯示模塊引腳特性如表1所示。

        部分傳送指令表如表2所示。

        2 四線點陣驅動電路

          四線點陣驅動電路如圖2所示。

        系統采用一片74LS164以串入并出與點陣液晶顯示模塊FM12232C連接,通過四條信號線(SDA串行數據線、CLK/A0串行時鐘線即液晶顯示模塊的A0數據/指令控制線、E1主驅動芯片使能線、E2從驅動芯片使能線)實現點陣液晶顯示屏的驅動。與液晶顯示模塊所提供的電路連接相比,四條線與單片機2051連接至少減少7根口線,這樣大大節省了小型電子產品中寶貴的單片機口線資源,使產品更加人性化和智能化。

          根據液晶顯示屏的控制指令及時序可知,只要在對模塊寫入數據的同時保證模塊指令操作延時足夠,就可以不檢查模塊狀態,達到直接控制的目的。點陣液晶顯示屏的一個點對應存儲器中的一位,置位則顯示,清除則不顯示,因此只要控制相應的數據位就可控制液晶顯示屏的顯示。液晶顯示模塊的顯示數據采用分頁方式存儲(存儲器的劃分請參閱相關資料)。

          數據傳送時,首先選擇使能端“E1”或“E2”,送數據到74LS164,然后送指令/數據選擇信號“A0”,關閉使能端,實現數據和指令的傳送,使液晶顯示屏顯示圖形或漢字等。

        3 相關軟件

          相關軟件采用匯編語言編寫。由于篇幅限制,只提供傳送指令和數據到液晶顯示模塊的子程序,并通過初始化程序和顯示漢字程序介紹如何使用上述子程序。關于顯示漢字子程序、其它顯示字符串、動畫、圖形以及在Windows下提取字庫和圖形庫相關程序,如有需要請與作者聯系。

          源程序如下:

        sda bit p1.7 ;定義sda線

        clk bit p1.6 ;定義clk線

        e1 bit p1.5 ;定義master 使能

        e2 bit p1.4 ;定義slave使能

        a0 bit p1.6 ;定義數據/指令選擇線

        outmi: ;送顯示指令到master SED1520

        setb e1 ;master使能

        clr e2 ;slave關閉

        lcall trndata ;傳送一個字節

        clr a0 ;設置此字節為指令

        clr e1 ;master關閉

        ret

        outsi: ;送顯示指令到slave SED1520

        setb e2

        clr e1

        lcall trndata

        clr a0

        clr e2

        ret

        outmd: ;送顯示數據到master SED1520

        setb e1

        clr e2

        lcall trndata

        setb a0

        clr e1

        ret

        outsd: ;送顯示數據到slave SED1520

        setb e2 ;slave使能

        clr e1 ;master關閉

        lcall trndata ;傳送一個字節

        setb a0 ;設置此字節為顯示數據

        clr e2 ;slave關閉

        ret

        trndata: ;傳送一個字節到液晶顯示模塊

        push a ;保存原始數據

        setb sda ;sda線置位

        setb clk ;clk線置位

        mov r7,#08h

        trn_loop:

        rlc a

        clr clk

        mov sda,C

        setb clk

        djnz r7,trn_loop

        pop a ;恢復原始數據

        ret

        init: ;初始化液晶顯示模塊

        mov a,#0e3h ;LCD復位

        lcall outmi

        lcall outsi

        mov a,#0aeh ;關顯示

        lcall outmi

        lcall outsi

        mov a,#0a4h ;動態驅動

        lcall outmi

        lcall outsi

        mov a,#0a9h ;刷新率選擇1/32

        lcall outmi

        lcall outsi

        mov a,#0a0h ;ADC選擇右移

        lcall outmi

        lcall outsi

        mov a,#0eeh ;結束讀寫

        lcall outmi

        lcall outsi

        mov a,#00h ;設置列地址0

        lcall outmi

        lcall outsi

        mov a,#0c0h ;設置顯示開始行0

        lcall outmi

        lcall outsi

        mov a,#0afh ;開顯示

        lcall outmi

        lcall outsi

        ;下面為

        mov r1,#20 ;的起始為第 20列

        mov dptr,#tian ;“天”字字庫地址

        clr 10h ;10h=‘0’顯示在第一行

        mov 1fh,#10h ;1fh=‘10h’表示為16×16 點陣

        lcall dishz ;調用顯示漢字子程序

        ;子程序名稱: dishz

        ;dptr: 對應字庫的起始地址

        ;r1: 顯示數據在122列中的起始列

        ;位10h: 0――顯示在第一行,1――顯示在第二行

        ;1fh: 顯示漢字16×16=10h,顯示字符16×8=8h



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 拉孜县| 禹城市| 宁强县| 上饶县| 绥化市| 凤山市| 中江县| 平罗县| 忻州市| 濮阳县| SHOW| 永春县| 中牟县| 宜州市| 榕江县| 华阴市| 个旧市| 兴义市| 三门峡市| 广宁县| 孟津县| 西城区| 宝坻区| 民乐县| 大渡口区| 尼玛县| 太原市| 会泽县| 集贤县| 安塞县| 新巴尔虎左旗| 金湖县| 崇礼县| 高密市| 越西县| 库车县| 辉南县| 盱眙县| 东乡县| 兴国县| 连州市|