📄 st7637.c
字号:
//**************************************************************
//***** CSTN TEST PROGRAM ********
//***** 8080 16bit ********
//***** CGS150AI00 IC ST7637 ********
//***** DISPLAY DOTS 128*128 ********
//***** ********
//**************************************************************
#include <reg51.h>
#include<INTRINS.H>
#include<ABSACC.H>
#include<MATH.H>
#include<stdio.h>
//#include <gImage.h>
sbit CS = P1^4;
sbit RES = P1^5;
sbit RS = P1^6;
sbit RW = P1^7;
//sbit E = P3^7;
//sbit MPU = P3^0; // 68/80 Interface Type Selection
//sbit AUTOB = P3^1;
//sbit STEPB = P3^2;
sbit ChipSelect=P3^3;
sbit CSROM1= P3^0;
sbit A16 = P1^0;
sbit A17 = P1^1;
sbit A18 = P1^2;
//void colourlevel();
void initST7637();
void delay(unsigned int tt);
void delayms(unsigned int tt1);
void writeCOM(unsigned char a,unsigned char b);
void writeDAT(unsigned char dh,unsigned char dl);
//void pic0();
//void pic1();
void showcolor65k(unsigned char d1,unsigned char d2);
void colorbar65k();
void showgray65k();
//void Pattern1();
//void Pattern2();
void Pattern3();
void Pattern4();
void showrom1PIC();
//void press(void);
main()
{
// MPU=1;
initST7637();
while(1)
{
// pic1();
// delay(60000);
// delay(60000);
showcolor65k(0xf8,0x00); //Display All Red
delay(60000);
delay(60000);
showcolor65k(0x07,0xe0); //Display All Green
delay(60000);
delay(60000);
showcolor65k(0x00,0x1f); //Display All Blude
delay(60000);
delay(60000);
colorbar65k(); //color bar
delay(60000);
delay(60000);
showcolor65k(0xff,0xff); //Display All on
delay(60000);
delay(60000);
Pattern4(); //Display All off
delay(60000);
delay(60000);
showcolor65k(0x00,0x00); //Display All off
delay(60000);
delay(60000);
// Pattern3(); //Display snow
// delay(60000);
// delay(60000);
// Pattern1(); //Display vertical
// delay(60000);
// delay(60000);
// Pattern2(); //Display horizontal
// delay(60000);
// delay(60000);
// pic0();
// delay(60000);
// delay(60000);
showgray65k(); //Display 16TH Gray
delay(60000);
delay(60000);
showrom1PIC();
}
}
void delay(unsigned int tt)
{
while(tt>0)
{
tt--;
}
}
void delayms(unsigned int tt1)
{int i,j;
for(i=0;i<tt1;i++)
{for(j=0;j<165;)
{ j++;}
}
}
void writeCOM(unsigned char a,unsigned char b)
{
RS=0;
//E=1;
CS=0;
P2=a;
P0=b; //P0
RW=0;
RW=1;
CS=1;
}
void writeDAT(unsigned char dh,unsigned char dl)
{
RS=1;
//E=1;
CS=0;
P2=dh;
P0=dl; //P0
RW=0;
RW=1;
CS=1;
}
void initST7637()
{
RES=0;
delayms(20);
RES=1;
delayms(10);
writeCOM(0x00,0x28); //display off
/**************************disable autoread*****************************/
writeCOM(0x00,0xd7); //auto load set
writeDAT(0x00,0x9f); //auto load disable
writeCOM(0x00,0xe0); //EE Read/write mode
writeDAT(0x00,0x00); //set read mode
delayms(10);
writeCOM(0x00,0xe3); //read active
delayms(20);
writeCOM(0x00,0xe1); //cancel control
/************************Vop setting***********/
writeCOM(0x00,0xc0); //set Vop
writeDAT(0x00,0x2f);
writeDAT(0x00,0x01);
/*************************set register************************/
writeCOM(0x00,0xc3); //bias select
writeDAT(0x00,0x00); //1/12 bias
writeCOM(0x00,0xc4); //setting booster times
writeDAT(0x00,0x07); //booster X8
writeCOM(0x00,0xcb); //vg with booster X2 control
writeDAT(0x00,0x01); //vg from Vdd2
writeCOM(0x00,0xb7); //Glass Com/Seg scanf Direction
writeDAT(0x00,0x00);
writeCOM(0x00,0x36); //memory access control
writeDAT(0x00,0xc0);
writeCOM(0x00,0xb5); //N-line Set
writeDAT(0x00,0x02);
writeCOM(0x00,0xd0); //Analog circuit setting
writeDAT(0x00,0x1d);
writeCOM(0x00,0xeb); //high power mode
writeDAT(0x00,0x02);
writeDAT(0x00,0x01);
writeCOM(0x00,0x25); //Contrast Set
writeDAT(0x00,0x35); //0~127 step
writeCOM(0x00,0x3a); //color mode=65K
writeDAT(0x00,0x05);
writeCOM(0x00,0xb0); //duty=132
writeDAT(0x00,0x83);
writeCOM(0x00,0xc5); //BOOSTER Efficiency
writeDAT(0x00,0x02); //00->level 1 , 01 level2
writeCOM(0x00,0x20); //display inversion off
/*****************set gamma*****************/
writeCOM(0x00,0xf9);
writeDAT(0x00,0x00); //
writeDAT(0x00,0x02);
writeDAT(0x00,0x04);
writeDAT(0x00,0x06);
writeDAT(0x00,0x08);
writeDAT(0x00,0x0a);
writeDAT(0x00,0x0c);
writeDAT(0x00,0x0e);
writeDAT(0x00,0x10);
writeDAT(0x00,0x12);
writeDAT(0x00,0x14);
writeDAT(0x00,0x16);
writeDAT(0x00,0x18);
writeDAT(0x00,0x1a);
writeDAT(0x00,0x1c);
writeDAT(0x00,0x1e);
writeCOM(0x00,0xf0); //Frame frequency in temp
writeDAT(0x00,0x02);
writeDAT(0x00,0x05);
writeDAT(0x00,0x0d);
writeDAT(0x00,0x19);
writeCOM(0x00,0xf7); //Temp Sensitivity Setting
writeDAT(0x00,0x06);
writeCOM(0x00,0xf4); //TC Curve=0.06%
writeDAT(0x00,0xff);
writeDAT(0x00,0x8f);
writeDAT(0x00,0x55);
writeDAT(0x00,0x33);
writeDAT(0x00,0x71);
writeDAT(0x00,0x54);
writeDAT(0x00,0x66);
writeDAT(0x00,0x77);
writeCOM(0x00,0x11); //Sleep Out
/***********set column row****************/
writeCOM(0x00,0x2a); //column
writeDAT(0x00,0x00); //
writeDAT(0x00,0x7f);
writeCOM(0x00,0x2b); //page
writeDAT(0x00,0x00);
writeDAT(0x00,0x7f);
writeCOM(0x00,0x29); //display on
}
void showcolor65k(unsigned char d1,unsigned char d2)
{
unsigned int c,s;
writeCOM(0x00,0x2a); //column
writeDAT(0x00,0x00); //
writeDAT(0x00,0x7f);
writeCOM(0x00,0x2b); //page
writeDAT(0x00,0x00);
writeDAT(0x00,0x7f);
writeCOM(0x00,0x2c);
for(c=0;c<128;c++)
for(s=0;s<128;s++)
{
writeDAT(d1,d2);
}
}
void colorbar65k()
{ unsigned int i=0,n=0,r=0,t=0,l=0;
writeCOM(0x00,0x2a); //column
writeDAT(0x00,0x00); //
writeDAT(0x00,0x7f);
writeCOM(0x00,0x2b); //page
writeDAT(0x00,0x00);
writeDAT(0x00,0x7f);
writeCOM(0x00,0x2c);
for(r=0;r<128;r++)
{
for(i=0;i<21;i++)
{
writeDAT(0xf8,0x00); //R
}
for(i=0;i<21;i++)
{
writeDAT(0x07,0xe0); //G
}
for(i=0;i<21;i++)
{
writeDAT(0x00,0x1f); //B
}
for(i=0;i<21;i++)
{
writeDAT(0xff,0xe0); //RG
}
for(i=0;i<21;i++)
{
writeDAT(0xf8,0x1f); //RB
}
for(i=0;i<23;i++)
{
writeDAT(0x07,0xff); //GB
}
}
}
/*void pic0()
{
unsigned int i,n,y=0;
write(0,0x2a);
write(1,0x00);
write(1,0x7f);
write(0,0x2b);
write(1,0x00);
write(1,0x7f);
write(0,0x2c);
for(n=0;n<128;n++)
for(i=0;i<256;i++)
write(1,show0[y++]);
}*/
/*
void pic1()
{
unsigned int i,n,y=0;
write(0,0x2a);
write(1,0x00);
write(1,0x7f);
write(0,0x2b);
write(1,0x00);
write(1,0x7f);
write(0,0x2c);
for(n=0;n<4;n++)
for(i=0;i<128;i++)
{
write(1,0xFF);
write(1,0xFF);
}
for(n=0;n<120;n++)
for(i=0;i<256;i++)
write(1,show1[y++]);
for(n=0;n<4;n++)
for(i=0;i<128;i++)
{
write(1,0x00);
write(1,0x1f);
}
}
*/
void showgray65k()
{
unsigned char i,r;
writeCOM(0x00,0x2a); //column
writeDAT(0x00,0x00); //
writeDAT(0x00,0x7f);
writeCOM(0x00,0x2b); //page
writeDAT(0x00,0x00);
writeDAT(0x00,0x7f);
writeCOM(0x00,0x2c);
for(r=0;r<64;r++)
{
for(i=0;i<8;i++)
{
writeDAT(0x00,0x00); //1
}
for(i=8;i<16;i++)
{
writeDAT(0x10,0x82); //2
}
for(i=16;i<24;i++)
{
writeDAT(0x21,0x04); //3
}
for(i=24;i<32;i++)
{
writeDAT(0x31,0x86); //4
}
for(i=32;i<40;i++)
{
writeDAT(0x42,0x08); //5
}
for(i=40;i<48;i++)
{
writeDAT(0x52,0x8a); //6
}
for(i=48;i<56;i++)
{
writeDAT(0x63,0x0c); //7
}
for(i=56;i<64;i++)
{
writeDAT(0x73,0x8e); //8
}
for(i=64;i<72;i++)
{
writeDAT(0x7b,0xcf); //9
}
for(i=72;i<80;i++)
{
writeDAT(0x94,0x92); //10
}
for(i=80;i<88;i++)
{
writeDAT(0xa5,0x14); //11
}
for(i=88;i<96;i++)
{
writeDAT(0xb5,0x96); //12
}
for(i=96;i<104;i++)
{
writeDAT(0xc6,0x18); //13
}
for(i=104;i<112;i++)
{
writeDAT(0xd6,0x9a); //14
}
for(i=112;i<120;i++)
{
writeDAT(0xe7,0x1c); //15
}
for(i=120;i<128;i++)
{
writeDAT(0xff,0xff); //16
}
}
for(r=64;r<128;r++)
{
for(i=0;i<64;i++)
{
writeDAT(0xff,0xff);
}
for(i=64;i<128;i++)
{
writeDAT(0x00,0x00);
}
}
}
/*void Pattern1() //vertical
{
unsigned char i,j;
write(0,0x2a); //column
write(1,0x00); //
write(1,0x7f);
write(0,0x2b); //page
write(1,0x00);
write(1,0x7f);
write(0,0x2c);
for(i=0;i<128;i++)
{
for (j=0;j<64;j++)
{
write(1,0xff);
write(1,0xff);
write(1,0x00);
write(1,0x00);
}
}
}
void Pattern2() //horizontal
{
unsigned char i,j;
write(0,0x2a); //column
write(1,0x00); //
write(1,0x7f);
write(0,0x2b); //page
write(1,0x00);
write(1,0x7f);
write(0,0x2c);
for(i=0;i<64;i++)
{
for (j=0;j<128;j++)
{
write(1,0xff);
write(1,0xff);
}
for (j=0;j<128;j++)
{
write(1,0x00);
write(1,0x00);
}
}
}*/
void Pattern3() //snow
{
unsigned char i,j;
writeCOM(0x00,0x2a); //column
writeDAT(0x00,0x00); //
writeDAT(0x00,0x7f);
writeCOM(0x00,0x2b); //page
writeDAT(0x00,0x00);
writeDAT(0x00,0x7f);
writeCOM(0x00,0x2c);
for(i=0;i<64;i++)
{
for (j=0;j<64;j++)
{
writeDAT(0xff,0xff);
writeDAT(0x00,0x00);
}
for (j=0;j<64;j++)
{
writeDAT(0x00,0x00);
writeDAT(0xff,0xff);
}
}
}
void Pattern4() //all off
{
unsigned char i,j;
writeCOM(0x00,0x2a); //column
writeDAT(0x00,0x00); //
writeDAT(0x00,0x7f);
writeCOM(0x00,0x2b); //page
writeDAT(0x00,0x00);
writeDAT(0x00,0x7f);
writeCOM(0x00,0x2c);
for(j=0;j<1;j++)
{
for(i=0;i<128;i++)
{
writeDAT(0xff,0xff);
}
}
for(i=1;i<127;i++)
{
for (j=0;j<1;j++)
{
writeDAT(0xf8,0x00); //R
}
for (j=1;j<127;j++)
{
writeDAT(0x00,0x00); //all off
}
for (j=127;j<128;j++)
{
writeDAT(0x00,0x1f); //B
}
}
for(j=127;j<128;j++)
{
for(i=0;i<128;i++)
{
writeDAT(0xff,0xff);
}
}
}
/*void press(void) // STEP or AUTO Status
{
while(STEPB==1&AUTOB==0)
{
delay(50);
}
if(STEPB==0)
{
delay(50);
while(STEPB==0)
{
delay(40);
}
delay(50);
}
else if(AUTOB==1)
{
delay(700);
}
delay(50);
}*/
void showrom1PIC()
{
unsigned char i,j,k,n,m,r=0;
unsigned int s=0;
for(k=0;k<6;k++)
{
writeCOM(0x00,0x2a);
writeDAT(0x00,0x00);
writeDAT(0x00,0x7f);
writeCOM(0x00,0x2b);
writeDAT(0x00,0x00);
writeDAT(0x00,0x7f);
writeCOM(0x00,0x2c);
for(i=0;i<128;i++)
{
for (j=0;j<128;j++)
{ ChipSelect=0;
if(s==0xffff)
{
s=0;
r=r+1;
}
P1=0xff&r;
CSROM1=0;
if(s==0)
{ m=XBYTE[s];
n=XBYTE[s+1];
s=s+1;
}
else
{ m=XBYTE[s+1];
n=XBYTE[s+2];
s=s+2;
}
CSROM1=1;
ChipSelect=1;
writeDAT(m,n);
// if(p>66535)
//{BankPort0=1;BankPort1=0;BankPort2=0;}
}
}
delay(60000);
delay(60000);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -