关于8位单片机驱动液晶屏的应用总结
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
8位单片机驱动液晶 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)