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

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

?? drvsed1335.c

?? sed1335驅(qū)動程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
//  編譯版本:0002  如果對本文件的更改會影響全局,請將編譯版本號增加,謝謝
//
//  版權所有(C)2005       www.yangchu.com
//
//  文件名稱: DrvSED1335.c
//
//  簡    介: SED1335驅(qū)動程序,僅為黑白顯示
//
//  作    者: yangchu      14-September-2005
//             yangchu@yangchu.com
//
//  ~~~~~~~~~~~~~~~~~~~~~~~ Never try, never know ~~~~~~~~~~~~~~~~~~~~~~~
//
//  狀    態(tài): 測試中
//
//  改進紀錄:
//      3-November-2005     yangchu
//              1)改寫字符顯示函數(shù)為通用函數(shù)
//              2)刪除原來的字符顯示函數(shù)
//              3)修改了注釋風格
//
//      12-November-2005    yangchu
//              1)增加2148模式函數(shù)接口
//

#include "typedef.h"
#include "lcd.h"


#if (CONTROLLER_TYPE == SED1335)

#include "SED1335Cfg.h"

//
// 數(shù)據(jù)轉(zhuǎn)換宏定義
//

#define HIBYTE(V1)          ((BYTE)((V1) >> 8))
#define LOBYTE(V1)          ((BYTE)((V1) & 0xff))
#define MAKEWORD(V1, V2)    ((((WORD)(V1)) << 8) + (WORD)(V2))

//
// CPU延時宏定義
//

#define DLY_CPU_CYCLE(x)        \
{                               \
    int i;                      \
    for (i = 0; i < x; i++);    \
}

//
// SED1335的命令集
//

#define SYSTEM_SET  (0x40)
#define SCROLL      (0x44)
#define SLEEP_IN    (0x53)
#define DISP_ON     (0x59)
#define DISP_OFF    (0x58)
#define OVLAY       (0x5b)
#define HDOT_SCR    (0x5a)
#define CSRFORM     (0x5d)
#define CGRAM_ADR   (0x5c)
#define CSR_RIGHT   (0x4c)
#define CSR_LEFT    (0x4d)
#define CSR_UP      (0x4e)
#define CSR_DOWN    (0x4f)
#define CSRW        (0x46)
#define CSRR        (0x47)
#define MWRITE      (0x42)
#define MREAD       (0x43)

//
// 屏幕中,每行可顯示的ASC字符數(shù)
//

#define AP          (40)


//
// LCD初始化所用到的參數(shù)
//

#define GRAPHICS_BASE_ADDR  0x1000  // 該地址位于SED1335所使用的32kB SRAM中

static const BYTE SYSTAB[8] = {
    0x30,       // 0011 0000    B: 1, W/S: 0, M2: 0, M1: 0, M0: 0
    0x87,       // 1000 0111    WF: 1, FX: 7
    0x0f,       // 0000 1111    FY: 15
    0x27,       // 0010 0111    C/R: 39
    0x42,       // 0100 0010    TC/R: 66
    0xf0,       // 1111 0000    L/F: 240
    0x28,       // 0010 1000    APL: 40
    0x00        // 0000 0000    APH: 0
};

static const BYTE SCRTAB[10] = {
    0x00,       // 0000 0000    SAD1L:  0x00
    0x00,       // 0000 0000    SAD1H:  0x00
    0xf0,       // 1111 0000    SL1:    240
    (BYTE)(GRAPHICS_BASE_ADDR & 0xff),  // 0000 0000    SAD2L:  0x00
    (BYTE)(GRAPHICS_BASE_ADDR >> 8),    // 0001 0000    SAD2H:  0x10
    0xf0,       // 1111 0000    SL2:    240
    0x00,       // 0000 0000    SAD3L:  0x00
    0x04,       // 1000 0000    SAD3H:  0x40
    0x00,       // 0000 0000    SAD4L:  0x00
    0x50        // 0101 0000    SAD4H:  0x50
};

static int _Color;                  // 前景色
static int _XRefreshLimit;          // X方向刷新屏幕最大坐標限制值


//
// Philips LPC2114接口方式(試驗用)
//

#if (CPU_TYPE == LPC2114)
#include "LPC2294.h"
/*
    Signal cofiguration of LPC2114:
        A0      : P0.9
        nWR     : P0.8
        nRD     : P0.11
        DB0~DB7 : P0.0~P0.7
        nCS     : P0.10
        nRST    : nRST from mainboard
        SEL1    : Always low (always 8080 mode)
*/
#define BIT_A0  (1 << 9)
#define BIT_nWR (1 << 8)
#define BIT_nRD (1 << 11)
#define BIT_nCS (1 << 10)

//
// 寫LCD控制命令
//

static void
_LCDCom(
    BYTE com
    )
{
    IO0CLR = 0xff | BIT_nCS;                // Clear DB0~DB7, chip select enable
    IO0PIN |= (BIT_A0 | com);               // Set A0 and put Data on bus
    IO0CLR = BIT_nWR;                       // Clear nWR

#if DELAY_TIME > 0
    DLY_CPU_CYCLE(DELAY_TIME);              // Delay for SED1335
#endif

    IO0SET = BIT_nWR;                       // Set nWR
    IO0SET = BIT_nCS;                       // Chip select disable
}

//
// 寫LCD控制參數(shù)和顯示字符數(shù)據(jù)
//

static void
_LCDData(
    BYTE dat
    )
{
    IO0CLR = 0xff | BIT_A0 | BIT_nCS;       // Clear DB0~DB7 and A0, chip select enable
    IO0PIN |= dat;                          // Put Data on bus
    IO0CLR = BIT_nWR;                       // Clear nWR

#if DELAY_TIME > 0
    DLY_CPU_CYCLE(DELAY_TIME);              // Delay for SED1335
#endif

    IO0SET = BIT_nWR;                       // Set nWR
    IO0SET = BIT_nCS;                       // Chip select disable
}


#if LCD_READ_BACK_ENABLE == TRUE

//
// 讀數(shù)據(jù)
//

static BYTE
_ReadData(void)
{
    BYTE dat;

    IO0CLR = BIT_nCS;                       // Clear DB0~DB7, chip select enable
    IO0CLR = BIT_nRD;                       // Clear nRD

#if DELAY_TIME > 0
    DLY_CPU_CYCLE(DELAY_TIME);              // Delay for SED1335
#endif

    dat = (BYTE)(IO0PIN & 0xff);            // Get memory data
    IO0SET = BIT_nRD;                       // Set nRD
    IO0SET = BIT_nCS;                       // Chip select disable

    return dat;
}

//
// 讀顯示內(nèi)存
//

static BYTE
_ReadSram(void)
{
    BYTE dat;

    _LCDCom(MREAD);                         // Send command of reading memory

    IO0DIR &= ~0xff;                        // Bit P0.0~P0.7 IO direction: input
    IO0SET = BIT_A0;                        // Set A0

    dat = _ReadData();

    IO0DIR |= 0xff;                         // Bit P0.0~P0.7 IO direction: output

    return dat;
}


//
// 讀狀態(tài)
//

static BYTE
_ReadState(void)
{
    BYTE state;

    IO0DIR &= ~0xff;                        // Bit P0.0~P0.7 IO direction: input
    IO0CLR = BIT_A0;                        // Clear DB0~DB7 and A0, chip select enable

    state = _ReadData();                    // Get state

    IO0DIR |= 0xff;                         // Bit P0.0~P0.7 IO direction: output

    return state;
}


//
// 讀光標地址
//

static WORD
_ReadCursorPos(void) 
{
    WORD state = 0;

    _LCDCom(CSRR);

    IO0DIR &= ~0xff;                        // Bit P0.0~P0.7 IO direction: input
    IO0SET = BIT_A0;                        // Set A0

    state = _ReadData();                    // X position
    state |= (_ReadData() << 8);            // Y position

    IO0DIR |= 0xff;                         // Bit P0.0~P0.7 IO direction: output

    return state;
}
#endif


static void
_LCDPortInit(void)
{
    IO0DIR |= (0xff | BIT_A0 | BIT_nWR | BIT_nRD | BIT_nCS);
    IO0SET = (BIT_nWR | BIT_nRD | BIT_nCS);
}


#else                                       // If we are not using above CPUs
    #error "CPU type not specified or not supported"
#endif


//
// 顯示存儲器清零
//
// 輸入:無
//
// 輸出:無
//

static void
_ClearMemory(void)
{
    INT32U i;

    //
    // 光標方向向右,指針指向零地址
    //

    _LCDCom(CSR_RIGHT);
    _LCDCom(CSRW);
    _LCDData(0);
    _LCDData(0);

    //
    // 顯存中數(shù)據(jù)全部清零
    //

    _LCDCom(MWRITE);

    for (i = 0; i < 32 * 1024; i++)
    {
        _LCDData(0x00);
    }
}


//
// 設置光標
//
// 輸入:   x       橫坐標
//          y       縱坐標
//
// 輸出:   無
//
// 注意:   由于只能字節(jié)尋址,橫坐標必須被8相除
//

void
_SetCursor(
    IN INT32U x,
    IN INT32U y
    )
{
    BYTE low, high;
    INT32U actualAddr;

    x = x / 8;

    actualAddr = y * AP + x + GRAPHICS_BASE_ADDR;

    low = LOBYTE(actualAddr);
    high = HIBYTE(actualAddr);

    _LCDCom(CSRW);

    _LCDData(low);

    _LCDData(high);

}


//
// 固定位置顯示字模
//
// 輸入:   x           橫軸坐標
//          y           縱軸坐標
//          width       字模寬度(單位:8像素)
//          hight       字模高度
//          p           字模頭指針
//
// 輸出:   1
//

static int
_FixedDispCode(
    IN INT32U       x,
    IN INT32U       y,
    IN INT32U       width,
    IN INT32U       hight,
    IN const BYTE*  p
    )
{
    int i, j;
    const BYTE* pWork;

    _LCDCom(CSR_DOWN);

    //
    // 橫軸方向循環(huán)
    //

    for (i = 0; i < width; i++)
    {
        pWork = p + i;

        if (x + i * 8 < _XRefreshLimit)
        {
            //
            // 縱軸方向循環(huán)
            //

            _SetCursor(x + i * 8, y);

            _LCDCom(MWRITE);

            for (j = 0; j < hight; j++)
            {
                _LCDData(
                    _Color ? *pWork : ~(*pWork)
                    );

                pWork += width;
            }
        }
    }

    return 1;
}


//
// 通用字模顯示函數(shù)(字符寬度只能為8的倍數(shù))
//
// 輸入:   x           橫軸方向坐標
//          y           縱軸方向坐標
//          width       字模寬度(單位:字節(jié))
//          hight       字模高度
//          p           字模頭指針
//          fixPlace    是否固定位置顯示(如果采用固定位置顯示
//                      方式,會有比較快的顯示速度)
//
// 輸出:   顯示成功與否標志
//

int
DispCode(
    IN INT32U       x,
    IN INT32U       y,
    IN INT32U       width,
    IN INT32U       hight,
    IN const BYTE*  p,
    IN INT32U       fixPlace
    )
{
    //
    // 因為只顯示單個字符的一部分沒有多大意義,所以當字符
    // 不能完全顯示時,干脆不顯示。
    //

    if (x + width * 8 > SCREEN_WIDTH
        ||
        y + hight > SCREEN_HIGHT
        ||
        p == NULL)
    {
        return -1;
    }

    //
    // 判斷是采用固定顯示方式還是采用靈活顯示方式
    // 如果采用靈活顯示方式,調(diào)用畫位圖函數(shù)畫出
    //

    if (fixPlace)
    {
        _FixedDispCode(
            x,
            y,
            width,
            hight,
            p
            );
    }
    else
    {
        DrawBitmap(
            x,
            y,
            width * 8,
            hight,
            p
            );
    }

    return 1;
}


//
// 清除顯示屏幕

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久久裸模| 夜夜爽夜夜爽精品视频| 不卡av免费在线观看| 久久91精品久久久久久秒播| 亚洲成av人片在线观看无码| 亚洲一区二区欧美日韩| 午夜欧美2019年伦理| 亚洲第四色夜色| 免费成人在线影院| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美在线色视频| 欧美日韩国产高清一区二区三区| 亚洲人成小说网站色在线 | 成人福利视频在线| 成人av手机在线观看| 在线亚洲一区二区| 日韩亚洲欧美中文三级| 国产日产欧美一区| 精品久久一区二区| 国产精品久久久久久久久免费丝袜| 亚洲欧美一区二区在线观看| 午夜精品久久久久久久99水蜜桃| 久久精品72免费观看| 粉嫩绯色av一区二区在线观看 | 91精品婷婷国产综合久久竹菊| 日本高清不卡一区| 欧美不卡在线视频| 亚洲综合在线视频| 成人的网站免费观看| 精品国产精品网麻豆系列 | 国产91清纯白嫩初高中在线观看 | 亚洲黄色录像片| 美女视频黄频大全不卡视频在线播放 | 国产99精品视频| 极品少妇一区二区三区精品视频| 精品一二线国产| 7777女厕盗摄久久久| 亚洲国产日韩a在线播放性色| 懂色av一区二区三区蜜臀| 日韩欧美成人一区| 免费黄网站欧美| 色综合久久中文字幕综合网| 欧美电影免费提供在线观看| 偷偷要91色婷婷| 欧美日韩国产另类一区| 日韩国产欧美在线视频| 884aa四虎影成人精品一区| 日韩黄色小视频| 中文字幕亚洲区| 亚洲大尺度视频在线观看| 色婷婷综合久久久| 亚洲bdsm女犯bdsm网站| 在线成人小视频| 国产精品影视网| 中文字幕一区二区三区av| 99国产精品一区| 一区二区久久久久| 日韩欧美国产午夜精品| 国产一区在线观看视频| 国产精品欧美久久久久无广告| 成人免费毛片嘿嘿连载视频| 亚洲午夜久久久久久久久电影网 | 久久精品国产99| 自拍av一区二区三区| 欧美一区二区精品在线| 美国一区二区三区在线播放| 欧美日韩精品系列| 成人av资源网站| 91麻豆免费视频| 国产成人精品亚洲777人妖| 国产经典欧美精品| jlzzjlzz国产精品久久| 91免费看`日韩一区二区| 91美女视频网站| 欧美日本一道本在线视频| 日韩欧美在线影院| 国产偷国产偷亚洲高清人白洁 | 日韩国产一二三区| 亚洲国产综合91精品麻豆| 亚洲国产一区二区三区青草影视| 亚洲女爱视频在线| 亚洲嫩草精品久久| 亚洲高清免费视频| 亚洲精品免费在线| 日日摸夜夜添夜夜添亚洲女人| 一区二区三区四区乱视频| 亚洲你懂的在线视频| 亚洲综合免费观看高清完整版在线| 国产精品―色哟哟| 亚洲美女在线一区| 日韩国产在线一| 国产在线视频不卡二| 从欧美一区二区三区| 欧美人与z0zoxxxx视频| 久久亚洲综合色一区二区三区| 久久精品视频一区| 亚洲图片欧美色图| 91天堂素人约啪| 久久久久久久久一| 亚洲精品免费看| 日韩电影在线免费观看| 国产精品一区三区| 在线观看国产精品网站| 亚洲不卡av一区二区三区| 久久99精品久久久久婷婷| 成人激情免费网站| 欧美丰满少妇xxxxx高潮对白| 国产日韩一级二级三级| 无码av中文一区二区三区桃花岛| 国内精品写真在线观看| 欧美亚洲免费在线一区| 久久精品免费在线观看| 视频一区视频二区中文| 成人激情小说网站| 久久精品视频一区二区三区| 日本欧美一区二区| 欧美高清精品3d| 亚洲午夜激情网页| 91福利精品视频| 一区二区三区精品在线| 在线一区二区三区四区| 亚洲免费观看在线视频| 91女厕偷拍女厕偷拍高清| 丝袜亚洲另类欧美| 国产精品少妇自拍| 精品欧美久久久| 欧洲精品视频在线观看| 国产成人免费视频网站高清观看视频| 亚洲欧洲日韩av| 色综合久久综合| 麻豆91精品视频| 中文一区二区在线观看| 91浏览器在线视频| 美日韩黄色大片| 国产视频一区在线观看| 成人永久aaa| 久久久久久久久久久久久久久99| 粉嫩一区二区三区在线看| 国产精品国产精品国产专区不蜜| 色激情天天射综合网| 久久精工是国产品牌吗| 国产精品乱码妇女bbbb| 欧美吻胸吃奶大尺度电影| 国产一区二区三区在线观看免费| 久久嫩草精品久久久久| www.欧美亚洲| 国产在线麻豆精品观看| 午夜欧美大尺度福利影院在线看| 国产宾馆实践打屁股91| 精品一区二区在线观看| 一区二区三区欧美日| 综合分类小说区另类春色亚洲小说欧美| 欧美成人a视频| 亚洲黄一区二区三区| 久久久久久久电影| 日韩欧美成人一区二区| 欧美一区二区三区四区在线观看| 在线中文字幕一区| 欧美综合一区二区| 91久久精品日日躁夜夜躁欧美| 国产不卡在线视频| 菠萝蜜视频在线观看一区| www.色精品| 91成人免费在线| 4438x亚洲最大成人网| 色琪琪一区二区三区亚洲区| 国产成人精品在线看| 精品国产乱码久久久久久1区2区| 日本中文字幕一区二区有限公司| 色婷婷久久综合| 天堂久久久久va久久久久| 久久人人超碰精品| 一本久道中文字幕精品亚洲嫩| 一区二区三区在线观看欧美| 欧美老女人在线| 日韩一区二区三免费高清| 国产精品成人一区二区艾草| 日本不卡高清视频| 欧美视频你懂的| 亚洲午夜久久久久中文字幕久| 在线亚洲人成电影网站色www| 亚洲精品中文字幕乱码三区| 色婷婷激情久久| 亚洲午夜日本在线观看| 91精品国产全国免费观看| 经典三级在线一区| 国产清纯在线一区二区www| 成人av中文字幕| 一区二区三区欧美在线观看| 91精品国产美女浴室洗澡无遮挡| 久久99久久久久| 国产亚洲精品中文字幕| 91色综合久久久久婷婷| 一区2区3区在线看| 欧美人妇做爰xxxⅹ性高电影| 日韩成人午夜精品| 国产日产亚洲精品系列| 在线看不卡av| 国内精品伊人久久久久av一坑| 国产精品国产三级国产|