اطلاعیه

Collapse
No announcement yet.

یه عکس از پشت LCD KS0108 ؟

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

    #16
    پاسخ : یه عکس از پشت LCD KS0108 ؟

    امید جان :wink
    دلربا دل انگیز ...ای زبان دری بلد:nerd:
    به نتیجه ایی رسیدی یا نه؟
    اگه سرتون شلوغه هر موقعه وقت کردین جواب بدین عجله ایی ندارم

    ذكات علم ياد دادنه ....

    دیدگاه


      #17
      پاسخ : یه عکس از پشت LCD KS0108 ؟

      طرف در حد تیم ملی برنامه نوشته :mrgreen:
      کد:
      If _sec = 0 Then G = 59
      E = Lookup(g , Table2) : F = Lookup(g , Table1)
      Line(98 , 27) -(e , F) , 0
      E = Lookup(_sec , Table2) : F = Lookup(_sec , Table1)
      Line(98 , 27) -(e , F) , 3
      H = _min - 1
      If _min = 0 Then H = 59
      I = Lookup(h , Table2) : J = Lookup(h , Table1)
      Line(98 , 27) -(i , J) , 0
      I = Lookup(_min , Table2) : J = Lookup(_min , Table1)
      Line(98 , 27) -(i , J) , 3
      K = P - 1
      If P = 0 Then K = 59
      L = Lookup(k , Table4) : M = Lookup(k , Table3)
      Line(98 , 27) -(l , M) , 0
      V = _hour
      If V > 11 Then V = V - 12
      N = _min / 12 : P = V * 5 : P = P + N
      L = Lookup(p , Table4) : M = Lookup(p , Table3)
      Line(98 , 27) -(l , M) , 3
      دقیقا با همون دستور line که گفتم کار کرده و به خاطر اینکه فقط از یه طرف lcd واسه ساعت استفاده کرده یه lookup هم تعریف کرده
      این برنامه به دردت نمیخوره چون دستور line تو کدویژن معادل نداره

      باید بشینی با Set کردن پیکسل ها یه تابع بنویسی و ساعت رو نشون بدی که فکر کنم یه یک هفته گیرش باشی
      علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

      دیدگاه


        #18
        پاسخ : یه عکس از پشت LCD KS0108 ؟

        ای وای ازهونی که میترسیدم ....
        یعنیهیچ راهدیگه ای نداره :cry2:
        ذكات علم ياد دادنه ....

        دیدگاه


          #19
          پاسخ : یه عکس از پشت LCD KS0108 ؟

          این قدر ها هم که فکر میکنی سخت نیستاااا
          یه نقطه 0 روی lcd فرض کن حالا رو به بیرون 60 تا دستور تو یه تابع بنویس :rolleyes:
          حالا خط رو یه کم کوچیکتر فرض کن و دوباره

          تمام شد :mrgreen:
          تازه این جوری می تونی ذوق هنری هم توش به خرج بدی :mrgreen:
          علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

          دیدگاه


            #20
            پاسخ : یه عکس از پشت LCD KS0108 ؟

            یه نقطه 0 روی lcd فرض کن حالا رو به بیرون 60 تا دستور تو یه تابع بنویس
            حالا خط رو یه کم کوچیکتر فرض کن و دوباره
            باشه هر چی شمابفرمائید استلد اینو یکاریش میکنم :nerd:

            حالا یه سوال دیگه دارم من از کتابخانه اقای نحوی دارم استفاده می کنم که مربوط به code vision هست حالا تو این کتابخونه از پورت C به عنوان فرمان و از پورت D هم به عنوان دیتا استفاده کرده حالا مشکل اینجاست که من میخوام از دوتا پورت دیگه استفاده کنم یااز پورت C بعنوان دیتا و از پورت D بهنوان دستوراتم استفاده کنم من کتابخونه رو یکم دسکاری کردم ولی برنامه ارور میه یعنی جای این دوتا پورتو عوض کردم
            به نظر شما باید چیکار کنم
            ذكات علم ياد دادنه ....

            دیدگاه


              #21
              پاسخ : یه عکس از پشت LCD KS0108 ؟

              خوب مگه مجبوری دستش نزن :mrgreen:
              استاد هم خودتی :icon_razz:

              اگه خیلی اجباری هست کد رو بزار ببینیم چه بلایی سرش میاریم
              ولی به نظر من اول جواب بگیر بعد دستکاریش کن

              ممکنه تو تابع های دیگه هم به صورت پورت صدا زده که این بلا سرت اومده
              علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

              دیدگاه


                #22
                پاسخ : یه عکس از پشت LCD KS0108 ؟

                خوب مگه مجبوری دستش نزن
                چیکار کنیم دیگه از بیکاری بایدشیتونی کنیم

                اگه خیلی اجباری هست کد رو بزار ببینیم چه بلایی سرش میاریم
                ولی به نظر من اول جواب بگیر بعد دستکاریش کن
                نه زیاد اجباری نیست ولی یه مشکلی که هست اگه بخوایم از INT میکرو استفاده کنیم نمیشه چون از اون استفاده شده ....
                جواب که گرفم اولش جواب نمیداد بعد یکم بهش ور رفتم دیدم نشد یکم فکر کردم یاد اون جمله قشنگتون افتادم که فرمودین RST رو بهVCC وصلش کن
                همونجا بود که گفتم خدا خیرش بده امید اقا رو :mrgreen:

                هیچی دیگه جواب داد یه چنتا عکسای خودمو BMP کردم وقتی تو LCD نشونم داد اولش یکم به خودم شک کردم :icon_razz:
                ( من اینقدر زشت نبودم :mrgreen: ) بعد کم کم عادت کردم... مشکل خاصی نبود فقط نمیدونم چرا وقتی یه لحظه برقو قطع و وصل میکنم LCD میریزه بهم ...


                اینم کتابخونه اقای نحوی ...
                من که نتونستم کاریش بکنم ... البته من جای پورتا رو عوض کردم

                کد:
                /*
                --------------------- www.eca.ir ---------------------
                	Graphic Lcd KS0108 controller Library
                */
                
                
                
                
                #include <delay.h>
                #include <font.h>
                
                //------------------------------------ Definitions ------------------------------------
                #ifndef	GLCDTYPE 
                	#define GLCDTYPE KS0108.n		// Graphic Lcd Controller type
                #endif
                
                // Default Port definition
                #ifndef RS	
                	#define	RS		PORTD.6
                #endif
                
                #ifndef RW
                	#define	RW		PORTD.5
                #endif
                
                #ifndef EN
                	#define	EN 		PORTD.4
                #endif
                
                #ifndef CS1
                	 #define	CS1 	PORTD.3
                #endif
                
                #ifndef CS2
                	#define	CS2 	    PORTD.2
                #endif
                
                #ifndef RST
                	#define	RST		PORTD.1 
                #endif
                
                #ifndef DATA
                	#define	DATA	PORTC
                #endif
                //---------------------------------------------------------------------------------------
                
                
                //------------------------------------ Functions ------------------------------------
                // Initialize Graphic LCD
                void glcd_Init()
                {
                	int i=0,com[4] = {0xc0,0xb8, 0x40, 0x3f};
                	
                	RS = 0;
                	while(i<4)
                	{
                		write_left(com[i]);
                		i++;
                	}
                	i=0;
                	while(i<4)
                	{
                		write_right(com[i]);
                		i++;
                	}
                } 
                
                // 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(flash unsigned char Pat[])
                {       
                	unsigned char i,j;
                	unsigned int k=0;
                	
                	for( i= 0; i<8; i++)
                		for( j =0; j<128; j++)
                	 		glcd_WriteByte(i,j,Pat[k++]);
                }
                
                // Drawing a pattern that is stored in SRAM memory
                void glcd_Draw(unsigned char Pat[])
                {       
                	unsigned char i,j;
                	unsigned int k=0;
                	
                	for( i= 0; i<8; i++)
                		for( j =0; j<128; j++)
                	 		glcd_WriteByte(i,j,Pat[k++]);
                }
                
                // Drawing a pattern that is stored in FLASH memory from dot[x,y] until width w and Height h 
                void glcd_DrawBmpF(flash 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+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]);
                	 	}
                }
                
                // 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(int x,int y)
                {
                	RS = 0;
                	write_right(x);
                	write_right(y);
                }
                
                
                inline void address_left(int x,int y)
                {
                	RS = 0;
                	write_left(x);
                	write_left(y);
                }   
                
                inline void write_right(unsigned char x )
                {  
                	CS1	= 0;
                 	CS2	= 1;
                 	delay_us(1);
                 	DATA	= x;
                  	EN	= 1;
                  	delay_us (1);
                  	EN	= 0;
                  	CS1	= 0;
                  	CS2	= 0;
                }
                
                inline void write_left(unsigned char x)
                {        
                	CS1	= 1;
                 	CS2	= 0;
                 	delay_us(1);
                 	DATA	= x;
                  	EN	= 1;
                  	delay_us (1);
                	EN	= 0;
                 	CS1	= 0;
                 	CS2	= 0;
                }  
                      
                //---------------------------------------------------------------------------------------
                ذكات علم ياد دادنه ....

                دیدگاه


                  #23
                  پاسخ : یه عکس از پشت LCD KS0108 ؟

                  اولا که تبریک :applause:
                  دوما من کد رو دیدم چیزی به نظرم نمیرسه .دست خود اقای نحوی رو میبوسه اخه از دید من هم مشکلی نداره

                  در ضمن وقتی lcd رو قطع و وصل میکنی از init خارج میشه و باید مجددا config بشه :agree:
                  علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

                  دیدگاه


                    #24
                    پاسخ : یه عکس از پشت LCD KS0108 ؟

                    در ضمن وقتی lcd رو قطع و وصل میکنی از init خارج میشه و باید مجددا config بشه
                    نه منظورم قطع کردن کل برقه هم میکرو و همLCD


                    دوباره خوردم به مشکل :cry2:
                    تا دیشب خوب کار میکر برنامه اقای نحوی روکه میریختم روش قشنگ جواب میداد ولی نمیدوم چی شد امروز هی قرو قور میاد
                    یعنی نیمه بالایی LCD که اصلا ماله LCD نیست یعنی کاری به برنامه نداره تمو پیکسلاش روشنه یا بعضی از اونا خاموشه و نیمه پایینی هم که بهم ریختس

                    اینم عکسش البته کیفیتش پایینه



                    گفتم شاید LCD براش مشکل پید کرده باشه یه برنامه بیسیک داشتم با اون امتحان کردم جواب داد oo:



                    ایا شمابا این برنامه اقای نحوی جواب گرفتین ؟

                    درضن چرا گفتین cs1 رو با cs2 جابجا کنم بعد بدمش به میکرو ؟ چون دیروز که کار میکرد این کارو که میکردم میرخت به هم ...

                    حالا با این مشکل چیکار کنم :angry:


                    ذكات علم ياد دادنه ....

                    دیدگاه


                      #25
                      پاسخ : یه عکس از پشت LCD KS0108 ؟

                      راستی کتابخونه دیگه ایی هست برای code vision ؟
                      ذكات علم ياد دادنه ....

                      دیدگاه


                        #26
                        پاسخ : یه عکس از پشت LCD KS0108 ؟

                        نمیدونم
                        این که گفتم این 2 تا پایه رو جا به جا کنی واسه bascom بود
                        من خیلی کم کدویژن کار میکنم .حرفه اصلیم bascome :mrgreen:
                        علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

                        دیدگاه


                          #27
                          پاسخ : یه عکس از پشت LCD KS0108 ؟

                          بالاخره فهمیدم عیب ازکجا بود مشکل از پروگرامر :agree:
                          نمیدونم چرا وقتی ic رو با کابل flat خود میکرو پروگرام میکردم ..میکرو پروگرام میشدولی رو LCD چرتو پرت نشون میداد ولی همینکه خد میکرو رو روی سوکت پروگرامر میزاشتم و پرگرام میکردم جواب میداد

                          فقط یه مشکل دیگه حافظه میکرو واسه چنتا عکس کافیه ولی اگه زیاد بشه اونوقت باید چیکار کرد؟

                          به نظر شما میشه از MMC استفاده کرد؟
                          ذكات علم ياد دادنه ....

                          دیدگاه


                            #28
                            پاسخ : یه عکس از پشت LCD KS0108 ؟

                            ممکنه بتونی با boot loader این کار رو بکنی اقا مجید گل
                            علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

                            دیدگاه

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