⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 buxx_adrt.c

📁 bu1566dsp芯片用来处理ov7660或其他30万摄像模组的图像预览.图像拍照(jpeg压缩)
💻 C
📖 第 1 页 / 共 4 页
字号:
        0x0000, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF,
        0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
};

const UINT16 sl10_w[] = {
    0x0006, 0x000A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0x0000, 0xFFFF, 0x0000,
        0xFFFF, 0x0000, 0xFFFF, 0x0000, 0xFFFF, 0x0000, 0xFFFF, 0x0000,
        0xFFFF, 0x0000, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF,
        0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0x0000, 0xFFFF,
        0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
};

const UINT16 sl10_x[] = {
    0x0006, 0x000A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000,
        0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF,
        0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000,
        0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0x0000, 0xFFFF,
        0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
};

const UINT16 sl10_y[] = {
    0x0006, 0x000A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000,
        0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF,
        0x0000, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF,
        0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000,
        0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
};

const UINT16 sl10_z[] = {
    0x0006, 0x000A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
        0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000,
        0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF,
        0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
};

const UINT16 font_sp[] = {
    0x0006, 0x000A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
};

/*
const UINT16 font_colom[] = {
    0x0006, 0x000A, 
        0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0x0000, 0x0000, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 
        0xFFFF, 0xFFFF, 0x0000, 0x0000, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 
        0xFFFF, 0xFFFF, 0x0000, 0x0000, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 
        0xFFFF, 0xFFFF, 0x0000, 0x0000, 0xFFFF, 0xFFFF,
        0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,
};
*/
//FONT TABLE
const UINT16 *const fonttable[] = {
    font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp,     //0x00-0x0f
    font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp,     //0x10-0x1f
    font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp,     //0x20-0x2f
    n10_0, n10_1, n10_2, n10_3, n10_4, n10_5, n10_6, n10_7, n10_8, n10_9, font_sp, font_sp, font_sp, font_sp, font_sp, font_sp, //0x30-0x3f
    font_sp, cl10_A, cl10_B, cl10_C, cl10_D, cl10_E, cl10_F, cl10_G, cl10_H, cl10_I, cl10_J, cl10_K, cl10_L, cl10_M, cl10_N, cl10_O,    //0x40-0x4f
    cl10_P, cl10_Q, cl10_R, cl10_S, cl10_T, cl10_U, cl10_V, cl10_W, cl10_X, cl10_Y, cl10_Z, font_sp, font_sp, font_sp, font_sp, font_sp,        //0x50-0x5f
    font_sp, sl10_a, sl10_b, sl10_c, sl10_d, sl10_e, sl10_f, sl10_g, sl10_h, sl10_i, sl10_j, sl10_k, sl10_l, sl10_m, sl10_n, sl10_o,    //0x60-0x6f
    sl10_p, sl10_q, sl10_r, sl10_s, sl10_t, sl10_u, sl10_v, sl10_w, sl10_x, sl10_y, sl10_z, font_sp, font_sp, font_sp, font_sp, font_sp,        //0x70-0x7f
};

#endif

/* ************************************************** */
/*		    GLOBAL FUNCTIONS		      */
/* ************************************************** */

/* ************************************************** */
/*		     LOCAL FUNCTIONS		      */
/* ************************************************** */



//-----------------------------------------------------------------------------
//                     lcd display clear (LCD direct write)
//-----------------------------------------------------------------------------
void aDRT_clear(const UINT16 st_x, const UINT16 st_y, const UINT16 xsize,
                const UINT16 ysize, const UINT32 back_color)
{
    UINT16 /*UINT8 */ mcdata[] =
    {
    M_CMD_DATA1, M_CMD_DATA2, M_CMD_DATA3, M_CMD_DATA4, M_CMD_DATA5,
            M_CMD_DATA6, M_CMD_DATA7};
    UINT16 /*UINT8 */ scdata[] =
    {
    S_CMD_DATA1, S_CMD_DATA2, S_CMD_DATA3, S_CMD_DATA4, S_CMD_DATA5,
            S_CMD_DATA6, S_CMD_DATA7};
    int i, wcnt, write_count;
    UINT16 color_data;
    UINT16 colortype;

    aDSC_Quit_Preview();

    //A setup of a LCD indication area
    column_page_set(st_x, st_x + xsize - 1, st_y, st_y + ysize - 1);

    // Main or Sub LCD setup (write area)
    if (bit_read(LCDCNT, bLCD_SEL) == sMAIN_ACS)
    {
        for (i = 0; i < M_EXCMD; i++)
        {
            *LCD_CMD_WRITE = mcdata[i];
        }
        colortype = M_LCD_CTYPE;
    }
    else
    {
        for (i = 0; i < S_EXCMD; i++)
        {
            *LCD_CMD_WRITE = scdata[i];
        }
        colortype = S_LCD_CTYPE;
    }

    //data write
    switch (colortype)
    {
    case sC444B8A2:
        write_count = xsize * ysize;
        for (wcnt = 0; wcnt < write_count; wcnt++)
        {
            *LCD_PDAT_WRITE = ((back_color & 0xf00000) >> 16) | ((back_color & 0x00f000) >> 12);        //RGB Data are written
            *LCD_PDAT_WRITE = back_color & 0x0000f0;
        }
        break;
    case sC444B8A2B:
        write_count = xsize * ysize;
        for (wcnt = 0; wcnt < write_count; wcnt++)
        {
            *LCD_PDAT_WRITE = (back_color & 0xf00000) >> 20;    //RGB Data are written
            *LCD_PDAT_WRITE =
                ((back_color & 0x00f000) >> 8) | ((back_color & 0x0000f0)
                                                  >> 4);
        }
        break;
    case sC444B8A15:
        write_count = xsize * ysize / 2;
        for (wcnt = 0; wcnt < write_count; wcnt++)
        {
            *LCD_PDAT_WRITE = ((back_color & 0xf00000) >> 16) | ((back_color & 0x00f000) >> 12);        //RGB Data are written
            *LCD_PDAT_WRITE =
                (back_color & 0xf0) | ((back_color & 0xf00000) >> 20);
            *LCD_PDAT_WRITE =
                ((back_color & 0x00f000) >> 8) | ((back_color & 0xf0) >>
                                                  4);
        }
        break;
    case sC565B16A1:
        write_count = xsize * ysize;
        color_data = ((back_color & 0xf80000) >> 8) | ((back_color & 0x00fc00) >> 5) | ((back_color & 0x0000f8) >> 3);  //RGB Data are written
        for (wcnt = 0; wcnt < write_count; wcnt++)
        {
            *LCD_PDAT_WRITE = color_data;
        }
        break;
    case sC565B8A2:
        write_count = xsize * ysize;
        for (wcnt = 0; wcnt < write_count; wcnt++)
        {
            *LCD_PDAT_WRITE = ((back_color & 0xf80000) >> 16) | (back_color & 0x00e000) >> 13;  //RGB Data are written
            *LCD_PDAT_WRITE =
                ((back_color & 0x001c00) >> 5) | (back_color & 0x0000f8) >>
                3;
        }
        break;
    case sC666B8A3:
        write_count = xsize * ysize;
        for (wcnt = 0; wcnt < write_count; wcnt++)
        {
            *LCD_PDAT_WRITE = (back_color & 0xfc0000) >> 16;    //RGB Data are written
            *LCD_PDAT_WRITE = (back_color & 0x00fc00) >> 8;
            *LCD_PDAT_WRITE = back_color & 0x0000fc;
        }
        break;
    case sC666B8A3B:
        write_count = xsize * ysize;
        for (wcnt = 0; wcnt < write_count; wcnt++)
        {
            *LCD_PDAT_WRITE = ((back_color & 0xfc0000) >> 16) | ((back_color & 0x00c000) >> 14);        //RGB Data are written
            *LCD_PDAT_WRITE =
                (back_color & 0x003c00) >> 6 | ((back_color & 0x0000f0) >>
                                                4);
            *LCD_PDAT_WRITE = (back_color & 0x00000c) << 4;
        }
        break;
#if defined sC666B9a2
    case sC666B9A2:
        write_count = xsize * ysize;
        for (wcnt = 0; wcnt < write_count; wcnt++)
        {
            *LCD_PDAT_WRITE = ((back_color & 0xfc0000) >> 15) | (back_color & 0x00e000) >> 13;  //RGB Data are written
            *LCD_PDAT_WRITE =
                ((back_color & 0x001c00) >> 4) | (back_color & 0x0000fc) >>
                2;
        }
        break;
#endif
    }

    if (bit_read(LCDCNT, bLCD_SEL) == sMAIN_ACS)
    {
        column_page_set(0, M_LCD_WSIZE - 1, 0, M_LCD_HSIZE - 1);
    }
    else
    {
        column_page_set(0, S_LCD_WSIZE - 1, 0, S_LCD_HSIZE - 1);
    }


}


//-----------------------------------------------------------------------------
//                      rgb565 data write (LCD direct write)
//-----------------------------------------------------------------------------
void aDRT_write_rgb565(const UINT16 * rgb_data, const UINT16 st_x,
                       const UINT16 st_y)
{
    UINT16 /*UINT8 */ mcdata[] =
    {
    M_CMD_DATA1, M_CMD_DATA2, M_CMD_DATA3, M_CMD_DATA4, M_CMD_DATA5,
            M_CMD_DATA6, M_CMD_DATA7};
    UINT16 /*UINT8 */ scdata[] =
    {
    S_CMD_DATA1, S_CMD_DATA2, S_CMD_DATA3, S_CMD_DATA4, S_CMD_DATA5,
            S_CMD_DATA6, S_CMD_DATA7};
    int i, wcnt, write_count;
    UINT16 temp;
    UINT16 colortype;
    UINT16 xsize, ysize;

    xsize = *rgb_data;
    rgb_data++;
    ysize = *rgb_data;
    rgb_data++;

    aDSC_Quit_Preview();

    // Main or Sub LCD setup (write area)
    column_page_set(st_x, st_x + xsize - 1, st_y, st_y + ysize - 1);

    if (bit_read(LCDCNT, bLCD_SEL) == sMAIN_ACS)
    {
        for (i = 0; i < M_EXCMD; i++)
        {
            *LCD_CMD_WRITE = mcdata[i];
        }
        colortype = M_LCD_CTYPE;
    }
    else
    {
        for (i = 0; i < S_EXCMD; i++)
        {
            *LCD_CMD_WRITE = scdata[i];
        }
        colortype = S_LCD_CTYPE;
    }

    //data write
    switch (colortype)
    {
    case sC444B8A2:
        write_count = xsize * ysize;
        for (wcnt = 0; wcnt < write_count; wcnt++)
        {
            *LCD_PDAT_WRITE = (*rgb_data & 0xf000) >> 8 | (*rgb_data & 0x0780) >> 7;    //RGB Data are written
            *LCD_PDAT_WRITE = (*rgb_data & 0x001e) << 3;
            rgb_data++;
        }
        break;
    case sC444B8A2B:
        write_count = xsize * ysize;
        for (wcnt = 0; wcnt < write_count; wcnt++)
        {
            *LCD_PDAT_WRITE = (*rgb_data & 0xf000) >> 12;       //RGB Data are written
            *LCD_PDAT_WRITE =
                (*rgb_data & 0x0780) >> 3 | (*rgb_data & 0x001e) >> 1;
            rgb_data++;
        }
        break;
    case sC444B8A15:
        write_count = xsize * ysize / 2;
        for (wcnt = 0; wcnt < write_count; wcnt++)
        {
            *LCD_PDAT_WRITE = ((*rgb_data & 0xf000) >> 8) | ((*rgb_data & 0x0780) >> 7);        //RGB Data are written
            temp = (*rgb_data & 0x001e) << 3;
            rgb_data++;
            *LCD_PDAT_WRITE = temp | ((*rgb_data & 0xf000) >> 12);
            *LCD_PDAT_WRITE =
                ((*rgb_data & 0x0780) >> 3) | ((*rgb_data & 0x001e) >> 1);
            rgb_data++;
        }
        break;
    case sC565B16A1:
        write_count = xsize * ysize;
        for (wcnt = 0; wcnt < write_count; wcnt++)
        {
            *LCD_PDAT_WRITE = *rgb_data;        //RGB Data are written
            rgb_data++;
        }
        break;
    case sC565B8A2:
        write_count = xsize * ysize;
        for (wcnt = 0; wcnt < write_count; wcnt++)
        {
            *LCD_PDAT_WRITE = (*rgb_data & 0xff00) >> 8;        //RGB Data are written
            *LCD_PDAT_WRITE = *rgb_data & 0x00ff;
            rgb_data++;
        }
        break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -