HT1622驱动函数

//HT1622初始化
void LCD_Init(void)
{
LCD_Power = 1;
LCD_WRCMD(SYS_EN);
LCD_WRCMD(LCD_ON);
}

//HT1622写入脉冲
void LCD_CLK(void)
{
Delay_us(3);
WR_HT1622 = 0;
Delay_us(3);
WR_HT1622 = 1;
Delay_us(3);
}
//向HT1622写命令
void LCD_WRCMD(uchar dat)
{
uchar i;
CS_HT1622 = 0; //片选
Delay_us(1);
//送命令模式码100
Data_HT1622 = 1;
LCD_CLK();
Data_HT1622 = 0;
LCD_CLK();
LCD_CLK();
//送命令C0~C8
for (i=0;i<9;i++)
{
if (dat&0x80)
{
Data_HT1622 = 1;
}
else
{
Data_HT1622 = 0;
}

dat <<= 1;
LCD_CLK();
}
Delay_us(1);
CS_HT1622 = 1;
}
//向HT1622写数据
void LCD_WRDATA(uchar dat)
{
uchar i,j,temp;

for (i=0; i<2; i++)
{
temp = dat&0x0f;
for (j=0; j<4; j++)
{
if (temp&0x01)
{
Data_HT1622 = 1;
}
else
{
Data_HT1622 = 0;
}

temp >>= 1;
LCD_CLK();
}
dat >>= 4;
}
}

/*******LCD显示*******/
void LCD_DISP(void)
{
uchar i;
if (DISP_OK)
{

CS_HT1622 = 0;
Delay_us(1);
//送数据模式码101
Data_HT1622 = 1;
LCD_CLK();
Data_HT1622 = 0;
LCD_CLK();
Data_HT1622 = 1;
LCD_CLK();

for (i=0; i<6; i++) //写数据起始地址为0
{
Data_HT1622 = 0;
LCD_CLK();
}

for (i=0; i<22; i++) //连续写入22个字节
{
LCD_TEMP = LCD_BUF[i];
LCD_WRDATA(LCD_TEMP);
}

Delay_us(1);
CS_HT1622 = 1;
}

}

/*******LCD清屏*******/
void LCD_CLR(void)
{
uchar i;
for (i=0; i<22; i

++)
{
LCD_BUF[i] = 0x00;
}
}



相关主题
相关文档
最新文档