ligang 发表于 2014-1-29 14:06:21

段码液晶芯片HT1621的C语言驱动程序

#define   BIAS         0X52               //LCD 1/3 bias option 1/3 bais . 4 duty
#define   RC256      0X30               //System clock source, on-chip RC oscillator
#define   SYSTEN       0X02               //Turn on system oscillator
#define   SYSDIS       0X00               //Turn off both system oscillator and LCD bias generator
#define   LCDON      0X06               //Turn on LCD bias generator



void SendBitToHT1621(UCHAR nbit,UCHAR n)
{
UCHAR i;
for(i=0;i<n;i++)
{

    ht162x_wr=0;
    if(nbit>=0x80)      //判断最高位
      ht162x_data=1;
    else
      ht162x_data=0;

    _nop_();
    _nop_();
    _nop_();
    ht162x_wr=1;
    _nop_();
    _nop_();
    _nop_();          
    nbit<<=1;
}

}


void SendCommandToHT1621(UCHAR command)
{
ht162x_cs=0;         //选通HT1621
_nop_();
_nop_();

SendBitToHT1621(0x80,4);
SendBitToHT1621(command,8);

_nop_();
_nop_();
ht162x_cs=1;
_nop_();
_nop_();
_nop_();

}



void SetupHT1621()               //送命令字
{         
   SendCommandToHT1621(SYSTEN);    //Turn on system oscillator
   SendCommandToHT1621(RC256);   //启动内部256KRC 振荡器
   SendCommandToHT1621(BIAS);      // 1/3 bais . 4 duty   
   SendCommandToHT1621(LCDON);   //开启LCD
}

void SendByteToHT1621(UCHAR addr,UCHAR byte)                     
{

addr<<=2;
//addr=addr*2;

ht162x_cs=0;         //选通HT1621
_nop_();
_nop_();
SendBitToHT1621(0xA0,3);    //发送写数据模式101
SendBitToHT1621(addr,6);    //发送地址
   SendBitToHT1621(byte,4);    //发送数据
ht162x_cs=1;
_nop_();
_nop_();

}



void HT1621_all_off(void)
{ UCHAR i;
UCHAR addr=0;
for(i=0;i<32;i++)
   {
   SendByteToHT1621(addr,0x00);
   addr=addr+1;
   }

}


页: [1]
查看完整版本: 段码液晶芯片HT1621的C语言驱动程序