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

📄 demo.c

📁 字符液晶驱动C程序! 控制器为HD44780 or KS0066等兼容IC
💻 C
字号:
#include <reg51.h>
#include <math.h>
#include <absacc.h>
/* 直接访问方式地址定义,根据用户平台接口修改 */
#define  cwadd XBYTE[0x0000] /* 写指令代码地址 */
#define  cradd XBYTE[0x0200] /* 写显示数据地址 */
#define  dwadd XBYTE[0x0100] /* 读显示数据地址 */
#define  dradd XBYTE[0x0300] /* 读忙状态地址 */
/*  定义标志位  */
sbit ACC_7=ACC^7;
/* 设为全局变量 */
unsigned int com,dat;
/*-----------光标移动演示用字库-----------*/
unsigned int  TABCL[18]={0x43,0x75,0x72,0x73,0x6f,0x72,0x20,0x4c,0x65,0x66,0x74,0x20,0x53,0x63,0x72,0x6f,0x6c,0x6c};
/*-----------画面滚动演示用字库----------*/
unsigned int  TABL[11]={0x4c,0x65,0x66,0x74,0x20,0x53,0x63,0x72,0x6f,0x6c,0x6c};
/*-----------建立自定义演示用字符库-----------*/
code  unsigned int CGTAB[9][8]={0x08,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02,   /* "↓"代码=0 */
                                0x0f,0x09,0x0f,0x09,0x0f,0x09,0x11,0x00,   /* "月"代码=1 */
                                0x1f,0x11,0x11,0x1f,0x11,0x11,0x1f,0x00,   /* "日"代码=2 */
                                0x11,0x0a,0x04,0x1f,0x04,0x1f,0x04,0x00,   /* "¥"代码=3 */
                                0x0e,0x00,0x1f,0x0a,0x0a,0x0a,0x13,0x00,   /* "元"代码=4 */
                                0x18,0x18,0x07,0x08,0x08,0x08,0x07,0x00,   /* "℃"代码=5 */
                                0x04,0x0a,0x15,0x04,0x04,0x04,0x04,0x00,   /* "↑"代码=6 */
                                0x17,0x15,0x15,0x15,0x15,0x15,0x17,0x00,   /* "10"代码=7 */
                                0x04,0x04,0x04,0x04,0x15,0x0a,0x04,0x00 }; /* "↓"代码=8 */
/*-----------自定义字符显示用字库-----------*/
code  unsigned int TABDY[4][9]={0x4d,0x44,0x4c,0x53,0x34,0x30,0x32,0x36,0x36,
                                0x20,0x03,0x32,0x35,0x35,0x2e,0x30,0x30,0x04,
                                0x31,0x39,0x39,0x37,0x00,0x37,0x01,0x31,0x02,
                                0x20,0x54,0x3d,0x33,0x35,0x05,0x06,0x20,0x07};

/******************/
void main()
  {
  unsigned int i,j,k,comp;
   int_1();   /* 调初始化函数  */
   SCROLL();   /* 调滚动演示函数 */
   CL_ENTER(); /* 调光标移动函数 */
   L_ENTER();  /* 调画面滚动函数 */
   HOME();     /* 调回归原始位函数 */
/*----------修改错误显示演示段----------*/
   com=0x80;  /* 设置DDRAM地址 */
     PR1();   /* 调写指令函数  */
     for(i=0;i<12;i++)
       {
         dat=RDTAB[i];  /* 取字符代码 */
         PR2();  /* 调写数据函数  */
       }
     DA_READ();  /* 调修改错误显示函数 */
/*---------自定义字符显示段------------*/
     com=0x80;  /* 设置DDRAM地址 */
     PR1();     /* 调写指令函数  */
     for(i=0;i<4;i++)
       {
         for(j=0;j<8;j++)
           {
             dat=TABDY[i][j];  /* 取字符代码 */
             PR2();  /* 调写数据函数  */
           }
       }
/*------------CGRAM显示段--------------*/

     CGRAM(); /* 调自定义字符库函数 */
     com=0x80;  /* 设置DDRAM地址 */
     PR1();   /* 调写指令函数  */
   for(i=0;i<9;i++)
     {
       dat=i; /* 取字符代码 */
       PR2(); /* 调写数据函数  */
     }
  }
/*******************/
/*    初始化函数   */
/*******************/
int_1()
  {
    unsigned int i,j;
    for(j=0;j<3;j++)
      {
        cwadd=0x30;   /*  工作方式设置指令代码  */
        for(i=0;i<100;i++)  /*  延时大于等于4.1μs(100可根据需要调整)  */
         {}
       }
    cwadd=0x38; /*  设置工作方式(8位总线)  */
    com=0x01;   /*  清屏  */
    PR1();      /*  调写指令函数  */
    com=0x06;   /*  设置输入方式  */
    PR1();      /*  调写指令函数  */
    com=0x0f;   /*  设置显示方式  */
    PR1();      /*  调写指令函数  */
  }
/*********************/
/*    光标移动函数   */
/*********************/
CL_ENTER()
  {
   unsigned int i,j;
    com=0x04;  /*  输入方式(0x04画面不动光标左移,0x06画面不动光标右移)  */
    PR1();     /*  调写指令函数  */
    com=0x90;  /*  设置DDRAM地址 */
    PR1();     /*  调写指令函数  */
    for(i=0;i<18;i++)
      {
        dat=TABCL[i];  /*  取字符代码  */
        PR2();         /*  调写数据函数  */
        for(j=0;j<100;j++)  /*  延时(100可根据需要调整)*/
          {}
      }
   }
/*******************/
/*   画面滚动函数  */
/*******************/
L_ENTER()
  {
    unsigned int i,j;
    com=0x05;   /*  输入方式(com=0x05画面右移,com=0x07画面左移)  */
    PR1();      /*  调写指令函数  */
    com=0x80;   /*  设置DDRAM地址 */
    PR1();      /*  调写指令函数  */
    for(i=0;i<11;i++)
      {
        dat=TABL[i];  /*  取字符代码  */
        PR2();        /*  调写数据函数  */
        for(j=0;j<100;j++)   /*  延时(100可根据需要调整)*/
          {}
      }
  }
/*********************/
/*    滚动演示函数   */
/*********************/
SCROLL()
  {
    unsigned int i,j;
    com=0x80;   /*  设置DDRAM地址 */
    PR1();      /*  调写指令函数  */
    for(i=0;i<128;i++)
      {
        dat=0x21;  /* 字符代码设置 */
        PR2();     /*  调写数据函数  */
        for(j=0;j<100;j++)  /*  延时(100可根据需要调整)*/
          {}
      }
    com=0x90;   /*  设置DDRAM地址 */
    PR1();      /*  调写指令函数  */
    for(i=0;i<8;i++)
      {
        for(j=0;j<100;j++)  /* 延时(100可根据需要调整) */
          {}
        com=0x10;  /* com=0x10 光标左移一次,com=0x14 光标右移一次 */
        PR1();   /*  调写指令函数  */
      }
      com=0x90; /*  设置DDRAM地址 */
      PR1();    /*  调写指令函数  */
    for(i=0;i<8;i++)
      {
       for(j=0;j<100;j++)  /* 延时(100可根据需要调整) */
          {}
       com=0x18;  /* com=0x18画面左移一次,com=0x1c画面右移一次*/
       PR1();  /*  调写指令函数  */
      }
  }
/***********************/
/*    回归原始位函数   */
/***********************/
HOME()
  {
    com=0x02;  /* 设置归home位指令代码 */
    PR1();     /*  调写指令函数  */
  }
/**************************/
/*     建立自定义函数     */
/**************************/
CGRAM()
  {
   unsigned char i,j;
   com=0x40;    /* 设置CGRAM地址 */
   PR1();       /*  调写指令函数  */
   for(i=0;i<9;i++)
     {
     for(j=0;j<8;j++)
        {
         dat=CGTAB[i][j];  /* 取字模 */
         PR2();   /*  调写数据函数  */
        }
     }
  }
 /********************/
 /*  读BF和AC值函数  */
 /********************/
 PR0()
   {
     com=cradd;
   }
/*******************/
/*    写指令函数   */
/*******************/
PR1()
  {
    busy(); /* 调判忙函数 */
    cwadd=com;  /* 写指令 */
  }
/*******************/
/*    写数据函数   */
/*******************/
PR2()
  {
    busy();  /* 调判忙函数 */
    dwadd=dat; /*  写数据  */
  }
/*******************/
/*    读数据函数   */
/*******************/
PR3()
  {
    busy();  /* 调判忙函数 */
    dat=dradd; /*  读数据  */
  }
/*****************/
/*    判忙函数   */
/*****************/
busy()
  {
    do
      {
        ACC=cradd;        /*  读状态字  */
      }
    while (ACC_7==1);     /*  判“忙”标志  */
  }

⌨️ 快捷键说明

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