📄 drv_lcm12864.c
字号:
/*********************************************************************************************************
** uC/OS 2 FOR TI TMS320240X
** The Real-Time Kernel(For CCS2.2)
**
**
** V0.00.1
**
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: Drv_Lcm.C
**创 建 人: 龚树强
**版 本: V0.01.1
**最后修改日期: 2005年4月5日
**描 述: Lcm控制函数源文件
**
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 龚树强
** 版 本: V0.01.1
** 日 期: 2005年4月5日
** 描 述: 原始版本
**
**------------------------------------------------------------------------------------------------------
** 修改人:
** 版 本:
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include "..\source\includes.h"
/*******************************************************************************
********************* 常 量 定 义 ************************
********************************************************************************/
const INT8U name_lcm[] = "lcm";
const INT8U ASCII_CODE[][6] = {
0x00,0x00,0x00,0x00,0x00,0x00, //空格
0x00,0x00,0x00,0x4f,0x00,0x00, //!
0x00,0x00,0x07,0x00,0x07,0x00, //"
0x00,0x14,0x7f,0x14,0x7f,0x14, //#
0x00,0x24,0x2a,0x7f,0x2a,0x12, //$
0x00,0x23,0x13,0x08,0x64,0x62, //%
0x00,0x36,0x49,0x55,0x22,0x50, //&
0x00,0x00,0x05,0x03,0x00,0x00, //'
0x00,0x00,0x00,0x1c,0x22,0x41, //(
0x00,0x00,0x00,0x41,0x22,0x1c, //)
0x00,0x14,0x08,0x3e,0x08,0x14, //*
0x00,0x08,0x08,0x3e,0x08,0x08, //+
0x00,0x00,0x50,0x30,0x00,0x00, //,
0x00,0x08,0x08,0x08,0x08,0x08, //-
0x00,0x00,0x60,0x60,0x00,0x00, //.
0x00,0x20,0x10,0x08,0x04,0x02, ///
0x00,0x3e,0x51,0x49,0x45,0x3e, //0 *16
0x00,0x00,0x42,0x7f,0x40,0x00, //1
0x00,0x42,0x61,0x51,0x49,0x46, //2
0x00,0x21,0x41,0x45,0x4b,0x31, //3
0x00,0x18,0x14,0x12,0x7f,0x10, //4
0x00,0x27,0x45,0x45,0x45,0x39, //5
0x00,0x3c,0x4a,0x49,0x49,0x30, //6
0x00,0x01,0x71,0x09,0x05,0x03, //7
0x00,0x36,0x49,0x49,0x49,0x36, //8
0x00,0x06,0x49,0x49,0x29,0x1e, //9
0x00,0x00,0x36,0x36,0x00,0x00, //:
0x00,0x00,0x56,0x36,0x00,0x00, //;
0x00,0x08,0x14,0x22,0x41,0x00, //<
0x00,0x14,0x14,0x14,0x14,0x14, //=
0x00,0x41,0x22,0x14,0x08,0x00, //>
0x00,0x02,0x01,0x51,0x09,0x06, //?
0x00,0x32,0x49,0x79,0x41,0x3e, //@
0x00,0x7e,0x11,0x11,0x11,0x7e, //A
0x00,0x7f,0x49,0x49,0x49,0x36, //B
0x00,0x3e,0x41,0x41,0x41,0x22, //C
0x00,0x7f,0x41,0x41,0x22,0x1c, //D
0x00,0x7f,0x49,0x49,0x49,0x41, //E
0x00,0x7f,0x09,0x09,0x09,0x01, //F
0x00,0x3e,0x41,0x49,0x49,0x7a, //G
0x00,0x7f,0x08,0x08,0x08,0x7f, //H
0x00,0x00,0x41,0x7f,0x41,0x00, //I
0x00,0x20,0x40,0x41,0x3f,0x01, //J
0x00,0x7f,0x08,0x14,0x22,0x41, //K
0x00,0x7f,0x40,0x40,0x40,0x40, //L
0x00,0x7f,0x02,0x0c,0x02,0x7f, //M
0x00,0x7f,0x04,0x08,0x10,0x7f, //N
0x00,0x3e,0x41,0x41,0x41,0x3e, //O
0x00,0x7f,0x09,0x09,0x09,0x06, //P
0x00,0x3e,0x41,0x51,0x21,0x5e, //Q
0x00,0x7f,0x09,0x19,0x29,0x46, //R
0x00,0x46,0x49,0x49,0x49,0x31, //S
0x00,0x01,0x01,0x7f,0x01,0x01, //T
0x00,0x3f,0x40,0x40,0x40,0x3f, //U
0x00,0x1f,0x20,0x40,0x20,0x1f, //V
0x00,0x3f,0x40,0x38,0x40,0x3f, //W
0x00,0x63,0x14,0x08,0x14,0x63, //X
0x00,0x07,0x08,0x70,0x08,0x07, //Y
0x00,0x61,0x51,0x49,0x45,0x43, //Z
0x00,0x00,0x7f,0x41,0x41,0x00, //[
0x00,0x15,0x16,0x7c,0x16,0x15, //
0x00,0x00,0x41,0x41,0x7f,0x00, //]
0x00,0x04,0x02,0x01,0x02,0x04, //^
0x00,0x40,0x40,0x40,0x40,0x40, //_
0x00,0x00,0x01,0x02,0x04,0x00, //'
0x00,0x20,0x54,0x54,0x54,0x78, //a
0x00,0x7f,0x48,0x44,0x44,0x38, //b
0x00,0x38,0x44,0x44,0x44,0x20, //c
0x00,0x38,0x44,0x44,0x48,0x7f, //d
0x00,0x38,0x54,0x54,0x54,0x18, //e
0x00,0x08,0x7e,0x09,0x01,0x02, //f
0x00,0x0c,0x52,0x52,0x52,0x3e, //g
0x00,0x7f,0x08,0x04,0x04,0x78, //h
0x00,0x00,0x44,0x7d,0x40,0x00, //i
0x00,0x20,0x40,0x44,0x3d,0x00, //j
0x00,0x7f,0x10,0x28,0x44,0x00, //k
0x00,0x00,0x41,0x7f,0x40,0x00, //l
0x00,0x7c,0x04,0x18,0x04,0x7c, //m
0x00,0x7c,0x08,0x04,0x04,0x78, //n
0x00,0x38,0x44,0x44,0x44,0x38, //o
0x00,0x7c,0x14,0x14,0x14,0x08, //p
0x00,0x08,0x14,0x14,0x18,0x7c, //q
0x00,0x7c,0x08,0x04,0x04,0x08, //r
0x00,0x48,0x54,0x54,0x54,0x20, //s
0x00,0x04,0x3f,0x44,0x40,0x20, //t
0x00,0x3c,0x40,0x40,0x20,0x7c, //u
0x00,0x1c,0x20,0x40,0x20,0x1c, //v
0x00,0x3c,0x40,0x30,0x40,0x3c, //w
0x00,0x44,0x28,0x10,0x28,0x44, //x
0x00,0x0c,0x50,0x50,0x50,0x3c, //y
0x00,0x44,0x64,0x54,0x4c,0x44, //z
0x00,0x00,0x08,0x36,0x41,0x00, //{
0x00,0x00,0x00,0x7f,0x00,0x00, //|
0x00,0x00,0x41,0x36,0x08,0x00, //}
0x00,0x08,0x08,0x2a,0x1c,0x08, //->
0x00,0x08,0x1c,0x2a,0x08,0x08 //<-
};
//const OCB_DISP_OP DispFunction = {
// Lcm_Init, /* void (*init)(void); */
// LcmClr, /* void (*clr)(INT8U,INT8U,INT8U,INT8U,INT8U); */
// LcmDispChar, /* void (*disp_char)(INT8U,INT8U, INT8U*,INT8U); */
// LcmDispHEX, /* void (*disp_hex)(INT8U, INT8U, INT8U,INT8U); */
// LcmDispInt, /* void (*disp_int)(INT8U,INT8U, INT16S,INT8U); */
// LcmDispFixP, /* void (*disp_float)(INT8U,INT8U,INT16S,INT8U,INT8U); */
// LcmDispChnChar /* void (*disp_chn_char)(INT8U,INT8U,INT8U*,INT8U); */
// };
/*******************************************************************************
********************* 变 量 定 义 ************************
********************************************************************************/
INT8U LCM_BL_state;
INT8U flag_anti_disp; //反白显示标志
OS_EVENT* DispSem;
/*******************************************************************************
********************* 功 能 函 数 定 义 ************************
********************************************************************************/
/*********************************************************************************************************
** 函数名称: LCM_SET_X0(),LCM_SET_X1()
** 功能描述: 设置x坐标
**
** 输 入: x :指定的列
** 输 出: 无
** 全局变量: 无
** 调用模块: LcmSendCmd0,LcmSendCmd1
**
** 作 者: 龚树强
** 日 期: 2005年4月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define LCM_SET_X0(x) LcmSendCmd0(x|0x40)
#define LCM_SET_X1(x) LcmSendCmd1(x|0x40)
/*********************************************************************************************************
** 函数名称: LCM_SET_Y0(),LCM_SET_Y1()
** 功能描述: 设置y坐标
**
** 输 入: y :指定的行
** 输 出: 无
** 全局变量: 无
** 调用模块: LcmSendCmd0,LcmSendCmd1
**
** 作 者: 龚树强
** 日 期: 2005年4月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define LCM_SET_Y0(y) LcmSendCmd0(y|0xB8)
#define LCM_SET_Y1(y) LcmSendCmd1(y|0xB8)
/*********************************************************************************************************
** 函数名称: LCM_SET_P0(),LCM_SET_P1()
** 功能描述: 设置页面
**
** 输 入: z :指定的页
** 输 出: 无
** 全局变量: 无
** 调用模块: LcmSendCmd0,LcmSendCmd1
**
** 作 者: 龚树强
** 日 期: 2005年4月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define LCM_SET_Z0(z) LcmSendCmd0(z|0xC0)
#define LCM_SET_Z1(z) LcmSendCmd1(z|0xC0)
/*********************************************************************************************************
** 函数名称: LcmDelay
** 功能描述: 等待LCM操作完毕
**
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 龚树强
** 日 期: 2005年4月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void LcmDelay(void) reentrant
{
INT8U i;
for(i = LCM_DELAY_TIMER; i--;);
}
/*********************************************************************************************************
** 函数名称: LcmSendCmd()
** 功能描述: 向LCM模块发送命令
**
** 输 入: command: 给LCM模块发送的命令
** 输 出: 无
** 全局变量: 无
** 调用模块: LcmDelay()
**
** 作 者: 龚树强
** 日 期: 2005年4月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void LcmSendCmd0(INT8U command) reentrant
{
// LcmDelay();
OUTPUT(LCM_CMD_0,command);
}
void LcmSendCmd1(INT8U command) reentrant
{
// LcmDelay();
OUTPUT(LCM_CMD_1,command);
}
void LcmSendCmd2(INT8U command) reentrant
{
// LcmDelay();
OUTPUT(LCM_CMD_2,command);
}
void LcmSendCmd3(INT8U command) reentrant
{
// LcmDelay();
OUTPUT(LCM_CMD_3,command);
}
/*********************************************************************************************************
** 函数名称: LcmSendData()
** 功能描述: 向LCM模块发送1字节数据
**
** 输 入: ddata: 给LCM模块发送的命令
** 输 出: 无
** 全局变量: 无
** 调用模块: LcmDelay()
**
** 作 者: 龚树强
** 日 期: 2005年4月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void LcmSendData0(INT8U Data) reentrant
{
// LcmDelay();
if(flag_anti_disp == LCM_ANTI_DISP)
Data = ~Data;
OUTPUT(LCM_DATA_0,Data);
}
void LcmSendData1(INT8U Data) reentrant
{
// LcmDelay();
if(flag_anti_disp == LCM_ANTI_DISP)
Data = ~Data;
OUTPUT(LCM_DATA_1,Data);
}
void LcmSendData2(INT8U Data) reentrant
{
// LcmDelay();
if(flag_anti_disp == LCM_ANTI_DISP)
Data = ~Data;
OUTPUT(LCM_DATA_2,Data);
}
void LcmSendData3(INT8U Data) reentrant
{
// LcmDelay();
if(flag_anti_disp == LCM_ANTI_DISP)
Data = ~Data;
OUTPUT(LCM_DATA_3,Data);
}
/*********************************************************************************************************
** 函数名称: LcmReadData()
** 功能描述: 向LCM模块发送1字节数据
**
** 输 入: ddata: 给LCM模块发送的命令
** 输 出: 无
** 全局变量: 无
** 调用模块: LcmDelay()
**
** 作 者: 龚树强
** 日 期: 2005年4月5日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
INT8U LcmReadData0(void) reentrant
{
idata INT8U buf;
// LcmDelay();
INPUT(LCM_DATA_0,buf);
}
INT8U LcmReadData1(void) reentrant
{
idata INT8U buf;
// LcmDelay();
INPUT(LCM_DATA_1,buf);
}
INT8U LcmReadData2(void) reentrant
{
idata INT8U buf;
// LcmDelay();
INPUT(LCM_DATA_2,buf);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -