单片机驱动彩屏的方法 点击:2727 | 回复:4



大漠触控

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 4回
  • 年度积分:0
  • 历史总积分:13
  • 注册:2004年11月17日
发表于:2009-10-06 12:41:51
楼主
        本文介绍的控制板可控制彩色TFT液晶显示屏,采用I/O连接方式,可显示256色;为提高读写速度、简化程序,显示屏中每个点影射显示缓存中的一个字节,显示屏中的行列号与缓存器的行列号一一对应,因此,只需输入行列号,便可直接读写相应点数据,不用计算点在显示缓存中的位置。可以实现单点,8点,多点重复的三种写模式。由于显示缓存采用128K SRAM,显示容量大,对于320(480)×234TFT 5寸,5.6寸,7寸点阵彩色模拟LCD,可储存1页显示内容。
适配CPU:51,96,X86,8088,Z80,MSP430 ,MEGA128,ARM7,DSP
一、接口定义:
1、CPU侧接口(双排压线)
引脚 符号 功能 备注
1 GND 0V
2 GND 液晶屏逻辑地 0V
3 VCC 液晶屏逻辑电源 5V
4 RD 读操作信号,低电平有效 IN 3.3V
5 WR 写操作信号,低电平有效 IN 3.3V
6 CS 片选信号,低电平对屏操作有效 IN 3.3V
7 RS 1---对数据通道操作,0---写命令寄存器 IN 3.3V
8 DATA0 数据总线 INOUT3.3V
9 DATA1 数据总线 INOUT3.3V
10 DATA2 数据总线 INOUT3.3V
11 DATA3 数据总线 INOUT3.3V
12 DATA4 数据总线 INOUT3.3V
13 DATA5 数据总线 INOUT3.3V
14 DATA6 数据总线 INOUT3.3V
15 DATA7 数据总线 INOUT3.3V
16 B/R 忙闲判断 OUT3.3V
本控制板有如下性能:
1、 本控制板可工作于8位数据总线模式
2、 本控制板两种写屏方式。行方向可以连续写屏,而跨行时,如果不是从行的第1个点开始,必须用设置写操作命令。
3、 本控制板的单点写周期可做到100ns,无需任何等待。对应的总线带宽是10M。
4、 连续写入时,地址自动加1,遇到行末自动跳到下一行。
5、 本控制板自带LED背光,用户不需外加背光条.
6、 因为有了8点写功能,最适合字符显示。因为有了多点写功能,最适合做图形填充。因为有单点写功能,比较适合作曲线和各种波形。
7、 利用多点写功能执行清屏操作,速度非常快,在20ms内可完成清屏操作。
16 pin双排座的PIN间距为2.54mm
2 TTL接口控制板尺寸及照片









大漠触控

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 4回
  • 年度积分:0
  • 历史总积分:13
  • 注册:2004年11月17日
发表于:2009-10-06 12:43:56
1楼

(1) CS与RS,WR,RD,DATA组合功能如下:
CS RS DATA[7:0] WR RD 功能
0 0 0x01 0 1 设置工作模式寄存器
0 1 00xXX 0 1 00-单点写,01-8点写,02-多点写
0 0 0x02 0 1 保留
0 1 X 0 1 保留
0 0 0x03 0 1 地址指向行地址寄存器
0 1 00xXX 0 1 写入行地址
0 0 0x04 0 1 地址指向列高地址寄存器
0 1 X 0 1 写入列地址的高2位
0 0 0x05 0 1 地址指向列的低地址寄存器
0 1 X 0 1 写入列地址的低8位
0 0 0x1F 0 1 地址指向数据通道
0 0 0x0E 0 1 地址指向背景色寄存器
0 1 0xXX 0 1 设置背景色寄存器的值
0 0 0x0F 0 1 地址指向前景色寄存器
0 1 0xXX 0 1 设置背景色寄存器的值
1 × × × 不选通
说明:在读写显示数据时,要保证指令寄存器的值设为0x1f,选择数据通道
对控制板的写入方式的设计,是此类控制板的关键的指标。本公司设计的这种显示数据的写入方式的控制板,非常适合用户进行字符显示,图形填充,画线制表格,曲线等操作。
256色的设置方法:
D7 D6 D5 D4 D3 D2 D1 D0
256色 R2 R1 R0 G2 G1 G0 B1 B0
256色
颜色灰度 R2、R1、R0 G2、G1、G0 B1、B0
基本颜色 最黑 000 000 00
亮蓝 000 000 11
亮绿 000 111 00
亮青 000 111 11
亮红 111 000 00
亮紫 111 000 11
亮黄 111 111 00
亮白 111 111 11
蓝色灰度 最黑 000 000 00
较暗 000 000 01
较亮 000 000 10
最亮 000 000 11
绿色灰度 最黑 000 000 00
较暗 000 001 00
… … … …
较亮 000 110 00
最亮 000 111 00
红色灰度 最黑 000 000 00
较暗 001 000 00
… … … …
较亮 110 000 00
最亮 111 000 00
1写行地址的时序
2 写列地址高位的时序
3 写列地址低位的时序
4 写显示数据进显存中的时序

对于单点写功能,1F后面跟的是需要显示的数据
对于8点写功能,1F命令后面跟的是8个BIT对应8个点。为1的BIT对应的显示数据是前景色,为0的BIT对应的点的显示数据是背景色。
对于多点写功能,1F后面跟的数据是需要重复写的点的个数,也就是规定重复写的次数.
四、应用框图
8051控制方式
16×16点阵汉字字符输入程序(51):
汉字左上角为汉字在显示屏中坐标,
;汉字字模有两种方式,如下表,以下演示程序是以第二种字模编写的。
左半字模           右半字模
第1字节 第2字节
第3字节 第4字节
… …
第31字节 第32字节
左半字模           右半字模
第1字节 第17字节
第2字节 第18字节
… …
第16字节 第32字节
根据客户的取字模式来把字符中的点阵信息显示出来。显示的时候,要用前景色去修改点阵数据中为1的BIT对应的点的显示数据。用背景色去修改点阵数据中为0的BIT的数据。
假如某个字符的第1个字节的点阵数据如下,而我们想把这个字符显示在33行,100列上(33,100)。我们把前景色设为白色(0xffh),背景色设为兰色(0x03),我们用FontData来保存字模的点阵数据.
0 0 1 0 1 1 0 0
当用户设置好工作模式寄存器1,前景色寄存器,被景色寄存器以及该字符显示位置的起始点后,就可以把这个点阵数据送给控制板了。


大漠触控

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 4回
  • 年度积分:0
  • 历史总积分:13
  • 注册:2004年11月17日
发表于:2009-10-06 12:45:44
2楼
本板的51单片机的连接方式,命令地址为
///////////////////////////////////////////////
//把数据写进数据通道,在调用写数据的函数之前,一定要保证地址指针已经设置为
//08h,否则,会写得不对
void WriteData(unsigned ch ar Wrdata)
{
//WCMD=0x1f; //送数据通道的地址
WDAT=Wrdata;
}
///////////////////////////////////////////////////////////////////////////////////////////////
///下面的程序是用来测试带图形加速功能的
///////////////////////////////////////////////
void SetReg(unsigned ch ar RegAddr,unsigned ch ar mode)
{
WCMD=RegAddr;
WDAT=mode;
}

//////////////////////////////////////////////
///////////////////////////////////////////////////////
//每次画图时,都要进行坐标的初始化
void DrawInitail(unsigned int RowStarAddr,unsigned int ColStarAddr)
{
unsigned int xdata RowTemp,ColTemp;
RowTemp=RowStarAddr;ColTemp=ColStarAddr;
WCMD=0x01;
WDAT=0x01; //00—单点写,对应的,1F数据通道后面的数据是需要显示的数据
//01—8点写,对应的,1F数据通道后面的数据对应的BIT位如果为高(1),就//用前景色代替显示,为低(0),则用背景色代替显示
//02――多点重复写,对应的1F后面的数据是重复写的次数,工程师在
//使用此功能时,敬请留意,因为只有一个直接,所以重复的次数要小于255
//且,在使用多点重复写的功能时,需要判断忙闲信号。否则容易显示不正常
WCMD=0x0f;
WDAT=FontColo; //设置8点写的前景色

WCMD=0x0e;
WDAT=BackColo; //设置8点写的背景色或多点重复写的颜色
WCMD=0x03; //送行地址的前缀命令 相当于mov dptr,#CMDAddr,mov a,#00h,movx @dptr,a,这三条汇编指令
WDAT=RowTemp; //送行地址的数值

WCMD=0x04; //送列地址的高2位的前缀命令寄存器
WDAT= ColTemp>>8; //送列地址的高2位

WCMD=0x05; //送列的低8位地址的前缀命令
WDAT=ColTemp; //送列的低8位地址

WCMD=0x1f; //送数据通道的地址

}


/////////////////////////////////////////////////////////////////////
//下面的函数可以根据入口参数的不同,分别实现单点写清屏,8点写清屏,多点写清屏的功能
//敬请开发工程师仔细阅读,谢谢!在阅读的时候,请结合DEMO程序中C代码的相关部分以增加//您对单点,8点,多点写功能的了解。
//这个函数可以实现单点,8点,多点写
//单点写的时候,DispDat就是要显示的数据
//8点写的时候,DispDat的一个BIT对应一个像素点,如果该BIT为1,则用前景色代替,如果该BIT为0,则用背景色代替
//多点重复写的时候,DispDat的含义是重复的次数,多点重复写的时候,重复的次数不能大于255次
//多点重复写的时候,使用默认的背景色来重复的写,这点,编程人员前留意
void ClearScreen_nDot(unsigned ch ar DispDat,unsigned ch ar color,BackColo,
unsigned ch ar WrMode)
{
unsigned ch ar i;
unsigned int xdata j;

//IE &= 0x67; //禁止中断

if(WrMode==0) //单点写操作
{
DrawInitail(0,0);

for(i=0;i<234;i++)
{
for(j=0;j<LcdWidth;j++)
{
WDAT=DispDat;
}

}
}
else if(WrMode==1) //8点写操作
{
DrawInitail_8Dot(0,0,color,BackColo);//8点写操作,


for(i=0;i<234;i++)
{
DrawInitail_8Dot(i,0,color,BackColo);
for(j=0;j<ColoStep;j++)
WDAT=DispDat;
}
}
else if(WrMode==2) //多点重复写操作
{
// DrawInitail_Wrmode(0,0,color,BackColo,0x02); //在清屏操作中,每行按两次写,就是每次重复160个点或240个点

for(i=0;i<234;i++)
{
DrawInitail_Wrmode(i,0,color,BackColo,0x02);
WDAT=DispDat;
while (o_B_R); //如果忙闲信号是高电平,则等待
WDAT=DispDat;
while (o_B_R); //如果忙闲信号是高电平,则等待
//DispDat在这里的含义是重复N次,
}
}

//IE |= 0x98; //打开中断
}
本控制板提供有可提供参考源程序。如果你有什么意见和建议,请email给我们,我们将尽量满足您的要求。联系:lcdcar@126.com 或QQ:79251955.或直接致电0755 25768616与王生沟通。

KLSLM

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:12
  • 注册:2009年5月06日
发表于:2010-12-26 17:20:10
3楼
有没有具体一点的汇编语言的单片机彩屏程序,请发我邮箱KLS-LM@163.com.小的有胜感激

wqlcd_911

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 16回
  • 年度积分:0
  • 历史总积分:194
  • 注册:2010年1月25日
发表于:2010-12-28 17:41:29
4楼

51单片机控制彩色LCD的最佳方案
单片机可以通过发送简单的指令控制智能彩色显示器显示图
片(BMP,JPEG),中英文字符,画圆画直线等等. 是用单片机做人机界
面理想的选择,是单片机控制彩色大LCD的最佳选择。
有5.6寸,8寸,10.4寸,带触摸屏。
详情留意:wqlcd.com/new/product_list.asp

在线咨询:  QQ:800005447

TEL: 020-32206882


热门招聘
相关主题

官方公众号

智造工程师