//-------------------------------------------------------------------------*
// 文件名: LCD.h                                                           *
// 说  明: 液晶模块头文件,本文件与具体的芯片型号有关                       *
//-------------------------------------------------------------------------*

//1 头文件
#include "MC9S08AW60.h"  //AW60 MCU映像寄存器名定义        
#include "Type.h"        //类型别名定义
#include "GeneralFun.h"  //类型别名定义

//2 宏定义
//AW60的LCD模块相关寄存器的定义
#define AW60_LCDdata   PTAD    //端口A数据寄存器
#define AW60_LCDdataD  PTADD   //端口A数据方向寄存器
#define AW60_LCDctrl1  PTCD    //端口C数据寄存器
#define AW60_LCDctrlD1 PTCDD   //端口C数据方向寄存器
#define AW60_LCDctrl2  PTFD    //端口F数据寄存器
#define AW60_LCDctrlD2 PTFDD   //端口F数据方向寄存器

//3 函数声明
//3.1 外部函数声明
//-------------------------------------------------------------------------*
//函数名: LCDshow                                                          *
//功  能: 在LCD(HD44780)显示屏上显示32个数据                               *
//参  数: str 待显示数据的首地址                                           *
//返  回: 无                                                               *
//说  明: 调用LCDinit、LCDcommand函数                                      *
//-------------------------------------------------------------------------*  
void LCDshow(uint8 str[]);    

//3.2 内部函数声明
//--------------------------------------------------------------------------*
//函数名: LCDinit                                                           *
//功  能: 初始化LCD(HD44780),设置显示方式,输入方式,并清屏                   *
//参  数: 无                                                                *
//返  回: 无                                                                *
//说  明: 调用了LCDcommand函数                                              *
//--------------------------------------------------------------------------*
void LCDinit(void);

//--------------------------------------------------------------------------*
//函数名:LCDcommand                                                         *
//功  能:执行给定的LCD命令,并延时                                           *
//参  数:cmd:待执行的命令                                                   *
//返  回:无                                                                 *
//说  明:无                                                                 *
//--------------------------------------------------------------------------*
void LCDcommand(uint8 cmd);

//4 寄存器有关的宏定义
//端口A数据寄存器各个位的掩码
#define AW60_LCDdata_PTAD7          (0x80)   //A数据寄存器位7掩码
#define AW60_LCDdata_PTAD6          (0x40)   //A数据寄存器位6掩码
#define AW60_LCDdata_PTAD5          (0x20)   //A数据寄存器位5掩码
#define AW60_LCDdata_PTAD4          (0x10)   //A数据寄存器位4掩码
#define AW60_LCDdata_PTAD3          (0x08)   //A数据寄存器位3掩码
#define AW60_LCDdata_PTAD2          (0x04)   //A数据寄存器位2掩码
#define AW60_LCDdata_PTAD1          (0x02)   //A数据寄存器位1掩码
#define AW60_LCDdata_PTAD0          (0x01)   //A数据寄存器位0掩码
//端口A数据方向寄存器各个位的掩码
#define AW60_LCDdataD_PTADD7        (0x80)   //A数据方向寄存器位7掩码
#define AW60_LCDdataD_PTADD6        (0x40)   //A数据方向寄存器位6掩码
#define AW60_LCDdataD_PTADD5        (0x20)   //A数据方向寄存器位5掩码
#define AW60_LCDdataD_PTADD4        (0x10)   //A数据方向寄存器位4掩码
#define AW60_LCDdataD_PTADD3        (0x08)   //A数据方向寄存器位3掩码
#define AW60_LCDdataD_PTADD2        (0x04)   //A数据方向寄存器位2掩码
#define AW60_LCDdataD_PTADD1        (0x02)   //A数据方向寄存器位1掩码
#define AW60_LCDdataD_PTADD0        (0x01)   //A数据方向寄存器位0掩码
//端口C数据寄存器各个位的掩码
#define AW60_LCDctrl1_PTCD7          (0x80)   //C数据寄存器位7掩码
#define AW60_LCDctrl1_RW             (0x40)   //C数据寄存器位6掩码
#define AW60_LCDctrl1_PTCD5          (0x20)   //C数据寄存器位5掩码
#define AW60_LCDctrl1_RS             (0x10)   //C数据寄存器位4掩码
#define AW60_LCDctrl1_PTCD3          (0x08)   //C数据寄存器位3掩码
#define AW60_LCDctrl1_PTCD2          (0x04)   //C数据寄存器位2掩码
#define AW60_LCDctrl1_PTCD1          (0x02)   //C数据寄存器位1掩码
#define AW60_LCDctrl1_PTCD0          (0x01)   //C数据寄存器位0掩码
//端口C数据方向寄存器各个位的掩码
#define AW60_LCDctrlD1_PTCDD7        (0x80)   //C数据方向寄存器位7掩码
#define AW60_LCDctrlD1_PTCDD6        (0x40)   //C数据方向寄存器位6掩码
#define AW60_LCDctrlD1_PTCDD5        (0x20)   //C数据方向寄存器位5掩码
#define AW60_LCDctrlD1_PTCDD4        (0x10)   //C数据方向寄存器位4掩码
#define AW60_LCDctrlD1_PTCDD3        (0x08)   //C数据方向寄存器位3掩码
#define AW60_LCDctrlD1_PTCDD2        (0x04)   //C数据方向寄存器位2掩码
#define AW60_LCDctrlD1_PTCDD1        (0x02)   //C数据方向寄存器位1掩码
#define AW60_LCDctrlD1_PTCDD0        (0x01)   //C数据方向寄存器位0掩码
//端口F数据寄存器各个位的掩码
#define AW60_LCDctrl2_PTFD7          (0x80)   //F数据寄存器位7掩码
#define AW60_LCDctrl2_E              (0x40)   //F数据寄存器位6掩码
#define AW60_LCDctrl2_PTFD5          (0x20)   //F数据寄存器位5掩码
#define AW60_LCDctrl2_PTFD4          (0x10)   //F数据寄存器位4掩码
#define AW60_LCDctrl2_PTFD3          (0x08)   //F数据寄存器位3掩码
#define AW60_LCDctrl2_PTFD2          (0x04)   //F数据寄存器位2掩码
#define AW60_LCDctrl2_PTFD1          (0x02)   //F数据寄存器位1掩码
#define AW60_LCDctrl2_PTFD0          (0x01)   //F数据寄存器位0掩码
//端口F数据方向寄存器各个位的掩码
#define AW60_LCDctrlD2_PTFDD7        (0x80)   //F数据方向寄存器位7掩码
#define AW60_LCDctrlD2_PTFDD6        (0x40)   //F数据方向寄存器位6掩码
#define AW60_LCDctrlD2_PTFDD5        (0x20)   //F数据方向寄存器位5掩码
#define AW60_LCDctrlD2_PTFDD4        (0x10)   //F数据方向寄存器位4掩码
#define AW60_LCDctrlD2_PTFDD3        (0x08)   //F数据方向寄存器位3掩码
#define AW60_LCDctrlD2_PTFDD2        (0x04)   //F数据方向寄存器位2掩码
#define AW60_LCDctrlD2_PTFDD1        (0x02)   //F数据方向寄存器位1掩码
#define AW60_LCDctrlD2_PTFDD0        (0x01)   //F数据方向寄存器位0掩码


