/*-----液晶控制-----*/
#include "sst89x5xxrd2.h"
#include "intrins.h"
#define ulong unsigned long
#define uint unsigned int
#define uchar unsigned char
#define x1 0x80
#define x2 0x88
#define y 0x80
void delay (uchar num);
#define comm 0
#define dat 1
sbit sclk = P1^0;
sbit std = P1^1;
sbit cs = P1^2;
/*-----显示错误-----*/
void show_error()
{
}
/*-----向液晶写一个数据-----*/
void wr_lcd (uchar dat_comm,uchar con)
{
uchar i,j;
delay (70);
sclk=0;
cs=1;
std=1;
for(i=0;i<5;i++)
{
sclk=1;
_nop_();
sclk=0;
_nop_();
}
std=0;
sclk=1;
_nop_();
sclk=0;
if(dat_comm)
std=1;
else
std=0;
sclk=1;
_nop_();
sclk=0;
std=0;
sclk=1;
_nop_();
sclk=0;
for(j=0;j<2;j++)
{
for(i=0;i<4;i++)
{
if(con&0x80) std=1;
else std=0;
sclk=1;
con=con<<1;
sclk=0;
}
std=0;
for(i=0;i<4;i++)
{
sclk=1;
_nop_();
sclk=0;
_nop_();
}
}
}
/*-----清屏-----*/
void clrram (void)
{
uchar i;
wr_lcd (comm,0x30);
wr_lcd (comm,0x01);
for (i=0; i<10; i++) delay(150);
}
/*-----初始化-----*/
void init_lcd (void)
{
clrram ();
wr_lcd (comm,0x06);
wr_lcd (comm,0x0C);
}
/*----------------显示图形-----------------*/
void img_disp (uchar code *img)
{
uchar i,j;
for(j=0;j<32;j++)
{
for(i=0;i<8;i++)
{
wr_lcd (comm,0x34);
wr_lcd (comm,y+j);
wr_lcd (comm,x1+i);
wr_lcd (comm,0x30);
wr_lcd (dat,img[j*16+i*2]);
wr_lcd (dat,img[j*16+i*2+1]);
}
}
for(j=32;j<64;j++)
{
for(i=0;i<8;i++)
{
wr_lcd (comm,0x34);
wr_lcd (comm,y+j-32);
wr_lcd (comm,x2+i);
wr_lcd (comm,0x30);
wr_lcd (dat,img[j*16+i*2]);
wr_lcd (dat,img[j*16+i*2+1]);
}
}
wr_lcd (comm,0x36);
}