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

📄 lcd_6963.asm

📁 6963控制其的液晶测试程序
💻 ASM
字号:
#include<stdio.h>
#include<intrins.h>
     
#include <reg51.h>
#include <math.h>
#include <absacc.h>
#include <string.h>
/*   地址定义   */
#define  d_add XBYTE[0xDE00]
#define  c_add XBYTE[0xDF00]
/*   常数定义   */
#define  para1 0x20;
#define  uchar unsigned char
#define  uint unsigned  int

#define  dat1 DBYTE[0x30]
#define  dat2 DBYTE[0x31]
#define  com  DBYTE[0x32]
#define  code_1 DBYTE[0x33]
#define  attr DBYTE[0x34]
#define  O_Y DBYTE[0x35]
#define  O_X DBYTE[0x36]
/*  定义标志位  */
 sbit Acc_0=ACC^0;
 sbit Acc_1=ACC^1;
 sbit Acc_2=ACC^2;
 sbit Acc_3=ACC^3;
uchar num=0;
bit   s=0;
 uchar x=0;
 uchar y=0;
/******************************/
code uchar linehead[]={0x00,0x01,0x03,0x04,0x05,0x06,0x07};
 
code unsigned char CGTAB[320]={ 


/*80=0    */
0x00,0x00,0x00,0x1C,0x36,0x63,0x63,0x63,
0x63,0x63,0x63,0x63,0x36,0x1C,0x00,0x00,

/*82=1    */
0x00,0x00,0x00,0x18,0x78,0x18,0x18,0x18,
0x18,0x18,0x18,0x18,0x18,0x7E,0x00,0x00,

/*84=2    */
0x00,0x00,0x00,0x3E,0x63,0x63,0x63,0x06,
0x06,0x0C,0x18,0x30,0x63,0x7F,0x00,0x00,

/*86=3    */
0x00,0x00,0x00,0x3E,0x63,0x63,0x06,0x1C,
0x06,0x03,0x03,0x63,0x66,0x3C,0x00,0x00,

/*88=4    */
0x00,0x00,0x00,0x06,0x0E,0x1E,0x36,0x36,
0x66,0x66,0x7F,0x06,0x06,0x1F,0x00,0x00,

/*8a=5    */
0x00,0x00,0x00,0x7F,0x60,0x60,0x60,0x7C,
0x76,0x03,0x03,0x63,0x66,0x3C,0x00,0x00,

/*8c=6    */
0x00,0x00,0x00,0x1E,0x36,0x60,0x60,0x7C,
0x76,0x63,0x63,0x63,0x36,0x1C,0x00,0x00,

/*8e=7    */
0x00,0x00,0x00,0x7F,0x66,0x66,0x0C,0x0C,
0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,

/*90=8    */
0x00,0x00,0x00,0x3E,0x63,0x63,0x63,0x36,
0x1C,0x36,0x63,0x63,0x63,0x3E,0x00,0x00,

/*92=9    */
0x00,0x00,0x00,0x1C,0x36,0x63,0x63,0x63,
0x37,0x1F,0x03,0x03,0x36,0x3C,0x00,0x00,
/*94=:*/
0x00,0x00,0x00,0x00,0x1C,0x1C,0x1C,0x1C,
0x00,0x00,0x1C,0x1C,0x1C,0x1C,0x00,0x00,
/*96=o    */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,
0x63,0x63,0x63,0x63,0x63,0x3E,0x00,0x00,

/*98=k    */
0x00,0x00,0x00,0xE0,0x60,0x60,0x60,0x6F,
0x6C,0x78,0x7C,0x6C,0x66,0xFF,0x00,0x00,

/*9a=z    */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,
0x66,0x0C,0x18,0x18,0x33,0x7F,0x00,0x00,

/*9c=-    */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*9e="    */
0x00,0x1B,0x3F,0x36,0x6C,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*A0=G    */
0x00,0x00,0x00,0x3E,0x66,0x66,0xC0,0xC0,
0xC0,0xCF,0xC6,0x66,0x66,0x3C,0x00,0x00,

/*A2=P    */
0x00,0x00,0x00,0xFE,0x63,0x63,0x63,0x63,
0x7E,0x60,0x60,0x60,0x60,0xF0,0x00,0x00,

/*A4=Y    */
0x00,0x00,0x00,0xFF,0x66,0x66,0x3C,0x3C,
0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,

/*A6=R    */
0x00,0x00,0x00,0xFE,0x63,0x63,0x63,0x7E,
0x6C,0x6C,0x66,0x66,0x63,0xF3,0x00,0x00

};
 
 
 code unsigned char CCTAB[49][32]={
  /* 0=红*/
0x10,0x10,0x23,0x20,0x44,0xF8,0x10,0x20,      
0x40,0xFC,0x40,0x00,0x1C,0xE0,0x47,0x00,
0x00,0x08,0xFC,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x24,0xFE,0x00,

/*1=绿*/
0x10,0x13,0x20,0x21,0x44,0xFF,0x10,0x22,  
0x41,0xF9,0x00,0x01,0x1A,0xE4,0x41,0x00,
0x08,0xFC,0x08,0xF8,0x08,0xFE,0x40,0x44,
0x4C,0x50,0xE0,0x50,0x48,0x4E,0x44,0x80,
/*2=黄*/

 };

 
 unsigned char code  DTAB[11]={ 0x37,0x45,0x4c,0x43,0x4f,0x4d,0x45,0x00,0x39,0x4f,0x55};
 unsigned char code  ASC[10]={ 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19};
INIT_1();
CLEAR();
CGRAM();
CCWR1_PR();
CCW2_PR();
CW2_PR();
W_DOT();
PR1();
PR11();
PR12();
ST01();
ST2();
ST3();
DISHAZIT(uchar x,uchar y,uchar d);
DISHAZIW(uchar x,uchar y,uchar d);
DISDASC(uchar x,uchar y,uchar d);
DISASC(uchar x,uchar y,uchar d);

FCCW2_PR();
ShowLine(uchar x,uchar y,uchar *puts,uchar le,uchar kk);
FDISHAZIT(uchar x,uchar y,uchar d);
 GUANGBIAO(uchar x,uchar y);
 void delay(int t);
 uchar keyscan();
 
 /**************************/
 /*      初始化函数        */
 /**************************/
INT_1()
    {
       dat1=0x00;      /*设文本显示区域首地址*/
       dat2=0x00;
       com=0x40;
       PR1();
      
       dat1=para1;    /*设文本显示区域宽度*/
       dat2=0x00;
       com=0x41;
       PR1();
      
       dat1=0x00;    /*设图形显示区域首地址*/
       dat2=0x08;
       com=0x42;
       PR1();
       dat1=para1;    /*设图形显示区域宽度*/
       dat2=0x00;
       com=0x43;
       PR1();
   
       com=0xa0;      /*光标形状设置*/
       PR12();
      
       com=0x80;      /*显示方式设置逻辑"或"合成*/
       PR12();
     
       com=0x9c;      /*显示开关设置 开文本和图形显示*/
       PR12();
    }
      
     
   
 /***************************/
/*      清显示子程序       */
/***************************/
CLEAR()
    {
    unsigned char i,j;
        dat1=0x00;
        dat2=0x00;
        com=0x24;
        PR1();
        com=0xb0;
        PR12();
    for(i=0;i<205;i++)
       {
         for(j=0;j<=40;j++)
            {
                ST3();
                d_add=0x00;
            }
        }
       com=0xb2;
       PR12();
    }/**************************/
 /*       CGRAM函数        */
 /**************************/
 CGRAM()
     {
        unsigned int i;
           dat1=0x03;
           dat2=0x00;
           com=0x22;   /* 设置CGRAM偏置地址 */
           PR1();
           dat1=0x00;
           dat2=0x1c;
           com=0x24;   /* 设置存储器地址指针 */
           PR1();
           com=0xb0;   /* 设置自动写方式 */
           PR12();
        for(i=0;i<320;i++)
           {
             ST3();
             d_add=CGTAB[i];
           }
        com=0xb2;     /* 设置自动写结束方式 */
        PR12();
     }

/********************************/
/*    汉字写入(文本方式)函数    */
/********************************/
CCW1_PR()
     {
        unsigned int i,j;
        i=para1;
        j=i*O_Y+O_X;
        dat1=j%256;
        dat2=j/256;
        com=0x24;  /* 设置显示地址 */
        PR1();
        dat2=code_1;  /* 写入左上半部汉字代码 */
        com=0xc0;
        PR11();
        dat2=code_1+0x02;  /* 写入右上半部汉字代码 */
        PR11();
        j=j+i;
        dat1=j%256;   /* 显示RAM地址修正 */
        dat2=j/256;
        com=0x24;
        PR1();
        dat2=code_1+0x01; /* 写入左下半部汉字代码 */
        com=0xc0;
        PR11();
        dat2=code_1+0x03;  /* 写入右下半部汉字代码 */
        PR11();
     }

CCWD_PR()             /* */
     {
        unsigned int i,j;
        i=para1;
        j=i*O_Y+O_X;
       
        dat1=j%256;
        dat2=j/256;
        com=0x24;  /* 设置显示地址 */
        PR1();
        dat2=code_1;  /* 写入左上半部汉字代码 */
        com=0xc0;
        PR11();
       
        j=j+i;
        dat1=j%256;   /* 显示RAM地址修正 */
        dat2=j/256;
        com=0x24;
        PR1();
       
        dat2=code_1+0x01; /* 写入左下半部汉字代码 */
        com=0xc0;
        PR11();
      
     }

CCW2_PR()
    {
     unsigned int i,j,count1;
          i=para1;
          j=i*O_Y+O_X+0x0800;
       for(count1=0;count1<16;count1++)
         {
           dat1=j%256;
           dat2=j/256;
           com=0x24;
           PR1();
           
           dat2=CCTAB[code_1][count1];   /* 写入汉字左侧代码 */
           com=0xc0;
           PR11();
           
           dat2=CCTAB[code_1][count1+16];  /* 写入汉字右侧代码 */
           PR11();
           j=j+i;
         }
      }

    
  /********************************/
/*  西文字符写入(文本属性)函数  */
/********************************/
    CW2_PR()
       {
       unsigned int i,j;
        i=para1;
        j=i*O_Y+O_X;
        dat1=j%256;
        dat2=j/256;
        com=0x24;  /* 显示地址设置 */
        PR1();
      
        dat2=code_1;
        com=0xC0;  /* 数据写 */
        PR11();
      
        dat2=0x08;    
        com=0x24;
        PR1();
       
            
       }
   
      
      
/****************************/
/*        绘点函数          */
/****************************/
W_DOT()
    {
      unsigned char i;
      unsigned int k;
         i=O_X%8;
         O_X=O_X/8;
         k=0x20*O_Y+O_X+0x0800;
         dat1=k%256;
         dat2=k/256;
         com=0x24;
         PR1();
         i=0x07-i;
         com=i|0xf8;  /* 位操作 */
         PR12();
     }
/****************************/
/*    写指令和写数据函数    */
/****************************/
PR1()              /* 双字节参数指令写入入口 */
    {
      ST01();
      d_add=dat1;  /* 取第一参数单元数据 */
      PR11();
    }
PR11()             /* 单字节参数指令写入入口 */
    {
      ST01();
      d_add=dat2;  /* 取第二参数单元数据 */
      PR12();
    }
PR12()             /* 无参数指令写入入口 */
   {
     ST01();
     c_add=com;    /* 写入指令代码 */
   }
/************************************************/
/*  判状态位S1,S0 函数(读写指令和读写数据状态)  */
/************************************************/
ST01()
    {
      do
        {
        ACC=c_add;
        }
      while(Acc_0==0,Acc_1==0);
    }
/************************************/
/*  判状态位S2函数(数据自动读状态)  */
/************************************/
ST2()
   {
     do
     {
       ACC=c_add;
     }
    while(Acc_2==0);
   }
/************************************/
/*  判状态位S3函数(数据自动写状态)  */
/************************************/
ST3()
   {
     do
     {
       ACC=c_add;
     }
     while(Acc_3==0);
   }
 
DISHAZIT(uchar x,uchar y,uchar d)  /*汉字写入(图文方式)*/
 {
   code_1=d;
   O_X=x;
   O_Y=y;
   CCW2_PR();
   }


DISDASC(uchar x,uchar y,uchar d)  /*汉字写入(文本方式)*/
 {
   code_1=d;
   O_X=x;
   O_Y=y;
   CCWD_PR();
   }
DISASC(uchar x,uchar y,uchar d)
    {
          O_X=x;
          O_Y=y;
          code_1=d;     /*西文写WELCOME YOU */
          CW2_PR(); 
          }         

ShowLine(uchar x,uchar y,uchar *puts,uchar le,uchar kk)
{
            uchar uk,jk,byte;
          for(uk=x,jk=0;jk<le;jk++)
            {
              byte=puts[jk];
              if(kk==0){ DISHAZIT(uk,y,byte);}
                  else {FDISHAZIT(uk,y,byte);}
              uk=uk+2;    /*汉字从0x80开始,包括0x80*/
                /* else      {DISASC(x,k,byte);k=k+1;}         字母 ASCII码从0X20 开始*/
                 }
  }             
FDISHAZIT(uchar x,uchar y,uchar d)  /*汉字写入(反图文方式)*/
 {
   code_1=d;
   O_X=x;
   O_Y=y;
   FCCW2_PR();
   }
FCCW2_PR()
    {
     unsigned int i,j,count1;
          i=para1;
          j=i*O_Y+O_X+0x0800;
       for(count1=0;count1<16;count1++)
         {
           dat1=j%256;
           dat2=j/256;
           com=0x24;
           PR1();
           
           dat2=0xff-CCTAB[code_1][count1];   /* 写入汉字左侧代码 */
           com=0xc0;
           PR11();
           
           dat2=0xff-CCTAB[code_1][count1+16];  /* 写入汉字右侧代码 */
           PR11();
           j=j+i;
         }
      }

GUANGBIAO(uchar x,uchar y)
{
        dat1=x;       /*光标定位*/
        dat2=y;
        com=0x21;
        PR1();
        }
 

 /***************************/
/*       演示主程序        */
/***************************/

void main()
     {
       uchar code STR1[5]={0x00,0x01,0x02,0x03,0x04};
       INT_1();         /* 初始化函数 */
       CLEAR();         /* 清屏函数 */
       CGRAM();         /* 建立CGRAM内字库函数 */
 
            /* 汉字写入(文本方式)方*/
 
     FDISHAZIT(0x16,0x00,0X00);
       /* 汉字写入(图文方式)红*/
     DISHAZIT(0x18,0x10,0X01); 
         /* 汉字写入(图文方式)绿*/
     
     DISDASC(0x01,0x08,0X82);
       /* 汉字写入(文本方式)(*/
     DISDASC(0x01,0x0a,0X84);    /* 汉字写入(文本方式)*/
   ShowLine(0x0a,0x70,STR1,5,1);
    ShowLine(0x0a,0x50,STR1,5,0); 
    }

⌨️ 快捷键说明

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