液晶显示技术T6963C的使用C语言_第1页
液晶显示技术T6963C的使用C语言_第2页
液晶显示技术T6963C的使用C语言_第3页
液晶显示技术T6963C的使用C语言_第4页
液晶显示技术T6963C的使用C语言_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、T6963C的使用(C语言)内置T6963C的128×128图形液晶显示模块从图1我们可以看出:(1)偏压电路的设计液晶显示驱动电源采用了1/13偏压电路(),电阻R1R5组成了分压电路,其中:R1=R2=R4=R5=R,R3的值为()R。驱动负电源由接口V0提供。(2)驱动电路的组成在液晶显示驱动控制系统中,由两片T6A39列驱动器和两片T6A40行驱动器组成驱动电路。(3)T6963C工作参数的设置T6963C的工作参数设置如下:/DUAL=1 单屏结构SDSEL=0 一位串行数据传输MDS=1、MDl=MD0=0 N=16即1/128占空比系数MD2=MD3=1 M=32即25

2、6点列/行FS0=0 通过计算机选择6×8点阵字体或8×8点阵字体(4)晶振频率选择根据T6963的设置参数可以求得:Fosc= FR×64×2×M×N =60×64×2×32×16=3.932MHz。通过查表6-32也可以得到频率值,大小也为3.932MHz。这个时候,选用4MHz的晶振。(5)显示存储器显示存储器为8K字节容量,存储器芯片为6264或其它SRAM。图1 内置T6963C的128×128图形液晶显示模块的电原理图内置T6963C控制器的液晶显示模块的接口技术内置T69

3、63C控制器的液晶显示模块与计算机的接口时序为Inter8080时序。本节以常用的单片机AT89C51为实验样机,以模块128128为显示样片叙述计算机与内置T6963C控制器的液晶显示模块的接口技术。1 直接访问方式直接访问方式是把内置T6963C控制器的液晶显示模块作为存储器或I/O设备直接挂在计算机的总线上。模块的数据线接计算机的数据总线上,片选及寄存器选择信号线由计算机的地址总线提供,读和写操作由计算机的读写操作信号控制。计算机直接访问方式下与内置T6963C控制器的液晶显示模块的实用接口电路如图1所示。图1 直接访问方式下接口电路图上图所示的电路,对于完成液晶显示模块的显示来说,所用

4、的硬件是相对比较少的,但是如果计算机需要进行扩展的话,使用上图的话不是很经济(浪费了太多的地址空间)。这个时候,可以考虑使用全地址译码或者部分地址译码的方式。在上图所示的电路中:8位数据总线与AT89C51的数据总线连接地址线A15作为模块操作的片选线地址线A14作为模块的寄存器选择线C/D这样就确定了AT89C51操作字符型液晶显示模块的唯一地址选择。图中的电位器为V0提供了可调的驱动电压,用以实现显示对比度的调节。以下将给出直接访问方式的驱动程序。(1)地址定义#include <reg51.h>#include <stdio.h>#include <intr

5、ins.h>#define uchar unsigned char#define uint unsigned int#define nop() _nop_()xdata uchar CmdADD _at_ 0xC000;xdata uchar DatADD _at_ 0x8000; #define STA0 0#define STA1 1#define STA2 2#define STA3 3#define STA6 6(2)读状态字与状态判断uchar ReadST(uchar Status) uchar temp; temp=CmdADD; switch(status) case 0

6、: temp&=0x01; /*屏蔽其余位*/ break; case 1: temp&=0x02; /*屏蔽其余位*/ break; case 2: temp&=0x04; /*屏蔽其余位*/ break; case 3: temp&=0x08; /*屏蔽其余位*/ break; case 6: temp&=0x40; /*屏蔽其余位*/ break; default:break; return temp;(3)写指令和写数据/*写入一个字节的数据*/void WrDat(uchar dat) while(ReadST(STA1)=0x00) DatA

7、DD=dat;/*写入无参数的命令*/void WrCom1(uchar cmd) while(ReadST(STA0)=0x00) CmdADD=cmd;/*写入带一个参数的命令*/void WrCom2(uchar dat,cmd) WrDat(dat); Com1(cmd);/*写入带两个参数的命令*/void WrCom3(uchar dat1,dat2,cmd) WrDat(dat1); WrDat(dat2); WrCom1(cmd);(4)读数据uchar RdDat(void) uchar temp; while(ReadST(STA1)=0x00) temp=DatADD;

8、return temp;2 间接控制方式间接控制方式是将内置T6963C控制器的液晶显示模块与计算机系统中的某个并行I/O接口连接,计算机通过对该I/O接口的操作间接的实现对模块的控制。本文以AT89C51的P1和P2接口为并行接口与字符型液晶显示模块连接,图2给出了本文推荐的实用接口电路。图2 间接控制方式下的接口电路图图中的电位器为V0提供了可调的驱动电压,用以实现显示对比度的调节。在编制驱动函数的时候,要注意时序的配合,根据Intel8080时序的规范,间接控制方式通过软件执行产生操作时序,所以在时间上是足够满足要求的。因此间接控制方式能够实现高速计算机与字符型液晶显示模块的连接。(1)

9、接口定义#include <reg51.h>#include <stdio.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define nop() _nop_()#define STA0 0#define STA1 1#define STA2 2#define STA3 3#define STA6 6sbit CD=P27;sbit CE=P26;sbit RD=P25;sbit WR=P24;(2)读状态字与状态判断uchar ReadST(uchar

10、Status) uchar temp; CE=0; P1=0xFF; CD=1; RD=0; temp=P1; RD=1; switch(status) case 0: temp&=0x01; /*屏蔽其余位*/ break; case 1: temp&=0x02; /*屏蔽其余位*/ break; case 2: temp&=0x04; /*屏蔽其余位*/ break; case 3: temp&=0x08; /*屏蔽其余位*/ break; case 6: temp&=0x40; /*屏蔽其余位*/ break; default:break; ret

11、urn temp;(3)写指令和写数据/*写入一个字节的数据*/void WrDat(uchar dat) while(ReadST(STA1)=0x00) CD=0; P1=dat; WR=0; WR=1;/*写入无参数的命令*/void WrCom1(uchar cmd) while(ReadST(STA0)=0x00) CD=1; P1=dat; WR=0; WR=1;/*写入带一个参数的命令*/void WrCom2(uchar dat,cmd) WrDat(dat); Com1(cmd);/*写入带两个参数的命令*/void WrCom3(uchar dat1,dat2,cmd) W

12、rDat(dat1); WrDat(dat2); WrCom1(cmd);(4)读数据uchar RdDat(void) uchar temp; while(ReadST(STA1)=0x00) CD=0; P1=0xFF; RD=0; temp=P1; RD=1; return temp;内置T6963C控制器型图形液晶显示模块的应用软件内置T6963C图形液晶显示模块的应用是随应用系统的性质而定,本节将提供一些实用程序并作为示例进一步对T6963C指令的应用作一说明。接口电路为图2和图3所示的实用电路,驱动程序也为上一节所提供的。使用的液晶显示模块的样机的电原理图为图6-66所示的128&

13、#215;128图形点阵的原理图,供使用者参考。1 初始化设置初始化设置主要是对显示区域的设置和显示方式的设置。这个程序只需在主程序对系统初始化时调用一次就可以了,除非要在应用中需要改变设置。是为了计算地址的方便,设置显示区域的宽度为10H,即16个字节(128/8=16)。初始化子程序通常在主程序开始时调用。void Init(void) WrCom3(0x00,0x00,0x40); WrCom3(0x10,0x00,0x41); WrCom3(0x00,0x08,0x42); WrCom3(0x10,0x00,0x43); WrCom1(0xA7); WrCom1(0x80); WrCo

14、m1(0x9C);2 清显示存储器该子程序对显示存储器完全清零,不分显示区域性质。所以在初始化时使用和在全显示存储器需要清零时使用。void ClearLCD(void) uint temp; WrCom3(0x00,0x00,0x24); WrCom1(0xB0); for(temp=0;temp<8192;temp+) while(ReadST(STA3)=0x00) WrDat(0x00); WrCom1(0xB2);3 建立CGRAM该程序是在内部CGROM有效时建立CGRAM的子程序,所以使用的字符代码是从80H开始的。一般在建立CGRAM的时候,把CGRAM定义在SRAM的最

15、后面的一段地址空间内,在本段代码中,因为CGROM有效,所以只能定义128个CGRAM,占用的空间为1KB,地址空间为1C00H1FFFH。这个时候,可以看出起始地址的偏置地址值与字符代码值的大小如下:ad15ad14ad13ad12ad11ad10ad9ad8ad7ad6ad5ad4ad3ad2ad1ad00001110000000000偏置地址值为03H;字符代码从80H开始。void WrCGRAM(uchar count,*tab) uint temp,counttemp; counttemp=count<<3; WrCom3(0x03,0x00,0x22); WrCom3

16、(0x00,0x1C,0x24); WrCom1(0xB0); for(temp=0;temp<counttemp;temp+) while(ReadST(STA3)=0x00) WrDat(*(tab+temp); WrCom1(0xB2);4 西文字符写入(文本属性显示方式的应用)非文本属性显示方式的西文字符写入非常简单,先设置显示地址指针(24H),再写入字符代码即可。所以这里就不再举例说明了。该程序使用了字符代码和字符显示属性两个参数。将图形显示区域作为文本属性区。在写入字符代码后将字符的属性参数写入相应的属性区内。注意观察不同属性的显示效果。/字模,属性,列,行void WrT

17、XT(uchar code,pred,o_x,o_y) uchar temp,addr1,addr2; uint addr; addr=o_y<<4+o_x; addr1=addr; addr2=addr>>8; WrCom3(addr1,addr2,0x24); WrCom2(code,0xC4); addr2+=8; WrCom3(addr1,addr2,0x24); WrCom2(pred,0xC4);uchar code TXTTAB=0x28,0x45,0x4C,0x4C,0x4F,0x00,0x37,0x4F,0x52,0x4C,0x44;void Disp

18、TXT(void) uchar temp1,temp2; WrCom1(0x84); WrCom1(0x9F); WrCom3(8,1,0x21); for(temp1=0;temp1<13;temp1+) for(temp2=0;temp1<11;temp2+) WrTXT(*(TXTTAB+temp2),temp1,temp2,1); Delayms(200); 5 汉字写入(图形方式)在图形方式下显示汉字是比较常用的方法。汉字库作在程序区内,按排序定义各汉字的代码。写入汉字字模如同写入图形数据一般,这里提供单字节汉字代码使用的汉字写入子程序。在这个程序段中,将128×

19、;128的液晶显示屏分成了8行8列共64个16×16的显示区域,每个区域显示一个汉字。/显示汉字,某行某列/这个函数将128×128分为8行8列共64个区域,每个对应一个16×16点阵的汉字/字模数组,列,行,字模void WrCC(uchar *zimo,o_x,o_y,uint code) uchar i,addr1,addr2; uint addr; addr=o_y<<8+o_x<<2; addr1=addr; addr2=addr>>8; code<<=5; for(i=0;i<16;i+) WrCo

20、m3(addr1+i*16,8+addr2,0x24); WrCom2(*(zimo+code),0xC0); code+; WrCom2(*(zimo+code),0xC4); code+; uchar code CCTAB=/*- 文字: 液 代码“0x00”*/0x40,0x40,0x20,0x20,0x27,0xFE,0x09,0x20,0x89,0x20,0x52,0x7C,0x52,0x44,0x16,0xA8,0x2B,0x98,0x22,0x50,0xE2,0x20,0x22,0x30,0x22,0x50,0x22,0x88,0x23,0x0E,0x22,0x04,/*- 文字

21、: 晶 代码“0x01”*/0x00,0x00,0x0F,0xF0,0x08,0x10,0x0F,0xF0,0x08,0x10,0x0F,0xF0,0x08,0x10,0x00,0x00,0x7E,0x7E,0x42,0x42,0x7E,0x7E,0x42,0x42,0x42,0x42,0x7E,0x7E,0x42,0x42,0x00,0x00,/*- 文字: 显 代码“0x02”*/0x00,0x00,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x04,0x40,0x04,0x40,0x44,0x48,0x24,0x48,0x14,0

22、x50,0x14,0x60,0x04,0x40,0xFF,0xFE,0x00,0x00,0x00,0x00,/*- 文字: 示 代码“0x03”*/0x00,0x00,0x1F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x01,0x00,0x01,0x00,0x11,0x20,0x11,0x10,0x21,0x08,0x41,0x0C,0x81,0x04,0x01,0x00,0x05,0x00,0x02,0x00,;6 屏读演示程序段屏读操作是依据T6963C引脚MD3,MD2设置的显示窗口长度参数操作的。在128128液晶显示模块上显示窗长度设置为256点,即32个字节长,所以在应用屏读操作时,要设置文本区和图形区的宽度与引脚设置参数相等才能正确的使用。这样做图形区的地址与文本区的地址才能对应起来。下面提供的演示程序是将在文本显示下的“H”和“C”屏读写入相应的图形区中,然后关文本显示以观看显示效果这两个字符依然存在。uchar LCDRdData8; void LCDRead(uchar o_x,o_y) uchar te

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论