亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tft.c

?? SD卡調(diào)試所用的資料
?? C
字號:

//**********************************************************************************************
//* 文 件 名 : tft.c
//*
//* 文件描述 : tft0x84*0x84 LCD 驅(qū)動
//* 
//* 作    者 : knight
//* 版    本 : V0.01
//* 編 譯 器 : IAR EWARM 5.30
//* 日    期 : 2009-10-18
//* 所需支持代碼:
//**********************************************************************************************

#include "tft.h"
#include "img.h"



/**********************************************************************
*   函數(shù)        TFT_Y_Dec ---Y軸遞增方向 
*   輸入?yún)?shù)    data --- 1 byte 數(shù)據(jù)
*   輸出參數(shù)    無
*   返回值      無
**********************************************************************/
void 
TFT_Y_Direction(u8 Up_or_Down)
{
    if(Up_or_Down==Up)
    {
        tftWriteReg(0x01,0x030f);
    }
    else
    {
        tftWriteReg(0x01,0x010f);
    }
}


/**********************************************************************
*   函數(shù)        PutDataToIO --- 把數(shù)據(jù)放入TFTLCD數(shù)據(jù)口 
*   輸入?yún)?shù)    data --- 1 byte 數(shù)據(jù)
*   輸出參數(shù)    無
*   返回值      無
**********************************************************************/
void
PutDataToIO(unsigned char data)
{
    u16 PortVal;
  
    PortVal = GPIO_ReadOutputData(TFT_DATA_PORT);
    PortVal = (PortVal&0xff00) | data;
    GPIO_Write(TFT_DATA_PORT,PortVal);
}


/**********************************************************************
*   函數(shù)        tftWriteCmd --- 寫命令 
*   輸入?yún)?shù)    command --- 命令
*   輸出參數(shù)    無
*   返回值      無
**********************************************************************/
void 
tftWriteCmd(unsigned char command)  
{
    TFT_RS_L;
    TFT_CS_L;

    PutDataToIO(0x00);
    TFT_WR_L;
    TFT_WR_H;

    PutDataToIO(command);
    TFT_WR_L;
    TFT_WR_H;

    TFT_CS_H;
}

/**********************************************************************
*   函數(shù)        tftWriteData8 --- 寫入 1 byte 數(shù)據(jù) 
*   輸入?yún)?shù)    data --- 寫入的數(shù)據(jù)
*   輸出參數(shù)    無
*   返回值      無
**********************************************************************/
void 
tftWriteData8(unsigned char data)  
{
    TFT_RS_H;
    TFT_CS_L;
 
    PutDataToIO(data);
    TFT_WR_L;
    TFT_WR_H;

    TFT_CS_H;
}

/**********************************************************************
*   函數(shù)        tftWriteData16 --- 寫入 2 byte 數(shù)據(jù) 
*   輸入?yún)?shù)    data_h ---寫入的數(shù)據(jù) 高位
*               data_l--- 寫入的數(shù)據(jù) 低位
*   輸出參數(shù)    無
*   返回值      無
**********************************************************************/
void 
tftWriteData16(unsigned char data_h,unsigned char data_l)  
{
    TFT_RS_H;
    TFT_CS_L;
  
    PutDataToIO(data_h);
    TFT_WR_L;
    TFT_WR_H;   

    PutDataToIO(data_l);
    TFT_WR_L;
    TFT_WR_H;  

    TFT_CS_H; 
}


/**********************************************************************
*   函數(shù)        tftWriteReg --- 寫入寄存器 16bits 數(shù)據(jù) 
*   輸入?yún)?shù)    reg     --- 寄存器地址
*               data16  --- 寫入的數(shù)據(jù)
*   輸出參數(shù)    無
*   返回值      無
**********************************************************************/
void 
tftWriteReg(unsigned char reg,unsigned int data16) 
{
    
    unsigned char dataH,dataL;
    dataH=data16/256;
    dataL=data16&0xff;

    tftWriteCmd(reg);

    tftWriteData16(dataH,dataL);
}



/**********************************************************************
*   函數(shù)        tftInit --- 初始化TFTLCD屏 
*   輸入?yún)?shù)    無
*   輸出參數(shù)    無
*   返回值      無
**********************************************************************/
///---------------------------------------------------------------------
///                        初始化后 TFTLCD 坐標
///
///             Y|
///              |
///              |
///              |
///             0----------------------------  X
///---------------------------------------------------------------------
void 
tftInit(void)  
{
    GPIO_InitTypeDef  GPIO_InitStructure;

  //--開啟GPIO時鐘
    RCC_APB2PeriphClockCmd(TFT_GPIO_PORTS, ENABLE);  

  //設(shè)置 RS 引腳為輸出 push-pull 模式
    GPIO_InitStructure.GPIO_Pin = TFT_RS;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(TFT_RS_PORT, &GPIO_InitStructure);

  //設(shè)置 CS RST WR RD 引腳為輸出 push-pull 模式
    GPIO_InitStructure.GPIO_Pin = TFT_CS|TFT_RST|TFT_WR|TFT_RD;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(TFT_CS_PORT, &GPIO_InitStructure);

  //設(shè)置 data 引腳為輸出 push-pull 模式
    GPIO_InitStructure.GPIO_Pin = TFT_DATA;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(TFT_DATA_PORT, &GPIO_InitStructure);	

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOD, &GPIO_InitStructure);

  //初始化操作GPIO
    TFT_RST_L;
    TFT_CS_H;
    TFT_RS_H;
    TFT_WR_H;
    TFT_RD_H;
    Delay_Ms(100);
    TFT_RST_H;
    Delay_Ms(100);


  ///初始化設(shè)置寄存器 
    tftWriteReg(0x00,0x0001);
    
    Delay_Ms(50);
    
    tftWriteReg(0x12,0x0109);
    tftWriteReg(0x13,0x0e1d);
    tftWriteReg(0x14,0x6224);
    tftWriteReg(0x10,0x2004);
    Delay_Ms(50);

    tftWriteReg(0x13,0x0e5d);
    Delay_Ms(50);

    tftWriteReg(0x01,0x010f);
    //TFT_Y_Direction(Down);
    
    tftWriteReg(0x02,0x0700);
    tftWriteReg(0x03,0x1030);
    tftWriteReg(0x07,0x0000);
    tftWriteReg(0x08,0x0202);
    tftWriteReg(0x0b,0x0001);
    tftWriteReg(0x0c,0x0000);
    tftWriteReg(0x40,0x0000);
    tftWriteReg(0x42,0x8300);
    tftWriteReg(0x43,0x0000);
    tftWriteReg(0x44,0x8304);
    tftWriteReg(0x45,0x7f00);
    tftWriteReg(0x25,0x0002);
    tftWriteReg(0x26,0x0002);
    tftWriteReg(0x30,0x0000);
    tftWriteReg(0x31,0x0102);
    tftWriteReg(0x32,0x0001);
    tftWriteReg(0x33,0x0202);
    tftWriteReg(0x34,0x0707);
    tftWriteReg(0x35,0x0707);
    tftWriteReg(0x36,0x0707);
    tftWriteReg(0x37,0x0202);
    tftWriteReg(0x07,0x0005);
    Delay_Ms(50);

    tftWriteReg(0x07,0x0015);
    Delay_Ms(50);

    tftWriteReg(0x21,0x0004);
    Delay_Ms(50);

    tftWriteReg(0x21,0x0004);
    tftWriteReg(0x44,0x8304);
    tftWriteReg(0x45,0x7f00);

    tftWriteCmd(0x22);	

    tftWriteReg(0x10,0x0000);
    Delay_Ms(50);
    tftWriteReg(0x03,0x1030);
    Delay_Ms(50);	
    tftWriteReg(0x10,0x2004);
    Delay_Ms(50);
    tftWriteReg(0x13,0x0e5d);
    Delay_Ms(50);	
    tftWriteReg(0x07,0x0017);
    Delay_Ms(50);	
    tftWriteCmd(0x22);

  ///開背光
    GPIO_SetBits(TFT_LED_PWM_PORT,TFT_LED_PWM ) ;
}



/**********************************************************************
*   函數(shù)        PosXY --- 定義起始光標位置 
*   輸入?yún)?shù)    X,Y 坐標
*   輸出參數(shù)    無
*   返回值      無
**********************************************************************/
void 
PosXY(unsigned char X,unsigned char Y)
{
    u16 Pos;
    
    Pos= Y*0x100 + X; 
    tftWriteReg(TFTCMD_XYPos,Pos);
}


/**********************************************************************
*   函數(shù)        SetWindowRange --- 設(shè)置當前TFT操作窗口范圍 
*   輸入?yún)?shù)    X,Y --- 窗口起點坐標
*               XRange,YRange --- 窗口的寬和高
*   輸出參數(shù)    無
*   返回值      無
**********************************************************************/
void 
SetWindowRange(u8 X,u8 Y,u8 XRange,u8 YRange)
{
    u16 Pos;
    
    PosXY(X,Y);        
    Pos=(X + XRange-1)*0x100 + X;
    tftWriteReg(TFTCMD_XRange,Pos);
    
    Pos=(Y + YRange-1)*0x100 + Y;
    tftWriteReg(TFTCMD_YRange,Pos);
}


/**********************************************************************
*   函數(shù)        ClrTFT --- 清屏 把當前窗口填充為一種顏色 
*   輸入?yún)?shù)    R,G,B  --- RGB顏色
*   輸出參數(shù)    無
*   返回值      無
**********************************************************************/
void 
ClrTFT(u8 RGB_H,u8 RGB_L,s16 len)
{
    s16 n;

    n=len;
    if (n<0) n=TFTScreenWidth * TFTScreenHeight;
    
    tftWriteCmd(0x22);
    while(n>0)
    {
      tftWriteData16(RGB_H,RGB_L);
      n--;
    }
}


/**********************************************************************
*   函數(shù)        WriteBufToTFT_16 --- 直接寫B(tài)MP16緩存 
*   輸入?yún)?shù)    _buf    --- 緩存地址
*               buflen  --- 寫緩存長度
*   輸出參數(shù)    無
*   返回值      無
**********************************************************************/
void 
WriteBufToTFT_16(const u16* _buf,u16 buflen)
{
    u16 i=0;
    u8 dataH,dataL;
    
    tftWriteCmd(0x22);
    while ( (*_buf!=0 || buflen<MaxBufLen) && (i<buflen) )
    {
      dataH=(*_buf)/0x100;
      dataL=(*_buf)&0xff;
      tftWriteData16(dataH,dataL); 
      i++;
      _buf++;
    }
}


/**********************************************************************
*   函數(shù)        WriteBufToTFT_8 --- 直接寫B(tài)MP8緩存 
*   輸入?yún)?shù)    _buf    --- 緩存地址
*               buflen  --- 寫緩存長度
*   輸出參數(shù)    無
*   返回值      無
**********************************************************************/
void 
WriteBufToTFT_8(const u8* _buf,u16 buflen)
{
    u16 i=0;
   
    tftWriteCmd(0x22);
    while ( (*_buf!=0 || buflen<MaxBufLen) && (i<buflen) )
    {
      tftWriteData8(*_buf); 
      i++;
      _buf++;
    }
}


/**********************************************************************
*   函數(shù)        tftTest --- 測試TFTLCD
*   輸入?yún)?shù)    無
*   輸出參數(shù)    無
*   返回值      無
**********************************************************************/
void 
tftTest(void) 
{
///-----清屏
    SetWindowRange(0,0,TFTScreenWidth,TFTScreenHeight);
    ClrTFT(0,0,-1);
    Delay_Ms(100);
    
    
#if 0    
///-----測試 1-1
    SetWindowRange(0,0,TFTScreenWidth,TFTScreenHeight);
    ClrTFT(0xf8,0);
    Delay_Ms(1000); 
    
///-----測試 1-2
    SetWindowRange(0,0,TFTScreenWidth,TFTScreenHeight);
    ClrTFT(0x07,0xe0);	  
    Delay_Ms(1000);
    
///-----測試 1-3    
    SetWindowRange(0,0,TFTScreenWidth,TFTScreenHeight);
    ClrTFT(0,0x1f);  
    Delay_Ms(1000); 
#endif
    
    
#if 1    
///-----清屏幕
    SetWindowRange(0,0,TFTScreenWidth,TFTScreenHeight);
    ClrTFT(0,0,-1); 
    
///-----測試 2
///-----測試 2-1   
    SetWindowRange(0,0,TFTScreenWidth,TFTScreenHeight/3);
    ClrTFT(0xf8,0,-1);     
    Delay_Ms(500); 
///-----測試 2-2   
    SetWindowRange(0,TFTScreenHeight/3,TFTScreenWidth,TFTScreenHeight/3);
    ClrTFT(0x07,0xe0,-1);  
    Delay_Ms(500);      
///-----測試 2-3   
    SetWindowRange(0,TFTScreenHeight*2/3,TFTScreenWidth,TFTScreenHeight/3);
    ClrTFT(0,0x1f,-1);   
    Delay_Ms(500);     
#endif  

    
#if 1    
///-----測試 3
///-----測試 3-1 
///-------------------------------------------------------------------------------
    SetWindowRange(0,0,TFTScreenWidth,TFTScreenHeight); ///為什么需要加這一句代碼?????????
///-------------------------------------------------------------------------------
    SetWindowRange(20,20,50,50);
    ClrTFT(0x07,0xff,-1);   
    Delay_Ms(500); 
    
///-----測試 3-2
    SetWindowRange(40,40,50,50);
    ClrTFT(0xf8,0x1f,-1);    
    Delay_Ms(500); 
    
///-----測試 3-3 
    SetWindowRange(60,60,50,50);
    ClrTFT(0xff,0xE0,-1);    
    Delay_Ms(500); 
#endif

    
#if 0
///------測試 4-1 
    u8 Xpos,Ypos,Xlen,Ylen,j;
    Xlen=0x60;
    Ylen=0x60;
    //清屏幕
    SetWindowRange(0,0,TFTScreenWidth,TFTScreenHeight);
    ClrTFT(0xBE,0x5F);

    for(j=0;j<0x14;j++)
    {    
        Xpos=j;
        Ypos=4+j;
        SetWindowRange( Xpos,Ypos,Xlen,Ylen );
        
        tftWriteCmd(0x22);        
        WriteBufToTFT_8(_LOGO,(Xlen * Ylen*2) );
        
        Delay_Ms(100);
    }
    Delay_Ms(1000);
#endif
} 

//////////////////////////////////////end of TFTLCD Drive///////////////////////////////////////////











/*
  void tftReadCmd(unsigned char command)  
  {
    TFT_RS_L;

    //Delay_nms(1);
    //GPIO_WriteBit(TFT_DATA_PORT,TFT_DATA,0x00);

    PutDataToIO(command);
    TFT_CS_L;
    TFT_RD_L;

    Delay_nms(1);
    TFT_CS_H;
    TFT_RD_H;   

    //Delay_nms(1);  
    //TFT_RS_H;	

    //GPIO_WriteBit(TFT_DATA_PORT,TFT_DATA,command);

    PutDataToIO(0x00);
    TFT_CS_L;
    TFT_RD_L;

    Delay_nms(1);
    TFT_CS_H;
    TFT_RD_H;   
    //Delay_nms(1);  
  }


  u16 tftReadData16()  
  {
    u16 data_h,data_l;

    TFT_RS_H;

    //Delay_nms(1);
    TFT_CS_L;
    TFT_RD_L;

    Delay_nms(1);
    TFT_CS_H;
    TFT_RD_H;
    data_h = GPIO_ReadOutputData(TFT_DATA_PORT)&0xff00;   

    Delay_nms(1);  
    
    TFT_CS_L;
    TFT_RD_L;

    Delay_nms(1);
    TFT_CS_H;
    TFT_RD_H; 
    data_l = (GPIO_ReadOutputData(TFT_DATA_PORT)&0xff00)>>8;       

    Delay_nms(1); 
    
    return (data_h+data_l);
  }
*/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性猛交一区二区三区精品| 强制捆绑调教一区二区| 成人黄色小视频| 久久久精品免费免费| 国产成人午夜99999| 国产精品午夜在线| 色综合天天天天做夜夜夜夜做| 自拍偷拍亚洲综合| 欧美性欧美巨大黑白大战| 亚洲高清视频中文字幕| 欧美电影免费提供在线观看| 国产精品原创巨作av| 国产精品国产三级国产专播品爱网| av电影在线观看不卡| 午夜日韩在线观看| 亚洲精品一区二区三区在线观看| 成人免费电影视频| 一区二区三区在线视频播放| 欧美顶级少妇做爰| 国产精品亚洲视频| 亚洲午夜免费福利视频| 精品国产亚洲一区二区三区在线观看| 成人免费高清在线| 日韩不卡一区二区三区| 欧美国产欧美综合| 欧美高清激情brazzers| 国产高清精品网站| 午夜视频久久久久久| 日本一区二区三区高清不卡| 欧美在线视频不卡| 成人永久免费视频| 日本不卡视频一二三区| 国产精品免费久久| 日韩欧美国产综合| 色噜噜狠狠色综合欧洲selulu| 日本aⅴ精品一区二区三区 | 欧美高清视频在线高清观看mv色露露十八 | 91网站最新地址| 日本不卡一区二区| 亚洲图片你懂的| 久久婷婷国产综合国色天香| 欧美曰成人黄网| 国产精品一区久久久久| 天天爽夜夜爽夜夜爽精品视频| 亚洲国产精品二十页| 欧美成人欧美edvon| 在线免费不卡视频| 成人爽a毛片一区二区免费| 丝袜亚洲另类丝袜在线| 亚洲视频在线观看三级| 26uuu精品一区二区| 欧美日韩国产免费| 99久久精品99国产精品| 国产高清一区日本| 麻豆国产精品777777在线| 一区二区欧美视频| 日韩一区在线播放| 亚洲国产精品t66y| 久久久亚洲欧洲日产国码αv| 51午夜精品国产| 欧美无乱码久久久免费午夜一区| 不卡视频一二三| 国产精品亚洲专一区二区三区| 麻豆精品视频在线观看| 日本91福利区| 日韩精品一卡二卡三卡四卡无卡| 亚洲精品国产无天堂网2021| 国产精品久久久久影院老司| 国产喷白浆一区二区三区| 久久这里只有精品视频网| 精品国产百合女同互慰| 欧美一区二区网站| 欧美一级日韩免费不卡| 7777精品伊人久久久大香线蕉| 在线精品视频一区二区| 91福利小视频| 欧美视频三区在线播放| 欧美综合色免费| 欧美日韩中文国产| 欧美日本精品一区二区三区| 精品视频123区在线观看| 欧美日韩激情一区二区三区| 欧美日韩激情一区二区| 91麻豆精品国产无毒不卡在线观看| 欧美日韩国产色站一区二区三区| 欧美日韩电影一区| 日韩欧美资源站| 精品捆绑美女sm三区| 久久免费电影网| 国产精品欧美极品| 一区二区免费在线| 香蕉乱码成人久久天堂爱免费| 日日摸夜夜添夜夜添国产精品| 成人夜色视频网站在线观看| 91视频国产观看| 精品视频一区三区九区| 日韩视频一区二区三区在线播放| 亚洲精品在线免费观看视频| 欧美激情综合五月色丁香 | 精品国产乱码久久久久久夜甘婷婷 | 成人黄色片在线观看| a级高清视频欧美日韩| 一本大道综合伊人精品热热 | 欧美日韩在线播放一区| 日韩午夜激情免费电影| 国产欧美日韩三区| 亚洲最色的网站| 日本美女一区二区三区| 国产精品资源在线观看| 在线亚洲欧美专区二区| 日韩亚洲欧美成人一区| 国产日韩欧美不卡| 亚洲一区影音先锋| 激情欧美日韩一区二区| 成人三级在线视频| 宅男噜噜噜66一区二区66| 国产色综合久久| 亚洲国产精品一区二区尤物区| 美女视频网站久久| 色综合网站在线| 精品国产一区二区精华| 亚洲免费在线视频| 精品伊人久久久久7777人| 色呦呦一区二区三区| 欧美精品一区视频| 亚洲一区二区偷拍精品| 国产一区不卡在线| 欧美人伦禁忌dvd放荡欲情| 国产人成亚洲第一网站在线播放| 调教+趴+乳夹+国产+精品| 成人美女视频在线看| 欧美一二三区在线| 一区二区三区国产精华| 国产精品一二三区| 91精品国产综合久久久蜜臀粉嫩 | 久久免费美女视频| 日韩精品亚洲一区| 一本在线高清不卡dvd| 久久综合网色—综合色88| 午夜精品成人在线视频| 97aⅴ精品视频一二三区| 精品国产凹凸成av人网站| 天堂久久一区二区三区| 91欧美一区二区| 欧美激情一区二区三区在线| 久久66热re国产| 欧美电影在哪看比较好| 亚洲精品国久久99热| 国产精品18久久久久久久久| 日韩三级.com| 蜜臀va亚洲va欧美va天堂| 欧美亚洲综合色| 亚洲黄色小说网站| 91色九色蝌蚪| 日韩一区中文字幕| 成年人网站91| 国产精品免费观看视频| 成人国产一区二区三区精品| 久久网这里都是精品| 三级久久三级久久久| 欧美日韩一区二区三区四区| 一区二区在线观看视频| 99re热视频精品| 中文字幕中文乱码欧美一区二区| 国产成人av一区二区三区在线| 久久久影视传媒| 国产高清在线精品| 国产精品毛片高清在线完整版| 国产69精品久久久久毛片| 中文字幕精品在线不卡| av电影在线不卡| 亚洲日本成人在线观看| 91热门视频在线观看| 一区二区三区高清| 欧美乱熟臀69xxxxxx| 午夜影院久久久| 欧美一区二区三区视频免费 | 国产亚洲福利社区一区| 国产精品1区2区| 国产精品不卡在线观看| 一本色道久久综合精品竹菊 | 蜜芽一区二区三区| 日韩欧美中文一区| 国产一区二区精品久久91| 久久精品视频网| 成人av先锋影音| 亚洲精品一卡二卡| 欧美日韩国产综合一区二区| 奇米综合一区二区三区精品视频| 精品成人一区二区三区| 成人永久aaa| 夜夜嗨av一区二区三区网页| 欧美精品v日韩精品v韩国精品v| 免费av成人在线| 国产精品入口麻豆九色| 欧美三级在线看| 狠狠色丁香久久婷婷综合_中| 国产精品久久久久一区二区三区共| 日本韩国欧美在线| 麻豆视频一区二区|