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

📄 lcd.c

📁 ucosii的源代码希望能给予学习嵌入式系统的朋友一定的帮助
💻 C
📖 第 1 页 / 共 2 页
字号:
* 傈崔牢磊 : 绝澜
* 府畔蔼   : 绝澜
*********************************************************************************************************
*/

void  DispDummy (void)
{
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                             荐乞 BAR甫 钎矫
*
* 汲疙     : LCD葛碘俊 荐乞 BAR(bar 弊贰橇)甫 弊妨霖促
* 傈崔牢磊 : 'row' 绰 LCD俊辑 目辑狼 青 困摹
*                  'row'绰 0俊辑 'DispMaxRows - 1'鳖瘤狼 蔼阑 爱绰促
*            'val' 绰 荐乞 BAR狼 蔼 
*                  捞 蔼篮 DispMaxCols * 5 捞惑 逞阑 荐 绝促
* 府畔蔼   : 绝澜
* 畴飘     : 捞 窃荐甫 荤侩窍妨搁, DispHorBarInit()甫 刚历 龋免秦具 茄促
*********************************************************************************************************
*/

void  DispHorBar (INT8U row, INT8U col, INT8U val)
{
    INT8U i;
    INT8U full;
    INT8U fract;
    INT8U err;


    full  = val / 5;                        /* 菜 蛮 喉钒捞 割 俺 ON 灯绰瘤 犬牢茄促                   */
    fract = val % 5;                        /* 喉钒狼 困摹甫 拌魂                                      */
    if (row < DispMaxRows && (col + full - 1) < DispMaxCols) {
        OSSemPend(DispSem, 0, &err);        /* 钎矫厘摹狼 硅鸥利 咀技胶甫 掘绰促                       */
        i = 0;                              /* Set counter to limit column to maximum allowable column */
        DispCursorSet(row, col);            /* 官弊贰橇狼 矫累 困摹肺 目辑甫 困摹矫挪促                */
        DispSel(DISP_SEL_DATA_REG);
        while (full > 0) {                  /* 菜 蛮 喉钒阑 葛滴 敬促                                  */
            DispDataWr(5);                  /* 荤侩磊 巩磊 #5(菜 蛮 喉钒)甫 敬促                       */
            i++;                            /* 府固飘 墨款磐 刘啊                                      */
            full--;
        }
        if (fract > 0) {
            DispDataWr(fract);              /* 荤侩磊 巩磊 #'fract'(老何父 盲款喉钒)阑 敬促            */
        }
        OSSemPost(DispSem);                 /* 咀技胶甫 副府令茄促                                     */
    }
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                            荐乞 BAR 檬扁拳
*
* 汲疙     : 官弊贰橇 扁瓷阑 檬扁拳茄促  You must
*            DispHorBar()甫 龋免窍扁 傈俊 馆靛矫 捞 窃荐甫 龋免秦具 茄促
* 傈崔牢磊 : 绝澜
* 府畔蔼   : 绝澜
*********************************************************************************************************
*/

void  DispHorBarInit (void)
{
    DispDefChar(1, (INT8U *)DispBar1);
    DispDefChar(2, (INT8U *)DispBar2);
    DispDefChar(3, (INT8U *)DispBar3);
    DispDefChar(4, (INT8U *)DispBar4);
    DispDefChar(5, (INT8U *)DispBar5);
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                       叼胶敲饭捞 靛扼捞滚 檬扁拳
*
* 汲疙     : 叼胶敲饭捞 靛扼捞滚甫 檬扁拳茄促
* 傈崔牢磊 : maxrows      LCD 叼胶敲饭捞狼 扼牢逞滚 (1 to 4)
*            maxcols      扼牢寸 凯(column)狼 箭磊
* 府畔蔼   : 绝澜
* 畴飘     : - DispInit() 绰 目澄 辑厚胶(矫埃瘤楷)甫 鞘夸肺 窍骨肺 钢萍怕胶欧 目澄捞 矫累等 饶俊
*              龋免蹬具 茄促
*            - DispInit() 矫胶袍 檬扁拳 矫 茄锅父 龋免蹬具 茄促
*********************************************************************************************************
*/

void  DispInit (INT8U maxrows, INT8U maxcols)
{
    DispInitPort();                    /* 叼胶敲饭捞 靛扼捞滚俊辑 荤侩窍绰 I/O器飘甫 檬扁拳 茄促       */
    DispMaxRows = maxrows;
    DispMaxCols = maxcols;
    DispSem     = OSSemCreate(1);      /* 叼胶敲饭捞侩 技付器绢 积己                                   */

                                       /* 叼胶敲饭捞 葛碘 檬扁拳                                       */
    DispSel(DISP_SEL_CMD_REG);         /* 疙飞绢 饭瘤胶磐甫 急琶茄促                                   */
    OSTimeDlyHMSM(0, 0, 0, 50);        /* 颇况-柯 饶  15msec捞惑 掉饭捞甫 霖促(50msec搁 面盒窃)        */
    DispDataWr(DISP_CMD_FNCT);         /* Function Set: 单捞磐 辨捞 8厚飘, 1/16 掂萍, 5x8 档飘         */
    OSTimeDly(2);                      /* 厚瘤 橇贰弊绰 酒流 犬牢 窍搁 救凳!                           */
    DispDataWr(DISP_CMD_FNCT);         /* 困狼 疙飞阑 4锅 敬促!                                        */
    OSTimeDly(2);                      /*     洒促骂 HD44780 单捞磐 浆飘狼 鼻厘 荤亲烙                 */
    DispDataWr(DISP_CMD_FNCT);
    OSTimeDly(2);
    DispDataWr(DISP_CMD_FNCT);
    OSTimeDly(2);

    DispDataWr(DISP_CMD_ON_OFF);       /* Disp ON/OFF : 叼胶敲饭捞 柯, 目辑 坷橇, 巩磊痢戈 坷橇        */
    DispDataWr(DISP_CMD_MODE);         /* Entry mode  : 单捞磐 扁废 矫 磊悼栏肺 绢靛饭胶 刘啊          */
    DispDataWr(DISP_CMD_CLS);          /* 叼胶敲饭捞 努府绢 疙飞阑 敬促                                */
    OSTimeDly(2);                      /* 弥家茄 2msec捞惑 掉饭捞 (2俺狼 平捞搁 面盒)                  */
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                         ASCII巩磊凯 叼胶敲饭捞
*
* 汲疙     : 钎矫厘摹俊 ASCII 巩磊凯阑 叼胶敲饭捞 茄促
* 傈崔牢磊 : 'row' 绰 LCD俊辑 目辑狼 青 困摹
*                  'row'绰 0俊辑 'DispMaxRows - 1'鳖瘤狼 蔼阑 爱绰促
*            'col' 绰 LCD俊辑 目辑狼 凯 困摹
*                  'col'篮 0俊辑 'DispMaxCols - 1'鳖瘤狼 蔼阑 爱绰促
*            's'   row/col俊 叼胶敲饭捞 窍绊磊 窍绰 ASCII巩磊凯
*
* 府畔蔼   : 绝澜
*********************************************************************************************************
*/

void  DispStr (INT8U row, INT8U col, char *s)
{
    INT8U i;
    INT8U err;


    if (row < DispMaxRows && col < DispMaxCols) {
        OSSemPend(DispSem, 0, &err);        /* 钎矫厘摹狼 硅鸥利 咀技胶甫 掘绰促                       */
        DispCursorSet(row, col);            /* 目辑甫 ROW/COL俊 困摹矫挪促                             */
        DispSel(DISP_SEL_DATA_REG);
        i = col;                            /* 弥措 倾侩啊瓷茄 蔼栏肺 府固飘 墨款磐甫 技飘茄促         */
        while (i < DispMaxCols && *s) {     /* (str+limit)客 DispMaxCols 荤捞俊 巩磊甫 敬促            */
            DispDataWr(*s++);               /* 钎矫厘摹俊 巩磊甫 敬促                                  */
            i++;                            /* 府固飘 墨款磐 刘啊                                      */
        }
        OSSemPost(DispSem);                 /* 咀技胶甫 副府令茄促                                     */
    }
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                     叼胶敲饭捞 厘摹俊 单捞磐 静扁
*
* 汲疙     : 叼胶敲饭捞 厘摹俊 茄官捞飘 单捞磐甫 敬促
* 傈崔牢磊 : 'data'  结持阑 单捞磐
* 府畔蔼   : 绝澜
* 畴飘     : 单捞磐 静扁 荤捞俊 弥家茄 40usec狼 掉饭捞甫 林扁 困秦辑绰 DISP_DLY_CNTS(LCD.H) 蔼阑 函版且
*            鞘夸啊 乐阑 巴捞促. 鞘磊啊 矫氰俊 荤侩茄 葛碘篮 角力肺 80usec狼 掉饭捞啊 鞘夸沁促!
*            LCD葛碘狼 臂揪啊 濒冠芭府芭唱 巩磊啊 烙狼狼 困摹俊 焊捞搁 DISP_DLY_CNTS 蔼阑 刘啊矫难 焊扼
*
*********************************************************************************************************
*/

#ifdef ORIGINAL_DRIVER
void  DispDataWr (INT8U data)
{
    INT8U  dly;


    outp(DISP_PORT_DATA, data);                  /* 叼胶敲饭捞 葛碘俊 单捞磐甫 敬促                    */
    outp(DISP_PORT_CMD,  0x01);                  /* E扼牢阑 High肺 技飘茄促                            */
    DispDummy();                                 /* 距 1usec 掉饭捞                                    */
    outp(DISP_PORT_CMD,  0x00);                  /* E扼牢阑 Low肺 技飘茄促                             */
    for (dly = DISP_DLY_CNTS; dly > 0; dly--) {  /* 弥家茄 40 usec掉饭捞                               */
        DispDummy();
    }
}
#else
void  DispDataWr (INT8U data)
{
    INT8U  dly;


    *dataPtr = data;
    for (dly = DISP_DLY_CNTS; dly > 0; dly--) {  /* 弥家茄 40 usec掉饭捞                               */
        DispDummy();
    }
}
#endif

/*
*********************************************************************************************************
*                                   叼胶敲饭捞 靛扼捞滚 I/O器飘 檬扁拳
*
* 汲疙     : 叼胶敲饭捞 靛扼捞滚俊辑 荤侩窍绰 I/O器飘甫 檬扁拳 茄促
* 傈崔牢磊 : 绝澜
* 府畔蔼   : 绝澜
*********************************************************************************************************
*/

#ifdef ORIGINAL_DRIVER
void  DispInitPort (void)
{
    outp(DISP_PORT_CMD, 0x82);         /* 葛靛0 : A 免仿, B 涝仿, C 免仿                               */
}
#else
void  DispInitPort (void)
{
    /* DTB-196篮 8255 器飘甫 檬扁拳且 鞘夸啊 绝栏骨肺 捞 何盒篮 酒公 内靛档 火涝窍瘤 臼绰促            */
}

#endif

/*
*********************************************************************************************************
*                                      疙飞绢/单捞磐 饭瘤胶磐 急琶
*
* 汲疙     : 饭瘤胶磐甫 急琶茄促
* 傈崔牢磊 : 绝澜
*********************************************************************************************************
*/

#ifdef ORIGINAL_DRIVER
void  DispSel (INT8U sel)
{
    if (sel == DISP_SEL_CMD_REG) {
        outp(DISP_PORT_CMD, 0x02);     /* 疙飞绢 饭瘤胶磐 急琶 (RS low)                                */
    } else {
        outp(DISP_PORT_CMD, 0x03);     /* 单捞磐 饭瘤胶磐 急琶 (RS high)                               */
    }
}
#else
void  DispSel (INT8U sel)
{
    if (sel == DISP_SEL_CMD_REG) {
        dataPtr = (BYTE *)LCD_CW;
    } else {
        dataPtr = (BYTE *)LCD_DW;
    }
}
#endif

⌨️ 快捷键说明

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