Presentation is loading. Please wait.

Presentation is loading. Please wait.

Creator4510b LCD 12/01.

Similar presentations


Presentation on theme: "Creator4510b LCD 12/01."— Presentation transcript:

1 Creator4510b LCD 12/01

2 LCD 模組 LCD面板+控制器 LCD型號 AF-128128CFI-H 控制器 HD-66750 controller
128×128 dots 8×8 font size  16×16 word 4色灰階的FSTN 控制器 HD controller 內部暫存器為16-bit,介面為16-bit/8 定義2個常數來對LCD作讀寫 LCD_CMD LCD_DATA

3 電路圖 Address Bus ARM CPLD LCD Data Bus Buffer

4 實習基礎 使用8-bit 介面,因此對LCD內部的16-bit暫存器讀寫時,必需對位址執行2次
第一次High byte (MSB) 第二次Low byte (LSB) LCD-CMD下命令時,MSB值為0xFF,否則會與同步LCD的控制命令相同而產生錯誤

5 main@main.c int main(void) { Initial_Creator(); //對Creator做初始化,重置LCD
LCD_printf("hello\n"); while (1) { } return(0);

6 Initial_LCD@lcd.c // 規畫LCD操作模式 // 總共多少行, 每行多少字 // 設定游標型態
void Initial_LCD (void) { byFontHeight = 8; //文字字型高度為8 byFontWidth = 8; //文字字型寬度為8 ScrWidth = 128 / byFontWidth; //LCD每行共多少文字 ScrHeight = 128 / byFontHeight; //LCD總共有多少行 InitialLCD(); //LCD工作模式設定 LCD_CursorMode(BLACK_BLINK_CURSOR); //黑色閃爍的游標 LCD_EnableCursor(UM); //啟動游標,UM=0 }

7 游標模式定義@lcd.h // 游標各種操作模式 #define WHITE_BLINK_CURSOR 0 // 白色閃爍游標
#define BLACK_BLINK_CURSOR 1 // 黑色閃爍游標 #define REVERSE_CURSOR 2 // 黑白交換的游標 #define REVERSE_BLINK_CURSOR 3 // 黑白閃爍交換的游標

8 InitialLCD@lcd.c // 初始化LCD的命令集 void InitialLCD (void) { int i;
for (i=0; i < 4; i++){ LCD_CMD = 0; //同步命令 OptimizationDelay(); } WriteLCD(LCD_START_OSC, 1); //重新啟動LCD Delay(15); //延遲等待LCD進入穩定工作狀態

9 InitialLCD@lcd.c //設定LCD顯示模式 //128 * 128 ; Inervt COM & SEG
//CMS=1, SGS=1, CN=0, NL3-0=1111:128*128 dots, WriteLCD(LCD_DRV_OUT, 0x030f); //設定游標顯示模式 //C=1:Cursor display started, CM1-0=00:White-blink cursor) WriteLCD(LCD_CURSOR, 4); LCD_ClearScreen(); //清除畫面成空白 } …… ……

10

11 //對LCD讀取資料 unsigned short ReadLCD (unsigned short addr) { unsigned short data; LCD_CMD = 0xff; //MSB OptimizationDelay(); //for Optimization LCD_CMD = addr; //LSB data = LCD_DATA << 8; //MSB data |= LCD_DATA; //LSB //若是讀取LCD顯示區域,第一次是錯誤的,需讀取第二次 if (addr == LCD_RAM_DATA) { LCD_CMD = 0xff; //MSB OptimizationDelay(); //for Optimization LCD_CMD = addr; //LSB data = LCD_DATA << 8; //MSB data |= LCD_DATA; //LSB } return (data); }

12 WriteLCD@lcd.c //對LCD設定資料
void WriteLCD (unsigned short addr, unsigned short data) { LCD_CMD = 0xff; //MSB OptimizationDelay(); //for Optimization LCD_CMD = addr; //LSB LCD_DATA = (data >> 8) ; //MSB LCD_DATA = data; //LSB }

13

14 可呼叫函式@lcd.c 設定指標座標 void LCD_Cursor(int x, int y)
清除全部畫面 void LCD_ClearScreen (void) 列印字串於LCD上 void LCD_printf (char *fmt,...) 設定游標座標 void LCD_Cursor(int x, int y) 清除螢幕將游標歸回原點 void LCD_ClearScreen (void) 清除指定的Line void LCD_ClearOneLine (int y) 顯示字元 void LCD_putchar (char c) 顯示字元於設定的座標中 void LCD_displ (int x, int y, int ch) 設定游標是否顯示 void LCD_EnableCursor (int bCursorOn)

15 可呼叫函式@lcd.c 向下捲動 void LCD_scroll (void)
設定游標樣式 void LCD_CursorMode (unsigned char Mode) 取得游標現在位置 void LCD_GetCursor(int *x, int *y) 設定游標位置 void LCD_SetCursor(int x, int y) 螢幕填滿 void LCD_DrawFullImage (unsigned short *pImageBuffer) 丟資料於記憶體中 void LCD_PutRAMData (unsigned short address, unsigned short data)

16 實習題目 實習一:修改LCD實習,將自己的英文名字, 顯示在螢幕中間。 實習二:將一個字元繞著螢幕跑,每0.5s移動一次。
實習三:將Hello在第7行向右做跑馬燈的動作, 每1s移動一次。

17 A 第二題 第三題 Hello ello llo lo o Hell Hel He H


Download ppt "Creator4510b LCD 12/01."

Similar presentations


Ads by Google