?? tft_driver.c
字號(hào):
//====================================================================================
//文 件 名:TFT_Driver.c
//功能描述: TFT驅(qū)動(dòng)程序(底層驅(qū)動(dòng))
//維護(hù)記錄: 2007年1月17日
//====================================================================================
#include "TFT_Driver.h"
STR_TFT TFT_Settings;
STR_TFT *pTFT_Settings = &TFT_Settings;
unsigned short *pTFT_WorkBuf;
unsigned short *pTFT_DispBuf;
//=============================================================
//語(yǔ)法格式: void TFT_SetSettings(void);
//實(shí)現(xiàn)功能: 更新TFT緩沖格式和緩沖地址設(shè)定
//參數(shù): 無(wú)
//返回值: 無(wú)
//=============================================================
void TFT_SetSettings(void)
{
*P_TFT_FRAME_FMT1 = pTFT_Settings->Buf_Format1;
*P_TFT_FRAME_FMT2 = pTFT_Settings->Buf_Format2;
*P_LCD_BUFFER_SA1 = (unsigned int)pTFT_Settings->Buf0;
*P_LCD_BUFFER_SA2 = (unsigned int)pTFT_Settings->Buf1;
*P_LCD_BUFFER_SA3 = (unsigned int)pTFT_Settings->Buf2;
}
//=============================================================
//語(yǔ)法格式: unsigned short *TFT_SelDispBuf(unsigned char Buf_Cursor);
//實(shí)現(xiàn)功能: 選擇一個(gè)緩沖區(qū)作為顯示緩沖區(qū)
//參數(shù): Buf_Cursor - 作為顯示輸出的緩沖區(qū)序號(hào)(0~2)
//返回值: 作為顯示輸出的緩沖區(qū)起始地址
//=============================================================
unsigned short *TFT_SelDispBuf(unsigned char Buf_Cursor)
{
*P_LCD_BUFFER_SEL = Buf_Cursor;
switch(Buf_Cursor)
{
case 0:
pTFT_DispBuf = pTFT_Settings->Buf0;
break;
case 1:
pTFT_DispBuf = pTFT_Settings->Buf1;
break;
case 2:
pTFT_DispBuf = pTFT_Settings->Buf2;
break;
default:
break;
}
return pTFT_DispBuf;
}
//=============================================================
//語(yǔ)法格式: unsigned short *TFT_SelWorkBuf(unsigned char Buf_Cursor);
//實(shí)現(xiàn)功能: 選擇一個(gè)緩沖區(qū)作為工作緩沖區(qū)(TFT_API中的函數(shù)都是對(duì)工作緩沖區(qū)操作的)
//參數(shù): Buf_Cursor - 作為工作緩沖區(qū)的序號(hào)(0~2)
//返回值: 作為工作緩沖區(qū)的起始地址
//=============================================================
unsigned short *TFT_SelWorkBuf(unsigned char Buf_Cursor)
{
switch(Buf_Cursor)
{
case 0:
pTFT_WorkBuf = pTFT_Settings->Buf0;
break;
case 1:
pTFT_WorkBuf = pTFT_Settings->Buf1;
break;
case 2:
pTFT_WorkBuf = pTFT_Settings->Buf2;
break;
default:
break;
}
return pTFT_WorkBuf;
}
//=============================================================
//語(yǔ)法格式: void TFT_InitHardware(void);
//實(shí)現(xiàn)功能: 初始化TFT相關(guān)硬件寄存器
//參數(shù): 無(wú)
//返回值: 無(wú)
//=============================================================
void TFT_InitHardware(void)
{
int i;
*P_LCD_INTERFACE_SEL |= TFT_INTERFACE; // 管腳復(fù)用,選擇TFT_AUO模式
*P_LCD_CLK_CONF = C_LCD_RST_DIS | C_LCD_CLK_EN; // LCD模式時(shí)鐘使能
if(clksel==24)
*P_LCD_CLK_SEL|=0x08;
// 設(shè)置TFT-LCD數(shù)據(jù)模式
*P_TFT_DATA_SEQ = TFT_DATA_SEQ; // TFT-LCD輸出數(shù)據(jù)順序
*P_TFT_DATA_FMT = TFT_DATA_FMT; // TFT-LCD管腳輸出數(shù)據(jù)格式
// 設(shè)置TFT-LCD的行信號(hào)
*P_TFT_HOR_ACT = TFT_HOR_ACT;
*P_TFT_HOR_FRONT = TFT_HOR_FRONT;
*P_TFT_HOR_BACK = TFT_HOR_BACK;
*P_TFT_HOR_SYNC = TFT_HOR_SYNC;
// 設(shè)置TFT-LCD的場(chǎng)信號(hào)
*P_TFT_VER_ACT = TFT_VER_ACT;
*P_TFT_VER_FRONT = TFT_VER_FRONT;
*P_TFT_VER_BACK = TFT_VER_BACK;
*P_TFT_VER_SYNC = TFT_VER_SYNC;
// 設(shè)置TFT-LCD顯示的起始位置
*P_TFT_ROW_START = TFT_ROW_START;
*P_TFT_COL_START = TFT_COL_START;
*P_TFT_COL_WIDTH = TFT_COL_WIDTH;
*P_TFT_DUMMY_WIDTH = TFT_DUMMY_WIDTH;
pTFT_Settings->Buf_Format1 = C_TFT_BUF_RGB565 ;//C_TFT_BUF_4Y4U4Y4V;
pTFT_Settings->Buf_Format2 = C_TFT_BUF_YUV;// signC_TFT_BUF_YCBCR
pTFT_Settings->Buf0 = (unsigned short*)TFT_BUFFER0_SA;
pTFT_Settings->Buf1 = (unsigned short*)TFT_BUFFER1_SA;
pTFT_Settings->Buf2 = (unsigned short*)TFT_BUFFER2_SA;
TFT_SetSettings();
for(i=0; i<TFT_WIDTH*TFT_HEIGHT; i++)
{
pTFT_Settings->Buf0[i] = 0x0000;
pTFT_Settings->Buf1[i] = 0x0000;
pTFT_Settings->Buf2[i] = 0x0000;
}
TFT_SelWorkBuf(0);
TFT_SelDispBuf(0);
// 設(shè)置TFT-LCD的控制寄存器
*P_TFT_INT_STATUS = ~C_TFT_INT_EN; // 中斷不使能
// 使能TFT模塊,圖像不放大,選擇6.75MHz時(shí)鐘
*P_TFT_MODE_CTRL = C_TFT_CTRL_EN | TFT_CLK_SET;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -