Creator4510b LCD lab.

Download Report

Transcript Creator4510b LCD lab.

Creator4510b LCD
12/01
LCD 模組 LCD面板+控制器

LCD型號 AF-128128CFI-H




128×128 dots
8×8 font size  16×16 word
4色灰階的FSTN
控制器 HD-66750 controller


內部暫存器為16-bit,介面為16-bit/8
定義2個常數來對LCD作讀寫


LCD_CMD
LCD_DATA
電路圖
Address
Bus
ARM
CPLD
Data Bus
Buffer
LCD
實習基礎

使用8-bit 介面,因此對LCD內部的16-bit暫存
器讀寫時,必需對位址執行2次



第一次High byte (MSB)
第二次Low byte (LSB)
LCD-CMD下命令時,MSB值為0xFF,否則會
與同步LCD的控制命令相同而產生錯誤
[email protected]

int main(void)
{
Initial_Creator();
LCD_printf("hello\n");
while (1) {
}
return(0);
}
//對Creator做初始化,重置LCD
[email protected]

// 規畫LCD操作模式
// 總共多少行, 每行多少字
// 設定游標型態
void Initial_LCD (void)
{
byFontHeight = 8;
byFontWidth = 8;
ScrWidth = 128 / byFontWidth;
ScrHeight = 128 / byFontHeight;
InitialLCD();
LCD_CursorMode(BLACK_BLINK_CURSOR);
LCD_EnableCursor(UM);
}
//文字字型高度為8
//文字字型寬度為8
//LCD每行共多少文字
//LCD總共有多少行
//LCD工作模式設定
//黑色閃爍的游標
//啟動游標,UM=0
游標模式定義@lcd.h

// 游標各種操作模式
#define WHITE_BLINK_CURSOR
0
#define BLACK_BLINK_CURSOR
1
#define REVERSE_CURSOR
2
#define REVERSE_BLINK_CURSOR 3
// 白色閃爍游標
// 黑色閃爍游標
// 黑白交換的游標
// 黑白閃爍交換的游標
[email protected]

// 初始化LCD的命令集
void InitialLCD (void) {
int
i;
//LCD初始命令同步
for (i=0; i < 4; i++){
LCD_CMD = 0;
OptimizationDelay();
}
//同步命令
WriteLCD(LCD_START_OSC, 1);
//重新啟動LCD
Delay(15);
//延遲等待LCD進入穩定工作狀態
[email protected]
//設定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();
}
//清除畫面成空白
[email protected]

//對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);
}
[email protected]

//對LCD設定資料
void WriteLCD (unsigned short addr, unsigned short data)
{
LCD_CMD = 0xff;
//MSB
OptimizationDelay();
//for Optimization
LCD_CMD = addr;
//LSB
LCD_DATA = (data >> 8) ;
OptimizationDelay();
LCD_DATA = data;
}
//MSB
//for Optimization
//LSB
可呼叫函式@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)
可呼叫函式@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)
實習題目

實習一:修改LCD實習,將自己的英文名字, 顯示在螢幕
中間。

實習二:將一個字元繞著螢幕跑,每0.5s移動一次。

實習三:將Hello在第7行向右做跑馬燈的動作, 每1s移動
一次。
A
第二題
Hello
o
lo
llo
ello
Hell
Hel
He
H
第三題