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

📄 t6963.c

📁 this a c program,be careful
💻 C
字号:
#define ulong    unsigned long
#define uint     unsigned int
#define uchar    unsigned char
#define LCMDW  (*(unsigned char *)0x95ff)
#define LCMCW  (*(unsigned char *)0x97ff)
// T6963C 命令定义
#define LC_CUR_POS    0x21        // 光标位置设置
#define LC_CGR_POS    0x22        // CGRAM偏置地址设置
#define LC_ADD_POS    0x24        // 地址指针位置
#define LC_TXT_STP    0x40        // 文本区首址
#define LC_TXT_WID    0x41        // 文本区宽度
#define LC_GRH_STP    0x42        // 图形区首址
#define LC_GRH_WID    0x43        // 图形区宽度
#define LC_MOD_OR    0x80        // 显示方式:逻辑"或"
#define LC_MOD_XOR    0x81        // 显示方式:逻辑"异或"
#define LC_MOD_AND    0x82        // 显示方式:逻辑"与"
#define LC_MOD_TCH    0x83        // 显示方式:文本特征
#define LC_DIS_SW    0x90        // 显示开关:D0=1/0:光标闪烁启用/禁用;
                    // D1=1/0:光标显示启用/禁用;
                    // D2=1/0:文本显示启用/禁用;
                    // D3=1/0:图形显示启用/禁用;
#define LC_CUR_SHP    0xA0        // 光标形状选择:0xA0-0xA7表示光标占的行数
#define LC_AUT_WR    0xB0        // 自动写设置
#define LC_AUT_RD    0xB1        // 自动读设置
#define LC_AUT_OVR    0xB2        // 自动读/写结束
#define LC_INC_WR    0xC0        // 数据一次写,地址加1
#define LC_INC_RD    0xC1        // 数据一次读,地址加1
#define LC_DEC_WR    0xC2        // 数据一次写,地址减1
#define LC_DEC_RD    0xC3        // 数据一次读,地址减1
#define LC_NOC_WR    0xC4        // 数据一次写,地址不变
#define LC_NOC_RD    0xC5        // 数据一次读,地址不变
#define LC_SCN_RD    0xE0        // 屏读
#define LC_SCN_CP    0xE8        // 屏拷贝
#define LC_BIT_OP    0xF0        // 位操作:


uchar LCDSTA01(void)                //判断指令(数据)读写状态          
{
    uchar i;
    
    for(i=10;i>0;i--)
    {
        if((LCMCW & 0x03) == 0x03)        // 读取状态
            break;
    }
    return i;                    // 若返回零,说明错误
}

uchar LCDSTA2(void)	   //判断数据自动读状态
{
    uchar i;
    
    for(i=10;i>0;i--)
    {
        if((LCMCW & 0x04) == 0x04)
            break;
    }
    return i;                    // 若返回零,说明错误
}

uchar LCDSTA3(void)	、		  //判断数据自动写状态
{
    uchar i;
    
    for(i=10;i>0;i--)
    {
        if((LCMCW & 0x08) == 0x08)
            break;
    }
    return i;                    // 若返回零,说明错误					 
}

uchar twoparameter(uchar uCmd,uchar uPar1,uchar uPar2)	   //双参数指令写入函数
{
    if(LCDSTA01() == 0)
        return 1;
    LCMDW = uPar1;
    if(LCDSTA01() == 0)
        return 2;
    LCMDW = uPar2;
    if(LCDSTA01() == 0)
        return 3;
    LCMCW = uCmd;
        return 0;                    // 返回0成功
}

uchar oneparameter(uchar uCmd,uchar uPar1)	      //单参数指令写入函数
{
    if(LCDSTA01() == 0)
        return 1;
    LCMDW = uPar1;
    if(LCDSTA01() == 0)
        return 2;
    LCMCW = uCmd;
        return 0;                    // 返回0成功
}

uchar noparameter(uchar uCmd)		   //无参数指令写入函数
{
    if(LCDSTA01() == 0)
        return 1;
    LCMCW = uCmd;
        return 0;                    // 返回0成功
}

uchar LCDwrite(uchar uData)		   //数据写入函数
{
    if(LCDSTA3() == 0)
        return 1;
    LCMDW = uData;
    return 0;                    // 返回0成功
}

uchar LCDread(void)			  //数据读函数
{
    if(fnSTA01() == 0)return 1;            // 获取状态,如果状态错
    return LCMDW;                    // 返回数据
}			  

void LCDSetPos(uchar urow, uchar ucol)			//设置当前地址
{
    uint  iPos;

    iPos = urow * 30 + ucol;
    twoparameter(LC_ADD_POS,iPos & 0xFF,iPos / 256);
    gCurRow = urow;
    gCurCol = ucol;
}

void cursor(uchar uRow, uchar uCol)			 //设置当前显示行列
{
     LCDSetPos(uRow * 16, uCol);
}

void cls(void)					 //清屏
{
    uint  i;

    twoparameter(LC_ADD_POS,0x00,0x00);    // 置地址指针为从零开始
    noparameter(LC_AUT_WR);        // 自动写
    for(i=0;i<240*128/8;i++)    // 清一屏
        {
	        LCDSTA3();
	        LCDwrite(0x0);        // 写数据,实际使用时请将0x55改成0x0
        }
    noparameter(LC_AUT_OVR);        // 自动写结束
    twoparameter(LC_ADD_POS,0x00,0x00);    // 重置地址指针
    gCurRow = 0;            // 置地址指针存储变量
    gCurCol = 0;
}

char LCDInit(void)				  //LCD初始化
{
    if(twoparameter(LC_TXT_STP,0x00,0x00) != 0)    // 文本显示区首地址
        return (0xff);
    twoparameter(LC_TXT_WID,0x1E,0x00);        // 文本显示区宽度
    twoparameter(LC_GRH_STP,0x00,0x00);        // 图形显示区首地址
    twoparameter(LC_GRH_WID,0x1E,0x00);        // 图形显示区宽度
    noparameter(LC_CUR_SHP | 0x01);        // 光标形状
    noparameter(LC_MOD_OR);            // 显示方式设置
     noparameter(LC_DIS_SW | 0x08);        // 显示开关设置
    
    return 0;
}




⌨️ 快捷键说明

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