📄 t6963c.c
字号:
/*
* 文件名称: 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 + -