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

📄 lcd12232c.c

📁 这是一个PIC单片机的实时操作系统
💻 C
字号:
//#include <pic.h>
//#include <pic1687x.h>
//#include "DJ485headB.h"
 #include"config.H"
//定义:
//extern bank1 char  c485Buf[35];
void check_busy();
void LCD_Write_Com(unsigned char val);
void LCD_Write_Dat(unsigned char val);
void ioint();
void delayLCD(unsigned int time);
void  LcdCout(unsigned char COUNT  ) ;
void  LCDCOUNTOVER (unsigned char COUNT);
void  LcdFuc2(char CLen,const unsigned  char *FData);
void LCDdelay1ms(uchar count);
//LCD显示用的数字缓存

void LCDdelay1ms(uchar count)
{
 // int  i,j;
 	uchar i,j;
	for(i=0;i<count;i++)
	  for(j=0;j<130;j++)
	   ;
	
	}
//
void delayLCD(unsigned int time)
	{
	int s;
	for(s=0;s<time;s++);
	}

void check_busy(){
 RS=0;RW=1;                             //按照上表,设定好读取LCD状态字的控制线。
 /*do{
  E=0;
  E=1;       
 }while(Lcd_IO&0x80);  */             //判断最高位状态,如果是1,则反复送E时续,直到LCD空闲
  
 E=0;  
  SetLcd_IO=0;  
                           //使IO口处于输出状态,为向LCD写数据作准备。
}
//写命令与数据
void LCD_Write_Com(unsigned char val)
{ 
check_busy();                   //检查LCD是否空闲
  RS=0;RW=0;                  //根据上表设定控制脚,CS1、2在check_busy();里事先有设定
 E=1;
 Lcd_IO=val;                      //E时续下降沿输入数据
 asm("nop");
  asm("nop");
 E=0;
 SetLcd_IO=0xff;              //写完数据,立即把IO口设定成高阻,提高可靠性。
 delayLCD(10);
// delay3();
 
}

void LCD_Write_Dat(unsigned char val)
{ 
check_busy();
 RS=1;RW=0;
 E=1;
 Lcd_IO=val;
 E=0; 
 SetLcd_IO=0xff;
 delayLCD(10);

}
// 初始化函数
void ioint()
{
 PORTA=0;                                
 PORTD=0;                                     //先清0 C、D口,避免干扰
 SetLcd_CON =0B11100000;          //把C口控制线设成输出。
 SetLcd_IO=0x00;                                //D口输入。
}
//
void Lcdint() //显示屏初始化
{
	ioint();
	//delay3 的延时是300US
	//delay1ms 0x10 是12MS 0A是 7.8MS 0X7F是100MS
	//;FUNCTION SET 设定为八位并口模式
  LCDdelay1ms(0X7F);
	LCD_Write_Com(0x30);
	//
//	要延时200USS
  delayLCD(100);
 LCD_Write_Com(0x30);
 //;DISPON/OFF CONTROL  显示状态设定
 //要延时200USS
  delayLCD(100);
 LCD_Write_Com(0X0F);
 //;DISPLAY CLEAR   消除显示
 //延时100MS
 LCDdelay1ms(0x7f);
 LCD_Write_Com(0X01);
 //ENTRY MODE SET  进入设定点
 LCD_Write_Com(0X06);	
	
//延时10MS	
  LCDdelay1ms(0x7f);
	}


void  LcdCout(unsigned char KCOUNT  ) 	

  {
  	     
  	 switch ( KCOUNT )
  	  {   
  	     case   0 : //可以直接输入数字
  	        DispCout[1] =0XB0; break;
  	     case   1 :
  	        DispCout[1] = 0XB1;break ;
  	     case   2 :
  	        DispCout[1] =0XB2;break ;
  	     case   3 :
  	        DispCout[1] =0XB3;break ;
  	     case   4 :
  	        DispCout[1] =0XB4;break ;
  	     case   5 :
  	        DispCout[1] =0XB5;break ;
  	     case   6 :
  	        DispCout[1] =0XB6;break ;
  	     case   7 :
  	        DispCout[1] =0XB7; break ;
  	     case   8 :
  	        DispCout[1] =0XB8;   break ;
  	     case   9 :
  	        DispCout[1] =0XB9;  break ;
  	        
  	       default: break ;
  	   }    
  	   
  	 
  	 
  	  
  }


void  LcdFuc2(char CLen,const unsigned  char *FData)
{
     
	char  c;
	LCD_Write_Com(0X01);
	LCDdelay1ms(0x7f);	
	if(CLen<15)
		{
			LCD_Write_Com(0x80);
          nop;
		  if (CLen != 0)
				  {

				    for (c = 0; c < CLen; c++)
				     {
				      
				      LCD_Write_Dat(*FData++); // Send data
				      nop;
		 	      }
				  }
			}
		else  if(CLen>14)
			{
				LCD_Write_Com(0x80);
			    for (c = 0; c < 14; c++)
			     {
			      LCD_Write_Dat(*FData++); // Send data
			      }
			 	LCD_Write_Com(0X90);
			    	for (c = 14; c < CLen; c++)
			     {
			        LCD_Write_Dat(*FData++); // Send data
			      }      
			}		
	}

 
 

⌨️ 快捷键说明

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