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

📄 ag12864c.txt

📁 欣瑞达12864例子程序源程序,128×64C语言驱动
💻 TXT
📖 第 1 页 / 共 2 页
字号:
            set_adr(j,0);
            for(k=0;k<64;k++)
            {
                wdata((*np&rbits)|(~rbits&fdata),0,1);
                np++;
            }
        }
        rbits =0xff;
        np -=0x400;
        delay(0x4000);
    }
}
void wcode(unsigned char c,bit cs1,bit cs2)
{
    CS1 =cs1;
    CS2 =cs2;
    RS =0;
    RW =0;
    Ena =0;
    Databus =c;
    Ena =1;
    _nop_();
    Ena =0;    
    _nop_();
}


void wdata(unsigned char c,bit cs1,bit cs2)
{
    CS1 =cs1;
    CS2 =cs2;
    RS =1;
    RW =0;
    Ena =0;
    Databus =c;
    Ena =1;
    _nop_();
    Ena =0;
    _nop_();
}


void set_startline(unsigned char i)
{
    i +=0xc0;
    wcode(i,1,1);
}


void set_adr(unsigned char x,unsigned char y)
{
    x +=0xb8;
    y +=0x40;
    wcode(x,1,1);
    wcode(y,1,1);
}



二:

 

//这是点阵LCD显示程序。

#include <REG52.h>
#include <absacc.h>
#include <INTRINS.H>
#include <ZIMO.H>    //字库

//===世纪开发网出品,请尊重作者,转载请保持以下信息。=====

//==神龙编写:世纪开发网(http://www.21kf.com)=============

//========================================================

struct
 {unsigned char db;
 } dbao[6];

struct
 {unsigned char df;
 } dbuf[6];


//unsigned char d1,d2,d3,d4,d5,d6;
//unsigned char dbuf1,dbuf2,dbuf3,dbuf4,dbuf5,dbuf6;

unsigned int  count_int;


sfr  databus =0x90;              //P1口脚;
sbit resetpin=P3^2;              //复位脚;
sbit cs2pin  =P3^3;              //IC2的片选信号脚;
sbit cs1pin  =P3^4;              //IC1的片选信号脚;
sbit epin    =P3^5;              //使能脚;
sbit r_wpin  =P3^6;              //读;
sbit d_ipin  =P3^7;              //写;

sbit cso1    =P0^0;              //--IC1-- 送数据片选信号位
sbit cso2    =P0^1;              //--IC2-- 送数据片选信号位
sbit cso3    =P0^2;              //--IC3-- 送数据片选信号位

sbit sw      =P0^3;              //按键
//---------------------------------------

 

/*****************************这是一MS的延时程序。****************/

//延时子程序。
void delay(unsigned int v)      // 10us delay
   {
   while(v!=0) v--;
   }

/*-----------------------------------------------------------------------------*/
//延时程序///////////////////////////////////////////////////
void   Delay2  (unsigned  int  x)
  {
      unsigned  char  y;
      while(x--)
      {
      for(y=0;y<=120;y++);
      }
   }

//######################################################################
//以下写LCD子程序
//----------复位信号子程序。
void reset()
   {resetpin=0;delay(20);resetpin=1;delay(20);}

//----------写代码(命令)指令子程序.
void wcode(unsigned char c,cs1,cs2)
   {
     cs1pin=cs1; cs2pin=cs2; d_ipin=0; r_wpin=0; databus=c;
     epin=0; delay(5); epin=1; delay(5); epin=0;
   }

//----------写数据指令子程序.
void wdata(unsigned char c,cs1,cs2)
   {
    cs1pin=cs1; cs2pin=cs2; d_ipin=1; r_wpin=0; databus=c;
    epin=0; delay(5); epin=1; delay(5); epin=0;
   }

//----------设置显示开始子程序.
void set_startline(unsigned char i)
   {
    i=0xc0+i;
    wcode(i,1,1);
   }

//-----------设置显示具体子程序.
void set_adr(unsigned char x,y)
   {
    x=x+0xb8;y=y+0x40;
    wcode(x,1,1);
    wcode(y,1,1);
   }

//-----------显示ON/OFF子程序.
void dison_off(unsigned char o)
   {
    o=o+0x3e;
    wcode(o,1,1);
   }

 

//====================================
/* x---------行数据(最大值是64/16=4行). (调用值:0~3)
   Y---------列数据(最大值是128个字).   (调用值:0~128)
   P---------指向写入数据首地址指针.    (调用值:数组名)
   longness--写入字的个数               (调用值汉字最大8,数字最大16)
   falg1-----写入汉字\数字、字母标记    (汉字 1, 字或字母 0)
   flag2-----反白标记                   (正常 0, 反白显示 1) */

void write_lcd(unsigned char x,
               unsigned char y,
               unsigned char *p,
               unsigned char longness,
               unsigned char flag1,
               unsigned char flag2 )
{
  unsigned char c,d;
  flag1=8+8*flag1;
  d=y;
  for(;longness!=0;longness--)                 //longness是写入字的个数,即是程序执行的次数
     {
     if(y>=64)
       {d=y-64;}
     set_adr(x*2,d);                           //设置要写的地址,即X页Y列
     for(c=0;c<flag1;c++)                      //
     {                                         //
      if(y>=64)                                //
           {                                   //
         //   if(flag2)  {wdata(~(*(p++)),0,1);} //----IC2--右-----反白
         //   else{
           wdata(*(p++),0,1);
         //}    //
           }                                   //
      else {                                   //
         //   if(flag2)  {wdata(~(*(p++)),1,0);} //                反白
         //   else{
              wdata(*(p++),1,0);
         //     }    //写入IC1即左半屏
           }                                   //
     }                                         //字的上半部分
//-----------------------------------------------
     set_adr(x*2+1,d);                         //                  //这是写入一个汉字
     for(c=0;c<flag1;c++)                      //
     {                                         //
      if(y>=64)                                //
           {                                   //
        //   if(flag2)  {wdata(~(*(p++)),0,1);}  //----IC2---右-------反白
         //  else{
            wdata(*(p++),0,1);
          //  }     //
           }                                   //
      else {                                   //
         //  if(flag2)  {wdata(~(*(p++)),1,0);}  //---反白
         //  else       {
           wdata(*(p++),1,0);
         //  }     //写入IC1 即左半屏
           }                                   //
     }                                         //字的下半部分
     y=y+flag1;
     d=d+flag1;
   }
   dison_off(1);
}
//===============================================
//以下查数字显示表.
void writenum0_9(unsigned char x,unsigned char y,unsigned char num,unsigned char l,unsigned char k,unsigned char j)
{
  switch(num)
  {
   case 0:       {write_lcd(x, y,  num_0,  l, k,j);}  break;
   case 1:       {write_lcd(x, y,  num_1,  l, k,j);}  break;
   case 2:       {write_lcd(x, y,  num_2,  l, k,j);}  break;
   case 3:       {write_lcd(x, y,  num_3,  l, k,j);}  break;
   case 4:       {write_lcd(x, y,  num_4,  l, k,j);}  break;
   case 5:       {write_lcd(x, y,  num_5,  l, k,j);}  break;
   case 6:       {write_lcd(x, y,  num_6,  l, k,j);}  break;
   case 7:       {write_lcd(x, y,  num_7,  l, k,j);}  break;
   case 8:       {write_lcd(x, y,  num_8,  l, k,j);}  break;
   case 9:       {write_lcd(x, y,  num_9,  l, k,j);}  break;
   default:      {write_lcd(x, y,  num_0,  l, k,j);}  break;
  }
}

 

//#########################################################
//界面1每行处理子程序(共4行)以下是页面1处理子程序.
void line_1_1()      //----------2-line
 {
write_lcd  (0,0,  nian,   1,  1, 0);              //--电      16
write_lcd  (0,24, ri,     1,  1, 0);              //--压      32
write_lcd  (0,40, e1,     1,  1, 0);              //--:      48
write_lcd  (0,47,bc0,     1,  0, 0);              //--|

write_lcd  (1,0,AA2,      1,  0, 0);              //--A      48
write_lcd  (1,8,b1,       1,  1, 0);              //--、
writenum0_9(1,16, 2,      1,  0, 0);              //--2
writenum0_9(1,24, 2,      1,  0, 0);              //--2
writenum0_9(1,32,0,       1,  0, 0);              //--0       16
write_lcd  (1,40,V1,      1,  0, 0);              //--v
write_lcd  (1,47,bc0,     1,  0, 0);             //--|

write_lcd  (2,0,AB2,      1,  0, 0);             //--B   48
write_lcd  (2,8,b1,       1,  1, 0);             //--、
writenum0_9(2,16, 2,      1,  0, 0);             //--2
writenum0_9(2,24, 2,      1,  0, 0);             //--2
writenum0_9(2,32,0,       1,  0, 0);             //--0       16
write_lcd  (2,40,V1,      1,  0, 0);             //--v
write_lcd  (2,47,bc0,     1,  0, 0);             //--|

write_lcd  (3,0,AC2,      1,  0, 0);             //--C      48
write_lcd  (3,8,b1,       1,  1, 0);             //--、
writenum0_9(3,16, 2,      1,  0, 0);             //--2
writenum0_9(3,24, 2,      1,  0, 0);             //--2
writenum0_9(3,32,0,       1,  0, 0);             //--0       16
write_lcd  (3,40,V1,      1,  0, 0);             //--V
write_lcd  (3,47,bc0,     1,  0, 0);             //--|

}

//111111111111111111111
//以下是页面1处理子程序.
void page_1_dispose()
{
      line_1_1();
      dison_off(1);
}
//#####################
//33333333333333333333333333333333333333333333333333333333333333333333333333333
//33333333333333333333333333333333333333333333333333333333333333333333333333333
//---------------------------
void clsall (unsigned char y)                      //清屏子程序。
{
   unsigned char x;
   for(;y<4;y++)
    {
     for(x=0;x<129;x+=16)
       {
        write_lcd  (y,x,   not,    1,  1, 0);            //空0.5格    16
       }
    }
}

//============================================================
//---------------------------
//---------------------------
void Display_v (unsigned char x,unsigned char y)
//调用类型,X,代表第几个横,Y代表显示多少。
{
unsigned char vo,vl,nt,nt1;
unsigned char xy,yx;
if(x==1){yx=56;}
if(x==2){yx=68;}
if(x==3){yx=80;}
if(x==4){yx=92;}
if(x==5){yx=104;}
if(x==6){yx=116;}
vo=y/4;
vl=y%4;
nt=vo;
for(;nt<4;nt++)
    {nt1=3-nt;
      write_lcd  (nt1,yx,notn,    1,  0, 0);
    }
  xy=3;
  if(vo==1){write_lcd  (3,yx,bc1,    1,  0, 0);xy=2;}
  if(vo==2){write_lcd  (2,yx,bc1,     1,  0, 0);xy=1;}
  if(vo==3){write_lcd  (1,yx,bc1,     1,  0, 0);xy=0;}
  if(vo==4){write_lcd  (0,yx,bc1,     1,  0, 0);}
//=================
  if(vl==1){write_lcd  (xy,yx,bc4,     1,  0, 0);}
  if(vl==2){write_lcd  (xy,yx,bc3,     1,  0, 0);}
  if(vl==3){write_lcd  (xy,yx,bc2,     1,  0, 0);}
}

 

⌨️ 快捷键说明

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