文档库 最新最全的文档下载
当前位置:文档库 › HT1621B显示

HT1621B显示

#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);
}
}

相关文档
相关文档 最新文档