彭勝敏
摘 要:文章以19264點陣液晶顯示屏為例,介紹了PIC單片機與19264點陣顯示屏的硬件接口電路,并給出了使用C30編寫的底層驅動接口程序和部分應用層代碼,所給出的接口設計方法對相關點陣屏的使用有一定的借鑒意義。
關鍵詞:19264;單片機;接口技術
前言
單片機應用系統中,顯示模塊有數碼管、1602、12864、19264點陣屏,這些都是最常見s的、可用于電子開發的顯示屏。其中19264點陣顯示屏功耗低,體積小、顯示信息量大,除了能顯示字母和數字外,還能顯示圖片,被廣泛的應用于工控領域。文章以19264點陣屏為例,介紹其與PIC單片機的接口技術。對于不帶字庫的液晶顯示屏應用有一定的借鑒作用。
1 硬件接口設計
19264液晶顯示屏生產廠家比較多,但是根據通訊方法有SPI,II2C、并行口這幾種方式,我們選取并行口YXD-19264顯示模塊為例,介紹硬件接口電路設計。YXD-19264顯示模塊是一種圖形點陣液晶顯示模塊,它主要由行驅動器、列驅動器及192×64全點陣液晶顯示器組成。可完成線、圓、BMP圖片等圖形顯示,也可以顯示12×4個(16×16點陣)漢字,工作溫度為-10℃~+55℃,存儲溫度存儲溫度為-20℃~+66℃,工作電流約1.3mA(無背光4,無負壓)4m(無背光,帶負壓)底背光電流小于200mA(5.6Ω限流電阻)。
YXD-19264模塊接口電路簡單,對外只有20個管腳。管腳定義如表1所示。
單片機選用PIC通用系列16 位MCUPIC24FJ256GB110,它有16位數據寬度,24位指令寬度,片內閃存256KB,有多達85個可編程數字I/O,工作40MIPS,工作電壓+3.6V-+5V,外圍資源非常豐富,非常適用于工控領域。
按照YXD-19264的管腳定義和PIC24FJ256GB110芯片資源,設計的硬件連接如下:
(1)LCD的DB0-DB78位并行數據口接RB0-RB7;(2)LCD的R/W接RB8;(3)LCD的D/I接RB9;(4)LCD的/RST接RB10;(5)LCD的E接RB11;(6)LCD的CS1,CS2分別接RB12,RB13。
2 底層驅動程序接口設計
我們采用MPLAB C30 C編譯器,此編譯器支持標準C語言編寫程序的格式。編寫好的程序可讀性好,便于移植,易于維護,可靠性高。以下所有程序都是在此平臺下編寫。
寫數據和寫命令:YXD19264點陣屏模塊內部有一個驅動芯片,為了這個顯示屏按照我們的要求正常工作,就必須按照其數據手冊要求發送命令和數據。命令可以控制顯示屏開關,設置起始行,設置頁地址、設置Y地址,讀取狀態,發送顯示數據等內容。命令和數據操作時必須按照時序圖嚴格操作。
寫操作時序(圖1):
圖1
void Write_LCD(BYTE screen, BYTE C_0R_D, BYTE load){
LCD_Check_Busy(screen);if (C_0R_D == CMD)SET_LCD_CMD;elseSET_LCD_DATA;
SET_LCD_WRITE;SET_LCD_E;LCD_DATA_TRIS = OUTPUT_DATA;Nop();
LCD_DATA_O = load;DelayUs(4);CLEAR_LCD_E;};
讀取操作時序(圖2):
圖2
void BYTE Read_LCD(BYTE screen){
BYTE data=0;LCD_Check_Busy(screen);SET_LCD_DATA;LCD_DATA_TRIS=1;Nop();
SET_LCD_READ;SET_LCD_E;Nop();Nop();Nop();Nop();data = LCD_DATA_I;
CLEAR_LCD_E;SET_LCD_WRITE;LCD_Check_Busy(screen);SET_LCD_DATA;
LCD_DATA_TRIS= INPUT_DATA;Nop();SET_LCD_READ;SET_LCD_E;Nop();Nop();Nop();
data=LCD_DATA_I;CLEAR_LCD_E;SET_LCD_WRITE;return data;};
3 應用程序程序設計
3.1 初始化程序
顯示模塊在使用前都必須按照說明書嚴格初始化,初始化液晶顯示屏有重要的兩個步驟:第一步就是復位,復位時間一定要按照數據手冊的時間完成,如果復位不完全,可能造成顯示有亂碼或者不顯示的現象。第二步就是按照數據手冊以寫命令的方式,按步驟把控制命令發送給液晶顯示屏。完成以上兩個步驟液晶顯示屏就初始化完成,可以正常工作。其示例代碼如下:
void LCD_Init(void){
LCD_RST = 0;DelayUs(200);LCD_RST = 1;DelayUs(200);Write_LCD(LEFT, CMD, DISPLAY_OFF); //關顯示
Write_LCD(MIDDLE, CMD, DISPLAY_OFF);Write_LCD(RIGHT, CMD, DISPLAY_OFF);ClearScreen();
Set_Start_Line_L(0); Set_Start_Line_M(0); Set_Start_Line_R(0); Write_LCD(LEFT, CMD, DISPLAY_ON);
Write_LCD(MIDDLE, CMD, DISPLAY_ON); Write_LCD(RIGHT, CMD, DISPLAY_ON); }
3.2 清屏
在界面換頁時,我們一般都需要清楚屏幕上的內容,19264分左、中、右三個屏組成,這三個屏幕的操作我們抽象成一個函數完成。其示例代碼如下:
void ClearScreen(void){
BYTE pages = 0;BYTE i = 0;for (pages=0; pages<8; pages++){Set_Page_L(pages);Set_Page_M(pages);
Set_Page_R(pages);for (i=0; i<64; i++){Set_Col_Addr_L(i);Set_Col_Addr_M(i);Set_Col_Addr_R(i);
Write_LCD(LEFT, DATA, 0x0);Write_LCD(MIDDLE, DATA, 0x0);Write_LCD(RIGHT, DATA, 0x0);}}}
3.3 字庫的取模
由于我們的屏沒有帶字庫,我們在編寫程序時,編譯器只能得到了漢字的內碼,還僅是一組數字,那又如何在屏幕上去顯示呢?這就涉及到文字的字模,字模雖然也是一組數字,但它的意義卻與數字的意義有了根本的變化,它是用數字的各位信息來記載英文或漢字的形狀,如英文的'A'在字模的記載方式如圖3所示:
字母、數字、漢字的字模我們通過專業的取模軟件獲得,取模軟件比較多,但是在使用時,必須都必須注意設置字體大小、取模方式(是橫向取模、還是縱向取模),生成數據格式設定(是匯編格式,還是C格式),如果所要用的字母、漢字比較多,我們可以采用批量導入。
4 結束語
點陣液晶顯示屏在工控領域有廣泛的應用,文章以YXD19264點陣屏為例,給出了與PIC單片機的接口電路和底層驅動程序,并且在此基礎之上編寫了初始化程序、清屏程序、以及應用程序中簡單取模方法,所有程序都采用C語言編寫,對各類點陣顯示屏的使用有一定的借鑒意義。
參考文獻
[1]江世明.12864液晶顯示模塊與51單片機接口技術[J].電子世界,2005.
[2]段翠萍,庫少平,李捷.12864液晶顯示程序設計[J].電氣與電子工程,2006.
[3]辛阿阿,厲善亨.基于12864液晶模塊的動態波形顯示實現方法[J].儀器儀表用戶,2010.