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

📄 240128.c

📁 各种款式液晶显示程序
💻 C
字号:
#include<reg51.h>
#include<stdio.h>
#include<absacc.h>
#define uchar unsigned char
uchar *p,*p1,*p2;/*建立数组指针*/
uchar q;/*判忙*/
uchar data i;
uchar data wbyte;
uchar data Column;/*定义列*/
int data Page,Page1;/*定义页*/
sbit C_D=P2^0;
sbit FS=P3^5;/*为1时,为6*8点阵;为0时,为8*8点阵*/
sbit E=P2^7;/*读写使能信号,1有效*/
sbit R_W=P3^6;/*读写选择信号;1为读选通,0为写选通*/
sbit D_I=P3^7;/*数据指令选择信号;1为数据操作,0为写指令或读状态*/
#define dlcd XBYTE[0x0000]/*定义送数据的地址*/
#define clcd XBYTE[0x0100]/*定义送指令的地址*/
char code Hanzi[128]=  /*文本数组*/
{
 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
 0x11,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x0e,0x0f,
 0x21,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,
 0x31,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,
 0x41,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,
 0x51,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,
 0x61,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,
 0x71,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f
};
char code Hanzi1[26][35]=  /*图形数组*/
{
 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x07,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x01,
 0xE0,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,
 0x0F,0x80,0x00,0x00,0x03,0xFF,0xC0,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x3E,0x00,
 0x00,0x00,0x3F,0xF0,0x00,0x00,0x1F,0xFC,0x00,0x00,0x0F,0x80,0x00,0x00,0x03,0xFB,
 0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x7F,0xF8,0x00,0x00,
 0x1F,0xDE,0x00,0x00,0x07,0xC0,0x00,0x00,0x03,0xE7,0xC0,0x00,0x00,0x01,0xFE,0x00,
 0x00,0x00,0x7E,0x00,0x00,0x00,0xFE,0x3C,0x00,0x00,0x00,0x1F,0x00,0x00,0x03,0xC0,
 0x00,0x00,0x0F,0xEF,0x80,0x00,0x00,0x01,0xFE,0x00,0x00,0x01,0xFB,0xE0,0x00,0x00,
 0xC0,0x1C,0x00,0x01,0xCF,0xDF,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0xCF,0x00,0x00,
 0x00,0x0F,0xF0,0x00,0x00,0x03,0xFF,0xE0,0x00,0x0C,0x1C,0x1E,0x00,0x00,0xFF,0xFE,
 0x00,0x00,0x03,0xFE,0x00,0x00,0x0F,0xFE,0x00,0x00,0x00,0x7F,0xE0,0x00,0x00,0x0F,
 0xFF,0xE0,0x00,0x0E,0x3F,0x1E,0x00,0x00,0xFF,0xFE,0x00,0x00,0x0F,0xFF,0x80,0x00,
 0x0F,0xFC,0x00,0x00,0x00,0x3F,0xF8,0x00,0x00,0x3F,0xFF,0x80,0x00,0x0E,0x7F,0x0E,
 0x00,0x00,0xF7,0xFC,0x00,0x00,0x1F,0xC3,0xC0,0x00,0x0C,0xFE,0x00,0x00,0x00,0x1F,
 0xFC,0x00,0x00,0x6F,0xEF,0x00,0x00,0x1F,0xFF,0x0E,0x00,0x00,0xFF,0xF8,0x00,0x03,
 0xBF,0x83,0xE0,0x00,0x00,0xFF,0x00,0x00,0x00,0x03,0xFF,0xE0,0x00,0xFF,0x9E,0x00,
 0x00,0x1F,0xFE,0x0E,0x00,0x00,0xFF,0xF0,0x00,0x03,0xF7,0xE3,0xE0,0x00,0x00,0x7F,
 0xE0,0x00,0x00,0x03,0xFF,0xF8,0x00,0xFE,0x3F,0x00,0x00,0x1F,0xDE,0x0E,0x00,0x00,
 0x7F,0xE0,0x00,0x01,0xE7,0xF7,0xE0,0x00,0x00,0x3F,0xF0,0x00,0x00,0x07,0xF8,0x78,
 0x00,0xF8,0xFF,0xC0,0x00,0x1F,0x1E,0xFF,0x00,0x00,0x7F,0xE0,0x00,0x01,0xFF,0xFF,
 0xC0,0x00,0x00,0xFF,0xF8,0x00,0x00,0x1F,0xB8,0x3C,0x00,0x71,0xFB,0xC0,0x00,0x3F,
 0x7F,0xFF,0x00,0x00,0x1D,0xF8,0x00,0x01,0xFF,0xEF,0x80,0x00,0x07,0xE7,0xF8,0x00,
 0x01,0xFF,0x78,0x3C,0x00,0x03,0xE7,0xC0,0x00,0x38,0xFF,0xFF,0x00,0x00,0x1F,0xFE,
 0x00,0x01,0xFF,0xDF,0x00,0x00,0x0F,0x87,0xF0,0x00,0x01,0xFF,0xFC,0x38,0x00,0x07,
 0xFF,0x80,0x00,0x38,0xFF,0xEF,0x00,0x00,0x1F,0xFE,0x00,0x01,0xEF,0xFE,0x00,0x00,
 0x3F,0x07,0x80,0x00,0x01,0xE7,0xFC,0x38,0x00,0x07,0xFF,0x00,0x00,0x38,0xFE,0xCF,
 0x00,0x03,0xBD,0xFE,0x00,0x01,0xFF,0xFC,0x00,0x00,0x3E,0x07,0x80,0x00,0x01,0xC7,
 0xF8,0x38,0x00,0x07,0xFE,0x00,0x00,0x38,0x7F,0xCF,0x00,0x03,0xFD,0xFC,0x00,0x00,
 0xFF,0xFC,0x00,0x00,0x3C,0x07,0x80,0x00,0x01,0xC7,0xFC,0x78,0x00,0x07,0x7C,0x00,
 0x00,0x38,0x7F,0xCF,0x00,0x03,0xFD,0xF0,0x00,0x00,0xFF,0xFC,0x00,0x00,0x38,0x07,
 0x80,0x00,0x01,0xC1,0xFC,0x78,0x00,0x00,0x1C,0x00,0x00,0x3C,0xFF,0xCF,0x00,0x03,
 0xFF,0xC0,0x00,0x00,0x7F,0x80,0x00,0x00,0x38,0x07,0x80,0x00,0x01,0xC7,0xFC,0x78,
 0x00,0x00,0x1F,0xE0,0x00,0x3C,0xFF,0x8F,0x00,0x01,0xDF,0xC0,0x00,0x00,0x7F,0x00,
 0x00,0x00,0x18,0x07,0x80,0x00,0x01,0xC7,0xE0,0x70,0x00,0x18,0x7C,0x78,0x00,0x1E,
 0xFC,0x1F,0x00,0x00,0x1F,0xFF,0x00,0x00,0x07,0x80,0x00,0x00,0x0C,0x07,0x80,0x00,
 0x01,0xC7,0xFC,0xF0,0x00,0x1F,0x9C,0x7C,0x00,0x0F,0xF8,0x3E,0x00,0x01,0xFF,0xFF,
 0xC0,0x00,0x07,0xFF,0x80,0x00,0x07,0x0F,0x00,0x00,0x00,0xC0,0xEF,0xF0,0x00,0x1F,
 0x9D,0xFC,0x00,0x07,0xFF,0xFE,0x00,0x1F,0xFF,0xFF,0xC0,0x00,0x03,0xFF,0xC0,0x00,
 0x03,0xCF,0x00,0x00,0x00,0x00,0xE7,0xE0,0x00,0x3F,0xFC,0x7C,0x00,0x03,0xDF,0xFC,
 0x00,0x0F,0xE0,0x07,0xC0,0x00,0x00,0xFF,0x80,0x00,0x01,0xFF,0x00,0x00,0x00,0x00,
 0xE3,0xE0,0x00,0x3C,0xFC,0x18,0x00,0x00,0x07,0xF8,0x00,0x07,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x41,0xC0,0x00,0x18,0x3C,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
uchar data j=112;/*所建立的文本数组中元素的个数*/
uchar data j1=26;/*所建立的图形数组中元素每一行的个数*/
/*为所建立图形数组的行*/
uchar data j2=35;/*所建立的图形数组中元素每一列的个数*/
/*为所建立图形数组的列*/
uchar data k=0x20;/*文本数组起始点地址低八位*/
uchar data k1=0x00;/*文本数组起始点地址高八位*/
int data col=0x01e4;/*图形起始点坐标*/
int data col1;
uchar data l1,o1;
/**************************************************/
void WCom1(uchar);/*单步写指令*/
void WCom2(uchar);/*连续写指令*/
void DCom1(uchar);/*单步送数据*/
void DCom2(uchar);/*连续送数据*/
void Clearlcd();/*清屏*/
void Imim();/*初始化*/
void Delay();/*延时*/
void Hanz();/*写文本*/
void Hanz1();/*写图形*/
void Wbite();/*写图形子程序*/
/********************主程序********************/
void main()
{
 Delay();
 Delay();
 Delay();/*延时*/
 FS=0;
 Imim();/*初始化*/
 p=Hanzi;/*指针指向文本数组的首地址*/
 p1=Hanzi1;/*指针指向图形数组的首地址*/
 Hanz();/*写文本程序*/
 Delay();
 Delay();
 Delay();
 Delay();
 Clearlcd();
 Hanz1();/*写图形程序*/
 loop:goto loop;
 }
/********************单步写指令送数据子程序********************/
void WCOM1(uchar d)    /*写指令程序*/
{
Loop:
 q=clcd;/*将p0口状态读入*/
 if((q&0x03)!=0x03)/*判断屏幕是否忙*/
 {
  goto Loop;/*若忙,循环等待*/
 }
 clcd=d;/*将数据送入p0口*/
}
/********************单步送数据子程序********************/
void DCOM1(uchar d)    /*送数据程序*/
{
Loop:
 q=clcd;/*将p0口状态读入*/
 if((q&0x03)!=0x03)/*判断屏幕是否忙*/
 {
  goto Loop;/*若忙,循环等待*/
 }
 dlcd=d;/*将数据送入p0口*/
}
/********************连续写指令送数据子程序********************/
void WCOM2(uchar d)    /*写指令程序*/
{
Loop:
 q=clcd;/*将p0口状态读入*/
 if((q&0x08)!=0x08)/*判断屏幕是否忙*/
 {
 goto Loop;/*若忙,循环等待*/
 }
 clcd=d;/*将数据送入p0口*/
}
/********************连续送数据子程序********************/
void DCOM2(uchar d)  /*送数据程序*/
{
Loop:
 q=clcd;/*将p0口状态读入*/
 if((q&0x08)!=0x08)/*判断屏幕是否忙*/
 {
  goto Loop;/*若忙,循环等待*/
 }
 dlcd=d;/*将数据送入p0口*/
}

/********************初始化子程序********************/
void Imim()
{
 Delay();
 WCOM1(0x90);/*关显示指令*/
 DCOM1(0x00);
 DCOM1(0X00);
 WCOM1(0x40);/*文本区首址设定*/
 DCOM1(0x1e);
 DCOM1(0X00);
 WCOM1(0x41);/*文本区宽度设定*/
 DCOM1(0x00);
 DCOM1(0x00);
 WCOM1(0x42);/*图形区首址设定*/
 DCOM1(0x1e);
 DCOM1(0x00);
 WCOM1(0x43);/*图形区宽度设定*/
 DCOM1(0X00);
 DCOM1(0X00);
 WCOM1(0X21);/*光标指针设置*/
 WCOM1(0xa7);/*光标形状设置*/
 WCOM1(0x80);/*显示方式设置*/
 Clearlcd();/*清屏*/
 WCOM1(0x9f);/*开显示指令*/
}
/********************延时子程序********************/
void Delay()
{
 uchar data i,j;
 for(i=0;i<255;i++)
  for(j=0;j<255;j++);
}
/********************基本指令集清屏子程序********************/
void Clearlcd()
{
 uchar data i,j;
 DCOM1(0X00);
 DCOM1(0X00);
 WCOM1(0X24);/*地址指针设置*/
 for(i=0;i<30;i++)
  {
   for(j=0;j<255;j++)
   {
    DCOM1(0x00);
    WCOM1(0xc0);/*单步写数据*/
   }
  }
}
/********************写文本程序********************/
void Hanz()
{
 DCOM1(k);
 DCOM1(k1);
 WCOM1(0X24);/*地址指针设置*/
 WCOM1(0xb0);/*自动写方式设定*/
 for(i=0;i<j;i++)
 {
  wbyte=*p;
  DCOM2(wbyte);/*将汉字数组数据送入*/
  p=p+1;
 }
 WCOM2(0xb2);/*自动写方式结束*/
}
/********************写图形程序********************/
void Hanz1()
{
 Column=0;
 wbyte=*p1;
 col1=col;
 l1=col1;
 DCOM1(l1); /*送入图形地址低八位*/
 col1=col1>>8;
 o1=col1;
 DCOM1(o1); /*送入图形地址高八位*/
 WCOM1(0X24);/*地址指针设置*/
  for(i=0;i<j2;i++)
 {
  for(j=0;j<j1;j++)
  {
   wbyte=*p1;
   Wbite();
  }
 }
}
/********************写图形子程序********************/
void Wbite()
{
 if(Column<26)
 {
  DCOM1(wbyte);/*将汉字数组数据送入*/
  WCOM1(0xc0); /*单步写数据*/
  p1=p1+1;
  Column=Column+1;
 }
 else if(Column=26)
 {
  Column=0;
  col=col+0x001e;/*写下一行*/
  col1=col;
  o1=col1;
  DCOM1(o1); /*送入图形地址低八位*/
  col1=col1>>8;
  l1=col1;
  DCOM1(l1);
  WCOM1(0X24);/*地址指针设置*/
  DCOM1(wbyte);/*将汉字数组数据送入*/
  WCOM1(0xc0); /*单步写*/
  p1=p1+1;
  Column=Column+1;
 }
}

⌨️ 快捷键说明

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