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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lcd_drv.c

?? 陽初ucosII ADS1.2程序帶VGA顯示
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <stdarg.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>

//=======================
#include    "../UCOS-II/includes.h"               /* uC/OS interface */
//=======================

#include "2440addr.h"
#include "lcd_drv.h"


//TFT 640480
//unsigned int __LCDFrameBuffer[VIDEO_VISIBLE_ROWS][LCD_XSIZE_TFT_640480];
volatile unsigned char *__LCDFrameBuffer;
static OS_EVENT   *Sem_LcdDraw;


#define WRDATA      (1)
#define POLLACK     (2)
#define RDDATA      (3)
#define SETRDADDR   (4)

typedef unsigned char U8;
typedef unsigned int  U32;

/*#define IIC_INTPEND 0x10*/

#define IICBUFSIZE 0x20
static U8 _iicData[IICBUFSIZE];
static int _iicDataCount;
static int _iicStatus;
static int _iicMode;
static int _iicPt;

static void IicPoll(void);
static void Run_IicPoll(void);
void Uart0_Printf(char *fmt,...);

static void Delay(int sec)
{
    int dl;
    
    while(sec != -1){
        sec--;
        for (dl=4900;dl>0;dl--);
    }
    
    return;
}

//**************[ iic_wr ]*****************************************
static void iic_wr(U32 slvAddr,U32 addr,U8 data)
{
        _iicMode      = WRDATA;
    _iicPt        = 0;
    _iicData[0]   = (U8)addr;
    _iicData[1]   = data;
    _iicDataCount = 2;
    
    rIICDS        = slvAddr;            //0xa0
      //Master Tx mode, Start(Write), IIC-bus data output enable
      //Bus arbitration sucessful, Address as slave status flag Cleared,
      //Address zero status flag cleared, Last received bit is 0
    rIICSTAT      = 0xf0;      
      //Clearing the pending bit isn't needed because the pending bit has been cleared.
    while(_iicDataCount!=-1)
       Run_IicPoll();

    _iicMode = POLLACK;

    while(1)
    {
        rIICDS     = slvAddr;
        _iicStatus = 0x100;             //To check if _iicStatus is changed 
        rIICSTAT   = 0xf0;              //Master Tx, Start, Output Enable, Sucessful, Cleared, Cleared, 0
        rIICCON    = 0xaf;              //Resumes IIC operation. 
        while(_iicStatus==0x100)  
            Run_IicPoll();
              
        if(!(_iicStatus & 0x1))
            break;                      //When ACK is received
    }
    rIICSTAT = 0xd0;                    //Master Tx condition, Stop(Write), Output Enable
    rIICCON  = 0xaf;                    //Resumes IIC operation. 
    Delay(1);                           //Wait until stop condtion is in effect.
      //Write is completed.
}
        
//************************[ iic_rd ]********************************
static U8 iic_rd(U32 slvAddr,U32 addr)
{
    _iicMode      = SETRDADDR;
    _iicPt        = 0;
    _iicData[0]   = (U8)addr;
    _iicDataCount = 1;

    rIICDS   = slvAddr;
    rIICSTAT = 0xf0;                    //MasTx,Start  
      //Clearing the pending bit isn't needed because the pending bit has been cleared.
    while(_iicDataCount!=-1)
        Run_IicPoll();

    _iicMode      = RDDATA;
    _iicPt        = 0;
    _iicDataCount = 1;
    
    rIICDS   = slvAddr;
    rIICSTAT = 0xb0;                    //Master Rx,Start
    rIICCON  = 0xaf;                    //Resumes IIC operation.   
    while(_iicDataCount!=-1)
        Run_IicPoll();

    return _iicData[1];
}

//**********************[ Run_IicPoll ]*********************************
static void Run_IicPoll(void)
{
    if(rIICCON & 0x10)                  //Tx/Rx Interrupt Enable
       IicPoll();
}       
    
//**********************[IicPoll ]**************************************
static void IicPoll(void)
{
    U32 iicSt,i;
    
    iicSt = rIICSTAT; 
    if(iicSt & 0x8){}                   //When bus arbitration is failed.
    if(iicSt & 0x4){}                   //When a slave address is matched with IICADD
    if(iicSt & 0x2){}                   //When a slave address is 0000000b
    if(iicSt & 0x1){}                   //When ACK isn't received

    switch(_iicMode)
    {
        case POLLACK:
            _iicStatus = iicSt;
            break;

        case RDDATA:
            if((_iicDataCount--)==0)
            {
                _iicData[_iicPt++] = rIICDS;
            
                rIICSTAT = 0x90;                //Stop MasRx condition 
                rIICCON  = 0xaf;                //Resumes IIC operation.
                Delay(1);                       //Wait until stop condtion is in effect.
                                                //Too long time... 
                                                //The pending bit will not be set after issuing stop condition.
                break;    
            }      
            _iicData[_iicPt++] = rIICDS;
                        //The last data has to be read with no ack.
            if((_iicDataCount)==0)
                rIICCON = 0x2f;                 //Resumes IIC operation with NOACK.  
            else 
                rIICCON = 0xaf;                 //Resumes IIC operation with ACK
            break;

        case WRDATA:
            if((_iicDataCount--)==0)
            {
                rIICSTAT = 0xd0;                //stop MasTx condition 
                rIICCON  = 0xaf;                //resumes IIC operation.
                Delay(1);                       //wait until stop condtion is in effect.
                       //The pending bit will not be set after issuing stop condition.
                break;    
            }
            rIICDS = _iicData[_iicPt++];        //_iicData[0] has dummy.
            for(i=0;i<10;i++);                  //for setup time until rising edge of IICSCL
            rIICCON = 0xaf;                     //resumes IIC operation.
            break;

        case SETRDADDR:
//          Uart_Printf("[S%d]",_iicDataCount);
            if((_iicDataCount--)==0)
            {
                break;                  //IIC operation is stopped because of IICCON[4]    
            }
            rIICDS = _iicData[_iicPt++];
            for(i=0;i<10;i++);          //for setup time until rising edge of IICSCL
            rIICCON = 0xaf;             //resumes IIC operation.
            break;

        default:
            break;      
    }
}

static int VGADAC_init(void)
{
    //int var0,var1;
    unsigned int lcdcon;
    
    lcdcon = rLCDCON1;
    rLCDCON1 = lcdcon & ~1;
    
    rGPEUP  |= 0xc000;                  //Pull-up disable
    rGPECON = (rGPECON&~0xf0000000)|0xa0000000;                //GPE15:IICSDA , GPE14:IICSCL    
    
    //Enable ACK, Prescaler IICCLK=PCLK/16, Enable interrupt, Transmit clock value Tx clock=IICCLK/16
    //IICCON = 0xaf;
    rIICCON  = (1<<7) | (0<<6) | (1<<5) | (0xf);
    
    rIICADD  = 0x10;                    //2410 slave address = [7:1]
    rIICSTAT = 0x10;                    //IIC bus data output enable(Rx/Tx)
    
    //Uart0_Printf("VGA set1!\n");
    iic_wr(0xec,4,0x20);
    //Uart0_Printf("VGA set2!\n");
    iic_wr(0xec,7,0x8c);
    //Uart0_Printf("VGA set3!\n");
    iic_wr(0xec,14,0x1b);
    //Uart0_Printf("VGA set4!\n");
    iic_wr(0xec,13,0x03);
    
    //Uart0_Printf("VGA ve!\n");
    if (iic_rd(0xec,4) != 0x20) return -1;
    
    if (iic_rd(0xec,7) != 0x8c) return -1;
    
    if (iic_rd(0xec,14) != 0x1b) return -1;
    
    rLCDCON1 = lcdcon;
    return 0;
}

void Lcd_Init()
{
    //int ClkVal;
    
    __LCDFrameBuffer = (unsigned char*)_LCD_FBADDRESS;//+0x800000;

    if (VGADAC_init()!=0)
    {
        Uart0_Printf("VGA Initial error!\n");
        while(1);
        //return;
    }
    //Uart0_Printf("VGA Initial ok!\n");
    
    rGPCUP=0xffffffff; // Disable Pull-up register
    rGPCCON=0xaaaaaaaa; //Initialize VD[7:0],LCDVF[2:0],VM,VFRAME,VLINE,VCLK,LEND 
    rGPDUP=0xffffffff; // Disable Pull-up register
    rGPDCON=0xaaaaaaaa; //Initialize VD[23:8]   
    
    //         時鐘25MHz               MVAL值       TFT    24BPP
    //rLCDCON1=(CLKVAL_TFT_640480<<8)|(MVAL_USED<<7)|(3<<5)|(13<<1)|0;
    //         時鐘25MHz               MVAL值       TFT    16BPP
    rLCDCON1=(CLKVAL_TFT_640480<<8)|(MVAL_USED<<7)|(3<<5)|(12<<1)|0;
    rLCDCON2=(VBPD_640480<<24)|(LINEVAL_TFT_640480<<14)|(VFPD_640480<<6)|(VSPW_640480);
    rLCDCON3=(HBPD_640480<<19)|(HOZVAL_TFT_640480<<8)|(HFPD_640480);
    rLCDCON4=(MVAL<<8)|(HSPW_640480);

    //0x00 XX XX XX   5:5:5:I
    // ---  R  G  B
    //rLCDCON5=(0<<12)|(0<<11)|(1<<9)|(1<<8)|1; // BPP24:MSB,HSYNC and VSYNC are inverted
    //0x00 XX XX XX   5:6:5
    // ---  R  G  B
    rLCDCON5=(0<<12)|(1<<11)|(1<<9)|(1<<8)|1; // BPP24:MSB,HSYNC and VSYNC are inverted

    
    rLCDSADDR1=( ( (unsigned int)_LCD_FBADDRESS >> 22) << 21 ) | M5D ( (unsigned int)_LCD_FBADDRESS >> 1 );
    rLCDSADDR2=M5D( ( (unsigned int)_LCD_FBADDRESS + (VIDEO_VISIBLE_COLS*VIDEO_VISIBLE_ROWS*VIDEO_PIXEL_SIZE ) ) >> 1 );

    rLCDSADDR3=(0<<11)|(VIDEO_VISIBLE_COLS*2);

    //rLPCSEL&=(~7); // Disable LPC3600
    rTCONSEL&=(~0x07); // Disable LPC3600
    rTPAL=0; // Disable Temp Palette
    
    //
    // 為了避免屏幕抖動,先不打開液晶控制器

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产一区二区三区地区| 欧美一区二区三区白人| 国产高清精品网站| 久久成人精品无人区| 青青草成人在线观看| 男女激情视频一区| 国产资源在线一区| 国产精品影音先锋| 国产成人综合亚洲网站| 成人免费va视频| 色综合久久综合网97色综合| av激情亚洲男人天堂| 99久久精品国产毛片| 色综合亚洲欧洲| 欧美探花视频资源| 69精品人人人人| 日韩久久久久久| 久久这里都是精品| 国产精品电影一区二区| 亚洲综合无码一区二区| 性做久久久久久免费观看| 婷婷开心激情综合| 久久国产日韩欧美精品| 粉嫩久久99精品久久久久久夜| k8久久久一区二区三区| 91久久精品午夜一区二区| 欧美午夜不卡在线观看免费| 欧美一区二区在线免费播放| 久久久久久久久久久久久女国产乱 | 视频一区二区三区中文字幕| 日韩电影在线观看电影| 极品少妇xxxx精品少妇| 国产精品1024| 在线观看一区二区视频| 欧美一区二区在线不卡| 国产亚洲成aⅴ人片在线观看| 中文字幕亚洲电影| 天天av天天翘天天综合网色鬼国产 | 欧美成人高清电影在线| 日韩免费一区二区| 国产精品久久综合| 五月天亚洲精品| 国产成人免费视频一区| 欧美午夜精品理论片a级按摩| 精品久久久影院| 亚洲日本护士毛茸茸| 青青青伊人色综合久久| 99久久综合99久久综合网站| 51精品秘密在线观看| 国产精品丝袜一区| 日日夜夜免费精品| 成人av电影在线网| 91精品国产一区二区三区| 国产精品视频观看| 秋霞电影网一区二区| 91丨九色丨蝌蚪丨老版| 日韩精品一区在线观看| 亚洲尤物视频在线| 亚洲韩国精品一区| 成人a级免费电影| 日韩亚洲欧美一区| 亚洲免费大片在线观看| 麻豆精品在线视频| 在线一区二区观看| 国产日韩精品一区| 蜜桃一区二区三区四区| 色香色香欲天天天影视综合网| 久久一区二区视频| 日韩高清一区二区| 91免费国产在线观看| 久久亚洲综合av| 日韩二区三区四区| 91社区在线播放| 久久精品免视看| 日本欧美加勒比视频| 欧美中文字幕久久| 国产精品理伦片| 国产一区二区不卡老阿姨| 91精品国产全国免费观看 | 高清不卡一区二区| 日韩免费一区二区| 日韩高清欧美激情| 欧美日韩免费视频| 亚洲免费观看高清完整版在线观看熊 | 久久综合色鬼综合色| 日韩电影免费在线观看网站| 色哟哟欧美精品| 亚洲欧美在线视频观看| 国产91对白在线观看九色| 精品国产亚洲一区二区三区在线观看| 亚洲一区二区在线观看视频| 91色在线porny| 国产精品成人免费精品自在线观看 | 亚洲一区二区三区免费视频| 97久久久精品综合88久久| 欧美国产亚洲另类动漫| 国产一区二区在线观看免费| 欧美电视剧免费全集观看| 日韩电影一区二区三区四区| 69堂国产成人免费视频| 日韩一区欧美二区| 日韩亚洲欧美中文三级| 久久 天天综合| 久久影院视频免费| 久久国产人妖系列| 在线播放一区二区三区| 亚洲愉拍自拍另类高清精品| 色婷婷精品久久二区二区蜜臂av | 26uuu另类欧美亚洲曰本| 人人爽香蕉精品| 日韩欧美国产午夜精品| 另类人妖一区二区av| 久久综合久久鬼色| 成人丝袜视频网| 亚洲精品一二三| 欧美色涩在线第一页| 天天亚洲美女在线视频| 欧美一级xxx| 久久黄色级2电影| 国产日产精品一区| 99久免费精品视频在线观看| 一区二区在线观看免费视频播放| 在线免费不卡电影| 亚洲电影欧美电影有声小说| 4438x亚洲最大成人网| 久久精品国产免费| 久久久高清一区二区三区| 成人高清在线视频| 亚洲激情网站免费观看| 欧美剧情电影在线观看完整版免费励志电影 | 亚洲成人黄色影院| 日韩精品一区二区三区中文精品| 美女视频黄免费的久久| 亚洲色图视频网| 欧美精选在线播放| 国内外精品视频| 国产精品视频观看| 欧美日韩三级一区二区| 九九视频精品免费| 中文字幕一区二区三区不卡在线| 在线观看亚洲a| 激情深爱一区二区| 亚洲视频综合在线| 欧美日韩国产123区| 国产在线麻豆精品观看| 国产精品久久久久影院色老大 | 亚洲免费在线电影| 91精品国产91久久综合桃花| 国产精品综合在线视频| 亚洲狠狠爱一区二区三区| 26uuu精品一区二区在线观看| 成人av在线一区二区三区| 亚洲 欧美综合在线网络| 久久久久国产成人精品亚洲午夜| 色哟哟国产精品免费观看| 精品一区二区三区的国产在线播放| 国产精品免费丝袜| 日韩一区二区三区视频在线观看| 不卡一区二区三区四区| 免费不卡在线视频| 亚洲欧美一区二区久久| 日韩女优av电影| 欧美亚洲精品一区| 成人一区二区视频| 免费黄网站欧美| 一区二区三区在线免费播放| 久久久精品综合| 欧美日韩成人高清| 99综合电影在线视频| 久久99国产精品麻豆| 一区二区三区在线视频观看58| 国产午夜精品在线观看| 在线91免费看| 99国产一区二区三精品乱码| 美女一区二区视频| 亚洲成人一区在线| 亚洲欧美另类在线| 国产欧美日韩综合| 日韩精品在线网站| 欧美伦理电影网| 色婷婷亚洲精品| 成年人午夜久久久| 国产高清一区日本| 美女脱光内衣内裤视频久久影院| 亚洲人一二三区| 国产精品久久精品日日| 国产肉丝袜一区二区| 精品久久久久99| 日韩一区二区三区高清免费看看| 精品视频999| 欧美午夜一区二区三区| 一本大道综合伊人精品热热| 成人国产精品免费网站| 国产99久久精品| 国产一区二区看久久| 久草热8精品视频在线观看| 美女看a上一区| 美女精品自拍一二三四| 蜜桃精品视频在线| 免费视频最近日韩|