嵌入式实时操作系统small RTOS51原理及应用 ----笔记 第十五章 LCD显示驱动的实现

Page117

E:\Nu_LB_Nuc140\book\small_RTOS\Small_RTOS1.12.1\small_rtos\LCD1602

在这里插入图片描述

参考代码:

基本函数

/*  分配信号量                  */
#define LCD1602_SEM         0

#define OSLcd1602Clr(y)                           \
{                                                 \
    OSSemPend(LCD1602_SEM, 0);                    \
    Lcd1602Clr(y);                                \
    OSSemPost(LCD1602_SEM);                       \
}

在lcd指定位置显示一个字符串,此函数可以自动换行。
#define OSLcd1602DispStr(x, y, Data)              \
{                                                 \
    OSSemPend(LCD1602_SEM, 0);                    \
    Lcd1602DispStr((x), (y), (Data));             \
    OSSemPost(LCD1602_SEM);                       \
}


多任务中从lcd指定地址处写多个字节数据
#define OSLcd1602LoadC(addr, dstr, no)            \
{                                                 \
    OSSemPend(LCD1602_SEM, 0);                    \
    LCMLoadC((addr), (dstr), (no));               \
    OSSemPost(LCD1602_SEM);                       \
}

任务A 在液晶第一行闪动字符串“Small RTOS”

void LcdDisplay1(void)
{
    OSSemCreate(LCD1602_SEM, 1);
    while (1)
    {
        OSLcd1602Clr(1);                                          // 第一行清屏
        OSWait(K_TMO, OS_TICKS_PER_SEC / 2);                      // 延时0.5S
        OSLcd1602DispStr(4, 1, "Small RTOS");                     // 第一行显示"  Hello,World!  "
        OSWait(K_TMO, (OS_TICKS_PER_SEC + 1) / 2);                // 延时0.5S
    }
}

任务B 在液晶第二行 依次 显示三个字符串

char xdata LogoStr[] =  "               Hello,World!           Guang Zhou ZLG Chenmingji            Down it from www.zlgmcu.com";

void LcdDisplay2(void)
{
    uint8 *cp;

    cp = LogoStr;
    
    while(1)
    {
        OSLcd1602Clr(2);                            // 第二行清屏
        OSLcd1602DispStr(1, 2, cp);                 // 显示字符串
        OSWait(K_TMO, OS_TICKS_PER_SEC / 4);        // 延时0.25S

        cp++;
        if (*cp == '\0')
        {
            cp = LogoStr;
        }
    }
}

(稍后补充)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值