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

📄 use_1602_driver.c

📁 MSP430z_f247.rar
💻 C
字号:
/*****************************************************************
*   函数库名称:1602液晶驱动函数库                               *
*   版本:      v0.01                                            *
*   作者:      I ROBOT                                          *
*   创建日期:  Copyright (C) 2008年10月24日                     *
*----------------------------------------------------------------*
*   [支持库]                                                     *
*   支持库名称:USE_1602_Driver.h(1602液晶驱动配置库)            *
*   支持库版本:v0.01                                            *
*   支持库说明:与本文件相应的函数声明                           *
*----------------------------------------------------------------*
*   [版本更新]                                                   *
*   更新:      I ROBOT                                          *
*   更新日期:                                                    *
*   版本:                                                       *
*----------------------------------------------------------------*
*   [版本历史]                                                   *
*        v0.01  创建版本,1602基本驱动函数                       *
*----------------------------------------------------------------*
*   [使用说明]                                                   *
*            1.直接调用驱动函数                                  *
*****************************************************************/

/********************
* 头 文 件 配 置 区 *
********************/
# include "USE_1602_Driver.h"
/********************
*   系 统 宏 定 义  *
********************/

/*------------------*
*   常 数 宏 定 义  *
*------------------*/

/*------------------*
*   动 作 宏 定 义  *
*------------------*/
                                                             
/********************
*  模块结构体定义区 *
********************/

/********************
*   函 数 声 明 区  *
********************/
void _1602_Hardware_Configure(void);

static void MCU_Register_Configure(void);

static void MCU_Port_Configure(void);

UINT8 Read_State_1602(void);

void Write_CMD_1602(UINT8 chCommand,UINT8 chDetect_Busy);

void Write_Data_1602(UINT8 chData,UINT8 chDetect_Busy);

void LCD_Init_1602(void);

UINT8 Read_Data_1602(UINT8 chDetect_Busy);

void Is_Busy_1602(void);

void CLEAR_LCD_1602(void);

void Write_String_1602(UINT8 chx,UINT8 chy,char *chStr_Data,UINT8 chStr_Length);
/********************
*   模块函数声明区  *
********************/

/********************
*   模块变量声明区  *
********************/

/********************
*   全局变量声明区  *
********************/

/******************************************************************
*                       函  数  定  义  区                        *
******************************************************************/

/****************************************
*  函数说明: 1602硬件配置函数           *
*  输入    :无                         *
*  输出    :无                         *
*  调用函数: 无                         *
****************************************/
void _1602_Hardware_Configure(void)
{
    //TODO:在这里添加1602硬件配置代码
    MCU_Register_Configure();
    MCU_Port_Configure();
}

/****************************************
*  函数说明: MCU寄存器配置函数          *
*  输入    :无                         *
*  输出    :无                         *
*  调用函数: 无                       *
****************************************/

static void MCU_Register_Configure(void)
{
    //TODO:在这里添加MCU寄存器配置代码
}
/****************************************
*  函数说明: MCU端口配置函数            *
*  输入    :无                         *
*  输出    :无                         *
*  调用函数: 无                       *
****************************************/

static void MCU_Port_Configure(void)
{
    //TODO:在这里添加MCU端口配置代码

}
/****************************************
*  函数说明: 1602读状态函数             *
*  输入    :无                         *
*  输出    :1602的状态                 *
*  调用函数: NO_DELAY                  *
****************************************/
UINT8 Read_State_1602(void)
{
    AVR_READ_1602;
    NOP_DELAY;
    _1602_RS_LOW;
    _1602_RW_HIGH;
    _1602_E_HIGH;
    NOP_DELAY;
    return _1602_STATE;
    
}

/****************************************
*  函数说明: 1602写指令函数             *
*  输入    :1602指令和是否检测忙状态   *
*  输出    :无                         *
*  调用函数: Is_Busy_1602() NOP_DELAY   *
****************************************/
void Write_CMD_1602(UINT8 chCommand,UINT8 chDetect_Busy)
{
    if (chDetect_Busy)
    {
        Is_Busy_1602();
    }
    AVR_WRITE_1602;
    NOP_DELAY;
    INPUT_TO_1602 = chCommand;
    _1602_RS_LOW;
    _1602_RW_LOW;
    _1602_E_LOW;
    NOP_DELAY;
    _1602_E_HIGH;
}

/****************************************
*  函数说明: 1602写数据函数             *
*  输入    :1602数据和是否检测忙状态   *
*  输出    :无                         *
*  调用函数: Is_Busy_1602() NOP_DELAY   *
****************************************/
void Write_Data_1602(UINT8 chData,UINT8 chDetect_Busy)
{
    if (chDetect_Busy)
    {
        Is_Busy_1602();
    }
    AVR_WRITE_1602;
    NOP_DELAY;
    INPUT_TO_1602 = chData;
    _1602_RS_HIGH;
    _1602_RW_LOW;
    _1602_E_LOW;
    NOP_DELAY;
    _1602_E_HIGH;
}

/****************************************
*  函数说明: 1602初始化函数             *
*  输入    :无                         *
*  输出    :无                         *
*  调用函数: Write_CMD_1602()         *
*            Delay_MS(15)               *
****************************************/
void LCD_Init_1602(void)
{
    Delay_MS(15);
    Write_CMD_1602(_1602_MODE_SETTING,FALSE);
    Delay_MS(5);
    Write_CMD_1602(_1602_MODE_SETTING,FALSE);
    Delay_MS(5);
    Write_CMD_1602(_1602_MODE_SETTING,FALSE);
    Write_CMD_1602(_1602_MODE_SETTING,TRUE);
    Write_CMD_1602(_1602_OFF,TRUE);
    Write_CMD_1602(_1602_CLEAR,TRUE);
    Write_CMD_1602(_1602_PSTR_INCREASE,TRUE);
    Write_CMD_1602(_1602_ON,TRUE);
    
}
/****************************************
*  函数说明: 1602读数据函数             *
*  输入    :无                         *
*  输出    :1602数据                   *
*  调用函数: Is_Busy_1602  NOP_DELAY    *
****************************************/
UINT8 Read_Data_1602(UINT8 chDetect_Busy)
{
    
    if (chDetect_Busy)
    {
        Is_Busy_1602();
    }
    AVR_READ_1602;
    NOP_DELAY;
    _1602_RS_HIGH;
    _1602_RW_HIGH;
    _1602_E_HIGH;
    NOP_DELAY;
    return DATA_FROM_1602;
   
}
/****************************************
*  函数说明: 1602忙状态检测函数         *
*  输入    :无                         *
*  输出    :无                         *
*  调用函数: Read_State_1602()          *
****************************************/
void Is_Busy_1602(void)
{
    while (Read_State_1602()&0X80);
}
/****************************************
*  函数说明: 1602清屏函数               *
*  输入    :无                         *
*  输出    :无                         *
*  调用函数: Write_CMD_1602()           *
****************************************/
void CLEAR_LCD_1602(void)
{
    Write_CMD_1602(_1602_CLEAR,TRUE);
}
/****************************************
*  函数说明: 1602写字符串函数           *
*  输入    :起始坐标(chx,chy)        *
*            数据指针 *chStr_Data       *
*            字符串长度chStr_Length     *
*  输出    :无                         *
*  调用函数: Write_CMD_1602()           *
*            Write_Data_1602()          *
****************************************/
void Write_String_1602(UINT8 chx,UINT8 chy,char *chStr_Data,UINT8 chStr_Length)
{
    UINT8 chCurrent_Ptr = chx;
    UINT8 chStr_Counter = 0;
    for (chStr_Counter = 0;chStr_Counter < chStr_Length;chStr_Counter++)
    {
        Write_CMD_1602(_1602_PTR+_1602_ROW*(1-chy)+chCurrent_Ptr,TRUE);
        Write_Data_1602(chStr_Data[chStr_Counter],TRUE);
        chCurrent_Ptr++;
        if (chCurrent_Ptr == 16)
        {
            chCurrent_Ptr = 0;
            chy = 1-chy;
        }
    }
}

⌨️ 快捷键说明

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