📄 ht1621.c
字号:
#include <stdio.h>
#include <intrins.h>
#include <reg52.h>
sbit CS1=P1^5;
sbit WRR=P1^7;
sbit DI=P1^6;
sbit GO=P3^3;
void DelayXms(unsigned int i)
{
unsigned char a;
unsigned int b;
for(b=0;b<i;b++)
for(a=0;a<255;a++);
}
void Wait()
{
while(1)
{
if(GO==0)
{
DelayXms(330);
return;
}
}
}
Write()
{
WRR=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
WRR=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
void write_cmd(unsigned char cmd)
{
unsigned char j,mask;
CS1=0;
WRR=0;
DI=1;
Write();
DI=0;
Write();
DI=0;
Write();
for(j=0, mask=0x80; j<8; j++, mask>>=1 )
{
if( (cmd & mask) != 0 )
DI=1;
else
DI=0;
Write();
}
WRR=1;
DI=0;
CS1=1;
}
void write_dat(unsigned char add,unsigned char dat)
{
unsigned char j,mask;
CS1=0;
WRR=0;
DI=1;
Write();
DI=0;
Write();
DI=1;
Write();
for(j=0, mask=0x20; j<6; j++, mask>>=1 )
{
if(( add & mask)!=0 )
DI=1;
else
DI=0;
Write();
}
for(j=0, mask=0x01; j<4; j++, mask<<=1 )
{
if(( dat & mask) != 0 )
DI=1;
else
DI=0;
Write();
}
CS1=1;
}
void ht1621initial(void)
{
write_cmd(0x01); //SYS EN
write_cmd(0x18); //RC 256k
write_cmd(0x03); //LCD ON
write_cmd(0x29); //BIAS
}
void Display1(unsigned char d)
{
unsigned char i;
for(i=0;i<31;i++)
write_dat(i,d);
}
void Display2()
{
unsigned char i;
for(i=0;i<6;i++)
{
Display1(0x00);
write_dat(i,0xff);
Wait();
}
}
void main(void)
{
ht1621initial();
while(1)
{
Display1(0xff);
Wait();
Display1(0x00);
Wait();
Display1(0x01);
Wait();
Display1(0x02);
Wait();
Display1(0x04);
Wait();
Display1(0x08);
Wait();
Display2();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -