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

📄 128x64lcm_main.c

📁 128X64液晶显示器控制代码
💻 C
字号:
#pragma ot(11,size)

#include <reg51.h>
#include <intrins.h>
sbit RS  = P2^0;
sbit RW  = P2^1;
sbit E   = P2^2;
sbit PSB = P2^3;//PSB
sbit RST = P2^4;// /REST
sbit BUSY= P2^5;
////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////
//P0=DATA; 
unsigned char COUNT3,COUNT2,COUNT1,COUNT,LCD_X,LCD_Y,LCD_DATA1,LCD_DATA2,LCD_DATA,F3,R1,F_0; 
code unsigned char TU_TAB1[]={ 
   // 16  15   14   13   12   11   10   9     8   7     6   5    4    3    2    1 
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x01,0xC0,0x00,0x00,0x18,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x0C,0x01,0xC0,0x03,0xF8,0x3C,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x1E,0x7F,0xFF,0x83,0xFC,0x7E,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x1F,0xFF,0xFF,0x83,0xFC,0x7F,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x07,0x81,0xC0,0x03,0xB8,0xFF,0x80,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x03,0x3F,0xFF,0x03,0xBB,0xE7,0xC0,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x3F,0xFF,0x03,0xBF,0xC3,0xF0,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x1C,0x7F,0xFF,0x83,0xBF,0xFF,0xF0,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x1E,0x7F,0xFF,0x83,0xBF,0xFF,0xE0,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x1F,0x7F,0xFF,0x83,0xB0,0xFF,0x80,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

0x80,0x0F,0x1F,0xFF,0x03,0xF8,0x1C,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x03,0x3F,0xFF,0x03,0xBB,0xFF,0xE0,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x3F,0xFF,0x03,0xBB,0xFF,0xE0,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x38,0x07,0x03,0x9F,0xFF,0xE0,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x03,0xBF,0xFF,0x03,0x9C,0x1C,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x03,0xBF,0xFF,0x03,0x9D,0xDD,0x80,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x07,0xB8,0x07,0x03,0xFD,0xDF,0xC0,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x07,0x3F,0xFF,0x03,0xFB,0xDD,0xC0,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x0F,0x3F,0xFF,0x03,0xF7,0x9D,0xE0,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x0E,0x38,0x07,0x03,0x8F,0x9C,0xE0,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x1E,0x38,0x3F,0x03,0x87,0xFC,0xE0,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x1C,0x38,0x1F,0x03,0x80,0xFC,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x04,0x38,0x1E,0x03,0x80,0xF8,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

}; 
#define RelayTime 50
//*************delay_ms******************************** 
void delay_2us(unsigned char x)  
{
	//2*x + 5 个指令周期
	do{
	}while(--x); 
}  
void delay_ms(unsigned char cnt) 
{ 
	unsigned char i; 
	do { 
  		i = 4; 
  		do { 
   			delay_2us(120); 
  		} while(--i); 
	} while(--cnt); 
} 

//***********检查是否LCD忙碌的子程序********************** 
void check_busy(void) 
{  
	delay_2us(50);
	return;
	
	P1=0xff; 
	RS=0; 
	RW=1; 
	while (1) 
	{ 
	    _nop_();_nop_();_nop_(); 
	    E =1; 
	    _nop_();_nop_();_nop_(); 
	    if (P1^7==0) break; 
	    _nop_();_nop_();_nop_(); 
	    E =0; 
  	} 
	E =0;      
	BUSY=!BUSY; 
  	//delay_ms(50); 
} 
//**********数据写命令*************************** 
void send_com(unsigned char command ) 
{
    check_busy(); 
	RS=0; 
	RW=0; 
	P1=command; 
	E =1; 
	_nop_(); 
	_nop_(); 
	E =0; 
//	delay_2us(RelayTime);
} 
//**********LCD初始化时的送命令****************** 
void send_com_init(unsigned char command_init ) 
{ 
	RS=0; 
	RW=0; 
	P1=command_init; 
	E =1; 
	_nop_(); 
	_nop_(); 
	E =0; 
	delay_2us(RelayTime);
} 
//**********写数据*************************** 
void send_data(unsigned char Data) 
{ 
	check_busy(); 
	RS=1; 
	RW=0; 
	P1=Data; 
	E =1; 
	_nop_(); 
	_nop_(); 
	E =0;
} 
//***********读数据**************************** 
unsigned char read_data(void) 
{ 
	unsigned char read_data; 
	check_busy(); 
	RS=1; 
	RW=1; 
	E =1; 
	_nop_(); 
	read_data=P1; 
	E =0; 
	return (read_data); 
} 
//***********清屏***************************** 
void clear_LCD(void) 
{ 
	send_com(0x01);        //清屏 
	send_com(0x34);        //选择扩展指令并使绘图单元OFF
	send_com(0x30);        //选择基本指令集
} 
//**********LCD初始化************************ 
void initial_LCD(void) 
{   
	delay_ms(50); 
	send_com_init(0x30);//30H--8位元组
	delay_2us(50); 
	send_com_init(0x30);//30H--基本指令操作 
	delay_2us(20); 
	send_com_init(0x0C);//开显示,关光标,不闪烁。 
	delay_2us(50); 
	send_com_init(0x01);//清除显示 
	delay_ms(10); 
	send_com_init(0x06);//指定在资料写入或读取时,光标的移动方向,DDRAM的地址计数器(AC)加1。 
} 
//**********写准备*************************** 
void WR_ZB(void) 
{ 
   send_com(0x34);      //选择扩充指令集 
   send_com(LCD_Y); 
   send_com(LCD_X); 
   send_com(0x30);      //基本指令集 
} 
//*********取数送显示****************************** 
void QUSHU(const unsigned char *shu) 
{ 
   for (;COUNT!=0;COUNT--) 
   { 
     send_data(*shu++); 
     delay_2us(80); 
   }   
} 
//*********Flash(闪烁)****************************** 
void flash(void) 
{ 
   send_com(0x08);//关闭显示,关光标,不闪烁。 
   delay_ms(250); 
   send_com(0x0c);//开显示,关光标,不闪烁。 
   delay_ms(250); 
   send_com(0x08);//关闭显示 
   delay_ms(250); 
   send_com(0x0c);//开显示,关光标,不闪烁。 
   delay_ms(250); 
   send_com(0x08);//关闭显示 
   delay_ms(250); 
} 
//**********显示图形子程序********************* 
void PHO_DISP(const unsigned char *s) 
{ 
    COUNT3=0X02; 
    LCD_X=0X80; 
    for (;COUNT3!=0;COUNT3--) 
    { 
        LCD_Y=0X80; 
        COUNT2=0X20;//32 
        for (;COUNT2!=0;COUNT2--) 
        { 
            COUNT1=0X10;//16 
            WR_ZB(); 
            for (;COUNT1!=0;COUNT1--) 
            { 
                send_data(*s++); 
            } 
            LCD_Y++; 
        } 
        LCD_X=0X88; 
    } 
    send_com(0x36);  // 绘图ON 
    send_com(0x30);  // 使用基本指令
} 
//******************显示点阵子程序************ 
void LAT_DISP(void) 
{ 
    COUNT3=0X02; 
    LCD_X=0X80; 
    for (;COUNT3!=0;COUNT--) 
    { 
        LCD_Y=0X80; 
        F0=0; 
        COUNT2=0X20; 
        for (;COUNT2!=0;COUNT--) 
        { 
            COUNT1=0X10; 
            WR_ZB(); 
            if (F0!=0) 
                LCD_DATA=LCD_DATA2; 
            else 
                LCD_DATA=LCD_DATA1; 
            for (;COUNT1!=0;COUNT1--) 
            { 
                send_data(LCD_DATA); 
            } 
            LCD_Y+=1; 
            F0=!F0; 
        } 
        LCD_X=0X88; 
    } 
    send_com(0x36); 
    send_com(0x30); 
} 
void sendstring(unsigned char code *pstr)
{
    while(*pstr)
    {
        send_data(*pstr);
        pstr++;
    }
}   
void main(void) 
{ 
	char data delay=10;
	unsigned char code *pStr = "中华人民共和国";
    P1=0X00; 
    initial_LCD(); 
//	P3=0;
    while (1) 
    {    
        clear_LCD();
        send_com(0x80);
        delay_ms(10);
		sendstring(pStr);
//        PHO_DISP(TU_TAB1);//显示图形 
		while(--delay)
			delay_ms(250);
//		send_com(0x34);		
        while (1);     
    } 
} 
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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