من دارم با 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
چی کار باید بکنم؟
اینم کتابخونه:
حالا که می خوام از توابع موجود در این کتابخانه ها (ی دست نوشته) استفاده کنم و تو 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 ; } //---------------------------------------------------------------------------------------
دیدگاه