51單片機和圖形LCD接口技術的實現
1、液晶模塊的特點:
EDM240128 圖形LCD 是大連神迅信息股份有限公司生產的240*128 點陣式LCD。 內置8K 的數據存儲器,液晶顯示控制芯片為東芝公司生產的T6963C。它的總線可以直接適配MCS51 總線。允許單片機隨時訪問顯示緩沖區(qū),甚至可以進行位操作,直接控制某一點。同時這款液晶還有讀/寫地址自動加/減1 的功能,為大量數據的傳送編程提供了方便。
2、硬件實現:
采用89S52 單片機,其內部有8K的FLASH ROM,將需要顯示的圖片數據和程序直接存儲在里面,使得此電路功能實現十分簡單。
圖1 是89S52 與LCD 顯示器模塊的并口方式下的接口電路。
P1.0 接LCD 的復位,VEE用來調節(jié)顯示屏灰度,手冊中給出電壓范圍是 8V~ -23V,在使用中發(fā)現超過 -15V顯示顏色已經過深而看不清了。實際測試得到合適電壓范圍為-13.8V~-14.8V,調節(jié)該點電壓可改變顯示屏字符圖形顏色的深淺。由于該點電流極小,用一個普通的電位器調節(jié)即可。
3、圖片數據的提取
圖片轉化成字節(jié)類型的數據可采用專用的程序,文中采用PICtoCODE【圖片數據生成器】V1.0,設計為 hy_zhangwang,此軟件可從互聯網上免費下載。
PICtoCODE 可以將黑白單色圖片(支持BMP、JPEG、JPG、GIF 等格式)轉換為A51、C51、HEX 等格式的數據文件。數據生成的順序為從上至下,從左到右,左上角象素對應第1 個字節(jié),右下腳對應最后一個字節(jié)。軟件要求圖片寬度必須為8 的整數倍,如果待處理的圖片寬度不是8 的整數倍,需要先用圖形編輯軟件(如windows 系統(tǒng)自帶的畫圖程序)作預處理。
如果圖片不是黑白單色圖片,可以用“彩色>>黑白...”功能將圖片轉換為黑白圖片,然后再導出數據或代碼。
4、軟件設計
EDM240128 的控制指令可帶兩個參數、一個參數或者無參數。每條指令都是先送入參數,再送入指令代碼。如果所送參數多于規(guī)定個數,最后送入的有效。每次操作前必須檢測其狀態(tài)字。由于狀態(tài)位作用不同,因此執(zhí)行不同的指令應檢測不同的狀態(tài)位。顯示器上的240*128 點,每8 個點為一個字節(jié)的數據,都 一一對應顯示緩沖區(qū)的數據。一點對應一個bit ,bit=1 該點顯示黑點,bit=0則該點消失。
LCD 有一條display ON/OFF 指令,display ON 時顯示緩沖區(qū)的數據對應顯示畫面,display OFF時則畫面消失,但緩沖區(qū)的數據仍然存在,并沒有丟失。有關命令請詳細查閱T6963C使用手冊。
軟件采用C51 編寫,大大提高了開發(fā)效率
單片機程序:
#define ming 0x4000 //指令口地址
#define shuju 0x0000 //數據口地址
#includeat89x52.h>
void delay(unsigned int i) //延時
{/*-----------*/}
void writed(char a) // 寫數據子程序
{/*----------*/}
void writec(char a) //寫指令子程序
{/*-----------*/}
void busy() //判斷標志位是否忙
{*/-----------*/}
main()
{ unsigned char ji=0;
code char seg[3840]={/*-----------*/};///要顯示的圖片數據
P1_0=0;
delay(100);
P1_0=1;
busy();
writed(0x00);
busy();
writec(0x24);
busy();
writec(0xb0); /////設置自動寫,地址加一
busy();
for(ji=0;ji3840;ji++)
{ writed(seg[ji]);
busy();
}
writec(0xb3); // 自動寫結束
busy();
writec(0x98); // 開顯示
//-----------------------------------
}
5、結束語
T6963C 控制芯片廣泛應用在各種圖形點陣LCD 上,除了大連神迅公司的EDM240128和EDM12864 圖形LCD 采用此芯片外,金鵬奧可拉公司的OCM128*64、OCM240*128、深圳松山公司的CA12864A、信利公司的MPG240128A 等均采用這款芯片。我們可以很方便地作出各種友好的人機界面。
評論