📄 tft.c
字号:
#include<reg51.h>
#include<intrins.h>
#include "don.h"
#define Uint unsigned int
#define Uchar unsigned char
sbit RS=P3^0;
sbit E=P3^1;
sbit RW=P3^4;
sbit res=P3^2;
void WCOM(unsigned char lobyte);
void WDAT(unsigned char lobyte);
void LcdDataWrite(unsigned char lobyte);
void Delay400Ms(void);
void Delay5Ms(void);
void Reset();
//void display0();
void display1();
//void display2();
void displayg1();
void main (void)
{
Delay5Ms();
Reset();Delay5Ms();
do {
//display0();
//Delay400Ms();
display1();
Delay400Ms();
//display2();
//Delay400Ms();
displayg1();
Delay400Ms();Delay400Ms();Delay400Ms();Delay400Ms();
}while(1);
}
void Reset()
{
WCOM(0x00);WCOM(0x00);WDAT(0x00);WDAT(0x01);//osc.
Delay5Ms();
WCOM(0x00);WCOM(0x01);WDAT(0x01);WDAT(0x15);//driver output
Delay5Ms();
WCOM(0x00);WCOM(0x02);WDAT(0x04);WDAT(0x10);//driver waveform
Delay5Ms();
WCOM(0x00);WCOM(0x03);WDAT(0x00);WDAT(0x14);//power 1
Delay5Ms();
WCOM(0x00);WCOM(0x50);WDAT(0x00);WDAT(0x00);//power 2
Delay5Ms();
WCOM(0x00);WCOM(0x05);WDAT(0x10);WDAT(0x30);//Entry mode
Delay5Ms();
WCOM(0x00);WCOM(0x07);WDAT(0x00);WDAT(0x33);//display control
Delay5Ms();
WCOM(0x00);WCOM(0x0b);WDAT(0x00);WDAT(0x00);//frame control
Delay5Ms();
WCOM(0x00);WCOM(0x0c);WDAT(0x00);WDAT(0x06);//power 3
Delay5Ms();
WCOM(0x00);WCOM(0x0d);WDAT(0x05);WDAT(0x15);//power 4
Delay5Ms();
WCOM(0x00);WCOM(0x0e);WDAT(0x30);WDAT(0x1d);//power 5
Delay5Ms();
WCOM(0x00);WCOM(0x21);WDAT(0x00);WDAT(0x00);//ram address
Delay5Ms();
WCOM(0x00);WCOM(0x20);WDAT(0x00);WDAT(0x00);//mask
Delay5Ms();/*
WCOM(0x00);WCOM(0x30);WDAT(0x03);WDAT(0x02);//GAMMA
WCOM(0x00);WCOM(0x31);WDAT(0x03);WDAT(0x03);//GAMMA
WCOM(0x00);WCOM(0x32);WDAT(0x02);WDAT(0x03);//GAMMA
WCOM(0x00);WCOM(0x33);WDAT(0x03);WDAT(0x03);//GAMMA
WCOM(0x00);WCOM(0x34);WDAT(0x03);WDAT(0x02);//GAMMA
WCOM(0x00);WCOM(0x35);WDAT(0x03);WDAT(0x03);//GAMMA
WCOM(0x00);WCOM(0x36);WDAT(0x02);WDAT(0x03);//GAMMA
WCOM(0x00);WCOM(0x37);WDAT(0x03);WDAT(0x03);//GAMMA
WCOM(0x00);WCOM(0x3a);WDAT(0x00);WDAT(0x00);//GAMMA
WCOM(0x00);WCOM(0x3b);WDAT(0x00);WDAT(0x00);//GAMMA
Delay5Ms();*/
WCOM(0x00);WCOM(0x0f);WDAT(0x00);WDAT(0x00);//gate scan position
Delay5Ms();
WCOM(0x00);WCOM(0x14);WDAT(0xad);WDAT(0x00);//1 screen
Delay5Ms();
WCOM(0x00);WCOM(0x15);WDAT(0xaf);WDAT(0xae);//2 screen
Delay5Ms();
WCOM(0x00);WCOM(0x16);WDAT(131);WDAT(0x00);//horizontal
Delay5Ms();
WCOM(0x00);WCOM(0x17);WDAT(175);WDAT(0x00);//vertical
Delay5Ms();
}
void displayg1() //图形
{Uint i;
WCOM(0x00);WCOM(0x16);WDAT(103);WDAT(19);//horizontal
WCOM(0x00);WCOM(0x17);WDAT(103);WDAT(19);//vertical
i=0;
WCOM(0x00);WCOM(0x21);WDAT(19);WDAT(19);
WCOM(0x00);WCOM(0x22);
do{
LcdDataWrite(mm[i]);i=i+1;
}while (i<7225);
}
void LcdDataWrite(unsigned char lobyte)
{
Uchar A=0;
Uchar t1=0;
Uchar t2=0;
A = lobyte&0x80;
if(A!=0){t1=t1|0x90 ;}
A = lobyte&0x40;
if(A!=0){t1=t1|0x48 ;}
A = lobyte&0x20;
if(A!=0){t1=t1|0x20 ;}
A = lobyte&0x10;
if(A!=0){t1=t1|0x04 ;t2=t2|0x80;}
/////////////////////////////
A = lobyte&0x08;
if(A!=0){t1=t1|0x02 ;t2=t2|0x40;}
A = lobyte&0x04;
if(A!=0){t1=t1|0x01 ;t2=t2|0x20 ;}
A = lobyte&0x02;
if(A!=0){t2=t2|0x14 ;}
A = lobyte&0x01;
if(A!=0){t2=t2|0x0a ;}
WDAT(t1);
WDAT(t2);
}
/*
void display0()//////////////////
{ Uint i;
WCOM(0x00);WCOM(0x21);WDAT(0x00);WDAT(0x00);
WCOM(0x00);WCOM(0x22);
for (i=0;i<11616;i++)
{ WDAT(0xff);WDAT(0xff);}//W
for (i=0;i<11616;i++)
{ WDAT(0x00);WDAT(0x00);}//black
}
*/
void display1()//////////////////
{ Uint i;
WCOM(0x00);WCOM(0x16);WDAT(131);WDAT(00);//horizontal
WCOM(0x00);WCOM(0x17);WDAT(175);WDAT(00);//vertical
WCOM(0x00);WCOM(0x21);WDAT(0x00);WDAT(0x00);
WCOM(0x00);WCOM(0x22);
for (i=0;i<7656;i++)
{ WDAT( 0xf8) ; WDAT( 0x00) ; } //R
for (i=0;i<7920;i++)
{ WDAT( 0x07) ; WDAT( 0xe0) ; } //G
for (i=0;i<7656;i++)
{ WDAT( 0x00) ; WDAT( 0x1f) ;} //B
}
/*
void display2()//////////////////
{ Uint i;
WCOM(0x00);WCOM(0x21);WDAT(0x00);WDAT(0x00);
WCOM(0x00);WCOM(0x22);
for (i=0;i<7656;i++)
{ WDAT( 0x01) ; WDAT( 0xff) ; } //-R 青
for (i=0;i<7656;i++)
{ WDAT( 0xf8) ; WDAT( 0x1f) ; } //-G 紫
for (i=0;i<7920;i++)
{ WDAT( 0xff) ; WDAT( 0xe0) ;} //-B 黄
}
*/
void WCOM(unsigned char lobyte)/////////////
{ RS=0;
RW=0;
P1=lobyte;
E=1;_nop_();_nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_();
E=0;
RS=1; }
void WDAT(unsigned char lobyte)//////////////
{
RS=1;
RW=0;
P1=lobyte;
E=1;_nop_();_nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); E=0;
RS=0;}
void Delay5Ms(void)///////////////
{Uint i = 2000;while(i--);}
void Delay400Ms(void)/////////////
{ Uint i = 50;
Uint j;
while(i--)
{j=999; while(j--);};
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -