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

📄 drv_hd44780_l.c

📁 包含了NXP众多的MCU的例子程序
💻 C
字号:
/*************************************************************************
 *
 *    Used with ICCARM and AARM.
 *
 *    (c) Copyright IAR Systems 2006
 *
 *    File name   : drv_hd44780_l.c
 *    Description : I/O function
 *
 *    History :
 *    1. Data        : 4, January 2006
 *       Author      : Stanimir Bonev
 *       Description : Create
 *
 *    $Revision: 1.2.2.2 $
**************************************************************************/
#include "backlight.h"

#define SHR_DATA  24
#define SHR_CLK   25
#define SHR_LACH  26

typedef union
{
  Int8U Data;
  struct
  {
    Int8U Light : 1;
    Int8U RW    : 1;
    Int8U RS    : 1;
    Int8U E     : 1;
    Int8U DB    : 4;
  };
} bmShiftData_t;

bmShiftData_t bmShiftData;

/*************************************************************************
 * Function Name: ShiftDataRefresh
 * Parameters: none
 *
 * Return: none
 *
 * Description: Shift bmShiftData
 *
 *************************************************************************/
void ShiftDataRefresh(void)
{
  // Set Fast mask
  FIOMASK &= ~((1 << SHR_DATA) | (1 << SHR_CLK) | (1 << SHR_LACH));
  // shift data to LCD
  for (Int32U i = 0x80; i; i >>= 1)
  {
    FIOCLR = (1 << SHR_CLK) | (1 << SHR_LACH);
    if(bmShiftData.Data & i)
    {
      FIOSET = 1 << SHR_DATA;
    }
    else
    {
      FIOCLR = 1 << SHR_DATA;
    }
    FIOSET = 1 << SHR_CLK;
  }
  FIOCLR = 1 << SHR_CLK;
  FIOSET = 1 << SHR_LACH;
  FIOCLR = 1 << SHR_LACH;
}

/*************************************************************************
 * Function Name: HD44780_IO_Init
 * Parameters: none
 *
 * Return: none
 *
 * Description: Init GPIO and clear shift register
 *
 *************************************************************************/
void HD44780_IO_Init (void)
{
  // Set to GPIO
  PINSEL1 &= ~((3 << ((SHR_DATA - 16)*2))|
              (3 << ((SHR_CLK  - 16)*2)) |
              (3 << ((SHR_LACH - 16)*2)));
  // Enable figh speed GPIO
  SCS_bit.GPIO0M = 1;
  // Set Fast mask
  FIOMASK &= ~((1 << SHR_DATA) | (1 << SHR_CLK) | (1 << SHR_LACH));
  // Set to outputs and clear
  FIODIR |= (1 << SHR_DATA) | (1 << SHR_CLK) | (1 << SHR_LACH);
  FIOCLR  = (1 << SHR_DATA) | (1 << SHR_CLK) | (1 << SHR_LACH);
  bmShiftData.Data = 0;
  ShiftDataRefresh();
}

/*************************************************************************
 * Function Name: HD44780SetRS
 * Parameters: Boolean Data
 * Return: none
 * Description: Set RS signal
 *
 *************************************************************************/
void HD44780SetRS (Boolean Data)
{
  bmShiftData.RS = Data;
  ShiftDataRefresh();
}

/*************************************************************************
 * Function Name: HD44780SetE
 * Parameters: Boolean Data
 * Return: none
 * Description: Set E signal
 *
 *************************************************************************/
void HD44780SetE (Boolean Data)
{
  bmShiftData.E = Data;
  ShiftDataRefresh();
}

/*************************************************************************
 * Function Name: HD44780WrIO
 * Parameters: Int8U Data
 * Return: none
 * Description: Write to HD44780 I/O
 *
 *************************************************************************/
void HD44780WrIO (Int8U Data)
{
  HD44780SetE(1);
  bmShiftData.DB = Data;
  ShiftDataRefresh();
  HD44780SetE(0);
}

/*************************************************************************
 * Function Name: HD44780SetBackLight
 * Parameters: Boolean Data
 * Return: none
 * Description: Set backlight
 *
 *************************************************************************/
void HD44780SetBackLight (Boolean Data)
{
  bmShiftData.Light = Data;
  ShiftDataRefresh();
}

⌨️ 快捷键说明

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