本章我們将介紹 ALIENTEK 2.8 寸 TFT LCD 子產品,該子產品采用 TFTLCD 面闆,可以顯示 16 位色的真彩圖檔。
TFT-LCD 即薄膜半導體液晶顯示器。其英文全稱為: Thin Film Transistor-Liquid CrystalDisplay。 TFT-LCD 與無源 TN-LCD、 STN-LCD 的簡單矩陣不同,它在液晶顯示屏的每一個象素上都設定有一個薄膜半導體( TFT),可有效地克服非選通時的串擾,使顯示液晶屏的靜态特性與掃描線數無關,是以大大提高了圖像品質。 TFT-LCD 也被叫做真彩液晶顯示器。
特點: 1, 2.4’ /2.8’ /3.5’ /4.3’ /7’ 5 種大小的螢幕可選。
2, 320× 240 的分辨率( 3.5’ 分辨率為:320*480, 4.3’ 和 7’ 分辨率為: 800*480)。
3, 16 位真彩顯示。
4,自帶觸摸屏,可以用來作為控制輸入。
(我買的是2.8的屏) 。。接下來就是學習lcd庫了,我個人感覺我們應該把它當成一個庫來學。。(看了一下光lcd.c檔案就3000多行每次我們都自己寫不得累死。。)要掌握裡面的各種函數的用法,恩。。不是一朝一夕的事,今天就先貼一下lcd.h 主要是一堆庫函數的聲明
#ifndef __LCD_H
#define __LCD_H
#include "sys.h"
#include "stdlib.h"
//LCD重要參數集
typedef struct
{
u16 width; //LCD 寬度
u16 height; //LCD 高度
u16 id; //LCD ID
u8 dir; //橫屏還是豎屏控制:0,豎屏;1,橫屏。
u16 wramcmd; //開始寫gram指令
u16 setxcmd; //設定x坐标指令
u16 setycmd; //設定y坐标指令
}_lcd_dev;
//LCD參數
extern _lcd_dev lcddev; //管理LCD重要參數
//LCD的畫筆顔色和背景色
extern u16 POINT_COLOR;//預設紅色
extern u16 BACK_COLOR; //背景顔色.預設為白色
//-----------------LCD端口定義----------------
#define LCD_LED PCout(10) //LCD背光 PC10
/*
#define LCD_CS_SET GPIOC->BSRR=1<<9 //片選端口 PC9
#define LCD_RS_SET GPIOC->BSRR=1<<8 //資料/指令 PC8
#define LCD_WR_SET GPIOC->BSRR=1<<7 //寫資料 PC7
#define LCD_RD_SET GPIOC->BSRR=1<<6 //讀資料 PC6
#define LCD_CS_CLR GPIOC->BRR=1<<9 //片選端口 PC9
#define LCD_RS_CLR GPIOC->BRR=1<<8 //資料/指令 PC8
#define LCD_WR_CLR GPIOC->BRR=1<<7 //寫資料 PC7
#define LCD_RD_CLR GPIOC->BRR=1<<6 //讀資料 PC6
*/
#define LCD_CS_SET GPIO_SetBits(GPIOC,GPIO_Pin_9) //片選端口 PC9
#define LCD_RS_SET GPIO_SetBits(GPIOC,GPIO_Pin_8) //資料/指令 PC8
#define LCD_WR_SET GPIO_SetBits(GPIOC,GPIO_Pin_7) //寫資料 PC7
#define LCD_RD_SET GPIO_SetBits(GPIOC,GPIO_Pin_6) //讀資料 PC6
#define LCD_CS_CLR GPIO_ResetBits(GPIOC,GPIO_Pin_9) //片選端口 PC9
#define LCD_RS_CLR GPIO_ResetBits(GPIOC,GPIO_Pin_8) //資料/指令 PC8
#define LCD_WR_CLR GPIO_ResetBits(GPIOC,GPIO_Pin_7) //寫資料 PC7
#define LCD_RD_CLR GPIO_ResetBits(GPIOC,GPIO_Pin_6) //讀資料 PC6
//PB0~15,作為資料線
//#define DATAOUT(x) GPIOB->ODR=x; //資料輸出
//#define DATAIN GPIOB->IDR; //資料輸入
#define DATAOUT(x) GPIO_Write(GPIOB,x);
#define DATAIN GPIO_ReadInputData(GPIOB)
//
//掃描方向定義
#define L2R_U2D 0 //從左到右,從上到下
#define L2R_D2U 1 //從左到右,從下到上
#define R2L_U2D 2 //從右到左,從上到下
#define R2L_D2U 3 //從右到左,從下到上
#define U2D_L2R 4 //從上到下,從左到右
#define U2D_R2L 5 //從上到下,從右到左
#define D2U_L2R 6 //從下到上,從左到右
#define D2U_R2L 7 //從下到上,從右到左
#define DFT_SCAN_DIR L2R_U2D //預設的掃描方向
//掃描方向定義
#define L2R_U2D 0 //從左到右,從上到下
#define L2R_D2U 1 //從左到右,從下到上
#define R2L_U2D 2 //從右到左,從上到下
#define R2L_D2U 3 //從右到左,從下到上
#define U2D_L2R 4 //從上到下,從左到右
#define U2D_R2L 5 //從上到下,從右到左
#define D2U_L2R 6 //從下到上,從左到右
#define D2U_R2L 7 //從下到上,從右到左
#define DFT_SCAN_DIR L2R_U2D //預設的掃描方向
//畫筆顔色
#define WHITE 0xFFFF
#define BLACK 0x0000
#define BLUE 0x001F
#define BRED 0XF81F
#define GRED 0XFFE0
#define GBLUE 0X07FF
#define RED 0xF800
#define MAGENTA 0xF81F
#define GREEN 0x07E0
#define CYAN 0x7FFF
#define YELLOW 0xFFE0
#define BROWN 0XBC40 //棕色
#define BRRED 0XFC07 //棕紅色
#define GRAY 0X8430 //灰色
//GUI顔色
#define DARKBLUE 0X01CF //深藍色
#define LIGHTBLUE 0X7D7C //淺藍色
#define GRAYBLUE 0X5458 //灰藍色
//以上三色為PANEL的顔色
#define LIGHTGREEN 0X841F //淺綠色
#define LGRAY 0XC618 //淺灰色(PANNEL),窗體背景色
#define LGRAYBLUE 0XA651 //淺灰藍色(中間層顔色)
#define LBBLUE 0X2B12 //淺棕藍色(選擇條目的反色)
void LCD_Init(void); //初始化
void LCD_DisplayOn(void); //開顯示
void LCD_DisplayOff(void); //關顯示
void LCD_Clear(u16 Color); //清屏
void LCD_SetCursor(u16 Xpos, u16 Ypos); //設定光标
void LCD_DrawPoint(u16 x,u16 y); //畫點
void LCD_Fast_DrawPoint(u16 x,u16 y,u16 color); //快速畫點
u16 LCD_ReadPoint(u16 x,u16 y); //讀點
void LCD_Draw_Circle(u16 x0,u16 y0,u8 r); //畫圓
void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2); //畫線
void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2); //畫矩形
void LCD_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 color); //填充單色
void LCD_Color_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 *color); //填充指定顔色
void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode); //顯示一個字元
void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size); //顯示一個數字
void LCD_ShowxNum(u16 x,u16 y,u32 num,u8 len,u8 size,u8 mode); //顯示 數字
void LCD_ShowString(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p); //顯示一個字元串,12/16字型
void LCD_WriteReg(u16 LCD_Reg, u16 LCD_RegValue);
u16 LCD_ReadReg(u16 LCD_Reg);
void LCD_WriteRAM_Prepare(void);
void LCD_WriteRAM(u16 RGB_Code);
void LCD_Scan_Dir(u8 dir); //設定屏掃描方向
void LCD_Display_Dir(u8 dir); //設定螢幕顯示方向
void LCD_Set_Window(u16 sx,u16 sy,u16 width,u16 height); //設定視窗
//寫資料函數
#define LCD_WR_DATA(data){\
LCD_RS_SET;\
LCD_CS_CLR;\
DATAOUT(data);\
LCD_WR_CLR;\
LCD_WR_SET;\
LCD_CS_SET;\
}
//9320/9325 LCD寄存器
#define R0 0x00
#define R1 0x01
#define R2 0x02
#define R3 0x03
#define R4 0x04
#define R5 0x05
#define R6 0x06
#define R7 0x07
#define R8 0x08
#define R9 0x09
#define R10 0x0A
#define R12 0x0C
#define R13 0x0D
#define R14 0x0E
#define R15 0x0F
#define R16 0x10
#define R17 0x11
#define R18 0x12
#define R19 0x13
#define R20 0x14
#define R21 0x15
#define R22 0x16
#define R23 0x17
#define R24 0x18
#define R25 0x19
#define R26 0x1A
#define R27 0x1B
#define R28 0x1C
#define R29 0x1D
#define R30 0x1E
#define R31 0x1F
#define R32 0x20
#define R33 0x21
#define R34 0x22
#define R36 0x24
#define R37 0x25
#define R40 0x28
#define R41 0x29
#define R43 0x2B
#define R45 0x2D
#define R48 0x30
#define R49 0x31
#define R50 0x32
#define R51 0x33
#define R52 0x34
#define R53 0x35
#define R54 0x36
#define R55 0x37
#define R56 0x38
#define R57 0x39
#define R59 0x3B
#define R60 0x3C
#define R61 0x3D
#define R62 0x3E
#define R63 0x3F
#define R64 0x40
#define R65 0x41
#define R66 0x42
#define R67 0x43
#define R68 0x44
#define R69 0x45
#define R70 0x46
#define R71 0x47
#define R72 0x48
#define R73 0x49
#define R74 0x4A
#define R75 0x4B
#define R76 0x4C
#define R77 0x4D
#define R78 0x4E
#define R79 0x4F
#define R80 0x50
#define R81 0x51
#define R82 0x52
#define R83 0x53
#define R96 0x60
#define R97 0x61
#define R106 0x6A
#define R118 0x76
#define R128 0x80
#define R129 0x81
#define R130 0x82
#define R131 0x83
#define R132 0x84
#define R133 0x85
#define R134 0x86
#define R135 0x87
#define R136 0x88
#define R137 0x89
#define R139 0x8B
#define R140 0x8C
#define R141 0x8D
#define R143 0x8F
#define R144 0x90
#define R145 0x91
#define R146 0x92
#define R147 0x93
#define R148 0x94
#define R149 0x95
#define R150 0x96
#define R151 0x97
#define R152 0x98
#define R153 0x99
#define R154 0x9A
#define R157 0x9D
#define R192 0xC0
#define R193 0xC1
#define R229 0xE5
#endif
後面我會一點點的總結有關tftlcd顯示的實用庫函數。。