微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > t6963c驱动程序-驱动代码

t6963c驱动程序-驱动代码

时间:04-25 来源:互联网 点击:

t6963c驱动程序-驱动代码,T6963C液晶显示控制器多用于小规模的液晶显示器件,常被装配在图形液晶显示模块上,以内
藏控制器型图形液晶显示模块的形式出现。

评:系转载,液晶控制器T6963的C语言驱动程序,T6963应用广泛,特别是240×128的液晶基本上都是用这个芯片。

#include "absacc.h"
#include "math.h"
#include "ASCII816.h" //字符点阵库 0x20--0x7F
#include "HZTable.h" //汉字点阵库(自做)
#include "menu.h" //汉字点阵库(自做)

//set following data by user according to LCD
#define ComPort 0xB101
#define DataPort 0xB000
#define GraphAddr 0x0000 //head of graph

//以8*8字符计算,显示屏横向、纵向可以显示的字符个数
//以240*128为例:
#define LineChar 30 //一行16个字符(8*8)
#define ColumnChar 16 //总共16列


//指令,数据 读写状态检查
#define RWCheck() { unsigned char sta; do{ sta=XBYTE[ComPort] 0x03; } while(sta!=0x03); }
//数据自动读 状态检查
#define AutoRCheck() { unsigned char sta; do{ sta=XBYTE[ComPort] 0x04; } while(sta!=0x04); }
//数据自动写 状态检查
#define AutoWCheck() { unsigned char sta; do{ sta=XBYTE[ComPort] 0x08; } while(sta!=0x08); }

/*------输入/出函数,与T6963通讯------------------------------------------------*/
/*------------------------------------------------------------------------*/

// 向数据口发Data
#define OutPortData(dat ) { RWCheck(); XBYTE[DataPort]=dat; }

//写有 1 个参数命令
#define OutPortCom1(command) { RWCheck(); XBYTE[ComPort]= command; }

//写有 2 个参数命令
#define OutPortCom2(dat, command) { OutPortData(dat); OutPortCom1(command); }

//写有 3 个参数命令
#define OutPortCom3(data1, data2, command) { OutPortData(data1); OutPortData(data2); OutPortCom1(command);}


unsigned char InPortData() { RWCheck(); return(XBYTE[DataPort]); }

/*-----------------------------------------------------------------------------------*/
//显示8*16字符
//lin:行(0-7), column: 列(0-15)
//ch:字符代码(标准ASCII码)
void ShowChar(unsigned char lin,unsigned char column,unsigned char ch)
{
unsigned char i;
unsigned char dat;
unsigned int StartAddr;

StartAddr=lin*LineChar +column; //定位起始行

for(i=0;i16;i++)
{
dat=ASCII816[ ch-0x20 ][i];
OutPortCom3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8), 0x24); //set address
OutPortCom2( dat, 0xc4);

StartAddr=StartAddr + LineChar;
}
}

/*----------------------------------------------------------------------------------------------*/
//显示一个汉字(16*16点阵)
//lin:行(0-7), column: 列(0-7)
//hzcode: 汉字代码(自定义的)
void ShowHZ(unsigned char lin,unsigned char column,unsigned int hzcode)
{
unsigned char i;
unsigned int StartAddr;

StartAddr=lin*LineChar + column; //定位起始行

for(i=0;i16;i++)
{
OutPortCom3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8), 0x24);
OutPortCom2( HZTable[hzcode][i*2], 0xc0); //左半部 地址加一
OutPortCom2( HZTable[hzcode][i*2+1], 0xc4); //右半部 字模地址加一

StartAddr=StartAddr + LineChar;
}
}
/////////////////////////////////////////////////////////////////////////////////////////////
//显示一个汉字(16*16点阵)
//lin:行(0-7), column: 列(0-7)
//hzcode: 汉字代码(自定义的)
void ShowHZD(unsigned char lin,unsigned char column,unsigned int hzcode)
{
unsigned char i,j;
unsigned int StartAddr;

StartAddr=lin*LineChar*16 +column; //定位起始行

for(i=0;i35;i++)
{
OutPortCom3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8), 0x24); //定位当前操作位置
for(j=0;j5;j++) OutPortCom2( HZTable[hzcode][i*5+j], 0xc0); //显示当前一行

StartAddr=StartAddr + LineChar;
}
}

////////////////////////////////////////////////////////////////////////////////////////////
/*-----------------------------------------------------------------------------------*/
//显示一行字符串(汉字,字母混排,一行16字节)
//lin:行
//lineheadaddr: 此行汉字代码区首地址
void ShowLine(unsigned char lin,unsigned char column,unsigned char linehead[])
{
unsigned char i,j;
unsigned char byte;
unsigned int hzcode;

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top