📄 t6963c.c
字号:
#include <AT89X52.h>
#include "t6963c.h"
#include "fangkuai.h"
#include "typedef.h"
static uint txthome=0x0000;
static uint grshome=0x1000;
//LCD接口定义
sfr PORTD = 0x90 ;
sbit PCD = P2^7 ;
sbit PWR = P2^5 ;
sbit PRD = P2^6 ;
//常量数据
unsigned char code CCTable[] = {
/*冯 CB7EB */
0x00,0x47,0x20,0x29,0x09,0x09,0x11,0x13,0x21,0xE0,0x2F,0x20,0x20,0x20,0x20,0x20,
0x00,0xF8,0x08,0x08,0x10,0x10,0x10,0xFC,0x04,0x04,0xF4,0x04,0x04,0x04,0x28,0x10,
/*燕 CD1E0 */
0x04,0x04,0xFF,0x04,0x17,0x10,0xF7,0x14,0x34,0xD7,0x00,0x28,0x24,0x66,0xC2,0x00,
0x40,0x40,0xFE,0x40,0xC0,0x14,0xDE,0x50,0x52,0xCE,0x00,0x88,0x44,0x66,0x22,0x00,
/*辉 CBBD4 */
0x10,0x13,0x96,0x58,0x51,0xFE,0x28,0x28,0x29,0x28,0x28,0x2B,0x4C,0x48,0x80,0x00,
0x00,0xFE,0x44,0x40,0xFC,0x40,0xA0,0xA0,0xFC,0x20,0x20,0xFE,0x20,0x20,0x20,0x20,
/*制 CD6C6 */
0x24,0x34,0x24,0x3F,0x44,0x04,0x7F,0x04,0x3F,0x24,0x24,0x24,0x24,0x27,0x05,0x04,
0x04,0x04,0x24,0xA4,0x24,0x24,0xA4,0x24,0xA4,0xA4,0xA4,0xA4,0x84,0x84,0x14,0x08,
/*作 CD7F7 */
0x08,0x0C,0x09,0x13,0x12,0x34,0x50,0x90,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
0x80,0x80,0x00,0xFE,0x80,0x88,0xFC,0x80,0x80,0x84,0xFE,0x80,0x80,0x80,0x80,0x80,
/*得 CB5C3 */
0x13,0x1A,0x23,0x4A,0x8B,0x10,0x13,0x30,0x50,0x97,0x10,0x11,0x11,0x11,0x10,0x10,
0xF8,0x08,0xF8,0x08,0xF8,0x00,0xFE,0x10,0x10,0xFE,0x10,0x10,0x10,0x10,0x50,0x20,
/*分 CB7D6 */
0x08,0x0C,0x08,0x10,0x10,0x20,0x40,0x9F,0x04,0x04,0x04,0x04,0x08,0x10,0x20,0x40,
0x80,0x80,0x40,0x20,0x30,0x18,0x0E,0xE4,0x20,0x20,0x20,0x20,0x20,0xA0,0x40,0x00,
/*等 CB5C8 */
0x20,0x3E,0x28,0x45,0x85,0x3F,0x01,0xFF,0x00,0x00,0x7F,0x04,0x02,0x02,0x00,0x00,
0x80,0xFC,0xA0,0x10,0x10,0xF8,0x00,0xFE,0x20,0x20,0xFC,0x20,0x20,0x20,0xA0,0x40,
/*级 CBCB6 */
0x10,0x13,0x20,0x24,0x44,0xF8,0x10,0x21,0x7D,0x41,0x02,0x1A,0xE4,0x08,0x11,0x06,
0x00,0xF8,0x88,0x88,0x90,0x90,0xBE,0x44,0x44,0x48,0x28,0x10,0x30,0x48,0x8E,0x04,
/*按 CB0B4 */
0x10,0x10,0x10,0x13,0xFE,0x10,0x14,0x1B,0x30,0xD1,0x11,0x10,0x10,0x11,0x56,0x20,
0x40,0x20,0x20,0xFE,0x04,0x40,0x40,0xFE,0x88,0x10,0x90,0x60,0x58,0x8E,0x04,0x00,
/*开 CBFAA */
0x00,0x7F,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x08,0x08,0x10,0x20,0x40,0x00,
0x00,0xFE,0x20,0x20,0x20,0x20,0xFE,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
/*始 CCABC */
0x10,0x18,0x10,0x10,0xFC,0x25,0x24,0x44,0x44,0x28,0x18,0x14,0x22,0x42,0x80,0x00,
0x20,0x30,0x20,0x48,0x84,0xFE,0x84,0x00,0xFC,0x84,0x84,0x84,0x84,0xFC,0x84,0x00,
/*太 CCCAB */
0x01,0x01,0x01,0x01,0x7F,0x01,0x01,0x01,0x02,0x02,0x04,0x05,0x08,0x10,0x20,0x40,
0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x98,0xCC,0x86,0x04,
/*棒 CB0F4 */
0x20,0x20,0x27,0x20,0xFB,0x20,0x77,0x69,0xA2,0xAD,0x20,0x27,0x20,0x20,0x20,0x20,
0x40,0x40,0xFC,0x40,0xF8,0x80,0xFE,0x20,0x58,0xF6,0x40,0xFC,0x40,0x40,0x40,0x40,
/*了 CC1CB */
0x00,0x7F,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x05,0x02,
0x00,0xFC,0x18,0x60,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*! CA3A1 */
0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x10,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
/////////////////////////底层调用小函数/////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//延时几微秒
void delay(void)
{
uchar i=0;
i++;
i++;
}
//读状态位0和1,sta0=1:指令读写状态准备好;sta1=1:数据读写状态准备好
void ST01Read(void)
{
PORTD=0XFF;
while(1){
PCD=1;
PRD=0;
PRD=1;
if ((PORTD^0==1)&&(PORTD^1==1)) break; //判断指令、数据读写状态是否准备好
}
}
//读状态位sta2, 检测数据自动 读 状态是否准备好
static void ST2Read(void)
{
PORTD=0XFF;
while(1){
PCD=1;
PRD=0;
PRD=1;
if (PORTD^2==1) break;
}
}
//读状态位sta3, sta3=1:数据自动 写 状态准备好
static void ST3Read(void){
PORTD=0XFF;
while(1)
{
PCD=1;
PRD=0;
PRD=1;
if (PORTD^3==1) break;
}
}
//读状态位sta6, 检测屏读或屏拷贝出错状态:sta6=1:出错;sta6=0:正确
static void ST6Read(void)
{
PORTD=0XFF;
while(1)
{
PCD=1;
PRD=0;
PRD=1;
if (PORTD^6==0) break;
}
}
//////////////////////////////////对T6963C进行读写数据/////////////////////////////////
//写数据
static void WRData(uchar DData)
{
ST01Read();
PCD=0;
PORTD=DData;
PWR=0;
PWR=1;
}
///读数据
static void RDData(void)
{
ST01Read();
PCD=0;
PRD=0;
PRD=1;
}
//写命令
static void WRCommand(uchar command)
{
ST01Read();
PCD=1;
PWR=0;
PORTD=command;
PWR=1;
}
//单参数指令
static void WRCommandOne(uchar data1,uchar command)
{
WRData(data1); //写数据
WRCommand(command); //写命令
}
//双参数指令
static void WRCommandTwo(uchar data1,uchar data2,uchar command)
{
WRData(data1); //写数据
WRData(data2); //写数据
WRCommand(command); //写命令
}
////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////T6963C常用处理程序/////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
//初始化T6963 LCD 显示
void Init_LCD_Graphic(void)
{
//设置文本显示首地址
WRCommandTwo(0x00,0x00,0x40);
//设置文本显示区宽度 40字节
WRCommandTwo(0x10,0x00,0x41);
//设置图形显示区首地址
WRCommandTwo(0x00,0x10,0x42); //首地址0x0800
//设置图形显示区宽度
WRCommandTwo(0x10,0x00,0x43); //40字节
//设置CGRAM的首地址
WRCommandTwo(0x03,0x00,0x22);
//设置显示方式
WRCommand(0x80); //启用内部字符发生器,显示方式是文本与图形逻辑或
//设置显示状态
WRCommand(0x9f); //启用光标闪烁、光标显示、文本显示、图形显示
}
//清显示RAM
void ClrGraphic(void){
uint i;
//设置显示地址
WRCommandTwo(0x00,0x00,0x24);
//进入自动写方式
WRCommand(0xb0);
//清8KRAM
for(i=0;i<256;i++){
WRData(0x00);
}
//退出自动写方式
WRCommand(0xb2);
}
/////////////////////////////////////////////////////////////////////////
//***********************************************************************
//= 函数原型: void char_addr_Pointer_Set(uchar x, uchar y)
//= 功 能: 根据字符的行列设置vram地址
//= 参 数: x行坐标,y列坐标
//= 返 回 值:
//= 函数性质:私有函数
//***********************************************************************
void char_addr_Pointer_Set(uchar x, uchar y)
{
uint iPos;
uint temp;
iPos = y * 16 + x + txthome;
temp=iPos;
y=iPos>>8;
x=temp&0x00ff;
WRCommandTwo(x,y,0x24);
}
//************************************************************************
//= 函数原型: void image_addr_Pointer_Set(uchar x, uchar y)
//= 功 能: 根据的行列设置图形字节的地址
//= 参 数:
//= 返 回 值:
//= 函数性质:私有函数
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -