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

📄 lcd_display.c

📁 LCD12864 display control code
💻 C
📖 第 1 页 / 共 2 页
字号:
  WriteDDRAM(0x90, 0x02);
  
  WriteDDRAM(0x88, 0x02);
  
  WriteDDRAM(0x98, 0x02);
  
  Delay(255);
 	Delay(255);
 	Delay(255);
  
  WriteDDRAM(0x80, 0x04);
  
  WriteDDRAM(0x90, 0x04);
  
  WriteDDRAM(0x88, 0x04);
  
  WriteDDRAM(0x98, 0x04);
  
  Delay(255);
 	Delay(255);
 	Delay(255);
  
  WriteDDRAM(0x80, 0x06);
  
  WriteDDRAM(0x90, 0x06);
  
  WriteDDRAM(0x88, 0x06);
  
  WriteDDRAM(0x98, 0x06);
  
  Delay(255);
 	Delay(255);
 	Delay(255);
 	
  WriteCGROM(0x40,0xaa,0x55);

  WriteCGROM(0x50,0x55,0xaa);

  WriteCGROM(0x60,0xff,0xff);

    
  WriteDDRAM(0x80, 0x00);
  
  WriteDDRAM(0x90, 0x00);
  
  WriteDDRAM(0x88, 0x00);
  
  WriteDDRAM(0x98, 0x00);
  
  Delay(255);
 	Delay(255);
 	Delay(255);
  
  WriteDDRAM(0x80, 0x02);
  
  WriteDDRAM(0x90, 0x02);
  
  WriteDDRAM(0x88, 0x02);
  
  WriteDDRAM(0x98, 0x02);
  
  Delay(255);
 	Delay(255);
 	Delay(255);
  
  WriteDDRAM(0x80, 0x04);
  
  WriteDDRAM(0x90, 0x04);
  
  WriteDDRAM(0x88, 0x04);
  
  WriteDDRAM(0x98, 0x04);
  
  Delay(255);
 	Delay(255);
 	Delay(255);

  //WriteCommand(0x01);
  //WriteCommand(0x80);

}*/
/****************************0-9数字对照LCD编码**********************/
unsigned char num2LCDchar(unsigned char num){
	if(num<10){
    return (0x30+num) ; 
	} 	
	else{
		return (0x41 +num-10);
	}
}
/****************************0-9数字对照中文编码**********************/
/*unsigned char num2ChineseChar(unsigned char num,unsigned char *array)
{
	if((num>=0)&&(num<=9)){
	  *array=0xA3;
    array++;
    *array=0xB0+num;
	}
	return;
}*/

/****************************int型到LCD显示数组转换*********************/
void int2LCDchar(unsigned int num,unsigned char *result){
  unsigned char j;
  unsigned char Flag=0;
  
  Display_data_length=0;
  
  j=num/10000;
  num=num%10000;
  if(j!=0){
    *result=num2LCDchar(j);
    result++;
    Flag=1;
    Display_data_length++;
  }
    
  j=num/1000;
  num=num%1000;
  if((j!=0)||(Flag==1)){
    *result=num2LCDchar(j);
    result++;
    Flag=1;
    Display_data_length++;
  }
  
  
  //*result=num2LCDchar(j);
  //result++;
    
  j=num/100;
  num=num%100;
  if((j!=0)||(Flag==1)){
    *result=num2LCDchar(j);
    result++;
    Flag=1;
    Display_data_length++;
  }
  
  //*result=num2LCDchar(j);
  //result++;
    
  j=num/10;
  num=num%10;
  if((j!=0)||(Flag==1)){
    *result=num2LCDchar(j);
    result++;
    Flag=1;
    Display_data_length++;
  }
  
  //*result=num2LCDchar(j);
  //result++;
    
  j=num/1;
  *result=num2LCDchar(j);
  Display_data_length++;
}
/****************************float??xxxx.xxx??????*********************/
void FloatToLCDChar(float value,unsigned char *result)
{
    uint j;
    uchar Flag=0;
    
    Display_data_length=0;
    
    if (value >= 10000) 
    { 
        *result++ = num2LCDchar(9); 
        *result++ = num2LCDchar(9);
        *result++ = num2LCDchar(9);
        *result++ = num2LCDchar(9);
        *result++ = '.';
        *result++ = num2LCDchar(9);
        *result++ = num2LCDchar(9);
        *result   = num2LCDchar(9);
        Display_data_length=8; 
    } 
    else
    {
        j= ( (uint) value) / 1000;
        value = value - j*1000;
        if(j!=0){
          *result++=num2LCDchar(j);
          Flag=1;
          Display_data_length++;
        }
        
        j= ( (uint) value) / 100;
        value = value - j*100;
        if((j!=0)||(Flag==1)){
          *result++=num2LCDchar(j);
          Display_data_length++;
          Flag=1;
        }
        
        j= ( (uint) value) / 10;
        value = value - j*10;
        if((j!=0)||(Flag==1)){
          *result++=num2LCDchar(j);
          Display_data_length++;
          Flag=1;
        }
        
        j=   (uint) value;
        value = value - j;
        *result++=num2LCDchar(j);
        Display_data_length++;
        
        *result++='.';	  
        value = value * 1000.0 ;
        Display_data_length++;
        
        j= ( (uint) value) / 100;
        value = value - j*100;
        *result++=num2LCDchar(j);
        Display_data_length++;
        
        j= ( (uint) value) / 10;
        value = value - j*10;
        *result++=num2LCDchar(j);
        Display_data_length++;
        
        j=   (uint) value;
        value = value - j;
        *result=num2LCDchar(j); 
        Display_data_length++;                       
    }
    return;
}
/****************************float??xxxx.xxx??????*********************/
float CharToFloat(unsigned char *result)
{
    float j=10;
    float c1=0,c2=0;
    uchar k=0,m=0;
    uchar Flag=0;
    //Display_data_length=0;
    while((*result!=',')&&(k<=8)){
      if(Flag==0){
        c1=c1*j+(*result-0x30);
      }
      else{
        c2=c2+(*result-0x30)*j;
        j=j*0.1;
      }
      result++;
      if(*result=='.') {
        Flag=1;
        j=0.1;
        result++;
      }
      k++;
    }
    c1=c1+c2;
    return c1;
}
/****************************float??xxxx.xxx??????*********************/
float CharToFloat1(unsigned char *result)
{
    //float j=10;
    //float c1=0,c2=0;
    //uchar k=0,m=0;
    //uchar Flag=0;
    //unsigned long c1;
    /*if((*result>=0x30)&&(*result<=0x39)){
        if(Flag==0) c1=c1*j+(*result-0x30);
        else{
          c2=c2+(*result-0x30)*j;
          j=j*0.1;
        }      
      } 
      else if((*result=='.')&&(Flag==0)){
        j=0.1;
        Flag=1;
      }
      else if(*result==',') break;
      else return 0;
      result++;*/       
    //}
    //c1=c1+c2;
                
    float c2;
    uchar k=0,m=0,i=0;
    unsigned long c1=0;
    
    for(k=0;k<9;k++){
      if(m>0) m++;
      if(m>4) break;
      if((*result>=0x30)&&(*result<=0x39)) i= *result-0x30;
      else if(*result=='.'){
      	i=0;
        m=1;
      } else i=0;
      
      if(m!=1){
      	c1=c1+i;
      	c1=c1*10;	
      }
      
      result++;
    }
 
    c2=c1;
    c2=c2*powf_i(0.1,m-1);  
           
    return c2;  
}
/****************************float??xxxx.xxx??????*********************/
/*uint FloatToChineseChar(float value,unsigned char *result){
  unsigned int j,k=0,l=0;
  
  Display_data_length=0;
  
  if(value>10000){
    num2ChineseChar(9,result);
    result++;
    result++;
    num2ChineseChar(9,result);
    result++;
    result++;
    num2ChineseChar(9,result);
    result++;
    result++;
    num2ChineseChar(9,result);
    result++;
    result++;
        
    *result++=0xA3;
    *result++=0xAE;
    
    num2ChineseChar(9,result);
    result++;
    result++;
    num2ChineseChar(9,result);
    result++;
    result++;
    num2ChineseChar(9,result);
    result++;
    result++;
    Display_data_length=8;
    
    return VALUE_OVERFLOW;
  }
  
  //显示千位数
  j= ((unsigned int) value) / 1000;
  value = value - j*1000;
  if(j!=0){
    num2ChineseChar(j,result);
    result++;
    result++;
    Display_data_length=Display_data_length+1;
    k=1;
  }
  
  //显示百位数
  j= ( (unsigned int) value) / 100;
  value = value - j*100;
  if((j!=0)||(k==1)) {
    num2ChineseChar(j,result);
    result++;
    result++;
    Display_data_length=Display_data_length+1;
    l=1;
  }
  
  //显示十位数      
  j= ( (unsigned int) value) / 10;
  value = value - j*10;
  if((j!=0)||(k==1)||(l==1)) {
    num2ChineseChar(j,result);
    result++;
    result++;
    Display_data_length=Display_data_length+1;
  }
  
  //显示个位数      
  j=   (unsigned int) value;
  value = value - j;
  num2ChineseChar(j,result);
  result++;
  result++;
  Display_data_length=Display_data_length+1;
  
  //display "."      
  *result++=0xA3;
  *result++=0xAE;
  Display_data_length=Display_data_length+1;
  	  
  value = value * 1000.0 ;
  
  //显示小数点后第一位     
  j= ( (unsigned int) value) / 100;
  value = value - j*100;
  num2ChineseChar(j,result);
  result++;
  result++;
  Display_data_length=Display_data_length+1;
  
  //显示小数点后第二位      
  j= ( (unsigned int) value) / 10;
  value = value - j*10;
  num2ChineseChar(j,result);
  result++;
  result++;
  //显示数据长度加2
  Display_data_length=Display_data_length+1;
  
  //显示小数点后第三位      
  j=   (unsigned int) value;
  value = value - j;
  num2ChineseChar(j,result);
  result++;
  result++; 
  
  //显示数据长度加2
  Display_data_length=Display_data_length+1;
  
  return VALUE_OK;
}*/
/*****************写测试中文*********************************/
/*void Write_Chinese(){
  unsigned char i;
  unsigned char *mydata;
  
  
  WriteCommand(0x01);
  WriteCommand(0x80);
  
  mydata=Chinese1;
  for (i=0;i<16;i++){
    WriteData(*mydata);
    mydata++;
  }

  WriteCommand(0x90);
  
  mydata=Chinese2;
  for (i=0;i<16;i++){
    WriteData(*mydata);
    mydata++;
  }

  WriteCommand(0x88);
  mydata=Chinese3;
  for (i=0;i<16;i++){
    WriteData(*mydata);
    mydata++;
  } 

  WriteCommand(0x98);
  mydata=Chinese4;
  for (i=0;i<16;i++){
    WriteData(*mydata);
    mydata++;
  }
  Delay(100);
 	Delay(100);
 	Delay(100);
}*/
/***************************IDtoChar*****************/
/*void ID2LCDchar(unsigned int num,unsigned char *result){
  unsigned char temp;
  temp=(num&0x700)>>8;
  *result++=num2LCDchar(temp);
  temp=(num&0x0F0)>>4;
  *result++=num2LCDchar(temp);
  temp=(num&0x00F);
  *result++=num2LCDchar(temp);
  //add a space
  *result=0x20; 
}*/
/**************************ShowIDFunc*******************/

  
/****************************节点状态显示刷新*********************/											

/*void LCD_refresh1(void){ 
    
    //WriteCommand(1);
    //WriteCharArray(1,1,6,nodearray);
    //WriteCharArray(1,7,3,HCUarray);
    //WriteCharArray(1,7,5,Node1array);
    //WriteCharArray(1,7,5,Node2array);
    //WriteCharArray(1,7,5,Node3array);
    //WriteCharArray(1,7,5,Node4array);
    //WriteCharArray(1,7,5,Node5array);           

    //WriteCharArray(2,1,13,bitrate500array);
    //WriteCharArray(3,1,8,RXstatarray);
    switch(NodeRxStatus){
      case 0:
        WriteCharArray(3,9,2,OKarray);
        break;
      case 1:
        WriteCharArray(3,9,7,Warningarray);
        break;
      case 2:
        WriteCharArray(3,9,5,Errorarray);
        break;
      case 3:
        WriteCharArray(3,9,6,BusOffarray);
        break;
      default:
        break;
    }
    WriteCharArray(4,1,8,TXstatarray);
    switch(NodeTxStatus){
      case 0:
        WriteCharArray(4,9,2,OKarray);
        break;
      case 1:
        WriteCharArray(4,9,7,Warningarray);
        break;
      case 2:
        WriteCharArray(4,9,5,Errorarray);
        break;
      case 3:
        WriteCharArray(4,9,6,BusOffarray);
        break;
      default:
        break;
    }
}*/

/****************************收发计数显示刷新*********************/
/*void LCD_refresh2(void){
    unsigned char resultarray[5];
    WriteCommand(1);
    
    //WriteCharArray(1,1,9,rxCounterarray);
    //int2LCDchar(RxCounter,resultarray);
    //WriteCharArray(1,11,5,resultarray);
        
    //WriteCharArray(3,1,9,txCounterarray);
    //int2LCDchar(TxCounter,resultarray);
    //WriteCharArray(3,11,5,resultarray);

}*/
/****************************收发信息真ID显示刷新*********************/
/*void LCD_refresh3(void){
    unsigned char i;
    unsigned char rowNum=1;
    unsigned char ColNum=9;
    unsigned char IDdispCode[4];
    
    //RXrecordlock=1;				//Lock the RXrecord

    WriteCommand(1);
    
    //WriteCharArray(1,1,8,rxframeIDarray);
    //display ID according to RxIDcode[]
    //if(RxIDcode[0]!=0){			//如果只用pIDrear判断是否收到桢,会漏掉只收到一桢的情况
      
    for(i=0;i<pIDrear+1;i++){	
    	ID2LCDchar(RxIDcode[i],IDdispCode);							 
      RxIDcode[i]=0;				 
      WriteCharArray(rowNum,ColNum,4,IDdispCode);			//display this msgID
      ColNum+=4;	                   //set next cursor position
      if(ColNum>13){
        ColNum=1;
        rowNum++;
        }
      }  		 
    }	
    //after all displayed, clear variable for new cycle
		pIDrear=0;
		RXrecordlock=0;					//Release the RXrecord   		
} */

/*void LCD_refresh4(void){
    unsigned char i;
    unsigned char rowNum=1;
    unsigned char ColNum=9;
    unsigned char IDdispCode[4];

    WriteCommand(1);
    //WriteCharArray(1,1,8,txframeIDarray);

    
    //judge IDflag[12] to find which ID is sent(IDflag==2)
    for(i=0;i<16;i++){
      								 //when this msg is Trans
      if(TxIDcode[i]!=0){
        
      ID2LCDchar(TxIDcode[i],IDdispCode);
      
      TxIDcode[i]=0;
      
      WriteCharArray(rowNum,ColNum,4,IDdispCode);			//display this msgID
      ColNum+=4;	                   //set next cursor position
      if(ColNum>13){
        ColNum=1;
        rowNum++;
      }
      } 
    }*/
/*void ChangeResultToDisplayChar(float value,unsigned char *result){
   unsigned char *point;
   point=result;
   *point++=':';
   //*point++=' ';
   FloatToLCDChar(value,point);
   point= result+1+Display_data_length;
   *point++='m';
   *point++='m';
   return;   
}*/
//after all displayed, clear variables for new cycle
/*uchar Display_string(uchar row,uchar column,uchar *mystring){
	
	if((row<=4)&&(row>0)&&(column>0)){
		while((*mystring!=' ')&&(column<=16)){
		    WriteCharArray(row,column,1,mystring);
			column++;
			mystring++;
		}
		return column;
	}
	else
		return 0;
}
uchar Display_char_array(uchar row,uchar column,uchar *mystring){
	
	if((row<=4)&&(row>0)&&(column>0)){
		while((*mystring!=',')&&(column<=16)){
		    WriteCharArray(row,column,1,mystring);
			column++;
			mystring++;
		}
		return column;
	}
	else
		return 0;
}*/

⌨️ 快捷键说明

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