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

📄 lcd.txt

📁 本文主要编译出lcd的基本程序
💻 TXT
📖 第 1 页 / 共 2 页
字号:

#include <reg51.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<absacc.h>
#include<ctype.h>

#define   uchar   unsigned  char
#define   uint    unsigned  int
#define   LCD_PORT   P0                       //用P0口传送就(DB0~DB7)的数据


#define   Left       1
#define   Right      2
#define   _nop       {}


sbit    LCD_Busy=P0^7;
sbit    LCD_RS=P2^0;
sbit    LCD_RW=P2^1;
sbit    LCD_EN=P2^2;
sbit    LCD_CS1=P2^3;
sbit    LCD_CS2=P2^4;
sbit    LCD_RST=P2^5;
sbit      F_M_Q=P2^6;

uchar   rx_dat=0;
uchar   rx_dat_mem=0;

char   code       ji[]={0x00,0x04,0x04,0x04,0xFF,0x54,0x54,0x54,0x54,0x54,0xFF,0x04,0x04,0x04,0x00,0x00,
                        0x11,0x51,0x49,0x4D,0x4B,0x49,0x49,0x7D,0x49,0x49,0x4B,0x45,0x4D,0x59,0x09,0x00};//基
char   code       yu[]={0x40,0x40,0x42,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x40,0x00,
                        0x00,0x00,0x00,0x00,0x20,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//于
char   code    sheng[]={0x00,0x80,0x60,0x1E,0x10,0x10,0x10,0x10,0xFF,0x12,0x10,0x10,0x98,0x10,0x00,0x00,  
                        0x01,0x40,0x40,0x41,0x41,0x41,0x41,0x41,0x7F,0x41,0x41,0x41,0x41,0x61,0x40,0x00};//生                      
char   code     ming[]={0x40,0x40,0xA0,0x90,0xA8,0xA4,0xA2,0x21,0xA2,0xA4,0xA8,0x90,0xB0,0x60,0x20,0x00,
                        0x00,0x00,0x3F,0x08,0x08,0x08,0x1F,0x00,0xFF,0x00,0x10,0x30,0x1F,0x00,0x00,0x00};//命
char   code      tan[]={0x08,0x08,0x08,0xFF,0x48,0x88,0xA6,0x9A,0x82,0xE2,0x82,0x8A,0x92,0xB6,0x82,0x00,
                        0x02,0x42,0x81,0x7F,0x00,0x10,0x08,0x06,0x01,0xFF,0x02,0x04,0x18,0x30,0x10,0x00};//探
char   code       ce[]={0x08,0x31,0x86,0x60,0x00,0xFE,0x02,0xF2,0x02,0xFE,0x00,0xF8,0x00,0x00,0xFF,0x00,
                        0x04,0xFC,0x03,0x00,0x80,0x47,0x30,0x0F,0x10,0x67,0x00,0x07,0x40,0x80,0x7F,0x00};//测
char   code       de[]={0x00,0xF8,0x8C,0x8B,0x88,0xF8,0x40,0x30,0x8F,0x08,0x08,0x08,0x08,0xF8,0x00,0x00,
                        0x00,0x7F,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x03,0x26,0x40,0x20,0x1F,0x00,0x00};//的
char   code       wu[]={0x00,0x40,0x42,0x42,0x42,0x42,0x42,0xFE,0xC2,0x42,0x42,0x42,0x42,0x42,0x40,0x00,
                        0x40,0x40,0x20,0x10,0x08,0x04,0x03,0x00,0x3F,0x40,0x40,0x40,0x40,0x40,0x70,0x00};//无
char   code     xian[]={0x40,0x60,0x58,0xC7,0x62,0x00,0x90,0x90,0x90,0xFF,0x90,0x92,0x9C,0x94,0x80,0x00,
                        0x20,0x22,0x23,0x12,0x12,0x12,0x20,0x20,0x10,0x13,0x0C,0x14,0x22,0x40,0xF8,0x00};//线
char   code      yao[]={0x40,0x42,0xCC,0x00,0x00,0x4A,0x32,0x26,0x2A,0xE1,0x31,0x29,0x25,0x00,0x00,0x00,
                        0x40,0x20,0x1F,0x20,0x40,0x41,0x5D,0x51,0x51,0x5F,0x51,0x51,0x5D,0x41,0x40,0x00};//遥
char   code     kong[]={0x08,0x08,0x08,0xFF,0x88,0x48,0x00,0x98,0x48,0x28,0x0A,0x2C,0x48,0xD8,0x08,0x00,
                        0x02,0x42,0x81,0x7F,0x00,0x00,0x40,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x40,0x00};//控
char   code      che[]={0x00,0x04,0x84,0xC4,0xA4,0x9C,0x87,0x84,0xF4,0x84,0x84,0x84,0x84,0x84,0x00,0x00,
                        0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x00};//车
char   code      nan[]={0x04,0x04,0xE4,0x24,0x24,0x64,0xB4,0x2F,0x24,0xA4,0x64,0x24,0x24,0xE6,0x04,0x00,
                        0x00,0x00,0x7F,0x04,0x05,0x05,0x05,0x7F,0x05,0x05,0x05,0x25,0x44,0x3F,0x00,0x00};//南
char   code      shi[]={0x00,0xFC,0x00,0x00,0xFF,0x00,0xF2,0x12,0x12,0x12,0xFE,0x12,0x12,0x12,0xF2,0x00,
                        0x40,0x27,0x10,0x0E,0x01,0x00,0x0F,0x00,0x00,0x00,0xFF,0x00,0x04,0x08,0x07,0x00};//师
char   code       da[]={0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,0xA0,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
                        0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x01,0x06,0x08,0x30,0x60,0xC0,0x40,0x00};//大
char   code     dian[]={0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,
                        0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00};//电
char   code     yuan[]={0xFE,0x02,0x32,0x4A,0x86,0x0C,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0x0C,0x04,0x00,
                        0xFF,0x00,0x02,0x04,0x83,0x41,0x31,0x0F,0x01,0x01,0x7F,0x81,0x81,0x81,0xF1,0x00};//院
char   code      ren[]={0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x3F,0xC2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                        0x00,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x01,0x06,0x0C,0x18,0x30,0x60,0x20,0x00};//人
char   code      you[]={0x00,0x04,0x84,0x44,0xE4,0x34,0x2C,0x27,0x24,0x24,0x24,0xE4,0x04,0x04,0x04,0x00,
                        0x02,0x01,0x00,0x00,0xFF,0x09,0x09,0x09,0x29,0x49,0xC9,0x7F,0x00,0x00,0x00,0x00};//有
char   code     kuaz[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFE,0xFE,0x3E,0x0E,0x06,0x02,0x00,
                        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0x7F,0x7C,0x70,0x60,0x40,0x00};//【
char   code     kuay[]={0x02,0x06,0x0E,0x3E,0xFE,0xFE,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                        0x40,0x60,0x70,0x7C,0x7F,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//】 
char  code       sz1[]={0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00};//数字1
char  code       sz2[]={0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00};//数字2
char  code       sz3[]={0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00};//数字3
char  code       sz4[]={0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00};//数字4
char  code       sz5[]={0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00};//数字5
char  code       sz6[]={0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00};//数字6
char  code       sz7[]={0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00};//数字7
char  code       sz8[]={0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00};//数字8
char  code       sz9[]={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00};//数字9
char  code       sz0[]={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00};//数字0
char  code       ZFA[]={0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20};//字符"A"
char  code       ZFB[]={0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00};//字符"B"
char  code       ZFC[]={0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00};//字符"C"
char  code       ZFD[]={0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00};//字符"D"
char  code       ZFG[]={0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00};//字符G
char  code       ZFI[]={0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00};//字符I
char  code       ZFK[]={0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00};//字符K
char  code       ZFM[]={0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00};//字符M
char  code       ZFN[]={0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00};//字符N
char  code       ZFO[]={0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00};//字符O
char  code       ZFR[]={0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20};//字符R
char  code       ZFW[]={0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00};//字符W
char  code       ZFX[]={0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00};//字符"*"
char  code       ZFJ[]={0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00};//字符"#"
char  code     ZFSLH[]={0x00,0xC0,0xC0,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//字符"..."
char  code     PIEH[]={0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//字符"'"
char  code  hengxian[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01};//横线

/*--------------------延时微妙级别的函数-----------------*/

void  DELAY_XUS( uchar  delay_time)

{ 
    while(delay_time)
	delay_time--;
}

/********************************************************************/
/***************延时毫妙级别的函数 delay_time*10ms的时间*************/
/********************************************************************/

void DELAY_XMS(uchar delay_time)  
{
       uchar i,j,k;
       for(i=0;i<delay_time;i++)
          for(j=0;j<10;j++)
             for(k=0;k<120;k++) {;}
}


/********************************************************************/
/***************延时毫妙级别的函数 delay_time*1ms的时间*************/
/********************************************************************/
void DELAY_NMS(uchar delay_time)  
{
       uchar i,k;
       for(i=0;i<delay_time;i++)
         for(k=0;k<120;k++) {;}
}



/***********************************************************************************/
/**************************串口函数*************************************************/
/***********************************************************************************/
/**********************串口初始化函数***********************************************/
  
void UART_INIT()
{
   TMOD=0x20;                          //定时器在方式2下工作
   SCON=0x50;                          //方式1工作(8位UART,波特率可变),允许串行接收
   TH1=0xFD;                           //波特率为9600
   TR1=1;                              //启动定时器1运行
   ES=1;                               //串口中断使能
   EA=1;                               //中断总开关使能
  
   
}
/******************************接收中断函数*****************************************/
  
void RX_DATA() interrupt 4
{
   
    RI=0;
    rx_dat=SBUF;
	
    


}

/*****************************发送函数**********************************************/ 

void TX_DATA(uchar n)
{
   
   SBUF=n;
   while(TI==0);
   TI=0;
}



/*---------- 液晶模块复位函数---------------*/

void   LCD_RESET(void)
{
  LCD_RST=0;
  DELAY_XUS(50);
  LCD_RST=1;
  DELAY_XUS(50);

}

/*------液晶模块忙信号的检测-----------*/


void   LCD_CHECK_BUSY(void)
{ 

   LCD_RS=0;						//选择指令寄存器
   LCD_RW=1;					    //选择读方式
   LCD_PORT=0XFF;				    //LCM数据口置全1

   while(1)
   {  
      LCD_EN=1;				        //使能,把LCM的数据读入MCU
	  _nop;
	  _nop;						    //2个机器周期的延时


	 if(LCD_PORT<0X80)break;	    //P0^7口为1时候表示LCM模块为忙的状态,0为空闲的状态


	 LCD_EN=0;						//禁能
	}

	LCD_EN=0;					   //禁能

}

/*---------------向液晶模块写入控制指令代码---------------------*/




void  LCD_W_COMMAND( uchar  command, uchar  cs_num)
{
   if(cs_num==1)//选择左半屏
   {
     LCD_CS1=1;
	 LCD_CS2=0;
   }
   else if(cs_num==2)//选择右半屏
   {
     LCD_CS1=0;
	 LCD_CS2=1;
	}
   
   LCD_CHECK_BUSY();
   LCD_EN=0;
   LCD_RS=0;
   LCD_RW=0;
   LCD_PORT=command;
   LCD_EN=1;
   DELAY_XUS(2);
   LCD_EN=0;

}

/*------------------------向液晶模块写入数据-----------------------------*/

void  LCD_W_DATA(uchar Date ,uchar cs_num)
{
  if(cs_num==1)//选择左半屏
   {
     LCD_CS1=1;
	 LCD_CS2=0;
   }
   else if(cs_num==2)//选择右半屏
   {
     LCD_CS1=0;
	 LCD_CS2=1;
	}
   
   LCD_CHECK_BUSY();
   LCD_EN=0;
   LCD_RS=1;
   LCD_RW=0;
   LCD_PORT=Date;
   LCD_EN=1;
   DELAY_XUS(2);
   LCD_EN=0;

}

/*-------------- LCD初始化------------*/


void  LCD_INIT(void)
{
  
  LCD_RESET(); 

  DELAY_XUS(50);

  LCD_W_COMMAND(0X3F,Left);		//LCD为开的状态
  LCD_W_COMMAND(0X3F,Right);

  LCD_W_COMMAND(0XC0,Left);		//读起始行
  LCD_W_COMMAND(0XC0,Right);

  LCD_W_COMMAND(0XB8,Left);		//读起始页
  LCD_W_COMMAND(0XB8,Right);

  LCD_W_COMMAND(0X40,Left);	    //读起始列
  LCD_W_COMMAND(0X40,Right);

}

/*--------------------------------------------------------------

---------------LCD清屏函数---------------------------------------
           
-------------------------------------------------------------*/


void  LCD_CLR(uchar  cs_num)

{

   uchar  i,j,temp;

   for(i=0;i<8;i++)
    
	{  
	  temp=0XB8+i;
	  LCD_W_COMMAND(temp,cs_num);
	  temp=0X40;
	  LCD_W_COMMAND(temp,cs_num);

	     for(j=0;j<64;j++)
		   LCD_W_DATA(0X00,cs_num);

     }

	 DELAY_XUS(50);

}

/*-----------------------------------------------------------

          向液晶模块左右半屏写入图像显示数据
------------------------------------------------------------*/


void  LCD_GRAPH_PLAY(uchar *disbuf,uchar cs_num)
{
   uchar  i,j,temp;

   for(i=0;i<8;i++)
   {

     temp=0XB8+i;
	 LCD_W_COMMAND(temp,cs_num);
	 temp=0X40;
	 LCD_W_COMMAND(temp,cs_num);

	  for(j=0;j<64;j++)

	    LCD_W_DATA(disbuf[i*64+j],cs_num);
	}

	DELAY_XUS(50);

}

/*-----------------------------------------------------------------------

*下面这个函数用于向液晶模块左右半屏写入汉字显示数据。
*函数入口参数disbuf-----向液晶模块写入的汉字显示数据
     		 cs_num------液晶模块左右半屏的选择数
			 page_num------开始显示页数(0----7),共八页
		     clm_num------开始显示列数 (16的倍数),共64列
		     word_num------每页显示的汉字个数(最多为4个)
-----------------------------------------------------------------------*/
void LCD_HZ_PLAY(uchar page_num,uchar clm_num,uchar word_num,uchar 

*disbuf,uchar cs_num)
 {
  uchar i,k,temp;
   			  
  temp=0xB8+page_num;
  LCD_W_COMMAND(temp,cs_num);    
  temp=0x40+clm_num;
  LCD_W_COMMAND(temp,cs_num);
  for(i=0;i<word_num;i++)
   {  	 	 
    for(k=0;k<16;k++)
     {
	  LCD_W_DATA(disbuf[k+32*i],cs_num);
	 }
   }

  page_num++;
  temp=0xB8+page_num;
  LCD_W_COMMAND(temp,cs_num);    
  temp=0x40+clm_num;
  LCD_W_COMMAND(temp,cs_num);
  for(i=0;i<word_num;i++)
   {
    for(k=16;k<32;k++)

⌨️ 快捷键说明

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