📄 nt39106-16bit.c
字号:
/************************************************
dots 176*220
controller NT39106
interface 8080/16bits P0-L,P1-H
************************************************/
#include<absacc.h>
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define p0 XBYTE[0x0000]
sbit cs =P3^4;
sbit res =P3^3;
sbit rs =P3^5;
sbit wr =P3^6;
sbit rd =P3^7;
uchar code pictrue[];
uchar code palette[];
void delay(uint t)
{
uchar t1;
while(t--)
for(t1=16;t1>0;t1--)
{;} //0.1ms
}
void write_command(uchar dd)
{
cs=0;
rs=0;
rd=1;
P1=0x00;
//P0=dd;
P0=dd;
wr=0;
//delay(0);
wr=1;
cs=1;
}
void write_data(uchar data_h,data_l)
{
cs=0;
rs=1;
rd=1;
//wr=0;
P1=data_h;
P0=data_l;
wr=0;
//P0=data_l;
//delay(0);
wr=1;
cs=1;
}
void initialization()
{
write_command(0x07);
write_data(0x00,0x05);
delay(400);
write_command(0x07);
write_data(0x00,0x25);
delay(400);
write_command(0x07);
write_data(0x00,0x27);
delay(400);
write_command(0x07);
write_data(0x00,0x37);
delay(100);
write_command(0x12); //
write_data(0x00,0x09);
write_command(0x13); //power control 4
write_data(0x13,0x3e);
write_command(0x10); //Power Control 5 write_data(0x06,0x04);
write_command(0x11); //driver output control
write_data(0x00,0x04);
write_command(0x10); //LCD drive waveform control
write_data(0x46,0x34);
write_command(0x12); //entry mode control
write_data(0x00,0x19);
delay(200);
write_command(0x10); //compare register
write_data(0x47,0x30);
write_command(0x13); //frame cycle control
write_data(0x33,0x3e);
write_command(0x02); //power control 3
write_data(0x07,0x00);
write_command(0x01); //power control 1
write_data(0x01,0x1b);
write_command(0x08); //power control 2
write_data(0x02,0x02);
write_command(0x03); //power control 5
write_data(0x10,0x30);
write_command(0x0b); //power control 4
write_data(0x58,0x00);
write_command(0x21); //RAM address set
write_data(0x00,0x00);
write_command(0x30);
write_data(0x03,0x03);
write_command(0x31);
write_data(0x03,0x03);
write_command(0x32);
write_data(0x03,0x03);
write_command(0x33);
write_data(0x03,0x03);
write_command(0x34);
write_data(0x04,0x04);
write_command(0x35);
write_data(0x04,0x04);
write_command(0x36);
write_data(0x04,0x04);
write_command(0x37);
write_data(0x03,0x03);
write_command(0x38);
write_data(0x00,0x00);
write_command(0x39);
write_data(0x00,0x00);
write_command(0x40);
write_data(0x00,0x00);
write_command(0x41);
write_data(0x00,0x00);
write_command(0x42);
write_data(0xdb,0x00);
write_command(0x43);
write_data(0x00,0x00);
write_command(0x44);
write_data(0xaf,0x00);
write_command(0x45);
write_data(0xdb,0x00);
write_command(0x07);
write_data(0x00,0x05);
delay(200);
write_command(0x07);
write_data(0x00,0x25);
write_command(0x07);
write_data(0x00,0x27);
delay(600);//400
write_command(0x07);
write_data(0x00,0x37);
}
void displaypalette(uchar *palette)
{ uint i,j,k;
write_command(0x22);
for(j=0;j<220;j++)
{
for(i=0;i<8;i++)
for(k=0;k<22;k++)
{
write_data(*(palette+2*i),*(palette+2*i+1));
}
}
}
void display_eprom(uchar a)
{ int i,j,k;
uchar d1,d2;
uint addr;
// write_command(0x22);
for(k=0;k<4;k++)
{
addr=0x0000;
for(i=0;i<128;i++)
for(j=0;j<64;j++)
{
P1=(5*(a-1)+k);
d1=XBYTE[addr++];
d2=XBYTE[addr++];
write_data(d1,d2);
}
}
addr=0x0000;
for(i=0;i<5952;i++)
{
P1=(5*(a-1)+4);
d1=XBYTE[addr++];
d2=XBYTE[addr++];
write_data(d1,d2);
}
}
void display_pic(uchar *pictrue)
{
uint i,j;
write_command(0x22);
for(i=0;i<220;i++)
{
for(j=0;j<176;j++)
{
write_data(*(pictrue+i*(2*128)+2*j),*(pictrue+i*(2*128)+2*j+1));
}
}
}
void display_rgb(uchar h_data,l_data)
{
uint i,j;
write_command(0x22);
for(i=0;i<220;i++)
for(j=0;j<176;j++)
{
write_data(h_data,l_data);
}
write_command(0x22);
}
void main()
{
res=0;
delay(20);
res=1;
delay(200);
initialization();
while(1)
{
display_rgb(0xf8,0x00);
delay(20000);
display_rgb(0x07,0xe0);
delay(20000);
display_rgb(0x00,0x1f);
delay(20000);
display_rgb(0x00,0x00);
delay(1000);
display_rgb(0xff,0xff);
delay(1000);
displaypalette(palette);
delay(20000);
//display_eprom(1);
//delay(20000);
//display_eprom(2);
//delay(20000);
//display_eprom(3);
//delay(20000);
//display_eprom(4);
//delay(20000);
//display_eprom(5);
//delay(20000);
//display_eprom(6);
//delay(20000);
//display_eprom(7);
//delay(20000);
//display_eprom(8);
//delay(20000);
}
}
uchar code palette[]={
0xf8,0x00,//red
0x07,0xe0,//green
0x00,0x1f,//blue
0xfc,0x08,//orange
0xff,0xe0,//yellow
0x00,0x00,//purple
0xf8,0x1f,//purple
0xff,0xff,//purple
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -