微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 关于8位单片机驱动液晶屏的应用总结

关于8位单片机驱动液晶屏的应用总结

时间:12-01 来源:互联网 点击:

da=bit5;cl=0;cl=1;

sda=bit4;scl=0;scl=1;

sda=bit3;scl=0;scl=1;

sda=bit2;scl=0;scl=1;

sda=bit1;scl=0;scl=1;

sda=bit0;scl=0;scl=1;

cs=1;

}

初始化

/*****************TFT初始化函数***************/

voidlcd_initial()

{

reset=0;

delay(100);

reset=1;

delay(100);

//------------------------------------------------------------------//

//-------------------SoftwareReset-------------------------------//

write_command(0x2A);//列地址设置

write_data(0x00);//列起始地址低8位

write_data(0x00);//列起始地址高8位

write_data(0x00);//列终止地址高8位

write_data(0x9F);//列终止地址低8位

//上面的列终止地址为什么设置成0x9f,0x9f=十进制的159,1.8寸的屏的分辨率是128*160.

//也就是说有0-159共160列。下面的同样的道理,只不过是说明行的起始和终止地址。

write_command(0x2B);//行地址设置

write_data(0x00);

write_data(0x00);

write_data(0x00);

write_data(0x7F);

write_command(0xCB);//功耗控制A

write_data(0x39);

write_data(0x2C);

write_data(0x00);

write_data(0x34);

write_data(0x02);

write_command(0xCF);//功耗控制B

write_data(0x00);

write_data(0XC1);

write_data(0X30);

write_command(0xE8);//驱动时序控制A

write_data(0x85);

write_data(0x00);

write_data(0x78);

write_command(0xEA);//驱动时序控制B

write_data(0x00);

write_data(0x00);

write_command(0xED);//电源序列控制

write_data(0x64);

write_data(0x03);

write_data(0X12);

write_data(0X81);

write_command(0xF7);//泵比控制

write_data(0x20);

write_command(0xC0);//Powercontrol功耗控制1

write_data(0x23);//VRH[5:0]`

write_command(0xC1);//Powercontrol功耗控制2

write_data(0x10);//SAP[2:0];BT[3:0]

write_command(0xC5);//VCMcontrol

write_data(0x3e);//对比度调节

write_data(0x28);

write_command(0xC7);//VCMcontrol2

write_data(0x86);//--

write_command(0x36);//MemoryAccessControl存储器访问控制

write_data(0x68);//C8//4868竖屏//28E8横屏

//cc同c8

write_command(0x3A);//像素格式设置

write_data(0x55);

write_command(0xB1);//帧速率控制

write_data(0x00);

write_data(0x18);

write_command(0xB6);//DisplayFunctionControl

write_data(0x08);

write_data(0x82);

write_data(0x27);

write_command(0xF2);//3GammaFunctionDisable

write_data(0x00);

write_command(0x26);//Gammacurveselected

write_data(0x01);//共4条曲线供选择,分别是1248;这里选择1,

write_command(0xE0);//SetGamma

write_data(0x0F);

write_data(0x31);

write_data(0x2B);

write_data(0x0C);

write_data(0x0E);

write_data(0x08);

write_data(0x4E);

write_data(0xF1);

write_data(0x37);

write_data(0x07);

write_data(0x10);

write_data(0x03);

write_data(0x0E);

write_data(0x09);

write_data(0x00);

write_command(0XE1);//SetGamma

write_data(0x00);

write_data(0x0E);

write_data(0x14);

write_data(0x03);

write_data(0x11);

write_data(0x07);

write_data(0x31);

write_data(0xC1);

write_data(0x48);

write_data(0x08);

write_data(0x0F);

write_data(0x0C);

write_data(0x31);

write_data(0x36);

write_data(0x0F);

write_command(0x11);//ExitSleep

delay(120);

write_command(0x29);//Displayon

write_command(0x2c);

}

在写入数据时要先确定,图像的起始坐标和终止坐标,可以用如下的代码实现

staticvoidLCD_SetPos(unsignedintx0,unsignedintx1,unsignedinty0,unsignedinty1)//设置位置

{

write_command(0x2A);//列地址设置

write_data(x0>>8);//列起始地址高8位

write_data(x0);//列起始地址低8位

write_data(x1>>8);//列终止地址高8位

write_data(x1);//列终止地址低8位

write_command(0x2B);//页地址设置

write_data(y0>>8);

write_data(y0);

write_data(y1>>8);

write_data(y1);

write_command(0x2c);//写存储器

}

写命令时,先将命令的地址写入,然后在将设定的数据写入寄存器。如

write_command(0x2A);//列地址设置

write_data(0x00);

write_data(0x00);

write_data(0x00);

write_data(0x9F);

至于这些写入的数据的意义及数值大小,请查阅液晶屏对应的液晶屏的数据手册。

了解一下颜色代码:

几种常用的颜色的代码

#defineWhite0xFFFF//白

#defineBlack0x0000//黑

#defineRed0x001F//红

#defineBlue0xF800//蓝

#defineMagenta0xF81F//紫

#defineGreen0x07E0//绿

#defineCyan0x07FF//青

#d

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

网站地图

Top