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

📄 lcd1602.c

📁 本文面向首次接触uC/OS-II的程序员
💻 C
字号:
#ifndef  OS_MASTER_FILE
#include "includes.h"
#endif

//写命令
#define  LCD1602_SEND_COMMAND(a)        \
         LCDCOM = a;
//写数据
#define  LCD1602_SEND_DATA(a)           \
         LCDDAT = a;

void  Lcd1602Delay(void)
{
    INT8U i;

    i = 300;
    do
    {
      ;
    } while (--i != 0);
}

void  Lcd1602SendComm(INT8U Command)
{
    Lcd1602Delay();
    LCD1602_SEND_COMMAND(Command);
}

void  Lcd1602SendDate(INT8U Data)
{
    Lcd1602Delay();
    LCD1602_SEND_DATA(Data);
}

void  Lcd1602DispStr(INT8U x, INT8U y, INT8S *Data)
{
    if (y == 1)                                                 /* 在第一行显示 */
    {
        if (x < (16 + 1))                                       /* 有效的列号   */
        {
            Lcd1602SendComm(LCD1602_LINE1 - 1 + x);             /* 设置显示地址 */
            for( ; x < (16 + 1) && *Data != '\0'; x++)          /* 显示到字符串结束 */
                                                                /* 或是行结束   */
            {
                Lcd1602SendDate(*Data++);                       /* 显示一个字符 */
            }
            if (*Data != '\0')                                  /* 字符串没有结束 */
            {
                x = 1;                                          /* 从第二行第一列 */
                y = 2;                                          /* 继续显示       */
            }
        }
    }
    if (y == 2)                                                 /* 在第二行显示 */
    {
        Lcd1602SendComm(LCD1602_LINE2 - 1 + x);                 /* 设置显示地址 */
        for( ; x < (16 + 1) && *Data != '\0'; x++)              /* 显示到字符串结束 */
                                                                /* 或是行结束   */
        {
            Lcd1602SendDate(*Data++);                           /* 显示一个字符 */
        }
    }
}

void  Lcd1602DispCha(INT8U x, INT8U y, INT8U Data)
{
    if (y == 1)                                                 /* 在第一行显示 */
    {
        if (x < (16 + 1))                                       /* 有效的列号   */
        {
           Lcd1602SendComm(LCD1602_LINE1 - 1 + x);              /* 设置显示地址 */
            Lcd1602SendDate(Data);                              /* 显示一个字符 */
        }
    }
    if (y == 2)                                                 /* 在第二行显示 */
    {
        Lcd1602SendComm(LCD1602_LINE2 - 1 + x);                 /* 设置显示地址 */
        
            Lcd1602SendDate(Data);                              /* 显示一个字符 */
    }
}

void Lcd1602Clr(INT8U y)
{
    INT8U i;
    
    if(y==1)
    {
        Lcd1602SendComm(LCD1602_LINE1);
    }
    if(y==2)
    {
        Lcd1602SendComm(LCD1602_LINE2);
    }
    for(i=0;i<16;i++)  
      {
          Lcd1602SendDate(' ');
      }
}

void  Lcd1602Init(void)
{
    Lcd1602SendComm(LCD1602_MODE);          // 设置LCM模式(系统方式设置)
    Lcd1602SendComm(LCD1602_NO_FLASH);      // 打开LCM显示,无光标
    Lcd1602SendComm(LCD1602_NO_SHIFT);      // 字符向地址递增,光标移动
    Lcd1602SendComm(LCD1602_SH);            // 重新设为光标移动,向右移
    Lcd1602Clr(1);                          // 清屏
    Lcd1602Clr(2);
}

⌨️ 快捷键说明

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