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

📄 12864.c

📁 12864液晶头文件!对初学者有很大的帮助。
💻 C
字号:
/****************************************/
/*************  模块源文件  *************/
/****************************************/
#include "head.H"

/*******************************************************/
/*************          延时约2us     ******************/
/*******************************************************/
void delayUs()
{
    _nop_();_nop_();
}
/*************       延时约2us  结束   ******************/
/*******************************************************/
/*************       延时 a * 1ms     ******************/
/*******************************************************/
void delayMs(uint a)
{
    uint i, j;
    for(i = a; i > 0; i--)
     for(j = 100; j > 0; j--);
}
/*************     延时 a * 1ms 结束   ******************/

/*******************************************************/
/*********检测LCD是否处于忙状态, 等待LCD到空闲**********/
/*******************************************************/
void checkBusy()
{
    unsigned char busy;
	LCD_DATA = 0xff;
    RS = 0;
    RW = 1;
	do{
        E = 1;
       //delayUs();
		delayMs(2);	  //从这里可以调整显示画面速度!
	    E = 0;						
	    busy = LCD_DATA&0x80;		//	Have a problem !!
	}while(!busy);				   //   A little confused.
}

/*******************************************************/
/*****************  写命令 ,既地址  ********************/
/*******************************************************/
void writeCmd(uchar cmd)
{
    checkBusy();
    RS = 0;
    RW = 0;
    E = 0;
    delayUs();
    LCD_DATA = cmd;
    delayUs();
    E = 1;
    delayUs();
    E = 0;
}

/*******************************************************/
/******************     写数据    **********************/
/*******************************************************/
void writeData(uchar dat)
{
    checkBusy();
    RS = 1;
    RW = 0;
    E = 0;
    delayUs();
    LCD_DATA = dat;
    delayUs();
    E = 1;
    delayUs();
    E = 0;
}

/*******************************************************/
/*******************    初始化LCD    *******************/
/*******************************************************/
void init()
{
    PSB = 1;    //并口方式
    writeCmd(0x30); //基本指令, 扩充指令为34H
    delayMs(10);
    writeCmd(0x0c); //显示开, 关光标
    delayMs(10);
    writeCmd(0x01); //清屏
    delayMs(10);
}

/*******************************************************/
/*****************   确定位置    ***********************/
/*******************************************************/
void setPosition(uchar x, uchar y)
{
    uchar p;
    switch(x%4)
    {
        case 0: p = 0x80; break; //第一行开始地址
        case 1: p = 0x90; break; //第二行
        case 2: p = 0x88; break; //第三行
        case 3: p = 0x98; break; //第四行
     }
    p += y;
    writeCmd(p);
}

/********************************************************/
/********************  写字符串  ************************/
/********************************************************/
void writeString(uchar str[])	  //注意:先写地址,在写数据!!
{
    uchar i = 0;
    while(str[i] != '\0')
    {
        writeData(str[i++]);
     };
}

/*******************************************************/
/*****************    反白     *************************/
/*******************************************************/
/*void Invert()			  //  只能对文字进行反白!!{ 	int i,j;
	writeCmd(0x34);
	delayMs(10); 	writeCmd(0x36); 	delayMs(2); 	for(i=0;i<32;i++)  	{   		writeCmd(0x80+i);//address y    		writeCmd(0x90); //address x    		for(j=0;j<32;j++)    		writeData(0xff);     };
   	delayMs(10);
}

/******************************************************/
/***************      显示文章       ******************/
/******************************************************/
/*void dispcharacter(uchar address,uchar *tab){  	int j;  	writeCmd(0x30);  	delayMs(10);  	writeCmd(address);  	delayMs(10);    	for(j=0;j<16;j++)  	   writeData(*(tab+j));  	writeCmd(address+8); 	 	for(j=0;j<16;j++)  	writeData(*(tab+j+32)); 	 	writeCmd(address+16);  	for(j=0;j<16;j++)  	   writeData(*(tab+j+16));  	writeCmd(address+24);  	for(j=0;j<16;j++) 	 	writeData(*(tab+j+48));}
/*******************************************************/
/***************        显示图片        ****************/
/*******************************************************/
void dispicture(uchar  table[])	  { 	int i,j;  	writeCmd(0x36); 	for(i=0;i<16;i++)  	 {   	   writeCmd(0x80+i);//address y   	   writeCmd(0x80); //address x        for(j=0;j<16;j++)    			writeData(table[i*16+j]);   	   for(j=0;j<16;j++)    			writeData(table[32*16+i*16+j]);      }      for(i=0;i<16;i++)  	{   		writeCmd(0x80+16+i);//address y    		writeCmd(0x80); //address x    		for(j=0;j<16;j++)    		writeData(table[16*16+i*16+j]);   		for(j=0;j<16;j++)    		writeData(table[48*16+i*16+j]);     }  }
/*******************************************************/
/******************     清洗图片       *****************/
/*******************************************************/
void clean(void){  	int i,j; 		writeCmd(0x36); 		delayMs(5); 		for(i=0;i<32;i++)  	    {   		  writeCmd(0x80+i);//address y    	      writeCmd(0x90); //address x    		  for(j=0;j<32;j++)    		  writeData(0x00);   	    }       }

⌨️ 快捷键说明

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