用80C31和SED1335控制三星LCD模塊
作者:孫友偉 韓少華 韓國(guó)三星320×240lcd lcd模塊是一款低價(jià)位高品質(zhì)的lcd模塊,具有高分辨率(點(diǎn)為0.27mm×0.27mm)、高對(duì)比度f(wàn)stn、高可靠性、低功耗、低價(jià)格等優(yōu)點(diǎn),特別適用于數(shù)控機(jī)床、pda、掌上電腦、游戲機(jī)等產(chǎn)品。 sed1335是日本seikoepson公司出品的液晶顯示控制器,在同類(lèi)產(chǎn)品中是功能很強(qiáng)。其特點(diǎn)為:有較強(qiáng)功能的i/o緩沖器;指令功能豐富;四位數(shù)據(jù)并行發(fā)送;圖形和文本方式混合顯示。 sed1335指令集 sed1335有13條指令,多數(shù)指令帶有參數(shù),參數(shù)值由用戶根據(jù)所控制的液晶顯示模塊的特征和顯示的需要來(lái)設(shè)置。指令表如表1所示?!ed1335 液晶控制板是用于mpu系統(tǒng)與液晶模塊之間的控制接口板,接收來(lái)自mpu系統(tǒng)的指令與數(shù)據(jù),并產(chǎn)生相應(yīng)的時(shí)序及數(shù)據(jù)控制模塊的顯示。a0為lcd控制器寄存器選擇輸入,類(lèi)似于通常字符點(diǎn)陣lcd模塊的rs或d/i。mpu把指令代碼寫(xiě)入指令輸入緩沖器內(nèi)(即a0=1),指令的參數(shù)數(shù)據(jù)則隨后通過(guò)數(shù)據(jù)輸入緩沖器(a0=0)寫(xiě)入。帶有參數(shù)指令代碼的作用之一就是選通相應(yīng)的參數(shù)寄存器,除sleepin、csrdir、csrr和mread外任一條指令的執(zhí)行都產(chǎn)生在附屬參數(shù)的輸入完成之后。mpu可用寫(xiě)入新參數(shù)與余下的舊參數(shù)有效地組合成新的參數(shù),需要注意的是所寫(xiě)參數(shù)的順序不能改變,也不能省略。 表1 sed1335指令集 硬件接口電路 一般sed1335控制板有一跳線,用來(lái)選擇mpu是mcs51或mc68000單片機(jī)。此處硬件設(shè)計(jì)采用單片機(jī)80c31控制sed1335來(lái)完成對(duì)液晶顯示模塊的控制。 80c31外擴(kuò)32k的27256 eeprom,用以存儲(chǔ)程序及顯示資料。lcd的八位數(shù)據(jù)d0~d7接到80c31的外部數(shù)據(jù)總線p0.0-p0.7上,lcd的片選cs接80c31的 p2.7(a15),lcd的a0接80c31的p2.0(a8),所以lcd的口地址為0xxxxxx0xxxxxxxxb或 0xxxxxx1xxxxxxxxb,v0為lcd的對(duì)比度調(diào)節(jié),接一個(gè)20k的電位器中間抽頭,當(dāng)向vee方向調(diào)時(shí),lcd對(duì)比度增大,向vdd方向調(diào)時(shí),lcd對(duì)比度減小。 軟件 seed1335的程序設(shè)計(jì)非常簡(jiǎn)潔方便,其流程是: 在硬件系統(tǒng)上電復(fù)位后,軟件根據(jù)液晶模塊的參數(shù)(如液晶的行數(shù)、列數(shù)、掃描頻率等)和需要的顯示方式設(shè)置各個(gè)指令的參數(shù)來(lái)初始化系統(tǒng),之后就可以由單片機(jī)把數(shù)據(jù)直接送給sed1335的顯示緩存,sed1335就可以控制液晶顯示。如果在后面需要改變顯示的形式(如使原來(lái)靜止的圖片翻轉(zhuǎn)),只要對(duì)應(yīng)表1 中的指令改變相應(yīng)指令的參數(shù),然后重新輸入數(shù)據(jù)即可改變顯示的方式。 設(shè)置系統(tǒng)命令參數(shù)或送數(shù)據(jù)給顯緩的方法是:先將指令代碼送到sed1335的命令口地址,然后把該指令的參數(shù)送到數(shù)據(jù)口地址后即可把數(shù)據(jù)送到數(shù)據(jù)口地址。語(yǔ)法如下: mov dptr,#xxxxh;xxxxh為命令口或數(shù)據(jù)口地址mov a,#xxh;xxh為指令代碼、代碼參數(shù)、數(shù)據(jù)movx @dptr,a 軟件初始化就是根據(jù)表1中提供的指令集設(shè)置一些有關(guān)lcd的參數(shù),以便lcd能正確顯示圖文信息。對(duì)80c31而言,所有對(duì)lcd操作的指令均為訪外部 i/o指令movx。例如,要顯示320×240的黑白位圖,先將位圖反色,把bmp.hex和程序一起燒錄到27256中,位圖存放在1000h開(kāi)始的地址。針對(duì)320×240lcd點(diǎn)陣三層圖形疊加顯示初始化程序如下。 init:mov dptr,#0101h;命令40h參數(shù)設(shè)置,#0101h為命令口地址mov a,#40hmovx @dptr,a;把命令代碼送給命令口地址 mov a,#30hmov dptr,#0000h;#0000h為數(shù)據(jù)口地址movx @dptr,a;把參數(shù)送給數(shù)據(jù)口地址mov