#include"reg51.h"
#define uchar unsigned char
#define uint unsigned int
sbit SCLK=P2^2;
sbit SID=P2^1;
sbit CS=P2^0;
void delay(uint v)/*延时*/
{
while(v!=0) v--;
}
void ser_in(uchar c)/*serial输入程序*/
{
uchar BitCnt;
for(BitCnt=0;BitCnt<8;BitCnt++)
{
if((c<<BitCnt)&0x80)SID=1;
else SID=0;
delay(1);
SCLK=1;
delay(3);
SCLK=0;
}
}
void wcode (uchar cmd)/*写命令*/
{
CS=0;
delay(10);
CS=1;
ser_in(0xf8);
ser_in(cmd&0xf0);
ser_in((cmd&0x0f)<<4);
}
void wdata(uchar dat)/*写数据*/
{
CS=0;
delay(10);
CS=1;
ser_in(0xfa);
ser_in(dat&0xf0);
ser_in((dat&0x0f)<<4);
}
/*void set_adr(uchar x,uchar y)/*设定行列*/
/*{
x=x+0x80;
y=y+0x40;
wcode(x);
wcode(y);
}*/
void set_adr_GB(uchar x)/*设定国标码地址*/
{
x=x+0x80;
wcode(x);
}
void clear(void)/*清除显示*/
{
wcode(0x01);
}
void set_function(uchar c)/*功能设定*/
{
c=c+0x30;
wcode(c);
}
void addr_zero(void)/*地址归零*/
{
wcode(0x02);
}
void dis_on_off(uchar c)/*显示状态*/
{
c=c+0x08;
wcode(c);
}
void setup(void)
{
wcode(0x01);
wcode(0x30);
wcode(0x02);
wcode(0x04);
wcode(0x0c);
wcode(0x01);
wcode(0x80);
}
void main(void)
{
uint GB,GB_l,GB_h;
uchar loop;
//PSB=0;
/*reset();*/
dis_on_off(0x07);
set_function(0x00);
setup();
while(1)
{
addr_zero();
clear();
set_adr_GB(0);
loop=0;
for(GB=0xb0a1;GB<=0xf7ff;GB++)
{
loop++;
if(loop==33){addr_zero();clear();set_adr_GB(0);loop=0;}
GB_h=(GB&0xff00)>>8;
GB_l=GB&0xff;
if(GB_l==0x00){GB_h=GB_h;GB_l=0xa1;GB=(GB_h<<8)+GB_l;}
wdata(GB_h);
wdata(GB_l);
delay(12000);
}
}
}