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

📄 t6963c.c

📁 T6963C.c 液晶驱动程序驱动程序包括格式化输出函数
💻 C
📖 第 1 页 / 共 3 页
字号:
/*
* 文件名称: T6963C.c
* 摘    要: T6963C驱动程序
*
* 当前版本: 1.0

* 开发环境: Keil C51 V7.06
*/
#include <reg52.h>

#include "strdata.h"
#include <absacc.h>
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include <Intrins.h>
#include "ASCIIZK.H"
#include "print.h"
#include "t6963c.h"


data uchar gCurRow,gCurCol;	      // 当前行、列存储,行高16点,列宽8点


/***************************************************
* 函数介绍: 状态位STA1,STA0判断(读写指令和读写数据)
* 返回值  : 0-ERR  其它-OK!
***************************************************/
uchar fnST01(void)  
{
	uchar data i;
	for(i=10;i>0;i--)  
	{
		if((LCMCW & 0x03) == 0x03) break;
	}
	return i;	                      
}

/***************************************************
* 函数介绍: 状态位ST2判断(数据自动读状态)
* 返回值  : 0-ERR  其它-OK!
***************************************************
uchar fnST2(void)  {
  uchar i;
  for(i=10;i>0;i--)  {
    if((LCMCW & 0x04) == 0x04)  break;
  }
  return i;	                      
}*/

/***************************************************
* 函数介绍: 状态位ST3判断(数据自动写状态)
* 返回值  : 0-ERR  其它-OK!
***************************************************/
uchar fnST3(void)  {
  uchar data i;
  for(i=10;i>0;i--)  {
    if((LCMCW & 0x08) == 0x08)  break;
  }
  return i;	                      
}

/***************************************************
* 函数介绍: 状态位ST6判断(屏读/屏拷贝状态)
* 返回值  : 0-ERR  其它-OK!
***************************************************
uchar fnST6(void)  {
  uchar i;
  for(i=10;i>0;i--)  {
    if((LCMCW & 0x40) == 0x40)  break;
  }
  return i;	// 若返回零,说明错误
} */

/***************************************************
* 函数介绍: 写双参数的指令
* 输入参数: uCmd - 指令码
*           uPart1,uPart2 - 参数
* 返回值  : 0-成功  1,2,3-ERR
***************************************************/
uchar fnPR1(uchar uCmd, uchar uPar1, uchar uPar2)  
{
  if(fnST01() == 0)  return 1;
  LCMDW = uPar1;
  if(fnST01() == 0)  return 2;
  LCMDW = uPar2;
  if(fnST01() == 0)  return 3;
  LCMCW = uCmd;
  return 0;
}

/***************************************************
* 函数介绍: 写单参数的指令
* 输入参数: uCmd - 指令码
*           uPart1 - 参数
* 返回值  : 0-成功  1,2-ERR
***************************************************
uchar fnPR11(uchar uCmd,uchar uPar1)  {
  if(fnST01() == 0)  return 1;
  LCMDW = uPar1;
  if(fnST01() == 0)  return 2;
  LCMCW = uCmd;
  return 0;	
}*/

/***************************************************
* 函数介绍: 写无参数的指令
* 输入参数: uCmd - 指令码
* 返回值  : 0-成功  1-ERR
***************************************************/
uchar fnPR12(uchar uCmd)  
{
  if(fnST01() == 0)  return 1;
  LCMCW = uCmd;
  return 0;	
}

/***************************************************
* 函数介绍: 写数据
* 输入参数: uData - 数据
* 返回值  : 0-成功  1-ERR
***************************************************/
uchar fnPR13(uchar uData)  
{
  if(fnST3() == 0)  return 1;
  LCMDW = uData;
  return 0;	
}

/***************************************************
* 函数介绍: 读数据
* 返回值  : 数据
***************************************************/

uchar fnPR2(void)  
{
  if (fnST01() == 0)  return 1;
  return LCMDW;
}


/***************************************************
* 函数介绍: 设置当前地址
* 输入参数: urow - 行
*           ucol - 列
***************************************************/ 
void fnSetPos(uchar urow, uchar ucol)  
{
  uint data iPos;
  iPos = urow * 20 + ucol;
  fnPR1(LC_ADD_POS, iPos & 0xFF, iPos / 256);
  gCurRow = urow;
  gCurCol = ucol;
}

/***************************************************
* 函数介绍: 设置当前显示行、列
* 输入参数: uRow - 行
*           uCol - 列
***************************************************/ 
void cursor(uchar uRow, uchar uCol)  //cursor(uchar y, ucharx)
{
	fnSetPos(uRow*16, uCol);
}

/***************************************************
* 函数介绍: 清屏(用数据temp填充所有地址)
* 输入参数: temp - 0 时清屏
***************************************************/ 
void cls(uchar temp)  {
  uint data i;
  //ClrDog();
  fnPR1(LC_ADD_POS,0x00,0x00);        // 置地址指针
  fnPR12(LC_AUT_WR);	              // 自动写
  for (i=0; i<128*20*2; i++)  {
    fnST3();
    fnPR13(temp);	              // 写数据
  }
  fnPR12(LC_AUT_OVR);		      // 自动写结束
  
  fnPR1(LC_ADD_POS,0x00,0x00);	      // 重置地址指针
  gCurRow = 0;			      // 置地址指针存储变量
  gCurCol = 0;
}

/***************************************************
* 函数介绍: 初始化
* 返回值  : 0 - OK!
***************************************************/
char fnLCMInit(void)  
{
  LCMRST=0;
  LCMRST=1;
  if (fnPR1(LC_TXT_STP,0x00,0x00)!=0) // 文本显示区首地址
		return -1;
  fnPR1(LC_TXT_WID,0x14,0x00);	      // 文本显示区宽度
  fnPR1(LC_GRH_STP,0x00,0x00);	      // 图形显示区首地址
  fnPR1(LC_GRH_WID,0x14,0x00);	      // 图形显示区宽度
  fnPR12(LC_CUR_SHP | 0x01);	      // 光标形状
  fnPR12(LC_MOD_OR);		      // 显示方式设置

⌨️ 快捷键说明

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