在小規(guī)模圖形液晶顯示模塊上使用液晶顯示驅(qū)動(dòng)控制器組成液晶顯示驅(qū)動(dòng)和控制系統(tǒng),是當(dāng)今低成本,低功耗,高集成化設(shè)計(jì)的最好選擇,SED1520是當(dāng)前最常用的一種液晶顯示驅(qū)動(dòng)控制器,這類(lèi)圖形液晶顯示模塊的規(guī)模為32行,本文用到的液晶模塊CM12232即是內(nèi)置SED1520的液晶顯示模塊,該模塊的驅(qū)動(dòng)控制系統(tǒng)由兩片SED1520組成。
??? FPGA即現(xiàn)場(chǎng)可編程門(mén)陣列器件,這是一種超大規(guī)模集成電路,具有在電路可重配置的能力(in circuit reconfigurable,ICR)。設(shè)計(jì)者設(shè)計(jì)的邏輯可在編譯、適配后變成網(wǎng)絡(luò)表下載到FPGA芯片上之后,F(xiàn)PGA即可執(zhí)行設(shè)計(jì)的邏輯功能。因此,F(xiàn)PGA在芯片控制、接口邏輯設(shè)計(jì)等各個(gè)方面的應(yīng)用越來(lái)越廣泛。
系統(tǒng)硬件設(shè)計(jì)
??? 本方案采用的FPGA為Alter公司的ACEX1K30芯片,它可提供系統(tǒng)的時(shí)鐘及讀寫(xiě)控制,ACEX系列的FPGA由邏輯陣列塊LAB(Logic array block)、嵌入式陣列塊EAB(embedded array block)、快速互聯(lián)以及IO單元構(gòu)成,每個(gè)邏輯陣列塊包含8個(gè)邏輯單元LE(logic element)和一個(gè)局部互聯(lián)[1]。每個(gè)邏輯單元?jiǎng)t由一個(gè)4輸入查找表(LUT)、一個(gè)可編程觸發(fā)器、快速進(jìn)位鏈、級(jí)連鏈組成,多個(gè)LAB和多個(gè)EAB則可通過(guò)快速通道互相連接。EAB是ACEX系列器件在結(jié)構(gòu)設(shè)計(jì)上的一個(gè)重要部件,他是輸入端口和輸出端口都帶有觸發(fā)器的一種靈活的RAM塊,其主要功能是實(shí)現(xiàn)一些規(guī)模不太大的FIFO、ROM、RAM和雙端口RAM等。在本液晶顯示接口電路中,EAB主要用宏功能模塊實(shí)現(xiàn)片上ROM。它通過(guò)調(diào)用FPGA上的EAB資源來(lái)實(shí)現(xiàn)漢字的顯示和字符的存儲(chǔ),并根據(jù)控制信號(hào)產(chǎn)生的地址值從ROM中讀取字符值,然后送LCD顯示器進(jìn)行顯示。
??? 由于所用的圖形點(diǎn)陣液晶塊內(nèi)置有SED1520控制器,所以,其電路特性實(shí)際上就是SED1520的電路特性。SED1520的主要特性如下[2]:
??? 具有液晶顯示行驅(qū)動(dòng)器,具有16路行驅(qū)動(dòng)輸出,并可級(jí)聯(lián)實(shí)現(xiàn)32行驅(qū)動(dòng)。
??? 具有液晶顯示列驅(qū)動(dòng)器,共有61路列驅(qū)動(dòng)輸出。
??? 內(nèi)置時(shí)序發(fā)生器,其占空比可設(shè)置為1/16和1/32兩種。
??? 內(nèi)藏顯示存儲(chǔ)器,顯示存儲(chǔ)器內(nèi)的數(shù)據(jù)可直接顯示,"1"為顯示,"0"為不顯示。
??? 接口總線時(shí)序可適配8080系列或M6800系列,并可直接與計(jì)算機(jī)接口。
??? 操作簡(jiǎn)單,有13條控制指令。
??? 采用CMOS工藝,可在電壓低至2.4-7.0V時(shí)正常工作,功耗僅30μW。
??? 本設(shè)計(jì)所用的字符液晶模塊CM12232由兩塊SED1520級(jí)連驅(qū)動(dòng),其中一個(gè)工作在主工作方式下,另一個(gè)工作在從方式下,主工作方式SED1520負(fù)責(zé)上半屏16行的驅(qū)動(dòng)和左半屏的61列驅(qū)動(dòng),從工作方式的SED1520則負(fù)責(zé)下半屏16行的驅(qū)動(dòng)和右半屏的61列驅(qū)動(dòng),使能信號(hào)E1、E2用來(lái)區(qū)分具體控制的是那一片SED1520,其系統(tǒng)的硬件連接圖如圖1所示。
??? 由圖1可見(jiàn),該系統(tǒng)的硬件部分連接十分簡(jiǎn)單,其中FPGA部分沒(méi)畫(huà)出,而液晶與FPGA的接口則可直接以網(wǎng)表的形式給出,將它們直接與FPGA的普通I/O引腳相連即可。
系統(tǒng)的軟件接口實(shí)現(xiàn)
??? 具體實(shí)現(xiàn)的重點(diǎn)是如何從存放有字符的ROM塊中讀出數(shù)據(jù),并按照液晶的時(shí)序正確的寫(xiě)入,在介紹具體實(shí)現(xiàn)方法前,首先要熟悉SED1520的指令。
??? SED1520的控制指令表
??? SED1520的幾種主要的控制指令格式如下:
(1)復(fù)位格式(Reset)
??? 該指令用于實(shí)現(xiàn)SED1520的軟件復(fù)位。該指令執(zhí)行時(shí),顯示起始行寄存器清零,接著列地址指針清零,之后頁(yè)地址寄存器置為"3"。
(2)休閑狀態(tài)設(shè)置(Statis drive ON/OFF)
?
??? 該指令是休閑狀態(tài)的軟件開(kāi)關(guān),當(dāng)S=1時(shí),SED1520進(jìn)入休閑狀態(tài);當(dāng)S=0時(shí),SED1520將中止或退出休閑狀態(tài)。
(3)占空比設(shè)置(Slect duty)
?
??? 該指令用于設(shè)置SED1520的占空比,Du=0時(shí)為1/16占空比,Du為1時(shí)為1/32占空比。
(4)ADC選擇指令(Selet ADC)
?
??? 該指令用于設(shè)置顯示存儲(chǔ)器中單元的地址所對(duì)應(yīng)的顯示驅(qū)動(dòng)輸出的順序。A=0時(shí),順時(shí)針顯示;A=1時(shí),逆時(shí)針顯示。
(5)顯示起始行設(shè)置(Display start line)
?
??? 該指令可用于設(shè)置顯示屏上第一行(行驅(qū)動(dòng)輸出COMO所對(duì)應(yīng)的顯示行)所對(duì)應(yīng)的顯示存儲(chǔ)器的行號(hào),由此行順序下延可得到對(duì)應(yīng)顯示屏上的顯示效果,L=0-31(1FH),對(duì)應(yīng)表示顯示存儲(chǔ)器的第1-32行。
(6)顯示開(kāi)/關(guān)設(shè)置(Display ON/OFF)
?
??? 該指令控制著顯示驅(qū)動(dòng)器的輸出。當(dāng)Di=0時(shí),顯示關(guān),當(dāng)Di=1時(shí),顯示開(kāi)。
(7)頁(yè)面顯示存儲(chǔ)的設(shè)置
?
??? SED1520將顯示存儲(chǔ)器分為4個(gè)頁(yè)面(0-3頁(yè))。每個(gè)頁(yè)面都有80個(gè)字節(jié)。頁(yè)面管理可由2位頁(yè)地址寄存器控制,該指令就是設(shè)置頁(yè)地址寄存器的內(nèi)容,以選擇相應(yīng)的顯示寄存器的頁(yè)面。P=0-3,對(duì)應(yīng)代表0-3頁(yè)。
(8)列地址設(shè)置(Set column(segment)address)
?
??? SED1520的顯示存儲(chǔ)器的每個(gè)頁(yè)面上都有80個(gè)字節(jié),每個(gè)字節(jié)中的8位數(shù)據(jù)對(duì)應(yīng)著顯示屏上同一列的8點(diǎn)行,列地址指針就是管理這80個(gè)字節(jié)單元的,列地址指針是一個(gè)7位加一計(jì)數(shù)器,由它和頁(yè)地址寄存器組合,可唯一指定顯示存儲(chǔ)器的某一個(gè)單元,列地址指針在計(jì)算機(jī)對(duì)顯示存儲(chǔ)器的每次操后都將自動(dòng)加一。該指令就是設(shè)置列地址指針內(nèi)容的。當(dāng)CY=0-4FH,分別對(duì)應(yīng)于1-80單元的地址。
頂層設(shè)計(jì)大批量
??? 本設(shè)計(jì)具體實(shí)現(xiàn)的頂層設(shè)計(jì)原理圖如圖2所示。
??? 圖2中l(wèi)pm_rom模塊是利用FPGA的宏功能模塊產(chǎn)生的片上ROM塊[3],用以存放要顯示的字符數(shù)據(jù)。ctrl模塊則為控制從ROM中取出數(shù)據(jù)后液晶上顯示的核心控制模塊,其功能包括控制數(shù)據(jù)的讀寫(xiě)時(shí)序、液晶屏的分屏顯示控制、分頁(yè)顯示控制等。
控制模塊程序代碼
??? ctrl模塊的程序核心代碼如下:
architecture Behavioral of ctrl is
signal divcnt:std_logic_vector(11 downto 0);--系數(shù)計(jì)數(shù)
signal data:std_logic_vecdor(9 downto 0);--地址輸出
Signal clk1,clk2,a01,cs11,cs21,flag,csflag:std_logic;
data<=divcnt(11 downto 2);--最高10位為地址
process3(clk2)
begin
if clk2'event and clk2=`1'then case conv_integer (data)is
when 0|2|4|6|8|10|12|13|138|139|264|265|390|391=>A01<=`0';cs11<=`0';cs21<=`1';
when 1|3|5|7|9|11|75|76|201|202|327|328|453|454=>A01<=`0';cs11<=`1';cs21<=`0';
when 14 to 74=>A01<=`1';cs11<=`0';cs21<=`1';
when 140 to 200=>A01<=`1';cs11<=`0';cs21<=1';
when 266 to 326=>A01<=`1';cs11<=`0';cs21<=`1';
when 392 to 452=>A01<=`1';cs11<=`0';cs21<=`1';
when 77 to 137=>A01<=`1';cs11<=`1';cs21<=`0';
when 203 to 263=>A01<=`1';cs11>=`1';cs21<=`0';
when 329 to 389=>A01<=`1';cs11<=`1';cs21<=`0';
when 455 to 515=>A01<=`1';cs11<=`1';cs21<=`0';
when others=>A01<=`0';cs11<=`1';cs21<=`1';
end case;
end if;
end process3;
a0<=a01;
cs1<=cs11 or csflag;
cs2<=cs21 or csflag;
ad<=data;
end Behavioral;
??? 其中的關(guān)鍵程序?yàn)镻rocess3;在該過(guò)程中,A01負(fù)責(zé)該數(shù)據(jù)寫(xiě)到液晶數(shù)據(jù)線上顯示還是寫(xiě)到液晶的控制寄存器進(jìn)行控制,A01為0時(shí)為寫(xiě)命令,A01為1時(shí)為寫(xiě)數(shù)據(jù)。
??? 程序中,ROM地址的前13個(gè)單元均為寫(xiě)命令,根據(jù)SED1520的控制命令字,ROM表中的0、2、4、6、8、10單元依次是E2、A4、A9、A0、C0、AF,主要用于實(shí)現(xiàn)對(duì)CSI主工作的SED1520復(fù)位、退出休閑狀態(tài)、設(shè)置占空比為1/32、順時(shí)針顯示數(shù)據(jù)RAM中的內(nèi)容、顯示起始對(duì)應(yīng)顯示存儲(chǔ)器的0行、顯示開(kāi)這一系列的初始化工作;而1,3,5,7,9,11單元?jiǎng)t寫(xiě)入到CS2(即從工作的SED1520)實(shí)現(xiàn)其初始化[4]。第13單元放的是B8(即頁(yè)地址設(shè)置為0),從14-74單元,A01=1為寫(xiě)數(shù)據(jù),此時(shí)片選CS1有效,ROM表中連續(xù)放入"武漢理工"4個(gè)漢字的上半部分字模(本方案共顯示16個(gè)漢字"武漢理工大學(xué)自動(dòng)化學(xué)院重點(diǎn)實(shí)驗(yàn)室"分兩行,每行8個(gè)字顯示);之后,75、76單元為寫(xiě)命令,ROM中的數(shù)據(jù)為B8,00表示設(shè)置顯示頁(yè)為0頁(yè),該頁(yè)的列地址從0開(kāi)始[5]。從77-137單元地址向CS2(即從動(dòng)工作方式的SED1520)寫(xiě)數(shù)據(jù)即"大學(xué)自動(dòng)"的前半部分字模,接下來(lái)的138、139單元為寫(xiě)命令,ROM中的數(shù)據(jù)為B9,00即表示頁(yè)地址設(shè)置為1列,地址為0,140-200單元放入"武漢理工"的下半部分字模,201、202單元為寫(xiě)命令,ROM中的數(shù)據(jù)為B9、00表示頁(yè)地址設(shè)置為1列,地址為0,203-263中為"大學(xué)自動(dòng)"的下半部分字模,之后,8個(gè)字的寫(xiě)入過(guò)程與前8個(gè)字的寫(xiě)入過(guò)程相同,寫(xiě)命令單元用于控制要寫(xiě)的頁(yè)。
結(jié)束語(yǔ)
??? 本方案以FPGA為控制核心實(shí)現(xiàn)了對(duì)字符點(diǎn)陣液晶的控制,該方案硬件電路簡(jiǎn)單,軟件程序簡(jiǎn)潔,對(duì)液晶的控制簡(jiǎn)單而且穩(wěn)定,且可靈活改動(dòng),若要改變液晶顯示的漢字,只需改變ROM表中的字模即可,實(shí)踐證明,該設(shè)計(jì)是對(duì)液晶應(yīng)用的一種行之有效的方法。
評(píng)論
查看更多