某宝上有安装好的套件出售,已经搭建好液晶屏,单片机,以及供调试用的电脑借口。
有点卖家配有资料。如果购买,注意询问液晶屏,单片机等规格,型号,性能是否符合要求,或者参看相关论坛的经验,使用心得。
电脑桌面显示方向是可以自己设置的,竖屏变横屏的话,你可以按照下面 *** 作来设置:
1在电脑桌面上点击右键,然后选择屏幕分辨率选项:
2进入界面后点击方向选择下拉菜单:
3点开下拉菜单后选择纵向后,点击确定就可以了!
根据液晶显示器件的写入机理以及显示像素电极的排布方式就可以确定对其进行驱动的基本条件了。液晶显示器件的种类很多,所以驱动的方法也各有不同。
但是无论于是哪种类型的器件,还是说使用什么不同的驱动方法,它们都是以调整施加到像素电极上面的相位、电压、峰值、频率、时序、有效值、占空比等等一系列的参数、特性来建立起一定的驱动条件,从而实现显示。
主要的驱动存在很多,在此仅仅介绍下TFT-LCD所采用的有源矩阵驱动法。
由于TFT-LCD的有源矩阵液晶显示器件的每一个像素点上都会有一套有源器件,所以说对这种器件的驱动是对每一个像素点上的有源器件的驱动。
下图是TFT液晶显示屏驱动的时序图。
从下图之中我们可以看出,外电路是不能直接的将电压施加到液晶像素上面的,施加在像素上面的电压是决定于TFT晶体管的特性。当晶体管的开、关比达到106Ω以上时,则可以满足液晶功能像素对通断比的一个要求。
文章原创来于液晶屏:>
TFT晶体管是这样子工作的,当TFT的栅极G扫描被选通的时候,VG会被接入到一个正高脉冲,这个时候的同步输入选址的源极信号则是一个围绕一个中心值为VC的永远会低于VG选通脉冲幅值的选址数据电压VLD,TFT的晶体管被打开。从源极到接通液晶像素的漏极之间会呈一通路,电压被加到了液晶像素电极和补偿电容电极上面。这时即使施加的电场撤掉了,但是由于电容的作用,其像素上面施加的电压也将会保持相当时间,直到下次选通的到来。若设置的电容值使其像素选通达到半帧的时间,同时使下半帧的寻址信号以VC进行反相,则是可以实现的:
⑴如下图,使加在像素上面的驱动波形呈交流型态;
⑵驱动的路数和TFT晶体管的特性有关,而与液晶电光的响应特性无关。这将会彻底解决液晶多路驱动的大难题;
⑶从图中的波形还可以看出来,这种驱动方式是没有半选通波形的,因此也就没有了交叉效应以及对比度下降等的缺陷;
⑷此外,这一种驱动也不会受到液晶电光响应速度的影响,可以显示出视频活动的图象,没有闪烁也没有拖尾现象。
数组中的每一个字节的每一位都代表着显示器中对应的像素点,比如“0”的话不亮,“1”的时候亮。
然后程序中会有相应的函数来将数组中的数据按格式通过IO口发送到液晶屏的显存中,液晶屏按照接收的数据点亮相应的像素点。这样汉字就像一样显示出来了。
想要显示自己的汉字,你可以用取模软件,把汉字换算成像“普”那样形式的数据。以数组的形式写在程序中,之后用函数调用这个数组就行了
最简单的就是调用stdioh中的sprintf()函数,比如:
char msg[20];
int a;
a=1297;
sprintf(msg,"a=%d",a);
这样数组msg中的内容就是"a=1297",就可以直接显示在TFT上了。
建议先写一个单字符显示函数,这样调用起来更方便,移植也方便;
然后显示字符串
参考函数如下:
typedef struct typFNT_GB16 /1216 汉字字模显示数据结构 /
{
char Index[2];
char Msk[32];
}HZ;
//HZ code HzLib[] = { / 宋体 9小五 显示为1216 /
struct typFNT_GB16 code HzLib[] = { / 字大小为1616 /
"深",0x40,0x00,0x27,0xFE,0x24,0x04,0x01,0x20,0x81,0x18,0x56,0x08,0x50,0x40,0x10,0x40,0x27,0xFC,0x20,0x40,0xC0,0xE0,0x41,0x58,0x46,0x4E,0x58,0x44,0x40,0x40,0x40,0x40,//深0
"圳",0x00,0x00,0x12,0x04,0x12,0x44,0x12,0x44,0xFE,0x44,0x12,0x44,0x12,0x44,0x12,0x44,0x12,0x44,0x12,0x44,0x3A,0x44,0xC4,0x44,0x04,0x44,0x08,0x04,0x10,0x04,0x00,0x00,//圳1
"睿",0x00,0x00,0x01,0xF0,0x01,0x00,0x7F,0xFC,0x40,0x04,0x3F,0xF8,0x12,0x90,0x24,0x48,0x1F,0xF0,0x70,0x1C,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x00,0x00,
"宇",0x00,0x00,0x02,0x00,0x01,0x00,0x7F,0xFC,0x40,0x04,0x00,0x00,0x1F,0xF0,0x01,0x00,0x01,0x00,0x01,0x00,0x7F,0xFC,0x01,0x00,0x01,0x00,0x01,0x00,0x07,0x00,0x00,0x00, //宇3
"科",0x06,0x08,0x78,0x88,0x08,0x48,0x08,0x48,0xFE,0x08,0x18,0x88,0x1C,0x48,0x2A,0x48,0x28,0x0E,0x48,0x78,0x8B,0x88,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,//科4
"技",0x10,0x20,0x10,0x20,0x10,0x20,0xFD,0xFE,0x10,0x20,0x14,0x20,0x19,0xFC,0x31,0x08,0xD0,0x88,0x10,0x90,0x10,0x60,0x10,0x60,0x10,0x90,0x11,0x0E,0x56,0x04,0x20,0x00,//技5
"电",0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x02,0x01,0x02,0x00,0xFE,0x00,0x00,//电6
"子",0x00,0x00,0x3F,0xF0,0x00,0x20,0x00,0x40,0x00,0x80,0x01,0x00,0x01,0x00,0x01,0x04,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,//子7
"有",0x01,0x00,0x01,0x00,0x7F,0xFE,0x02,0x00,0x04,0x00,0x0F,0xF0,0x18,0x10,0x28,0x10,0x4F,0xF0,0x88,0x10,0x08,0x10,0x0F,0xF0,0x08,0x10,0x08,0x90,0x08,0x70,0x08,0x20,//有8
"限",0x00,0x00,0xFB,0xF8,0x92,0x08,0x93,0xF8,0xA2,0x08,0xA2,0x08,0x93,0xF8,0x8A,0x80,0x8A,0x48,0xAA,0x50,0x92,0x20,0x82,0x20,0x82,0x10,0x82,0x8E,0x83,0x04,0x82,0x00,//限9
"公",0x00,0x00,0x04,0x40,0x06,0x40,0x04,0x40,0x08,0x20,0x08,0x10,0x10,0x18,0x22,0x0E,0x43,0x04,0x02,0x00,0x04,0x20,0x08,0x10,0x11,0xF8,0x3F,0x18,0x10,0x10,0x00,0x00,//公10
"司",0x00,0x00,0x3F,0xFC,0x00,0x04,0x00,0x04,0x7F,0xE4,0x00,0x04,0x00,0x04,0x3F,0xC4,0x20,0x44,0x20,0x44,0x3F,0xC4,0x20,0x44,0x20,0x04,0x00,0x14,0x00,0x08,0x00,0x00,//司11
};
/
名 称: DrawSingleHz
功 能: 在指定的位置显示汉字
参 数: 坐标:x
坐标:y
字符的颜色:LineColor
字符背景颜色:FillColor
/
void DrawSingleHz(U16 x, U16 y, U8 pHz, U16 LineColor,U16 FillColor, U8 Mod)
{
U16 i=0,j=0,k=0;
U16 str,len;
//---------------------------查找该字是否已在字库中
len=sizeof(HzLib)/sizeof(HzLib[0]);
for(i=0;i<sizeof(HzLib)/sizeof(HzLib[0]);i++)
if((U8)HzLib[i]Index[0]==pHz[0]&&(U8)HzLib[i]Index[1]==pHz[1])break;
//--------------------------
if(i<len) //j<len,说明该字已经在汉字中出现
{
LCD_SetWindows(x, y, x+15, y+15);
for (j=0;j<16;j++)
{
str = (U8)HzLib[i]Msk[j2]<<8|(U8)HzLib[i]Msk[j2+1];
for (k=0;k<16;k++)
{
if ( str & (0x8000>>k) ) //通过移位逐位发送数据
{
LCD_WrDat((U16)(LineColor&0xffff));
}
else
{
if (Mod == NORMAL)
{
LCD_WrDat((U16)(FillColor&0xffff));
}
else
{
LCD_SetGramPoit(x+k+1,y+j); //跳过这一点,即保留该点原有的信息
}
}
}
}
}
}
/
名 称: DrawString
功 能: 在指定的位置显示多个字符
参 数: 坐标:x
坐标:y
字符的颜色:LineColor
字符背景颜色:FillColor
返 回 值: 无
/
void DrawString(U16 x, U16 y, U8 pStr, U16 LineColor,U16 FillColor, U8 Mod)
{ //把字符串的第一个字符的地址赋给字符指针变量pstr,
//不是pStr=" "详见濉跺《C程序设计》-谭浩强P252
while(1)
{
if (pStr == 0)
{
return;
}
if (pStr > 0x80) //大于0x80的为汉字
{
DrawSingleHz(x, y, pStr, LineColor, FillColor, Mod); //调用显示单个汉字函数处理
x += 16;
pStr += 2;
} //移动指针
else //英文字符
{
DrawSingleAscii(x, y, pStr, LineColor, FillColor, Mod); //调用显示单个字符函数处理
x += 8;
pStr += 1; //移动指针
}
}
}
void main()
{
LCD_Init();
while(1)
{
Display_full_screen_color(BLACK);
DispSmallPic(0, 0,32,20,Picture);
DelayMs(1000) ;
DispSmallPic(100, 190,82,45,Picture);
DrawString(83,0,"深圳睿宇电子",RED,BLACK);
DelayMs(1000) ;
}
以上就是关于我想买一块TFT可触摸彩屏,然后编一套程序,可以显示字,都需要些什么材料TFT屏幕单片机怎么连接安装.全部的内容,包括:我想买一块TFT可触摸彩屏,然后编一套程序,可以显示字,都需要些什么材料TFT屏幕单片机怎么连接安装.、1.8寸tftlcd显示方向怎么调整、TFT液晶显示屏如何才能够正常的驱动使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)