📄 btg-128128d.c
字号:
/*------------------------------------------------------------------------------
BTG-128128D.C For Testing Module BTG-128128D on AT89S52
The driver is NJU6679
2005.7.17
------------------------------------------------------------------------------*/
#include <reg52.h> /* define 8052 registers */
#include <intrins.h>
#include "ascii.h"
//#include "y1.h"
#include "y.h"
#define uchar unsigned char
#define uint unsigned int
//-----------------------------------------------------------------------------
//Define Data's Port
sbit E =P3^7;
sbit RW =P3^6;
sbit RS =P3^2;
sbit CS1 =P3^0;
sbit RST =P3^1;
#define LCD_DATA P1
//Define Key's Input
#define AUTO 0x80 //P2^7: Input auto_run_id
#define ADDU 0x40 //P2^6: Display picture UP to end
#define SUBD 0x20 //P2^5: Display picture Down to begin
#define ADUP 0x10 //P2^4: For COG module:adjust Register's value to add
#define ADDN 0x08 //P2^3: For COG moduel:adjust Register's value to sub
#define KEY_IN P2
//For LCD to work
//#define bias
//#define duty
//#define Rab 0x27 //Select 6times
#define v0 0x34 //Set V0=14.3V
#define bias 0xb8 //Set bias=1/12
uchar constr; //对比度调节
//Control the program to run
#define BmpMax 7
uchar autoid; //Indicate that LCD display automatically
uchar bmp_id; //The picture's id to display
uchar dispid; //To reflash the display picture
#define dl0 1000
//*****************************************************************************
//uchar code q[8]={0x3E,0x41,0x41,0x51,0x21,0x5E,0x00,0x00};
//*****************************************************************************
//-----------------------------------------------------------------------------
void delay_us(uchar us_value) //delay about 1 us
{
while(us_value--)
{
_nop_();
_nop_();
_nop_();
}
}
//-----------------------------------------------------------------------------
void delay_ms(uint ms_value) //delay about 1 ms
{
uint k;
for(k=0;k<ms_value;k++)
{
delay_us(200);
}
}
//-----------------------------------------------------------------------------
void init_cpu() //Initial 89C52
{
LCD_DATA=0;
RS =0;
RW =0;
E =0;
RST=0;
CS1=0;
delay_ms(1);
RST=1;
delay_us(10);
}
//-----------------------------------------------------------------------------
uchar read_stat(void)
{
uchar tmp_stat;
RS =0;
RW =1;
E =1;
delay_us(2);
tmp_stat=LCD_DATA;
E =0;
delay_us(1);
return tmp_stat;
}
//-----------------------------------------------------------------------------
void wait()
{
delay_us(1);
// while((read_stat()&0x80)==0x80);
}
//-----------------------------------------------------------------------------
void wr_cmd(uchar wrcmd)
{
wait();
RS =0; //select instruction
RW =0; //to write
E=1;
CS1=0;
LCD_DATA=wrcmd;
delay_us(2);
CS1=1;
delay_us(2);
E=1;
RW=1;
}
//-----------------------------------------------------------------------------
void wr_data(uchar wrdata)
{
wait();
RS =1; //select data
RW =0; //to write
E=1;
CS1=0;
LCD_DATA=wrdata;
delay_us(2);
CS1=1;
delay_us(2);
E=1;
RW=1;
}
//-----------------------------------------------------------------------------
void init_lcd()
{ int i;
wr_cmd(0x15); //SET BIAS
wr_cmd(0x00); //Set line0 to COM0
// wr_cmd(0x26);
// wr_cmd(0x01);
// wr_cmd(0x00);
// wr_cmd(0x00);
// wr_cmd(0x07);
wr_cmd(0x5f);
wr_cmd(0x75);
wr_cmd(0x00);
wr_cmd(0x3f);
wr_cmd(0x81);
wr_cmd(0x80);
wr_cmd(0x82);
wr_cmd(0x80);
wr_cmd(0x83);
wr_cmd(0x80);
wr_cmd(0x87);
wr_cmd(0x0f);
wr_cmd(0xa0);
wr_cmd(0x72);
wr_cmd(0xa1);
wr_cmd(0x00);
wr_cmd(0xa2);
wr_cmd(0x00);
wr_cmd(0xa4);
wr_cmd(0xa8);
wr_cmd(0x3f);
wr_cmd(0xaf);
wr_cmd(0xb8);
for(i=0;i<32;i++)
{
wr_cmd(2*i);
}
delay_ms(1);
}
//-----------------------------------------------------------------------------
void disp_all()
{
uchar ii,jj;
wr_cmd(0x15);
wr_cmd(0x00);
wr_cmd(0x5f);
wr_cmd(0x75);
wr_cmd(0x00);
wr_cmd(0x3f);
for(ii=0;ii<64;ii++)
{
for(jj=0;jj<96;jj++)
{
wr_data(0xff);
wr_data(0xff);
}
}
}
void disp_all1()
{
uchar ii,jj;
wr_cmd(0x15);
wr_cmd(0x00);
wr_cmd(0x5f);
wr_cmd(0x75);
wr_cmd(0x00);
wr_cmd(0x3f);
for(ii=0;ii<64;ii++)
{
for(jj=0;jj<96;jj++)
{
wr_data(0x03);
wr_data(0xe0);
}
}
}
void disp_all2()
{
uchar ii,jj;
wr_cmd(0x15);
wr_cmd(0x00);
wr_cmd(0x5f);
wr_cmd(0x75);
wr_cmd(0x00);
wr_cmd(0x3f);
for(ii=0;ii<64;ii++)
{
for(jj=0;jj<96;jj++)
{
wr_data(0x00);
wr_data(0x1f);
}
}
}
void disp_all3()
{
uchar ii,jj;
wr_cmd(0x15);
wr_cmd(0x00);
wr_cmd(0x5f);
wr_cmd(0x75);
wr_cmd(0x00);
wr_cmd(0x3f);
for(ii=0;ii<64;ii++)
{
// wr_cmd(0x40); //select page
// wr_cmd(0xb0+ii);
// wr_cmd(0x00); //set MSB
// wr_cmd(0x10); //set LSB
for(jj=0;jj<96;jj++)
{
// wr_cmd(0x81);
wr_data(0xf8);
// wr_cmd(0x82);
wr_data(0x00);
// wr_cmd(0x83);
// wr_data(0x00);
}
}
}
//-----------------------------------------------------------------------------
void disp_off()
{
uchar ii,jj;
wr_cmd(0x15);
wr_cmd(0x00);
wr_cmd(0x5f);
wr_cmd(0x75);
wr_cmd(0x00);
wr_cmd(0x3f);
for(ii=0;ii<64;ii++)
{
// wr_cmd(0x40); //select page
// wr_cmd(0xb0+ii);
// wr_cmd(0x00); //set MSB
// wr_cmd(0x10); //set LSB
for(jj=0;jj<96;jj++)
{
wr_data(0x00);
wr_data(0x00);
// wr_data(0x00);
}
}
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void disp_y1()
{
uint ii;
uint jj;
wr_cmd(0x15);
wr_cmd(0x00);
wr_cmd(0x5f);
wr_cmd(0x75);
wr_cmd(0x00);
wr_cmd(0x3f);
for(ii=0;ii<64;ii++)
{
for(jj=0;jj<192;jj++)
{
wr_data(gImage_y[ii*192+jj]);
}
}
}
/*void disp_y()
{
uint ii;
uint jj;
wr_cmd(0x15);
wr_cmd(0x00);
wr_cmd(0x5f);
wr_cmd(0x75);
wr_cmd(0x00);
wr_cmd(0x3f);
for(ii=0;ii<64;ii++)
{
for(jj=0;jj<192;jj++)
{
wr_data(gImage_y1[ii*192+jj]);
}
}
}*/
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void do_key()
{
uchar tkeyin;
KEY_IN=0xff;
delay_ms(5);
tkeyin=KEY_IN;
//判断自动刷新标志
if((tkeyin&AUTO)==0x00) autoid=1;
else autoid=0;
//画面往下翻bmp_id++
if((tkeyin&ADDU)==0x00)
{
dispid=1; //刷新标志置"1"
bmp_id++;
if(bmp_id>=BmpMax)
bmp_id=0;
}
//画面往上翻bmp_id--
if((tkeyin&SUBD)==0x00)
{
dispid=1; //刷新标志置"1"
if(bmp_id>0)
{
bmp_id--;
}
else bmp_id=BmpMax-1;
}
/* //对比度参数constr++
if((tkeyin&ADUP)==0x00)
{
if(constr<63) constr++;
wr_cmd(0x81); //SET Register
wr_cmd(constr);
delay_us(2);
show_constr();
}
//对比度参数constr--
if((tkeyin&ADDN)==0x00)
{
if(constr>0) constr--;
wr_cmd(0x81); //SET Register
wr_cmd(constr);
delay_us(2);
show_constr();
}*/
delay_ms(50);
}
//-----------------------------------------------------------------------------
/*void main (void)
{
init_cpu();
init_lcd();
delay_us(5);
delay_us(100);
while(1)
{
do_key();
if(dispid==1)
{
switch(bmp_id)
{
// case 0: //全显画面
disp_all();
// break;
// case 1: //方框画面
disp_frame();
// break;
// case 2: //正显象棋板
disp_checker0();
// break;
case 3: //负显象棋板
// disp_checker1();
// break;
// case 4: //回形画面
disp_clip();
// break;
// case 5: //'Q'字画面
disp_q();
// break;
// case 6: //特制画面
disp_yb();
// break;
// default:
// break;
// }
// dispid=0; //清除刷新标志
// }
//For auto display switch
// if(autoid==1)
// {
// dispid=1;
// bmp_id++;
// if(bmp_id>=BmpMax) bmp_id=0;
// delay_ms(dl0); //自动显示时延时dl0
// }
}
}*/
//-----------------------------------------------------------------------------
void main(void)
{
while(1)
{
init_cpu();
init_lcd();
disp_all();
delay_ms(dl0);
disp_all1();
delay_ms(dl0);
disp_all2();
delay_ms(dl0);
disp_all3();
delay_ms(dl0);
disp_off();
delay_ms(dl0);
disp_y1();
delay_ms(dl0);
// disp_y();
// delay_ms(dl0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -