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

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

?? s7lstklcd.c

?? at91sam9260-ek library file
?? C
字號(hào):
/* ---------------------------------------------------------------------------
 *         ATMEL Microcontroller Software Support
 * ----------------------------------------------------------------------------
 * Copyright (c 2006, Atmel Corporation

 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 * 
 * - Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the disclaiimer below.
 * 
 * - Redistributions in binary form must reproduce the above copyright notice,
 * this list of conditions and the disclaimer below in the documentation and/or
 * other materials provided with the distribution. 
 * 
 * Atmel's name may not be used to endorse or promote products derived from
 * this software without specific prior written permission. 
 * 
 * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
 * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * ----------------------------------------------------------------------------
 */

//-----------------------------------------------------------------------------
//         Headers
//-----------------------------------------------------------------------------

#include "s7lstklcd.h"
#include "font.h"
#include <board.h>
#include <utility/assert.h>
#include <utility/trace.h>

//-----------------------------------------------------------------------------
//         Global functions
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
/// Switches a pixel on the SLCD on or off.
/// \param x  X-coordinate of pixel.
/// \param y  Y-coordinate of pixel.
/// \param set  If 1, pixel is displayed; otherwise it is hidden.
//-----------------------------------------------------------------------------
void S7LSTKLCD_Pixel(unsigned char x, unsigned char y, unsigned char set)
{
    unsigned int symbol = y * S7LSTKLCD_WIDTH + x;
    unsigned int common  = symbol / S7LSTKLCD_NUM_SEGMENTS;
    unsigned int segment = symbol % S7LSTKLCD_NUM_SEGMENTS;
    unsigned int reg = segment / 32;
    unsigned int bit = segment % 32;

    SANITY_CHECK(x < S7LSTKLCD_WIDTH);
    SANITY_CHECK(y < S7LSTKLCD_HEIGHT);

    if (set) {

        AT91C_BASE_SLCDC->SLCDC_MEM[common * 2 + reg] |=  (1 << bit);
    }
    else {

        AT91C_BASE_SLCDC->SLCDC_MEM[common * 2 + reg] &= ~(1 << bit);
    }
}

//-----------------------------------------------------------------------------
/// Displays a character at the given position on the SLCD. The character is
/// clipped according to the SLCD dimensions.
/// Note that x and y can be negative (upper-left part of character will be
/// clipped).
/// \param x  X-coordinate of upper-left corner of character.
/// \param y  Y-coordinate of upper-left corner of character.
/// \param c  Character to display.
//-----------------------------------------------------------------------------
void S7LSTKLCD_Char(signed int x, signed int y, unsigned char c)
{
    const unsigned char *pChar;
    signed int i, j;

    SANITY_CHECK(c >= gFont.firstCharacter);
    SANITY_CHECK(c <= gFont.lastCharacter);

    // Optimization: return if coordinates are out of bounds
    if ((x > S7LSTKLCD_WIDTH) || ((x+gFont.width) < 0)
        || (y > S7LSTKLCD_HEIGHT) || ((y+gFont.height) < 0)) {

        return;
    }

    // Get pointer to character in font data
    pChar = &(gFont.pData[(c - gFont.firstCharacter) * gFont.height]);

    // Display character at requested location
    for (j=0; j < gFont.height; j++) {
        for (i=0; i < gFont.width; i++) {

            if (((x+i) >= 0) && ((x+i) < S7LSTKLCD_WIDTH)
                && ((y+i >= 0)) && ((y+i) < S7LSTKLCD_HEIGHT)) {

                S7LSTKLCD_Pixel(x+i, y+j, (pChar[j] & (1 << (FONT_CHAR_MAX_WIDTH-i-1))));
            }
        }
    }
}

//-----------------------------------------------------------------------------
/// Displays a string on the SLCD given the top-left corner coordinates. String
/// is clipped according to the SLCD dimensions.
/// X and Y can be negative (top-left clipping).
/// \param x  X-coordinate of top-left corner.
/// \param y  Y-coordinate of top-left corner.
/// \param pString  String to display.
//-----------------------------------------------------------------------------
void S7LSTKLCD_String(signed int x, signed int y, const char *pString)
{
    signed int j;
    while (*pString != 0) {
    
        // Display character
        S7LSTKLCD_Char(x, y, *pString);
        x += gFont.width + 1;
        pString++;

        // Vertical blank line
        if ((*pString != 0) && ((x-1) < S7LSTKLCD_WIDTH) && ((x-1) > 0)) {

            for (j=0; j < gFont.height; j++) {

                if (((j+y) >= 0) && ((j+y) < S7LSTKLCD_HEIGHT)) {

                    S7LSTKLCD_Pixel(x-1, y+j, 0);
                }
            }
        }
    }
}

//-----------------------------------------------------------------------------
/// Returns the height and width in pixels of the given string.
/// \param pString  String to examinate.
/// \param pWidth  Width of string in pixels.
/// \param pHeight  Height of string in pixels.
//-----------------------------------------------------------------------------
void S7LSTKLCD_GetStringSize(
    const char *pString,
    signed int *pWidth,
    signed int *pHeight)
{
    unsigned int size = 0;

    // Get string size
    while (*pString != 0) {

        size++;
        pString++;
    }

    // Return size in pixel
    if (pWidth) {
        
        *pWidth = size * (gFont.width + 1) - 1;
    }
    if (pHeight) {

        *pHeight = gFont.height;
    }
}

//-----------------------------------------------------------------------------
/// Displays the given string on the SLCD, centered along the X and Y axis
/// (this may result in the string being clipped).
/// \param pString  String to display.
//-----------------------------------------------------------------------------
void S7LSTKLCD_PutString(const char *pString)
{
    signed int width, height;
    SANITY_CHECK(pString);

    S7LSTKLCD_GetStringSize(pString, &width, &height);
    S7LSTKLCD_String((S7LSTKLCD_WIDTH - width) / 2, (S7LSTKLCD_HEIGHT - height) / 2, pString);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区在线观看| 久久av中文字幕片| 日本道色综合久久| 亚洲精品乱码久久久久久黑人 | 国产福利精品导航| 国产suv一区二区三区88区| 福利一区在线观看| 日本一区二区三区四区| 亚洲18影院在线观看| 91黄色在线观看| 久久亚区不卡日本| 国产精品亚洲视频| 欧美videossexotv100| 国产成人av一区二区三区在线 | 亚洲精品一区二区三区蜜桃下载 | 国产日韩欧美在线一区| 天天操天天综合网| 欧美日韩国产一二三| 国产一区二区三区免费播放| 国产精品国产a级| 欧美视频在线一区二区三区| 久久精品国产一区二区| 国产欧美综合色| 欧美日韩国产中文| 成人一道本在线| 亚洲一区在线观看免费| 欧美精品一区视频| 99久久久国产精品| 精品制服美女久久| 亚洲免费观看高清| 久久免费精品国产久精品久久久久| 91网站黄www| 韩国av一区二区三区| 亚洲激情自拍视频| 久久久久久一级片| 欧美美女黄视频| 成人av中文字幕| 久久精品国产精品亚洲红杏| 樱桃视频在线观看一区| 久久理论电影网| 制服丝袜亚洲播放| 色国产综合视频| 久久成人免费网站| 日韩视频免费直播| 91国偷自产一区二区开放时间| 丝袜诱惑亚洲看片| 精品国产91洋老外米糕| 日本色综合中文字幕| 欧美日韩亚洲综合一区| 久久国产精品99久久人人澡| 69成人精品免费视频| 国产不卡高清在线观看视频| 亚洲成a天堂v人片| 91精品国产综合久久久久久漫画 | 午夜电影网亚洲视频| 亚洲色图欧洲色图| 国产精品美女久久久久久久久久久| 欧美一级二级在线观看| 欧美网站一区二区| 91色在线porny| 成人高清视频免费观看| 国产成人h网站| 国产精品一卡二| 国产一区二区美女| 韩国av一区二区三区四区| 免费观看91视频大全| 丝袜亚洲另类丝袜在线| 亚洲高清免费视频| 亚洲第一精品在线| 午夜精品久久久久久久99樱桃| 亚洲精品高清在线| 亚洲精品视频在线观看免费 | 91精品国产色综合久久久蜜香臀| 91精彩视频在线| 91一区二区在线| 99在线热播精品免费| 粉嫩av一区二区三区| 国产高清在线精品| 国产精品亚洲综合一区在线观看| 国产精品99久久久久久久女警| 免费av成人在线| 日本vs亚洲vs韩国一区三区二区 | 久久av老司机精品网站导航| 日韩精品视频网站| 亚洲综合丝袜美腿| 亚洲午夜成aⅴ人片| 久久久亚洲欧洲日产国码αv| 久久网站热最新地址| 久久夜色精品一区| 欧美精品一区二区久久婷婷| 51久久夜色精品国产麻豆| 欧美一区欧美二区| 欧美三级电影在线观看| 欧美高清视频一二三区| 日韩一区二区高清| 这里是久久伊人| 久久久99免费| 欧美变态口味重另类| 国产精品色哟哟| 亚洲制服欧美中文字幕中文字幕| 国产精品久久午夜夜伦鲁鲁| 亚洲日本一区二区| 亚洲风情在线资源站| 亚洲午夜精品一区二区三区他趣| 日本aⅴ精品一区二区三区| 亚洲一区二区三区视频在线| 美女一区二区久久| 国产美女久久久久| 久久精品国产精品亚洲精品| 成人一区二区三区| 色婷婷亚洲一区二区三区| 国产精品538一区二区在线| 波多野结衣91| 91视频观看视频| 在线不卡欧美精品一区二区三区| 精品国产网站在线观看| 欧美另类一区二区三区| 日本一区二区三区国色天香 | 欧美情侣在线播放| 色吧成人激情小说| 日韩一区二区免费在线电影| 国产欧美一二三区| 亚洲国产日韩a在线播放| 极品瑜伽女神91| 欧美这里有精品| 久久久精品tv| 国产精品久久久久影视| 亚洲欧美色综合| 久久精品72免费观看| 男女激情视频一区| 日本道色综合久久| 日韩欧美国产一区在线观看| 国产午夜亚洲精品不卡| 国产精品一区在线| 96av麻豆蜜桃一区二区| 久久毛片高清国产| 国产性色一区二区| 麻豆国产一区二区| 国模少妇一区二区三区| 日韩一区二区中文字幕| 亚洲精品v日韩精品| 热久久免费视频| 欧美天堂一区二区三区| 日韩欧美高清在线| 香蕉久久夜色精品国产使用方法 | 久久 天天综合| 欧美日韩美女一区二区| 中文字幕亚洲精品在线观看| 国产乱淫av一区二区三区| 在线不卡中文字幕| 一二三区精品福利视频| 亚洲黄色免费网站| 日韩免费一区二区| 亚洲精品日日夜夜| 99re热这里只有精品视频| 26uuu色噜噜精品一区| 国产精品免费免费| 国产精品18久久久久久久久久久久| 91精品国产综合久久精品性色| 欧美v日韩v国产v| 石原莉奈在线亚洲二区| 欧亚洲嫩模精品一区三区| 久久婷婷国产综合精品青草| 看电视剧不卡顿的网站| 欧美精品日日鲁夜夜添| 国产精品久久久久一区二区三区 | 成人禁用看黄a在线| 久久久久亚洲蜜桃| 国产原创一区二区三区| 精品国产乱码久久久久久闺蜜| 一区二区三区欧美| 91丨porny丨国产入口| 国产精品欧美综合在线| 懂色av中文字幕一区二区三区| 26uuu另类欧美亚洲曰本| 国产乱码精品一区二区三区五月婷| 日韩免费观看高清完整版| 另类小说综合欧美亚洲| 日韩免费高清av| 国产精品一线二线三线精华| 国产精品入口麻豆九色| 色婷婷狠狠综合| 日韩中文字幕亚洲一区二区va在线 | 99久久er热在这里只有精品66| 尤物视频一区二区| 国产精品久久久久久久久免费丝袜| 懂色av噜噜一区二区三区av| 一色屋精品亚洲香蕉网站| 91理论电影在线观看| 三级久久三级久久久| 久久影院午夜片一区| 成人sese在线| 亚洲电影第三页| 精品国产一区二区精华| 成人精品国产一区二区4080| 一区二区三区在线免费播放| 日韩限制级电影在线观看| 国产精品一区二区三区99| 久久久久亚洲综合| 欧美亚洲一区二区在线观看|