⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcm12864driver.c

📁 多功能数字钟,内含I2C驱动
💻 C
字号:

#include  <Reg52.h>
#include <intrins.h>
#include <LCM12864driver.H>

sbit	LCM_RST= P1^4;

void Delay(int num)
{
    while(num--) ;
}

void Delay12864(unsigned int t)//
{
    unsigned int i,j;
    for(i=0;i<t;i++)
    {
        for(j=0;j<10;j++);
    }
}

/******************************************************************************/
void write_com(unsigned char cmdcode)//左屏写命令到LCD
{
    LCMCS1W_COM = cmdcode;
    
}
void write1_com(unsigned char cmdcode)//右屏写命令到LCD
{
    LCMCS2W_COM = cmdcode;
    
}
/******************************************************************************/
void write_data(unsigned char Dispdata)//左屏写数据到LCD
{
    LCMCS1W_DAT = Dispdata;
}

void write1_data(unsigned char Dispdata)//右屏写数据到LCD
{
    LCMCS2W_DAT = Dispdata;
}
/******************************************************************************/
/*******************************************************************************
void frame(void)//显示边框
{
    unsigned char i;
    Mcs = 1;
    Scs = 1;
    write_com(Page_Add+0);
    write_com(Col_Add+0);
    for(i=0;i<64;i++) 
    {
        write_data(0x01);
    }
    write_com(Page_Add+7);
    write_com(Col_Add+0);
    for(i=0;i<64;i++)
    {
        write_data(0x80);
    }
    for(i=0;i<8;i++)
    {
        Mcs=0;
        Scs=1;
        write_com(Page_Add+i);
        write_com(Col_Add+63);
        write_data(0xff);
        Mcs=1;
        Scs=0;
        write_com(Page_Add+i);
        write_com(Col_Add+0);
        write_data(0xff);
    }
}

/***************************清除内存***************************************************/
void Clr_Scr(void)//
{
    unsigned char j,k;
    for(k=0;k<8;k++)
    {
        
        Delay(10);
        write_com(Page_Add+k);
        write_com(Col_Add+0);
        for(j=0;j<64;j++) 
        {
            write_data(0x00);
        }
        
        Delay(10);
        write1_com(Page_Add+k);
        write1_com(Col_Add+0);
        for(j=64;j<128;j++)
        {
            write1_data(0x00);
        }
    }
}

/**********************************显示12864图片*********************************************/
void Disp_Img(unsigned char code *img)//
{ 
    unsigned char j,k;
    for(k=0;k<8;k++)
    {
        
        Delay(10);
        write_com(Page_Add+k);
        write_com(Col_Add+0);
        for(j=0;j<64;j++) 
        {
            write_data(img[k*128+j]);
        }
        
        Delay(10);
        write1_com(Page_Add+k);
        write1_com(Col_Add+0);
        for(j=64;j<128;j++)
        {
            write1_data(img[k*128+j]);
        }
    }
}

/***************************指定位置显示汉字16*16****************************************************/
void Disp_Chinese(unsigned char pag,unsigned char col,  char code *hzk)
{
    unsigned char j=0,i=0;   
    for(j=0;j<2;j++)
    {
        write_com(Page_Add+pag+j);
        write_com(Col_Add+col);
        for(i=0;i<16;i++) 
        {
            write_data(hzk[16*j+i]);
        }
    }
}

void Disp1_Chinese(unsigned char pag,unsigned char col,  char code *hzk)
{
    unsigned char j=0,i=0;   
    for(j=0;j<2;j++)
    {
        write1_com(Page_Add+pag+j);
        write1_com(Col_Add+col);
        for(i=0;i<16;i++) 
        {
            write1_data(hzk[16*j+i]);
        }
    }
}

/**************************指定位置显示字母或数字8*16*****************************************************/			
void Disp_Digit(unsigned char pag,unsigned char col, unsigned char code *hzk)
{
    unsigned char j=0, i=0;
    
    for(j=0;j<2;j++)
    {
        write_com(Page_Add+pag+j);
        write_com(Col_Add+col);
        for(i=0;i<8;i++) 
        {
            write_data(hzk[8*j+i]);
        }
    }
}
void Disp1_Digit(unsigned char pag,unsigned char col, unsigned char code *hzk)
{
    unsigned char j=0, i=0;
    
    for(j=0;j<2;j++)
    {
        write1_com(Page_Add+pag+j);
        write1_com(Col_Add+col);
        for(i=0;i<8;i++) 
        {
            write1_data(hzk[8*j+i]);
        }
    }
}

/**************************初始化LCD屏******************************************************/
void Init_lcd(void)
{
    LCM_RST=0;
    Delay12864(100);
    LCM_RST=1;
    Delay12864(100);
    write_com(Disp_Off);
    write_com(Page_Add+0);
    write_com(Start_Line+0);
    write_com(Col_Add+0);
    write_com(Disp_On);
    
    write1_com(Disp_Off);
    write1_com(Page_Add+0);
    write1_com(Start_Line+0);
    write1_com(Col_Add+0);
    write1_com(Disp_On);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -