اطلاعیه

Collapse
No announcement yet.

GLCD با کنترلر KS0180

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    GLCD با کنترلر KS0180

    من دارم با GLCD با کنترلر KS0180 کار می کنم. یه برنامه دارم که فکر می کنم از همین جا دانلود شده (من از یکی از دوستنم گرفتم).
    حالا که می خوام از توابع موجود در این کتابخانه ها (ی دست نوشته) استفاده کنم و تو proteus شبیه سازی کنم و از دستورات glcd_Printf و یا glcd_putchar استفاده کنم به جای کارکتر ها یک مربع سیاه چاپ می کنه و warning هم می ده که :
    Non-existant pin [<INVERT>] specified by [INVERT]. LCD1_U1
    Non-existant pin [<INVERT>] specified by [INVERT]. LCD1_U2

    چی کار باید بکنم؟

    اینم کتابخونه:

    کد:
    #include <delay.h>
    #include <mega32.h>
    
    //------------------------------------ Definitions ------------------------------------
    
    
    
    // Default Port definition	
    #define	RS		PORTC.0
    #define	RW		PORTC.1
    #define	EN  	PORTC.2
    #define	CS1 	PORTC.3
    #define	CS2 	PORTC.4
    #define	RST		PORTC.5 
    #define	DATA	PORTD
    //---------------------------------------------------------------------------------------
    
    
    void glcd_Init(void);
    void reset(void);
    void glcd_Clear();
    void glcd_WriteByte(unsigned char x, unsigned char y, unsigned char data);
    void glcd_DrawF(eeprom unsigned char *Pat);
    void glcd_Draw(unsigned char Pat[]);
    void glcd_DrawBmpF(unsigned char Pat[],	unsigned char x, unsigned char y,	unsigned char h,unsigned char w);
    void glcd_DrawBmp(unsigned char Pat[],
    			unsigned char x, unsigned char y,
    			unsigned char h,unsigned char w);
    void glcd_Printf(unsigned char x, unsigned char y,char* str);
    void glcd_Putchar(unsigned char x, unsigned char y,unsigned char ch);
    void address_right(unsigned char x,unsigned char y);
    void address_left(unsigned char x,unsigned char y);
    void write_right(unsigned char x );
    void write_left(unsigned char x);
    
    
    
    
    
    //------------------------------------ Functions ------------------------------------
    
    eeprom char FontLookup [91][6] =
    {
      { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },  // sp
      { 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00 },  // !
      { 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00 },  // "
      { 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00 },  // #
      { 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00 },  // $
      { 0x23, 0x13, 0x08, 0x64, 0x62, 0x00 },  // %
      { 0x36, 0x49, 0x55, 0x22, 0x50, 0x00 },  // &
      { 0x00, 0x05, 0x03, 0x00, 0x00, 0x00 },  // '
      { 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00 },  // (
      { 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00 },  // )
      { 0x08, 0x2A, 0x1C, 0x2A, 0x08, 0x00 },  // *
      { 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00 },  // +
      { 0x00, 0x50, 0x30, 0x00, 0x00, 0x00 },  // ,
      { 0x08, 0x08, 0x08, 0x08, 0x08, 0x00 },  // -
      { 0x00, 0x30, 0x30, 0x00, 0x00, 0x00 },  // .
      { 0x20, 0x10, 0x08, 0x04, 0x02, 0x00 },  // /
      { 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00 },  // 0
      { 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00 },  // 1
      { 0x42, 0x61, 0x51, 0x49, 0x46, 0x00 },  // 2
      { 0x21, 0x41, 0x45, 0x4B, 0x31, 0x00 },  // 3
      { 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00 },  // 4
      { 0x27, 0x45, 0x45, 0x45, 0x39, 0x00 },  // 5
      { 0x3C, 0x4A, 0x49, 0x49, 0x30, 0x00 },  // 6
      { 0x01, 0x71, 0x09, 0x05, 0x03, 0x00 },  // 7
      { 0x36, 0x49, 0x49, 0x49, 0x36, 0x00 },  // 8
      { 0x06, 0x49, 0x49, 0x29, 0x1E, 0x00 },  // 9
      { 0x00, 0x36, 0x36, 0x00, 0x00, 0x00 },  // :
      { 0x00, 0x56, 0x36, 0x00, 0x00, 0x00 },  // ;
      { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 },  // <
      { 0x14, 0x14, 0x14, 0x14, 0x14, 0x00 },  // =
      { 0x41, 0x22, 0x14, 0x08, 0x00, 0x00 },  // >
      { 0x02, 0x01, 0x51, 0x09, 0x06, 0x00 },  // ?
      { 0x32, 0x49, 0x79, 0x41, 0x3E, 0x00 },  // @
      { 0x7E, 0x11, 0x11, 0x11, 0x7E, 0x00 },  // A
      { 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00 },  // B
      { 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00 },  // C
      { 0x7F, 0x41, 0x41, 0x22, 0x1C, 0x00 },  // D
      { 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00 },  // E
      { 0x7F, 0x09, 0x09, 0x01, 0x01, 0x00 },  // F
      { 0x3E, 0x41, 0x41, 0x51, 0x32, 0x00 },  // G
      { 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00 },  // H
      { 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00 },  // I
      { 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00 },  // J
      { 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00 },  // K
      { 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00 },  // L
      { 0x7F, 0x02, 0x04, 0x02, 0x7F, 0x00 },  // M
      { 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00 },  // N
      { 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00 },  // O
      { 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00 },  // P
      { 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00 },  // Q
      { 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00 },  // R
      { 0x46, 0x49, 0x49, 0x49, 0x31, 0x00 },  // S
      { 0x01, 0x01, 0x7F, 0x01, 0x01, 0x00 },  // T
      { 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00 },  // U
      { 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00 },  // V
      { 0x7F, 0x20, 0x18, 0x20, 0x7F, 0x00 },  // W
      { 0x63, 0x14, 0x08, 0x14, 0x63, 0x00 },  // X
      { 0x03, 0x04, 0x78, 0x04, 0x03, 0x00 },  // Y
      { 0x61, 0x51, 0x49, 0x45, 0x43, 0x00 },  // Z
      { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 },  // [
      { 0x02, 0x04, 0x08, 0x10, 0x20, 0x00 },  // 55
      { 0x41, 0x41, 0x7F, 0x00, 0x00, 0x00 },  // ]
      { 0x04, 0x02, 0x01, 0x02, 0x04, 0x00 },  // ^
      { 0x40, 0x40, 0x40, 0x40, 0x40, 0x00 },  // _
      { 0x00, 0x01, 0x02, 0x04, 0x00, 0x00 },  // '
      { 0x20, 0x54, 0x54, 0x54, 0x78, 0x00 },  // a
      { 0x7F, 0x48, 0x44, 0x44, 0x38, 0x00 },  // b
      { 0x38, 0x44, 0x44, 0x44, 0x20, 0x00 },  // c
      { 0x38, 0x44, 0x44, 0x48, 0x7F, 0x00 },  // d
      { 0x38, 0x54, 0x54, 0x54, 0x18, 0x00 },  // e
      { 0x08, 0x7E, 0x09, 0x01, 0x02, 0x00 },  // f
      { 0x08, 0x14, 0x54, 0x54, 0x3C, 0x00 },  // g
      { 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00 },  // h
      { 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00 },  // i
      { 0x20, 0x40, 0x44, 0x3D, 0x00, 0x00 },  // j
      { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 },  // k
      { 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00 },  // l
      { 0x7C, 0x04, 0x18, 0x04, 0x78, 0x00 },  // m
      { 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00 },  // n
      { 0x38, 0x44, 0x44, 0x44, 0x38, 0x00 },  // o
      { 0x7C, 0x14, 0x14, 0x14, 0x08, 0x00 },  // p
      { 0x08, 0x14, 0x14, 0x18, 0x7C, 0x00 },  // q
      { 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00 },  // r
      { 0x48, 0x54, 0x54, 0x54, 0x20, 0x00 },  // s
      { 0x04, 0x3F, 0x44, 0x40, 0x20, 0x00 },  // t
      { 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00 },  // u
      { 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00 },  // v
      { 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00 },  // w
      { 0x44, 0x28, 0x10, 0x28, 0x44, 0x00 },  // x
      { 0x0C, 0x50, 0x50, 0x50, 0x3C, 0x00 },  // y
      { 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00 }  // z
    };
    
    
    
    
    
    
    //------------------------------------ Functions ------------------------------------
    //------------------------------------ Functions ------------------------------------
    // Initialize Graphic LCD
    void glcd_Init(void)
    {
    	//0xc0 : Display start line = 0 feeprom 0~63
    	//0xb8 : Set address X = 0 feeprom 0~7
    	//0x40 : Set address Y = 0 feeprom 0~63
    	//0x3f : Display = ON
    	int i=0,com[4] = {0xc0,0xb8, 0x40, 0x3f};
    	PORTC=0;
    	DDRC=0b01111011;
    	PORTD=0;
    	DDRD=0xFF;
    	reset();
    	RS = 0;
    	while(i<4)
    	{
    		write_left(com[i]);
    		i++;
    	}
    	i=0;
    	while(i<4)
    	{
    		write_right(com[i]);
    		i++;
    	}
    } 
    
    //RESET RAM
    void reset(void)
    {
    	RST=0;
    	delay_ms(10);
    	RST=1;
    	delay_ms(10);
    }
    
    // Clear Lcd screen
    void glcd_Clear()
    {
      unsigned char page[8]={0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf };
      int i=0,j=0,index=0;
      while(index<1024)
      {  
        address_left(page[i],0x40);  
        RS=1;
        for(j=0;j<64;j++)
        {
          write_left(0);
          index++;
        }
        address_right(page[i],0x40);
        RS=1;
        for(j=0;j<64;j++)
        {
          write_right(0);
          index++;
        } 
        i++;
      }
    }
    
    // Write a byte in Row x{0..7} and Column y{0..127}
    void glcd_WriteByte(unsigned char x, unsigned char y, unsigned char data)
    {      
    	//unsigned char j;
    	if(y<64) // Left
    	{
    		address_left(((x|0b10111000)&0b10111111),((y|0b01000000)&0b01111111));
    		RS = 1;
    		write_left(data);  		
    	 } 		
    	else	// Right
    	{          
    		y -= 64;
    		address_right(((x|0b10111000)&0b10111111),((y|0b01000000)&0b01111111));
    		RS = 1;
    		write_right(data);
    	}
    }
    
    // Drawing a pattern that is stored in FLASH memory
    void glcd_DrawF(eeprom unsigned char *Pat)
    {
    	unsigned char i,j;
    		for( i= 0; i<8; i++)
    			for( j =0; j<128; j++)
    		 		glcd_WriteByte(i,j,Pat[i*128+j]);
    }
    
    // Drawing a pattern that is stored in SRAM memory
    void glcd_Draw(unsigned char Pat[])
    {       
    	unsigned char i,j;
    		for( i= 0; i<8; i++)
    			for( j =0; j<128; j++)
    	 			glcd_WriteByte(i,j,Pat[i*128+j]);
    }
    
    // Drawing a pattern that is stored in FLASH memory feeprom dot[x,y] until width w and Height h 
    void glcd_DrawBmpF(unsigned char Pat[],
    			unsigned char x, unsigned char y,
    			unsigned char h,unsigned char w)
    {
    	unsigned char i,j;
    	unsigned int k=0;
    
    	for( i= x ; i<x+h+1; i++)
    		for( j =y ; j<y+w+1; j++)
    		{
    			k = (unsigned int)(i-x)*(w+1)+(unsigned int)(j-y);
    			glcd_WriteByte(i,j,Pat[k]);
    	 	}
    }
    
    // Drawing a pattern that is stored in SRAM memory with start point[x,y] until width w and Height h 
    void glcd_DrawBmp(unsigned char Pat[],
    			unsigned char x, unsigned char y,
    			unsigned char h,unsigned char w)
    {
    	unsigned char i,j;
    	unsigned int k=0;
    
    	for( i= x ; i<x+h; i++)
    		for( j =y ; j<y+w; j++)
    		{
    			k = (unsigned int)(i-x)*(w)+(unsigned int)(j-y);
    			glcd_WriteByte(i,j,Pat[k]);
    	 	}
    }
    
    // Put a string Text in LCD with start point[x,y]
    void glcd_Printf(unsigned char x, unsigned char y,char* str)
    {
      while (*str )
      {          
        glcd_Putchar(x,y,*str++ );
        y+=6;
      }
    }
    
    // Put a charachter in point[x,y]
    void glcd_Putchar(unsigned char x, unsigned char y,unsigned char ch)
    {    
      unsigned char i; 
      ch-=32;
      for(i=0;i<6;i++)
    	{
    	  glcd_WriteByte(x,y,FontLookup[ch][i]);
        y++;
    	};
    
    }
    //---------------------------------------------------------------------------------------
    
    //---------------------------------- LCD's methods ---------------------------------
          
    
    ///inline 
    void address_right(unsigned char x,unsigned char y)
    {
    	RS = 0;
    	write_right(x);
    	write_right(y);
    	return ;
    }
    
    
    ///inline 
    void address_left(unsigned char x,unsigned char y)
    {
    	RS = 0;
    	write_left(x);
    	write_left(y);
    	return ;
    }   
    
    ///inline 
    void write_right(unsigned char x )
    {   
    	CS1	= 0;
      	CS2	= 1;
      	delay_us(100);
     	DATA	= x;
    	EN	= 1;
    	delay_us(100);
    	EN	= 0;
    	CS1	= 0;
    	CS2	= 0;
    	return ;
    }
    
    ///inline 
    void write_left(unsigned char x)
    {        
    	CS1	= 1;
     	CS2	= 0;
     	delay_us(100);
      	DATA	= x;
      EN	= 1;
      delay_us(100);
    	EN	= 0;
     	CS1	= 0;
     	CS2	= 0;
    	return ;
    }   
          
    //---------------------------------------------------------------------------------------

    #2
    پاسخ : GLCD با کنترلر KS0180

    شرمنده من با این LCD کار کردم ولی با بیسیک بر نامشه نوشتم
    :cry: :cry:
    کسی کوه را برداشت که از سنگ ر یزه ها شروع کرد

    http://www.eca.ir/forum2/index.php/topic,10159.0.html


    یه وقت رو تشکر کلیک نکنیدآ‌ها،جیزه!!

    دیدگاه

    لطفا صبر کنید...
    X