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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? osram128x64x4.c

?? FreeRTOS is a portable, open source, mini Real Time Kernel - a free to download and royalty free RTO
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
    unsigned long ulTemp;

    //
    // Return iff SSI port is not enabled for OSRAM.
    //
    if(!g_bSSIEnabled)
    {
        return;
    }

    //
    // Clear the command/control bit to enable command mode.
    //
    GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_7, 0);

    //
    // Loop while there are more bytes left to be transferred.
    //
    while(ulCount != 0)
    {
        //
        // Write the next byte to the controller.
        //
        SSIDataPut(SSI0_BASE, *pucBuffer++);

        //
        // Dummy read to drain the fifo and time the GPIO signal.
        //
        SSIDataGet(SSI0_BASE, &ulTemp);

        //
        // Decrement the BYTE counter.
        //
        ulCount--;
    }
}

//*****************************************************************************
//
//! \internal
//!
//! Write a sequence of data bytes to the SSD0323 controller.
//!
//! The data is written in a polled fashion; this function will not return
//! until the entire byte sequence has been written to the controller.
//!
//! \return None.
//
//*****************************************************************************
static void
OSRAMWriteData(const unsigned char *pucBuffer, unsigned long ulCount)
{
    unsigned long ulTemp;

    //
    // Return iff SSI port is not enabled for OSRAM.
    //
    if(!g_bSSIEnabled)
    {
        return;
    }

    //
    // Set the command/control bit to enable data mode.
    //
    GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_PIN_7);

    //
    // Loop while there are more bytes left to be transferred.
    //
    while(ulCount != 0)
    {
        //
        // Write the next byte to the controller.
        //
        SSIDataPut(SSI0_BASE, *pucBuffer++);

        //
        // Dummy read to drain the fifo and time the GPIO signal.
        //
        SSIDataGet(SSI0_BASE, &ulTemp);

        //
        // Decrement the BYTE counter.
        //
        ulCount--;
    }
}

//*****************************************************************************
//
//! Clears the OLED display.
//!
//! This function will clear the display RAM.  All pixels in the display will
//! be turned off.
//!
//! This function is contained in <tt>osram128x64x4.c</tt>, with
//! <tt>osram128x64x4.h</tt> containing the API definition for use by
//! applications.
//!
//! \return None.
//
//*****************************************************************************
void
OSRAM128x64x4Clear(void)
{
    static const unsigned char pucCommand1[] = { 0x15, 0, 63 };
    static const unsigned char pucCommand2[] = { 0x75, 0, 79 };
    unsigned long ulRow, ulColumn;
    static unsigned char pucZeroBuffer[8] = { 0, 0, 0, 0, 0, 0, 0, 0};

    //
    // Set the window to fill the entire display.
    //
    OSRAMWriteCommand(pucCommand1, sizeof(pucCommand1));
    OSRAMWriteCommand(pucCommand2, sizeof(pucCommand2));
    OSRAMWriteCommand(g_pucOSRAM128x64x4VerticalInc,
                      sizeof(g_pucOSRAM128x64x4VerticalInc));

    //
    // In vertical address increment mode, loop through each column, filling
    // each row with 0.
    //
    for(ulColumn = 0; ulColumn < (128/2); ulColumn++)
    {
        //
        // 8 rows (bytes) per row of text.
        //
        for(ulRow = 0; ulRow < 80; ulRow += 8)
        {
            OSRAMWriteData(pucZeroBuffer, sizeof(pucZeroBuffer));
        }
    }
}

//*****************************************************************************
//
//! Displays a string on the OLED display.
//!
//! \param pcStr is a pointer to the string to display.
//! \param ulX is the horizontal position to display the string, specified in
//! columns from the left edge of the display.
//! \param ulY is the vertical position to display the string, specified in
//! rows from the top edge of the display.
//! \param ucLevel is the 4-bit grey scale value to be used for displayed text.
//!
//! This function will draw a string on the display.  Only the ASCII characters
//! between 32 (space) and 126 (tilde) are supported; other characters will
//! result in random data being draw on the display (based on whatever appears
//! before/after the font in memory).  The font is mono-spaced, so characters
//! such as "i" and "l" have more white space around them than characters such
//! as "m" or "w".
//!
//! If the drawing of the string reaches the right edge of the display, no more
//! characters will be drawn.  Therefore, special care is not required to avoid
//! supplying a string that is "too long" to display.
//!
//! This function is contained in <tt>osram128x64x4.c</tt>, with
//! <tt>osram128x64x4.h</tt> containing the API definition for use by
//! applications.
//!
//! \note Because the OLED display packs 2 pixels of data in a single byte, the
//! parameter \e ulX must be an even column number (e.g. 0, 2, 4, etc).
//!
//! \return None.
//
//*****************************************************************************
void
OSRAM128x64x4StringDraw(const char *pcStr, unsigned long ulX,
                        unsigned long ulY, unsigned char ucLevel)
{
    static unsigned char pucBuffer[8];
    unsigned long ulIdx1, ulIdx2;
    unsigned char ucTemp;

    //
    // Check the arguments.
    //
    ASSERT(ulX < 128);
    ASSERT((ulX & 1) == 0);
    ASSERT(ulY < 64);
    ASSERT(ucLevel < 16);

    //
    // Setup a window starting at the specified column and row, ending
    // at the right edge of the display and 8 rows down (single character row).
    //
    pucBuffer[0] = 0x15;
    pucBuffer[1] = ulX / 2;
    pucBuffer[2] = 63;
    OSRAMWriteCommand(pucBuffer, 3);
    pucBuffer[0] = 0x75;
    pucBuffer[1] = ulY;
    pucBuffer[2] = ulY + 7;
    OSRAMWriteCommand(pucBuffer, 3);
    OSRAMWriteCommand(g_pucOSRAM128x64x4VerticalInc,
                      sizeof(g_pucOSRAM128x64x4VerticalInc));

    //
    // Loop while there are more characters in the string.
    //
    while(*pcStr != 0)
    {
        //
        // Get a working copy of the current character and convert to an
        // index into the character bit-map array.
        //
        ucTemp = *pcStr;
        ucTemp &= 0x7F;
        if(ucTemp < ' ')
        {
            ucTemp = ' ';
        }
        else
        {
            ucTemp -= ' ';
        }

        //
        // Build and display the character buffer.
        //
        for(ulIdx1 = 0; ulIdx1 < 3; ulIdx1++)
        {
            //
            // Convert two columns of 1-bit font data into a single data
            // byte column of 4-bit font data.
            //
            for(ulIdx2 = 0; ulIdx2 < 8; ulIdx2++)
            {
                pucBuffer[ulIdx2] = 0;
                if(g_pucFont[ucTemp][ulIdx1*2] & (1 << ulIdx2))
                {
                    pucBuffer[ulIdx2] = ((ucLevel << 4) & 0xf0);
                }
                if((ulIdx1 < 2) &&
                    (g_pucFont[ucTemp][ulIdx1*2+1] & (1 << ulIdx2)))
                {
                    pucBuffer[ulIdx2] |= ((ucLevel << 0) & 0x0f);
                }
            }

            //
            // If there is room, dump the single data byte column to the
            // display.  Otherwise, bail out.
            //
            if(ulX < 126)
            {
                OSRAMWriteData(pucBuffer, 8);
                ulX += 2;
            }
            else
            {
                return;
            }
        }

        //
        // Advance to the next character.
        //
        pcStr++;
    }
}

//*****************************************************************************
//
//! Displays an image on the OLED display.
//!
//! \param pucImage is a pointer to the image data.
//! \param ulX is the horizontal position to display this image, specified in
//! columns from the left edge of the display.
//! \param ulY is the vertical position to display this image, specified in
//! rows from the top of the display.
//! \param ulWidth is the width of the image, specified in columns.
//! \param ulHeight is the height of the image, specified in rows.
//!
//! This function will display a bitmap graphic on the display.  Because of the
//! format of the display RAM, the starting column (/e ulX) and the number of
//! columns (/e ulWidth) must be an integer multiple of two.
//!
//! The image data is organized with the first row of image data appearing left
//! to right, followed immediately by the second row of image data.  Each byte
//! contains the data for two columns in the current row, with the leftmost
//! column being contained in bits 7:4 and the rightmost column being contained
//! in bits 3:0.
//!
//! For example, an image six columns wide and seven scan lines tall would
//! be arranged as follows (showing how the twenty one bytes of the image would
//! appear on the display):
//!
//! \verbatim
//!     +-------------------+-------------------+-------------------+
//!     |      Byte 0       |      Byte 1       |      Byte 2       |
//!     +---------+---------+---------+---------+---------+---------+
//!     | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 |
//!     +---------+---------+---------+---------+---------+---------+
//!     |      Byte 3       |      Byte 4       |      Byte 5       |
//!     +---------+---------+---------+---------+---------+---------+
//!     | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 |
//!     +---------+---------+---------+---------+---------+---------+
//!     |      Byte 6       |      Byte 7       |      Byte 8       |
//!     +---------+---------+---------+---------+---------+---------+
//!     | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 |
//!     +---------+---------+---------+---------+---------+---------+
//!     |      Byte 9       |      Byte 10      |      Byte 11      |
//!     +---------+---------+---------+---------+---------+---------+
//!     | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 |
//!     +---------+---------+---------+---------+---------+---------+
//!     |      Byte 12      |      Byte 13      |      Byte 14      |
//!     +---------+---------+---------+--3------+---------+---------+
//!     | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 | 7 6 5 4 | 3 2 1 0 |
//!     +---------+---------+---------+---------+---------+---------+
//!     |      Byte 15      |      Byte 16      |      Byte 17      |

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品一区二区www在线 | 国产精品天干天干在观线| 欧美高清激情brazzers| 色婷婷狠狠综合| 色综合天天综合在线视频| 91亚洲精品乱码久久久久久蜜桃| av资源网一区| 色妞www精品视频| 91成人国产精品| 在线免费观看成人短视频| 日本精品一区二区三区高清 | 色94色欧美sute亚洲线路一久| www.亚洲色图.com| 成人av先锋影音| 91在线视频在线| 色呦呦一区二区三区| 色综合久久88色综合天天6| 99久久777色| 日本韩国一区二区三区| 欧美亚一区二区| 欧美日产国产精品| 日韩精品中文字幕一区二区三区 | 精品视频一区 二区 三区| 欧美日韩国产影片| 欧美一区二区私人影院日本| 日韩欧美国产麻豆| 2023国产一二三区日本精品2022| 久久视频一区二区| 欧美经典一区二区| 亚洲人亚洲人成电影网站色| 一区二区三区高清在线| 五月天丁香久久| 久草中文综合在线| www.欧美精品一二区| 欧美专区亚洲专区| 日韩免费成人网| 亚洲国产精品t66y| 一区二区三区欧美日韩| 欧美96一区二区免费视频| 国产一区二区主播在线| www.性欧美| 91精品在线免费| 国产欧美一区二区精品性色| 一区二区三区91| 久久精品国产**网站演员| av动漫一区二区| 欧美日韩国产乱码电影| 久久精品视频在线看| 一区二区在线看| 免费在线看成人av| 成人三级伦理片| 欧美日韩黄色一区二区| 久久久国产综合精品女国产盗摄| 亚洲女人的天堂| 免费观看成人鲁鲁鲁鲁鲁视频| 成人性生交大片免费看中文网站| 在线观看一区二区视频| 久久这里只有精品首页| 亚洲精选一二三| 久久精品国产亚洲一区二区三区| 成人avav在线| 日韩视频在线永久播放| 成人免费视频在线观看| 久久国产剧场电影| 91久久精品日日躁夜夜躁欧美| 精品sm在线观看| 亚洲精品乱码久久久久| 国产福利一区二区| 91精品国产综合久久精品图片 | 蜜臀久久久99精品久久久久久| 成人午夜激情视频| 日韩视频免费直播| 综合中文字幕亚洲| 国产成人精品免费一区二区| 欧美日韩国产色站一区二区三区| 中文字幕亚洲一区二区av在线| 蜜桃91丨九色丨蝌蚪91桃色| 欧美优质美女网站| 国产精品对白交换视频| 激情深爱一区二区| 在线成人免费视频| 亚洲欧美偷拍卡通变态| 国产精品原创巨作av| 91精品国产欧美日韩| 亚洲精品中文在线影院| 粉嫩久久99精品久久久久久夜| 欧美一区二区三区免费在线看| 亚洲激情图片小说视频| 99在线视频精品| 国产性天天综合网| 久久成人免费电影| 欧美日本国产视频| 亚洲久草在线视频| youjizz久久| 国产精品国产a| 国产91丝袜在线播放九色| 精品国产污污免费网站入口 | 色素色在线综合| 亚洲人成网站在线| 色呦呦日韩精品| 亚洲欧美色综合| 97久久超碰国产精品| 中文字幕一区免费在线观看| 成人午夜av影视| 国产日产欧美一区| 国产盗摄女厕一区二区三区| 国产日产精品一区| av在线播放成人| 国产精品久久久久9999吃药| 成人激情视频网站| 国产精品久久久久久妇女6080| 波多野结衣中文一区| 亚洲色大成网站www久久九九| av一区二区三区四区| 亚洲视频1区2区| 色婷婷精品大在线视频| 亚洲资源中文字幕| 欧美日本高清视频在线观看| 日韩高清中文字幕一区| 91精品国产全国免费观看 | 日韩一区二区免费高清| 毛片av一区二区| 欧美一区二区成人| 精品亚洲成av人在线观看| 久久亚洲一区二区三区明星换脸| 国产一区999| 欧美国产综合色视频| 91在线观看免费视频| 一区二区三区在线观看欧美| 欧美影院午夜播放| 麻豆91精品视频| 久久精品一区二区三区不卡| 国产91对白在线观看九色| 国产精品成人免费| 欧美日韩一区三区四区| 男男视频亚洲欧美| 国产嫩草影院久久久久| 一本到不卡精品视频在线观看| 天天综合网天天综合色| 欧美成人官网二区| 成人aa视频在线观看| 亚洲综合无码一区二区| 欧美一级在线视频| 成人免费视频一区| 亚洲国产成人av网| 欧美精品一区二区三区在线| 成人免费看片app下载| 一区二区三区蜜桃| 精品国偷自产国产一区| av电影天堂一区二区在线| 日韩精彩视频在线观看| 国产欧美日韩综合| 欧美日韩一区二区三区在线| 国产乱人伦偷精品视频不卡 | 国产高清一区日本| 亚洲自拍偷拍网站| 久久久久久久久久久久电影| av成人动漫在线观看| 日本女优在线视频一区二区 | 韩国精品久久久| 亚洲精品乱码久久久久久 | 一区二区三区精密机械公司| 久久先锋资源网| 欧美专区在线观看一区| 国产99久久久久久免费看农村| 亚洲午夜久久久久久久久久久 | 捆绑变态av一区二区三区| 中文字幕日韩一区二区| 日韩精品专区在线影院重磅| 99re热这里只有精品视频| 麻豆91精品视频| 一区2区3区在线看| 久久精品欧美日韩| 欧美日韩成人综合| 成人美女视频在线观看| 麻豆精品视频在线观看免费| 亚洲欧美偷拍卡通变态| 国产日韩欧美电影| 日韩三级免费观看| 欧美日韩一区三区| 色综合天天综合| 国产精品一区二区在线看| 日韩成人av影视| 一区二区高清免费观看影视大全| 国产精品久久久久一区二区三区| 日韩欧美亚洲国产精品字幕久久久| 91精品福利视频| 成人精品小蝌蚪| 激情综合色综合久久| 日韩电影免费一区| 亚洲午夜在线电影| 亚洲欧美日韩国产中文在线| 欧美国产精品久久| xvideos.蜜桃一区二区| 欧美一区二区大片| 欧美精品第1页| 欧美亚洲综合在线| 在线观看视频91| 一本到不卡免费一区二区| 99国产一区二区三精品乱码|