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

📄 ks0107 lcd.h

📁 此例程在TI2000系列的DSP芯片上运行
💻 H
字号:



void lcd_init(void)
{
  GpioDataRegs.GPACLEAR.all =0xffffffff;
  LCD_CSA=1;
  LCD_CSB=1;
  LCD_RST=0;
  LCD_RS=1;
  LCD_RW=1;
  LCD_EN=1;
  LCD_RST=1; 
  delay_loop(20000);
  LCD_RST=1;
  delay_loop(20000);
  LCD_EN=1;
  LCD_CSA=0; 
  LCD_CSB=0;
  delay_loop(2000);
  LCD_CSA=1;
  LCD_CSB=1;
  // GpioCtrlRegs.GPADIR.all =0xffffff00;
  while ((GpioDataRegs.GPADAT.all&0x80));
 // GpioCtrlRegs.GPADIR.all =0xffffffff;
}

void write_command(unsigned char command,unsigned char Lcd_Chip)
{  
 // GpioCtrlRegs.GPADIR.all =0xffffff00;
 // GpioDataRegs.GPACLEAR.all=0xff;
 
  //GpioCtrlRegs.GPADIR.all = 0xffffffff;
 // GpioDataRegs.GPACLEAR.all=0xff;
  if  (Lcd_Chip==1) LCD_CSA=0;
  else  LCD_CSA=1; 
  if  (Lcd_Chip==2) LCD_CSB=0;
  else  LCD_CSB=1;
  if  (Lcd_Chip==3) {LCD_CSA=0;LCD_CSA=0;}
  LCD_RW=0;  //  sure
  LCD_RS=0;  //  sure
 // delay_loop(8);
  do  GpioDataRegs.GPACLEAR.all=0xff; 
  while((GpioDataRegs.GPADAT.all&0x90));
  GpioDataRegs.GPADAT.all |=command;
  //delay_loop(8);

  LCD_EN=1;  // sure
  delay_loop(18);
  //GpioCtrlRegs.GPADIR.all =0xffffff00;
//  GpioDataRegs.GPACLEAR.all=0xff;
 // while ((GpioDataRegs.GPADAT.all&0x80));
 // GpioCtrlRegs.GPADIR.all =0xffffffff;
  // do  GpioDataRegs.GPACLEAR.all=0xff; 
  // while((GpioDataRegs.GPADAT.all&0x90));
   LCD_EN=0;

 // LCD_RS=1;
 // LCD_RW=1;

  delay_loop(8);
  //do GpioDataRegs.GPACLEAR.all=0xff; 
  //while((GpioDataRegs.GPADAT.all&0x90));

  LCD_RS=1;
 // LCD_RW=0;	
 // GpioDataRegs.GPACLEAR.all=0xff;
 // GpioDataRegs.GPADAT.all |=0xff;
  
}

void write_data( unsigned char data, unsigned char CS1, unsigned char CS2)
{ 
 // GpioDataRegs.GPACLEAR.all=0xff;
//  while(!(Chk_Lcd_State()==0x00));
 
 // GpioDataRegs.GPACLEAR.all=0xff;
  if ((CS1))  LCD_CSA=1;
  else LCD_CSA=0;
  if ((CS2))   LCD_CSB=1;  
  else   LCD_CSB=0;
  delay_loop(8);
  do  GpioDataRegs.GPACLEAR.all=0xff; 
  while((GpioDataRegs.GPADAT.all&0x90));
  GpioDataRegs.GPADAT.all|= data;
  delay_loop(8);
  LCD_RS=1;  
  LCD_RW=0;
  LCD_EN=1;
  delay_loop(18);
//  GpioCtrlRegs.GPADIR.all =0xffffff00;
 // GpioDataRegs.GPACLEAR.all=0xff;
 // while ((GpioDataRegs.GPADAT.all&0x80));
 // GpioCtrlRegs.GPADIR.all =0xffffffff;
  LCD_EN=0;


 
  delay_loop(8);
 // GpioDataRegs.GPACLEAR.all=0xff;
  //do  GpioDataRegs.GPACLEAR.all=0xff; 
 // while((GpioDataRegs.GPADAT.all&0x90));
  LCD_RS=1;
  LCD_RW=0;
 // GpioDataRegs.GPADAT.all |=0xff;
}


void clear_lcd(unsigned char start_row,unsigned char end_row)
 {
  unsigned char i,j;
  for(i=start_row;i<end_row;i++)   {
   write_command(SET_X|i,1);
   write_command(SET_Y,1);
   for(j=0;j<64;j++)  { write_data(0x0,0,1); }
   write_command(SET_X|i,2);
   write_command(SET_Y,2);
   for(j=0;j<64;j++)  {	write_data(0x0,1,0);} 
}  }
void display( unsigned char *chr, unsigned char nRow, unsigned char nCol,
                 unsigned char highth,unsigned char wideth,unsigned char com_reg)
//*chr 显示数据的地址,nRow 在显示屏上第几行,nCol 在显示屏上第几列
//highth  字体的高度,wideth 字体的宽度
//128*64有8行,128列                
{
  unsigned char i,tmpCol,tmpRow,h,m,data;
  unsigned int j=0;
  tmpRow = nRow;
  m=0;
  for(h=0;h<highth;h=h+8)  {
     write_command(SET_X|tmpRow,1);
	 write_command(SET_X|tmpRow,2);
     tmpCol=nCol;
     for(i=0;i<wideth;i++) 
      {	 data=chr[i+j];
        // delay_loop(8);
         //write_command(SET_X|tmpRow,1);
	     //write_command(SET_X|tmpRow,2);
       if(tmpCol<64) {  //write_command(SET_X|tmpRow,2);
                        write_command(SET_Y|tmpCol,1);
         				if (com_reg==0)    write_data(data,0,1);  
         				    // { while(read_data(0,1)!=data)  write_data(data,0,1);}
         				 else      write_data(0xff-data,0,1);
         				     //{ while(read_data(0,1)!=data)  write_data(0xff-data,0,1); } 
         				 
          			 }
       else    {// delay_loop(8);
	          // write_command(SET_X|tmpRow,1);
               write_command(SET_Y|(tmpCol-64),2);
               if    (com_reg==0)   write_data(data,1,0);
                    /// { while(read_data(1,0)!=data)  write_data(data,1,0);}
               else     write_data(0xff-data,1,0); 
			        /// { while(read_data(1,0)!=data)  write_data(0xff-data,1,0); }
              }
       tmpCol++;
       }
     m++;
     j=m*wideth;
     tmpRow++;
}  	
}


 











⌨️ 快捷键说明

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