登录 注册在线留言收藏驰宇微网站地图联系驰宇微 欢迎来到驰宇微科技官网!

咨询热线18926046819

深圳驰宇微科技有限公司

段码屏、液晶屏(LCD)定制点阵屏,液晶模块、生产与销售

当前位置:首页 » 驰宇微资讯中心 » 液晶模块技术参考 » 段码液晶屏驱动程序范例

段码液晶屏驱动程序范例

文章出处:责任编辑:查看手机网址
扫一扫!段码液晶屏驱动程序范例扫一扫!
人气:-发表时间:2016-08-03 18:25【

段码液晶屏驱动程序。很多客户在初次使用段码液晶屏的时候,总问我有没有可以参考的C语言驱动程序。因为驱动IC有很多,这里就以驱动IC HT1621,驰宇微CYW-D327段码液晶屏为例,做一个参考程序。

CYW-D535灰2.jpg

CYW-D385灰5.jpg

CYW-D505-4.jpg

TN段码液晶模块 CYW-D328灰底黑字原图.jpg

/*IC    :HT1621*/

#include                           
#include
#include

#define uchar unsigned char
#define uint  unsigned int
//-----------------------------------------------------------------------------
sbit DATAB =P3^7;
sbit WRB =P3^6;
sbit CSB =P2^7;



//uchar zz;

//Control the program to run

#define BIAS 0x52 /*定义1 3 偏压4 背极*/
#define XTAL32 0x28 /*使用外部晶振*/
#define RC256 0x30 /*使用内部256KRC 振荡器*/
#define SYSEN 0x02 /*打开振荡发生器*/
#define LCDON 0x06 /*打开LCD*/
#define SYSDIS 0x00 /*关闭振荡发生器*/
#define LCDOFF 0x04 /*显示关闭*/
#define TONE4 0x80 /*设置BZ 输出频率为4K*/
#define TONEON 0x12 /*打开BZ 音频输出*/
#define TONEOFF 0x10 /*关闭BZ 音频输出*/
#define CLRWDT 0x1c /*清零WDT*/
#define IRQEN 0x10 /*IRQ 输出禁止*/
#define IRQDIS 0x00 /*IRQ 输出允许*/
#define WDTEN 0x0e /*打开WDT*/
#define WDTDIS 0x0a /*关闭WDT*/
#define TIMERDIS 0x08 /*关闭时基输出*/
//-----------------------------------------------------------------------------

uchar code TAB0[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};
uchar code TAB1[]={0xda,0x3c,0x83,0xc8,0x3c,0x83,0xc8,0x3c,0x83,0xc8,0x3b,0x96,0x4f,0x35,0xd3,0xfb,};
uchar code TAB2[]={0x3a,0xa5,0x8a,0x58,0xa5,0x8a,0x58,0xa5,0x8a,0x58,0xa4,0x69,0xbf,0xdb,0xdd,0xf7,};
uchar code TAB3[]={0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x00,0x6f,0x76,0xf7,0x13,};

//-----------------------------------------------------------------------------
void delay_us(uchar us_value)    //delay about 1 us
{
    while(us_value--)
    {
        _nop_();
        _nop_();
        _nop_();
    }
}
//-----------------------------------------------------------------------------
void delay_ms(uint ms_value)    //delay about 1 ms
{
    uint k;

    for(k=0;k<ms_value;k++)
    {
        delay_us(200);
    }
}
//-----------------------------------------------------------------------------
void init_cpu()    //Initial 89C52                                
{
        P0=0xff;
        P1=0xff;
        P2=0xff;
        P3=0xff;
}
//-----------------------------------------------------------------------------
void wr_cmd(uchar x)
{
        uchar i,j=0x80;
        CSB=0;

        _nop_();
        _nop_();

        for(i=0;i<4;i++)
        {
        if(j&0x80)
         DATAB=1;
         else DATAB=0;
         WRB=0;
         _nop_();
         _nop_();
         WRB=1;
         _nop_();
        j<<=1;
        }
 
        for(i=0;i<8;i++)
        {
         if(x&0x80)
         DATAB=1;
         else DATAB=0;
         WRB=0;
         _nop_();
         _nop_();
         WRB=1;
         _nop_();
        x<<=1;
         }
        CSB=1;

         _nop_();
         _nop_();
}
//-----------------------------------------------------------------------------
void wr_add(uchar y)
{
        uchar i,j=0xa0;

        for(i=0;i<3;i++)
        {
         if(j&0x80)
         DATAB=1;
         else DATAB=0;
         WRB=0;
         _nop_();
         _nop_();
         WRB=1;
         _nop_();
         j<<=1;
         }

         y<<=2;
       for(i=0;i<6;i++)
       {
         if(y&0x80)
         DATAB=1;
         else DATAB=0;
         WRB=0;
         _nop_();
         _nop_();
         WRB=1;
         _nop_();
         y<<=1;
       }
}
//-----------------------------------------------------------------------------
void wr_byte(uchar z)
{
        uchar i;
        for(i=0;i<8;i++)
        {
         if(z&0x80)
         DATAB=1;
         else DATAB=0;
         WRB=0;
         _nop_();
         _nop_();
         WRB=1;
         _nop_();
         z<<=1;
         }
}

//-----------------------------------------------------------------------------


//-----------------------------------------------------------------------------
void disp_all()
{

uchar i;
   CSB=0;
            wr_add(0);            
            for(i=0;i<16;i++)
               {
            wr_byte(0xff);
            }
                         
             CSB=1;

}


//-----------------------------------------------------------------------------
void disp_off()
{

uchar i;
   CSB=0;
            wr_add(0);            
            for(i=0;i<16;i++)
               {
            wr_byte(0x00);
            }
                         
             CSB=1;

}



//-----------------------------------------------------------------------------
void disp_bm0()
{

uchar i;
   CSB=0;
            wr_add(0);            
            for(i=0;i<16;i++)
               {
            wr_byte(TAB0[i]);
            }
                         
             CSB=1;
 }
//-----------------------------------------------------------------------------
void disp_bm1()
{

uchar i;
   CSB=0;
            wr_add(0);            
            for(i=0;i<16;i++)
               {
            wr_byte(TAB1[i]);
            }
                         
             CSB=1;

}
//-----------------------------------------------------------------------------
void disp_bm2()
{

uchar i;
   CSB=0;
            wr_add(0);            
            for(i=0;i<16;i++)
               {
            wr_byte(TAB2[i]);
            }
                         
             CSB=1;

}
//-----------------------------------------------------------------------------
void disp_bm3()
{

uchar i;
   CSB=0;
            wr_add(0);            
            for(i=0;i<16;i++)
               {
            wr_byte(TAB3[i]);
            }
                         
             CSB=1;

 }
//-----------------------------------------------------------------------------
void init_lcd()
{
    

    CSB=1;
    WRB=0;
    DATAB=1;
    delay_ms(100);
    wr_cmd(BIAS);
    wr_cmd(SYSEN);
    wr_cmd(TIMERDIS);
    wr_cmd(LCDON);
    delay_ms(10);
}
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
void main(void)
{
      
       init_cpu();
       init_lcd();

while(1)
    {


disp_all();
delay_ms(500);

disp_bm0();
delay_ms(500);

disp_bm1();
delay_ms(500);

disp_bm2();
delay_ms(500);

disp_bm3();
delay_ms(500);

disp_off();
delay_ms(300);



    }


}

相关资讯

   

驰宇微首页 | 图形点阵液晶模块 | 中文字库液晶模块 | 字符型液晶模块 | 段码液晶模块 | 产品列表 | 站点地图 | 关于驰宇微

公司名称: 深圳驰宇微科技有限公司   备案号:粤ICP备14047421号
公司地址:深圳市龙华区大浪街道华昌路241号鸿源工业区E栋5层
公司电话:0755-29446830  13640934827
邮 箱:18926046819@163.com Q Q:577895076
版权归深圳驰宇微科技所有