#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit DATA=P1^0;
sbit wr =P1^1;
sbit rd =P1^2;
sbit cs =P1^3;
void sendbit(uchar dat,uchar bitcnt);//按位发送数据
void sendbyte(uchar dat);
uint num;
void init_timer0()//定时器中断0初始化
{
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
ET0=1;
TR0=1;
}
void timer0() interrupt 1//定时器中断0
{
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;
TR0=1;
num++;
}
void delay1ms(uint x) //延时
{
num=0;
while(num
void init_HT1621() //初始化HT1621
{
cs=1;
wr=1;
DATA=1;
_nop_();
cs=0;
cs=0;
wr=0;
wr=0;
}
void sendcoma(uchar com)
{
init_HT1621(); //初始化HT1621
sendbit(0x80,4);
sendbit(com);
}
void sendcomb(uchar adr)
{
init_HT1621(); //初始化HT1621
sendbit(0xa0,4);
sendbit(adr,5);
}
void sendcomc(uchar com)
{
init_HT1621(); //初始化HT1621
sendbit(0x90,4);
sendbit(com);
}
void sendbit(uchar dat,uchar bitcnt)//按位发送数据
{
uchar i;
for(i=0;i
if((dat&0x80)==0x00) //从最高位发送
DATA=0;
else
DATA=1;
_nop_();
wr=1; //在wr的上升沿,数据写入HT1621B
_nop_();
wr=0;
dat=dat<<1;
}
}
void sendbyte(uchar dat)
{
sendbit(dat,8);
}
void display(uchar dat) //LCD显示
{
uchar i;
sendcomb(0X00); //从RAM的0X00地址开始放入数据
sendbyte(dat);
sendbyte(dat);
for (i=0;i<2;i++)
{
sendbyte(dat); //从SEG0开始显示数据
}
}
void setup_HT1621()
{
sendcoma(0x50);
sendcoma(0x38);
sendcoma(0x02);
delay1ms(1000);
sendcoma(0x06);
sendcoma(0x0a);
sendcoma(0x08);
}
void main()
{
setup_HT1621();
while(1)
{
display(0xff);
}
}