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

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

?? drvsed1335.c

?? sed1335驅動程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
//
// 輸入:   無
//
// 輸出:   無
//

void
ClearScreen(void)
{
    int i;

    //
    // 光標向右,在圖形顯示區將顯存全部清零
    //

    _LCDCom(CSR_RIGHT);

    _SetCursor(0, 0);

    _LCDCom(MWRITE);

    for (i = 0;
        i < SCREEN_WIDTH * SCREEN_HIGHT / 8;
        i++)
    {
        _LCDData(0x00);
    }
}
 

//
// 設置前景顏色
//
// 輸入:   color       前景區的顏色
//
// 輸出:   設置成功標志
//

int
SetColor(
    IN INT32U color
    )
{
    if (color)
    {
        _Color = 1;
    }
    else
    {
        _Color = 0;
    }

    return 1;
}


//
// 設置X方向刷新坐標最大限制值
//
// 輸入:   limit       X方向屏幕刷新的最大限制值
//
// 輸出:   設置成功標志
//

int
SetXRefreshLimit(
    IN INT32U limit
    )
{
    if (limit > SCREEN_WIDTH
        ||
        limit == 0)
    {
        return -1;
    }

    _XRefreshLimit = limit;

    return 1;
}


//
// 初始化LCD顯示參數以及界面
//
// 輸入:   無
//
// 輸出:   無
//

void
InitLCD(void)
{
    int i;

    _LCDPortInit();

    _LCDCom(SYSTEM_SET);            // System config
    for (i = 0; i < 8; i++)
    {
        _LCDData(SYSTAB[i]);
    }

    _LCDCom(SCROLL);            // Scroll settings
    for (i = 0; i < 10; i++)
    {
        _LCDData(SCRTAB[i]);
    }

    _LCDCom(HDOT_SCR);
    _LCDData(0x00);             // 0000 0000    

    _LCDCom(OVLAY);
    _LCDData(0x01);             // 0000 0110    OV: 0, DM1: 1, DM2: 0 MX1: 1, MX2: 0

    _LCDCom(DISP_OFF);
    _LCDData(0x00);

    _ClearMemory();

    _LCDCom(CSRW);
    _LCDData(0x00);             // 0000 0000    CSRL: 0x00
    _LCDData(0x00);             // 0000 0000    CSRH: 0x00

    _LCDCom(CSRFORM);
    _LCDData(0x00);             // 0000 0001    CRX: 1
    _LCDData(0x8f);             // 1000 1111    CM: 0, CRY: 15

    _LCDCom(DISP_ON);
    _LCDData(0x56);             // 0001 0110

    _LCDCom(CSR_RIGHT);

    _SetCursor(0, 0);

    SetColor(GUI_WHITE);

    SetXRefreshLimit(SCREEN_WIDTH);
}


//
// 畫點函數
//
// 輸入:   x           橫軸坐標
//          y           縱軸坐標
//          color       顏色
//
// 輸出:   畫點成功與否標志
//

int
DrawPoint(
    IN INT32U x,
    IN INT32U y,
    IN INT32U color
    )
{
    BYTE newcolor;
    BYTE offset = 1 << (7 - (x % 8));

    //
    // 畫點原理:
    //     首先將光標移至畫點處,讀出當前該點處的信息,
    // 將該信息和畫點所需要的顏色通過邏輯加工后,重新
    // 寫入目標區域。這種方法效率低,不適合大片繪圖。
    //

    if (x > SCREEN_WIDTH || y > SCREEN_HIGHT)
    {
        return 0;
    }

    _SetCursor(x, y);

    newcolor = _ReadSram();

    if (color)
    {
        newcolor |= offset;
    }
    else
    {
        newcolor &= ~offset;
    }

    _SetCursor(x, y);

    _LCDCom(MWRITE);
    _LCDData(newcolor);

    return 1;
}


//
// 畫位圖函數
//
// 輸入:   xstart      橫軸起始坐標
//          ystart      縱軸起始坐標
//          width       位圖寬度
//          hight       位圖高度
//          pbmp        位圖數據頭指針
//
// 輸出:   畫圖成功與否標志
//

int
DrawBitmap(
    IN INT32U xstart,
    IN INT32U ystart,
    IN INT32U width,
    IN INT32U hight,
    IN const BYTE* pbmp
    )
{
    int side1, side2, x, y;
    BYTE paint, temp;

    if (pbmp == NULL)
    {
        return -1;
    }

    if (ystart + hight > SCREEN_HIGHT
        ||
        xstart + width > SCREEN_WIDTH)
    {
        return -2;
    }

    side1 = 8 - (xstart % 8);
    side2 = (xstart + width) % 8;

    //
    // 光標方向向右
    //

    _LCDCom(CSR_RIGHT);

    for (y = ystart; y < ystart + hight; y++)
    {
        //
        // 左邊界處理
        //

        if (side1 < 8)
        {
            paint = (_Color ? *pbmp : ~(*pbmp));            // Just can't put these two lines
            paint = paint >> (8 - side1);                   // together with '(' and ')', why?
            _SetCursor(xstart, y);
            paint = paint | ((_ReadSram() >> side1) << side1);
        }
        else
        {
            paint = _Color ? *pbmp : ~(*pbmp);
        }

        _SetCursor(xstart, y);
        _LCDCom(MWRITE);
        _LCDData(paint);

        //
        // 主體繪畫
        //

        for (x = (xstart / 8) + 1; x < (xstart + width) / 8; x++)
        {
            if (side1 < 8)
            {
                paint = (*pbmp << side1) | (*(pbmp + 1) >> (8 - side1));
            }
            else
            {
                paint = *(pbmp + 1);
            }
            _LCDData(_Color ? paint : ~paint);
            pbmp++;
        }

        //
        // 右邊界處理
        //

        if (side2)
        {
            if (side1 < 8)
            {
                paint = (*pbmp << side1) | (*(pbmp + 1) >> (8 - side1));
            }
            else
            {
                paint = *(pbmp + 1);
            }

            temp = (_ReadSram() << side2);      // Got to use this tmeporary var here, compiler needs it?
            temp = temp >> side2;
            paint = (((_Color ? paint : ~paint) >> (8 - side2)) << (8 - side2)) | temp;

            _SetCursor(xstart + width, y);
            _LCDCom(MWRITE);
            _LCDData(paint);
        }

        if (side1 + side2 > 8)
        {
            pbmp += 2;
        }
        else
        {
            pbmp++;
        }
    }

    return 1;
}


//
// 填充矩形框
//
// 輸入:   xstart      橫軸起始坐標
//          ystart      縱軸起始坐標
//          width       矩形框寬度
//          hight       矩形框高度
//          color       矩形框內部填充顏色
//
// 輸出:   操作成功與否標志
//

int
FillRect(
    IN INT32U xstart,
    IN INT32U ystart,
    IN INT32U width,
    IN INT32U hight,
    IN INT32U color
    )
{
    int side1, side2, x, y;
    BYTE paint;

    if (ystart + hight > SCREEN_HIGHT
        ||
        xstart + width > SCREEN_WIDTH)
    {
        return -2;
    }

    side1 = 8 - (xstart % 8);
    side2 = (xstart + width) % 8;

    //
    // 光標方向向右
    //

    _LCDCom(CSR_RIGHT);

    for (y = ystart; y < ystart + hight; y++)
    {
        //
        // 左邊界處理
        //

        if (side1 < 8)
        {
            _SetCursor(xstart, y);
            paint = (color ? 0xff : 0x00) >> (8 - side1);
            paint = paint | ((_ReadSram() >> side1) << side1);
        }
        else
        {
            paint = color ? 0xff : 0x00;
        }

        _SetCursor(xstart, y);
        _LCDCom(MWRITE);
        _LCDData(paint);

        //
        // 主體繪畫
        //

        for (x = (xstart / 8) + 1; x < (xstart + width) / 8; x++)
        {
            _LCDData(color ? 0xff : 0x00);
        }

        //
        // 右邊界處理
        //

        if (side2)
        {
            paint = (((_Color ? 0xff : 0x00) >> (8 - side2)) << (8 - side2))
                    | (_ReadSram() >> side2);

            _SetCursor(xstart + width, y);

            _LCDCom(MWRITE);
            _LCDData(paint);
        }
    }

    return 1;
}


//
// 設置屏幕上的光標, x, y值對應光標的行列數,而不是像素坐標
//
// 輸入:   column      橫軸坐標,單位為字符列數
//          row         縱軸坐標
//
// 輸出:   操作成功與否標志
//
// 注意:該函數設置的坐標是在屏幕第一層上的閃動光標
//

int
SetCursor(
    IN INT32U column,
    IN INT32U row
    )
{
    INT16U addr;

    //
    // 看看行列數輸入是否正確
    //

    if (column > CHAR_PER_LINE - 1
        ||
        row > SCREEN_HIGHT / CURSOR_HIGHT)
    {
        return -1;
    }

    addr = row * AP + column;

    _LCDCom(CSRW);

    _LCDData((BYTE)LOBYTE(addr));

    _LCDData((BYTE)HIBYTE(addr));

    return 1;
}


//
// 設置光標形狀,塊狀或者是豎條
//
// 輸入:   shape       光標的形狀
//
// 輸出:   操作成功
//

int
SetCursorShape(
    IN INT32U shape
    )
{
    BYTE cursorWidth;

    if (shape)
    {
        cursorWidth = 7;
    }
    else
    {
        cursorWidth = 0;
    }

    _LCDCom(CSRFORM);
    _LCDData(cursorWidth);
    _LCDData(0x8f);                     // 0x8f 中,隱含光標高度為16

    return 1;
}

#endif // LCD_CONTROLLER

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲女人的天堂| 成人av第一页| 成人高清在线视频| 欧美日韩精品一区视频| 国产精品午夜春色av| 免费精品视频最新在线| 91麻豆文化传媒在线观看| 精品久久人人做人人爰| 日日夜夜精品免费视频| av在线不卡电影| 久久日一线二线三线suv| 亚洲成人三级小说| 色综合天天天天做夜夜夜夜做| 精品日韩99亚洲| 丝袜美腿亚洲色图| 91国偷自产一区二区开放时间 | 欧美国产一区在线| 看片网站欧美日韩| 欧美日韩日本视频| 亚洲美女视频在线| 成人黄色片在线观看| 久久久久久99久久久精品网站| 蜜臀av性久久久久av蜜臀妖精| 欧美日韩国产在线观看| 亚洲综合免费观看高清完整版| 风间由美性色一区二区三区| 久久久久久99精品| 国产在线精品免费| 久久综合久久鬼色| 国产久卡久卡久卡久卡视频精品| 欧美区视频在线观看| 亚洲成人激情av| 欧美精品久久天天躁| 亚洲h在线观看| 欧美日韩大陆在线| 蜜臀av在线播放一区二区三区 | 亚洲制服丝袜在线| 欧美在线制服丝袜| 五月天婷婷综合| 5月丁香婷婷综合| 免费精品视频最新在线| 久久欧美一区二区| eeuss影院一区二区三区| 综合欧美亚洲日本| 欧美日韩一区二区在线观看 | 国产精品传媒视频| 国产精品一区二区久久不卡 | www.亚洲精品| 亚洲视频一二三区| 欧美日韩aaaaa| 久久精品99国产精品| 久久综合狠狠综合久久激情| 国产在线乱码一区二区三区| 国产精品午夜电影| 欧美综合视频在线观看| 日韩精品五月天| 国产日产欧美一区| 成人久久视频在线观看| 亚洲综合久久av| 欧美成人r级一区二区三区| 福利一区在线观看| 亚洲一区欧美一区| 欧美电视剧免费观看| av不卡在线播放| 日韩av不卡一区二区| 久久久久9999亚洲精品| 91国产成人在线| 久久成人av少妇免费| 国产精品成人免费在线| 正在播放一区二区| 91视频在线观看| 另类小说一区二区三区| 亚洲三级免费观看| 久久影院电视剧免费观看| 91一区一区三区| 国产制服丝袜一区| 五月激情六月综合| 一区二区中文视频| 26uuu久久天堂性欧美| 欧美午夜视频网站| 丰满少妇在线播放bd日韩电影| 五月婷婷综合在线| 一区二区三区高清不卡| 欧美mv日韩mv国产网站| 欧美丝袜丝nylons| 99久久婷婷国产| 激情综合色综合久久| 亚洲va欧美va国产va天堂影院| 欧美r级电影在线观看| 欧美日韩精品综合在线| 99久久精品国产毛片| 国产剧情在线观看一区二区| 日韩综合在线视频| 亚洲一区二区三区影院| 国产精品久久久久久一区二区三区 | 丝袜亚洲另类丝袜在线| 亚洲日本欧美天堂| 国产精品毛片高清在线完整版| 日韩一区二区免费电影| 欧美日韩一区 二区 三区 久久精品| 不卡大黄网站免费看| 国产盗摄一区二区| 国产一区亚洲一区| 精品一二三四在线| 久久av中文字幕片| 日韩精品一二区| 日产国产欧美视频一区精品 | 国产日韩精品一区二区三区 | 欧美主播一区二区三区| av在线一区二区| 91天堂素人约啪| 99久久99久久久精品齐齐| 成人综合激情网| 丁香一区二区三区| 成人小视频在线观看| 高清在线成人网| 99精品欧美一区二区三区小说| 不卡的av在线播放| 91免费版pro下载短视频| 国产精品一区二区免费不卡| 久久成人精品无人区| 亚洲欧洲韩国日本视频| 51精品视频一区二区三区| 91麻豆免费观看| 成人免费视频视频在线观看免费| 中文在线一区二区 | 国产亚洲欧洲一区高清在线观看| 久久久久久久久久久黄色| 日韩欧美在线网站| 亚洲欧洲无码一区二区三区| 一区二区三区在线看| 一区二区三区在线看| 麻豆91在线观看| 国产精品亚洲午夜一区二区三区| 99精品欧美一区二区蜜桃免费 | 91麻豆国产精品久久| 欧美日韩精品欧美日韩精品一| 欧美xxxxx裸体时装秀| 亚洲精品免费在线| 亚洲特级片在线| 国产精品人妖ts系列视频| 国产喂奶挤奶一区二区三区 | 亚洲女人小视频在线观看| 亚洲一区在线观看网站| 人人超碰91尤物精品国产| 免费看欧美女人艹b| 国产精品77777| 色吧成人激情小说| 日韩亚洲欧美中文三级| 中文成人av在线| 首页国产欧美久久| 成人综合在线观看| 欧美自拍偷拍一区| 久久精品人人爽人人爽| 亚洲靠逼com| 国产一区二区电影| 欧美日韩免费观看一区二区三区| 日韩欧美一区二区免费| 国产精品成人在线观看 | 亚洲欧美日韩人成在线播放| 亚洲妇女屁股眼交7| 国产尤物一区二区在线| 欧美三级资源在线| 久久先锋影音av| 亚洲线精品一区二区三区八戒| 黄色资源网久久资源365| 在线一区二区视频| 国产欧美久久久精品影院| 五月婷婷久久综合| 91在线视频网址| 久久久久国色av免费看影院| 日韩激情一区二区| 99久久久国产精品| 久久精品一区八戒影视| 免费亚洲电影在线| 欧美色男人天堂| 亚洲日本免费电影| 成人性生交大片免费看在线播放 | 欧美综合欧美视频| 中文成人综合网| 国产精品综合一区二区三区| 欧美裸体bbwbbwbbw| 亚洲乱码国产乱码精品精98午夜| 国产精品系列在线播放| 欧美α欧美αv大片| 亚洲bt欧美bt精品777| 欧美综合色免费| 一区二区三区不卡视频| 99久久亚洲一区二区三区青草| 国产亚洲精品7777| 国产福利一区二区三区| 精品国产乱码久久久久久夜甘婷婷| 五月综合激情婷婷六月色窝| 欧美婷婷六月丁香综合色| 亚洲乱码日产精品bd| 91视视频在线直接观看在线看网页在线看| 久久精品视频免费| 国产露脸91国语对白| 国产精品素人视频| av不卡一区二区三区|