2 四線點(diǎn)陣液晶顯示屏驅(qū)動(dòng)電路
四線點(diǎn)陣液晶顯示屏驅(qū)動(dòng)電路如圖2所示。
系統(tǒng)采用一片74LS164以串入并出方式與點(diǎn)陣液晶顯示模塊FM12232C連接,通過(guò)四條信號(hào)線(SDA串行數(shù)據(jù)線、CLK/A0串行時(shí)鐘線即液晶顯示模塊的A0數(shù)據(jù)/指令控制線、E1主驅(qū)動(dòng)芯片使能線、E2從驅(qū)動(dòng)芯片使能線)實(shí)現(xiàn)點(diǎn)陣液晶顯示屏的驅(qū)動(dòng)。與液晶顯示模塊所提供的電路連接方式相比,四條線與單片機(jī)2051連接至少減少7根口線,這樣大大節(jié)省了小型電子產(chǎn)品中寶貴的單片機(jī)口線資源,使產(chǎn)品更加人性化和智能化。
根據(jù)液晶顯示屏的控制指令及時(shí)時(shí)序可知,只要在對(duì)模塊寫入數(shù)據(jù)的同時(shí)保證模塊指令操作延時(shí)足夠,就可以不檢查模塊狀態(tài),達(dá)到直接控制的目的。點(diǎn)陣液顯示屏的一個(gè)點(diǎn)對(duì)應(yīng)存儲(chǔ)器中的一位,置位則顯示,清除則不顯示,因此只要控制相應(yīng)的數(shù)據(jù)位就可控制液晶顯示屏的顯示。液晶顯示模塊的屏示數(shù)據(jù)采用分頁(yè)方式存儲(chǔ)(存儲(chǔ)器的劃分請(qǐng)能閱相關(guān)資料)。
數(shù)據(jù)傳送時(shí),首先選擇使能端“E1”或“E2”,送數(shù)據(jù)到74LS164,然后送指令/數(shù)據(jù)選擇信號(hào)“A0”,關(guān)閉使能端,實(shí)現(xiàn)數(shù)據(jù)和指令的傳送,使液晶顯示屏顯示圖形或漢字等。

3 相關(guān)軟件
相關(guān)軟件采用匯編語(yǔ)言編寫。由于篇幅限制,只提供傳送指令和數(shù)據(jù)到液晶顯示模塊的子程序,并通過(guò)初始化程序和顯示漢字程序介紹如何使用上述子程序。關(guān)于顯示漢字子程序、其它顯示字符串、動(dòng)畫、圖形以及在Windows下提取字庫(kù)和圖形庫(kù)相關(guān)程序,如有需要請(qǐng)與作者聯(lián)系。
源程序如下:
sda bit p1.7;定義sda線
clk bit p1.6;定義clk線
e1 bit p1.5;定義master使能
e2 bit p1.4;定義slave使能
a0 bit p1.6;定義數(shù)據(jù)/指令選擇線
outmi: ;送顯示指令到master SED1520
setb e1 ;master使能
clr e2 ;slave關(guān)閉
lcall trndata ;傳送一個(gè)字節(jié)
clr a0 ;設(shè)置此字節(jié)為指令
clr e1 ;master關(guān)閉
ret
outsi: ;送顯示指令到slave SED1520
setb e2
clr e1
lcall trndata
clr a0
clr e2
ret
outmd: ;送顯示數(shù)據(jù)到master SED1520
setb e1
clr e2
lcall trndata
setb a0
clr e1
ret
outsd: ;送顯示數(shù)據(jù)到slave SED1520
setb e2 ;slave使能
clr e1 ;master關(guān)閉
lcall trndata ;傳送一個(gè)字節(jié)
setb a0 ;設(shè)置此字節(jié)為顯示數(shù)據(jù)
clr e2 ;slave關(guān)閉
ret
trndata: ;傳送一個(gè)字節(jié)到液晶顯示模塊
push a ;保存原始數(shù)據(jù)
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 ;恢復(fù)原始數(shù)據(jù)
ret
init: ;初始化液晶顯示模塊
mov a,#0e3h ;LCD復(fù)位
lcall outmi
lcall outsi
mov a,#0aeh ;關(guān)顯示
lcall outmi
lcall outsi
mov a,#0a4h ;動(dòng)態(tài)驅(qū)動(dòng)
lcall outmi
lcall outsi
mov a,#0a9h ;刷新率選擇1/32
lcall outmi
lcall outsi
mov a,#0a0h ;ADC選擇右選
lcall outmi
lcall outsi
mov a,#0eeh ;設(shè)置列地址0
lcall outmi
lcall outsi
mov a,#0c0h ;設(shè)置顯示開始行0
lcall outmi
lcall outsi
mov a,#0afh ;開顯示
lcall outmi
lcall outsi
;下面為漢字顯示
mov r1,#20 ;漢字顯示的起始為第20列
mov dptr,#tian ;“天”字字庫(kù)地址
clr 10h ;10h=''0''顯示在第一行
mov 1fh,#10h ;1fh=''10h''表示為16×16點(diǎn)陣
lcall dishz ;調(diào)用顯示漢字子程序
;子程序名稱: dishz
;dptr: 對(duì)應(yīng)字庫(kù)的起始地址
;r1: 顯示數(shù)據(jù)在122列中的起始列
;位10h: 0——顯示在第一行,1——顯示在第二行
;1th: 顯示漢字16×16=10h,顯示字符16×8=8h





