t6963c驱动程序-驱动代码

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;i>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;i>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;i>8), 0x24); //定位当前操作位置
for(j=0;j<5;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;
for( i= column,j=0; i< column+14 ; )
{ byte=linehead[j];
if(byte = 0x80(汉字)
{
byte=byte & 0x7f; //最高位置0,即:减去0x8000
hzcode=byte*256 + linehead[j+1]; //加低8位,组合成整型数地址
showhz( lin,i,hzcode);
i=i+2;j=j+2;
}
}
}
/*-----------------------------------------------------------------------------------*/
//显示一屏汉字
//pageheadaddr:此屏汉字代码地址区首地址
void showpage(unsigned char lin,unsigned char column1,unsigned char pagehead[][14])
{
unsigned char i;
for(i=0;i8), 0x24); //set address
outportcom1( 0xc5 ); //数据一次读,地址不变
dat=inportdata(); //读入数据
dat=~dat; //取反
outportcom2( dat, 0xc4); //送回
startaddr=startaddr+ linechar;
}
}
/*----------------------------------------------------------------------------------------------------*/
//反显一个汉字
//lin:行(0-7), column: 列(0-15)
void reverseshowhz(unsigned char lin,unsigned char column)
{
reverseshowchar(lin,column);
reverseshowchar(lin,column+1);
}
/*----------------------------------------------------------------------------------------------------*/
//反显一行汉字
//lin:行(0-7)
void reverseshowline(unsigned char lin)
{
unsigned char column;
for(column=0; column< columnchar; column++) reverseshowchar(lin,column);
}
//////////////////////////////////////////////////////////////////////////////////////
void showpicture(unsigned char startline,unsigned char startcolumn,unsigned char linewidth,unsigned char columnwidth,unsigned int address)
{
unsigned char i,j;
unsigned int startaddr;
startaddr=startline*linechar + startcolumn; //定位起始位置
for(i=0;i>8), 0x24); //set address
for(j=0;j>8),0x24 ); //设置该点所在单元地址
outportcom1(dat);
}
//-------------------------------------------------------------------------------
//划线函数
void line( unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, bit mode)
{
unsigned char x,y;
double k,b;
if( abs(y1-y2) <= abs(x1-x2) ) // k <=1
{
k=(float)(y2-y1) / (float)(x2-x1) ;
b=y1-k*x1;
if( x1 <= x2 )
{
for(x=x1;x1
{
k=(float)(x2-x1) / (float)(y2-y1) ;
b=x1-k*y1;
if( y1 <= y2 )
{
for(y=y1;y<=y2;y++)
{ x=k*y+b;
pixel( x , y,mode );
}
}
else
{
for(y=y2;y<=y1;y++)
{ x=k*y+b;
pixel( x , y,mode );
}
}
}
}
/*--------------------------------------------------------------------------------------*/
void clearscreen()
{
unsigned int i;
///////// 清显示 ram 区 0000h--2000h (8k)
outportcom3(0x00,0x00,0x24); //设置指针地址0000h
outportcom1(0xb0); //设置自动写状态
for(i=0x00;i<0x2000;i++) outportdata(0x00); // data=0;
outportcom1(0xb2); // 自动写结束
}
//初始化lcd
//需要手动设置
void initlcd()
{
outportcom3( 0x00,0x00,0x42 ); //设置图形显示区域首地址graphaddr
outportcom3( 30,0x00,0x43 ); //设置图形显示区域宽度 : linechar
// outportcom3( 0x00,0x00,0x42 ); //设置图形显示区域首地址graphaddr
// outportcom3( 0x10,0x00,0x43); //设置图形显示区域宽度:10h
outportcom1(0xa7); //设置光标形状 cursor size 8x8
outportcom1(0x80); //设置显示方式: cgrom方式 文本\图形 或
outportcom1(0x98); //设置显示开关: 1001 1100 图形
clearscreen();
}
t6963c 引脚说明
t6963c 的qfd 封装共有67 个引脚,各引脚说明如下:
1、d0-d7:t6963c 与mpu 接口的数据总线,三态。
2、rd,wr:读.写选通信号,低电平有效,输入信号。
3、ce:t6963c 的片选信号,低电平有效。
4、c/d:通道选择信号,1 为指令通道,0 为数据通道。
5、reset,halt:reset 为低电平有效的复位信号,它将行、列计数器和显示寄存器清零,
关显示;halt 具有reset 的基本功能,还将中止内部时钟振荡器的工作,以保护液晶显示器件。
以上引脚为t6963c 与mpu 接口的引脚,时序关系符合8080 系列时序。
6、ual,sdsel:
dual=1 为单屏结构,dual=0 为双屏结构;
sdsel=0 为一位串行数据传输方式,sdsel=0 为2 位并行数据传输方式。
7、md2,md3:设置显示窗口长度,从而确定了列数据传输个数的最大值8、mds,md1,md0:设置显示窗口宽度(行),从而确定t6963c 的帧扫信号的时序和显示
驱动的占比系数
9、s1,fs0:显示字符的字体选择。
fs1 1 1 0 0
fs0 1 0 1 0
字体 5×8 6×8 7×8 8×8
10、x1、x0:振荡时钟引脚。
11、ad0-15:输出信号,显示缓冲区16 位地址总路线。
12、d0-7:三态,显示缓冲区8 位数据总路线。
13、r/w:输出,显示缓冲区读/写控制信号。
14、ce:输出,显示缓冲区片选信号,低电平有效。
15、ce0,ce1:输出,dual=1 时的存储器片选信号。
16、t1、t2、ch1,ch2:用来检测t6963c 工作使用情况,t1,t2 作为测试信号输入端,ch1,
点阵图形液晶显示模块t6963c 控制器使用手册 syntopstart 北京信通时代科技有限公司
6
ch2 作为输出端。
17、hod,hscp,lod lscp(ce1),ed lp,cdata,fr 为t6963c 驱动部分信号,
我们可以不作太多了解.

拥有3D组件主体的PCB设计
自控仪表从功能角度可分为哪些
听说小米6和小米平板3齐发才会更配哟!
明纬电源——178.5~240W恒流型LED驱动器(ELG-240-C系列)
科学家新发现:碳纳米管产生大电流(新型发电方式)
t6963c驱动程序-驱动代码
LED显示屏的日常如何去保养
华为上线Eyewear II智能眼镜,支持无线充电和播放音乐
分布式光伏站远程监控组网方案
巧用差分探头,轻松测量差分信号纹波
A1-07触摸屏失效故障的维修方案介绍
尼康全画幅微单Z6评测 主打的还是全面性
紧追风口的创业者:未来的芯片是什么样
精诚达电路:去年FPC产值突破5亿元人民币!
OTL功率放大器电路图大全(六款OTL功率放大器电路设计原理图详解)
全国携号转网服务已经正式启动
不会用Pico示波器怎么办?TG课程体系介绍 2022 秋季版来了!
ADI推出AD9434和AD9484低功耗12位1.8V新型数据转换器
2009中国电动车行业年会暨电动车产业市场峰会
不同平台满足FPGA多样化应用需求