?? r61505u.gz.c
字號:
/***********************
TM240320A7NFWVGWC2
Main driver: R61505U1
Display DOTS: 240X320 (8/16 bits)
Version: 1.0
Date:2007.06.4
***********************/
#include"stdio.h"
#include"reg51.h"
#include"stdlib.h"
#include"intrins.h"
sbit RST= P1^0;
sbit CS_M= P1^1;
sbit RS= P1^2;
sbit WRB= P1^3;
sbit IM0= P1^4;
sbit A1= P3^4;
sbit A2= P3^5;
sbit A3= P3^6;
//sbit P14= P1^4;
//sbit P15= P1^5;
//Data is P2
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
unsigned char xdata *pic_data=0x0000;
delay(int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<50;j++);
}
}
void write_cmd(unsigned char Command_Byte)
{
RS=0;
CS_M=0;
WRB=1;
P2=0x00;
//WRB=0;
//_nop_();
//WRB=1;
P0=Command_Byte;
WRB=0;
_nop_();
_nop_();
WRB=1;
RS=1;
CS_M=1;
}
void write_data16(unsigned char dataH, unsigned char dataL)
{
RS=1;
CS_M=0;
WRB=1;
P2=dataH;
//WRB=0;
//_nop_();
//WRB=1;
P0=dataL;
WRB=0;
_nop_();
//delay(0);
WRB=1;
RS=0;
CS_M=1;
}
void pure(uchar para1,uchar para2)
{
int i,j;
//write_cmd(0x22); //write data to GRAM
for(i=0;i<320;i++)
{
for(j=0;j<240;j++)
{
write_data16(para1,para2);
}
}
}
void grads(uchar hi_byte,uchar low_byte,uchar add_hi,uchar add_low,int com,int seg)
{
uchar i,j,n_row,p;
p=com/8;
for(n_row=0;n_row<8;n_row++)
{
for(i=p;i>0;i--)
for(j=seg;j>0;j--)
{
write_data16(hi_byte,low_byte);
}
low_byte+=add_low;
hi_byte+=add_hi;
}
for(i=com%8;i>0;i--)
{
for(j=seg;j>0;j--)
write_data16(0xFF,0xFF);
}
}
void main_init()
{
write_cmd(0x07);
write_data16(0x00,0x00);
delay(100);
write_cmd(0x00);
write_cmd(0x00);
write_cmd(0x00);
write_cmd(0x00);
delay(50);
write_cmd(0xa4);
write_data16(0x00,0x01);
delay(50);
write_cmd(0x08);
write_data16(0x08,0x08);
//**********Adjust the Gamma Curve***********//
write_cmd(0x30); write_data16(0x07,0x07);
write_cmd(0x31); write_data16(0x06,0x07);
write_cmd(0x32); write_data16(0x02,0x00);
write_cmd(0x33); write_data16(0x03,0x01);
write_cmd(0x34); write_data16(0x01,0x01);
write_cmd(0x35); write_data16(0x04,0x04);
write_cmd(0x36); write_data16(0x0a,0x00);
write_cmd(0x37); write_data16(0x07,0x07);
write_cmd(0x38); write_data16(0x06,0x07);
write_cmd(0x39); write_data16(0x02,0x00);
write_cmd(0x3A); write_data16(0x03,0x01); //
write_cmd(0x3B); write_data16(0x01,0x01); // //
write_cmd(0x3C); write_data16(0x04,0x04); //
write_cmd(0x3D); write_data16(0x0a,0x00); // //
//******** Gamma ***********//
// *********************************************************//
//**********Power On sequence************//
write_cmd(0x07);
write_data16(0x00,0x01);
write_cmd(0x17);
write_data16(0x00,0x01);
write_cmd(0x10);
write_data16(0x16,0xb0);
write_cmd(0x11);
write_data16(0x00,0x07);
write_cmd(0x12);
write_data16(0x01,0x1b);
write_cmd(0x13);
write_data16(0x0f,0x00);
write_cmd(0x29);
write_data16(0x00,0x10); //(0x00,0x01);
write_cmd(0x2a);
write_data16(0x00,0x95);
write_cmd(0x12);
write_data16(0x01,0x39); //(0x01,0x3b);
//***********************************************************//
write_cmd(0x01);
write_data16(0x05,0x00);
write_cmd(0x02);
write_data16(0x07,0x00);
write_cmd(0x03);
write_data16(0x00,0x30);
write_cmd(0x04);
write_data16(0x00,0x00);
write_cmd(0x09);
write_data16(0x00,0x21);
write_cmd(0x0a);
write_data16(0x00,0x08);
write_cmd(0x50); //Window address control instruction
write_data16(0x00,0x00);
write_cmd(0x51);
write_data16(0x00,0xef);
write_cmd(0x52);
write_data16(0x00,0x00);
write_cmd(0x53);
write_data16(0x01,0x3F);
write_cmd(0x60); //Driver Output Control
write_data16(0x27,0x00);
write_cmd(0x61); //Base image display control
write_data16(0x00,0x00);
write_cmd(0x90); //Panel interface control
write_data16(0x00,0x10);
write_cmd(0x92);
write_data16(0x00,0x00);
write_cmd(0x93);
write_data16(0x00,0x00);
write_cmd(0x07);
write_data16(0x00,0x21);
delay(100);
write_cmd(0x07);
write_data16(0x00,0x61);
delay(2000);
write_cmd(0x07);
write_data16(0x01,0x73);
write_cmd(0x20); //RAM Address Set (Horizontal Address)
write_data16(0x00,0x00);
write_cmd(0x21); //RAM Address Set (Vertical Address)
write_data16(0x00,0x00);
write_cmd(0x22);
}
void maindisppure()
{
pure(0xff,0xff); //white
delay(500);
pure(0xf8,0x00); //red
delay(1000);
pure(0x07,0xe0); //green
delay(500);
pure(0x00,0x1f); //blue
delay(500);
pure(0x00,0x00); //black
delay(500);
// pure(0xf8,0x00); //red
// delay(1000);
}
void maindispgrads()
{
grads(0xf8,0x00,0x01,0x24,320,240); //red grads
delay(500);
grads(0x07,0xe0,0x20,0x04,320,240); //green grads
delay(500);
grads(0x00,0x1F,0x21,0x20,320,240); //blue grads
delay(500);
}
/*
void zf()
{
uchar i,j,k,l,m;
for(i=0;i<32;i++)
{
for(k=0;k<5;k++)
{
for(j=0;j<240;j++)
{
write_data16(0xFF,0xFF);
write_data16(0x00,0x00);
}
}
for(l=0;l<5;l++)
{
for(m=0;m<240;m++)
{
write_data16(0x00,0x00);
write_data16(0xFF,0xFF);
}
}
}
}
*/
void disppic(unsigned char xdata *pic,int com, int seg)
{
int i,j;
int k=0;
for(i=com;i>0;i--)
{
for(j=seg;j>0;j--)
{
write_data16(pic[k],pic[k+1]);
k=k+2;
}
}
}
void main()
{
CS_M=0;
RST=0;
delay(1000); //100
RST=1;
delay(1000);
IM0=0;
delay(500);
main_init();
while(1)
{
maindisppure();
maindispgrads();
A1=0;
A2=0;
A3=0;
disppic(pic_data,80,240);
A1=1;
A2=0;
A3=0;
disppic(pic_data,80,240);
A1=0;
A2=1;
A3=0;
disppic(pic_data,80,240);
A1=1;
A2=1;
A3=0;
disppic(pic_data,80,240);
delay(500);
A1=0;
A2=0;
A3=1;
disppic(pic_data,80,240);
A1=1;
A2=0;
A3=1;
disppic(pic_data,80,240);
A1=0;
A2=1;
A3=1;
disppic(pic_data,80,240);
A1=1;
A2=1;
A3=1;
disppic(pic_data,80,240);
delay(500);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -