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

📄 lcd_control_ks0107.h

📁 在嵌入式开发中
💻 H
📖 第 1 页 / 共 2 页
字号:
  E = 0;                 //下降沿
}

void WriteDataToLeft(unsigned char Datas)
{
/******************************************************
函数名:屏幕显示函数(左)                             
功能描述:向左边屏幕写数据                             
输入变量 Datas                                         
******************************************************/          
  CS2 = 0;
  CS1 = 1;

  CheckStateL();
  
  RS = 1;
  RW = 0;      

  DDRA =0xff;    
 
  PORTA =Datas;                //发送数据
 
  E = 1;   

  E = 0;                 //下降沿
}

void WriteDataToRight(unsigned char Datas)
{
/******************************************************
函数名:屏幕显示函数(右)                             
功能描述:向左边屏幕写数据                             
输入变量 Datas                                         
******************************************************/          
  CS1 = 1;
  CS2 = 0;

  CheckStateR();
  
  RS = 1;
  RW = 0;      

  DDRA =0xff;    
 
  PORTA =Datas;                //发送数据
 
  E = 1;   

  E = 0;                 //下降沿
}      

unsigned char ReadDataToLeft()
{     
  unsigned char f;

  CS2 = 0;           //CS2 =0  
  CS1 = 1;           //CS1 =1  选左          
  
  PORTA = 0xff;

  CheckStateL();    
  
  RW = 1;
  RS = 1;  
  
  DDRA =0x00;    
 
  E = 1;   
  f = PINA;                           //获得      \
  E = 0;                 //下降沿
      
  DDRA = 0xff;                        //恢复写数据状态
  
  return f;
}

void TurnOnLCD(char p)
{
/******************************************************
函数名:打开显示                                       
功能描述:显示使能                                     
******************************************************/
  if(p==LEFT)
    WriteCommandToLeft(OpenLCD);         //开
  else
    WriteCommandToRight(OpenLCD);         //开

}

void TurnOffLCD(char p)
{
/******************************************************
函数名:关闭显示                                       
功能描述:关闭显示                                     
******************************************************/
  if(p==LEFT)
    WriteCommandToLeft(CloseLCD);         //关
  else
    WriteCommandToRight(CloseLCD);         //关

}
 
void ClsLeft(unsigned char val)
{     
  unsigned char i; 
  int j;
  
  CS2 = 0;  
  CS1 = 1;
  
  for(i=0;i<8;i++){
    SetLineLeft(i);
    WriteCommandToLeft(0b01000000);         //设置起始列 
    
    for(j=0;j<64;j++){
      WriteDataToLeft(val);  //发送数据    
    }  
  }
}   

void ClsRight(unsigned char val)
{     
  unsigned char i; 
  int j;

  CS1 = 0;  
  CS2 = 1;  
  
  for(i=0;i<8;i++){
    SetLineRight(i);
    WriteCommandToRight(0b01000000);         //设置起始列 
    
    for(j=0;j<64;j++){
      WriteDataToRight(val);  //发送数据    
    }  
  }
}


void SetLineLeft(unsigned char line)
{
  line=line & 0x07; // 0<=line<=7
  line=line|0xb8; //1011 1xxx
  WriteCommandToLeft(line);
}                            
                             
void SetLineRight(unsigned char line)
{
  line=line & 0x07; // 0<=line<=7
  line=line|0xb8; //1011 1xxx
  WriteCommandToRight(line);
}                            

void LCDAutoTestLeft(unsigned char val)
{
  unsigned char i,j; 
  
  CS2 = 0;  
  CS1 = 1;
  
  for(i=0;i<8;i++){
    SetLineLeft(i);
    WriteCommandToLeft(0b01000000);         //设置起始列 

    for(j=0;j<64;j++){  
      TurnOffLCD(LEFT);
      WriteDataToLeft(val);  //发送数据                         
      TurnOnLCD(LEFT);
      Delay(100);
      
    }                                                
    
  }

}  

void LCDAutoTestRight(unsigned char val)
{
  unsigned char i,j; 

  CS1 = 0;  
  CS2 = 1;  
  
  for(i=0;i<8;i++){
    SetLineRight(i);
    WriteCommandToRight(0b01000000);         //设置起始列 

    for(j=0;j<64;j++){  
      TurnOffLCD(RIGHT);
      WriteDataToRight(val);  //发送数据                         
      TurnOnLCD(RIGHT);
      Delay(100);
    }                                                
  }

}  
                    
void LCDAutoTestLeft2(void)
{
  unsigned char i,j; 
  
  CS2 = 0;  
  CS1 = 1;
  
  for(i=0;i<8;i++){
    SetLineLeft(i);
    WriteCommandToLeft(0b01000000);         //设置起始列 

    for(j=0;j<64;j++){  
      TurnOffLCD(LEFT);
//      WriteDataToLeft(ReadDataToLeft(i,j)^0xff);  //发送数据                         
      TurnOnLCD(LEFT);
      Delay(200);
    }                                                
  }

}

void SetColumnLeft(unsigned char column)
{                                        
  column=column &0x3f;  // 0=<column<=63
  column=column | 0x40; //01xx xxxx    
  WriteCommandToLeft(column);
}            

void SetColumnRight(unsigned char column)
{
  column=column &0x3f;  // 0=<column<=63
  column=column | 0x40; //01xx xxxx
  WriteCommandToRight(column);
}            

void SendByte(unsigned char h,unsigned char l,unsigned char Datas)
{   

  if(h<0)
    h = 0;
  if(h>7)
    h = 7;
    
  if(l<0)  
    l = 0;
  if(l>127)  
    l=127;
    

  if(l>63){
    SetLineRight(h);
    SetColumnRight(l-64);
    WriteDataToRight(Datas);
      
  }else
  {
    SetLineLeft(h);    
    SetColumnLeft(l); 
    WriteDataToLeft(Datas);  
  }
}  

void Show816(unsigned char h,unsigned char l,unsigned char * ch,unsigned char ShowType)
{
  unsigned char j;
  
  if(h<0) h = 0;
  if(h>4) h = 4;
  h=h*2;
    
  if(l<0) l = 0;
  
  for(j=0;j<8;j++){
    if(ShowType==1){
      SendByte(h,l+j,ch[2*j]);
      SendByte(h+1,l+j,ch[2*j+1]);            
    }else
    {
      SendByte(h,l+j,ch[2*j]^0xff);
      SendByte(h+1,l+j,ch[2*j+1]^0xff);        
    }
  }             
}  

void Show1616(unsigned char h,unsigned char l,unsigned char * ch,unsigned char ShowType)
{
  unsigned char j;
  
  if(h<0) h = 0;
  if(h>3) h = 3;
  h=h*2;
  
  if(l<0) l = 0;
  
  for(j=0;j<16;j++){ 
    if(ShowType==1){
      SendByte(h,l+j,ch[2*j]);
      SendByte(h+1,l+j,ch[2*j+1]);            
    }else
    {
      SendByte(h,l+j,ch[2*j]^0xff);
      SendByte(h+1,l+j,ch[2*j+1]^0xff);        
    }
  }             
}  

⌨️ 快捷键说明

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