اطلاعیه

Collapse
No announcement yet.

سوالات مربوط به LCD های کاراکتری و گرافیکی

Collapse
این موضوع بسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

    من یه میکروی atmega32L دارم دیروز وقتی می خواستم پروگرم کنم یادم رفت mmc رو از توی سوکتش در بیارم وسطش یه ارور هایی داد من کنسل کردم بعد mmc از توی سوکتش در آوردم دوباره که می خواستم پروگ کنم نشد تا امروز هم نشده پروگرمر هم stk 200/300 با یه atmega 16 سالم هم امتحان کردم نشد چی کار کنم ؟

    دیدگاه


      پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

      سلام عزیزان!
      یکی لطف کنه و دیتاشیت LCD N96 چینی موجود در سایت رو بذاره(هرچه فشرده تر بهتر :redface
      اونچیزی که در دانشگاه یاد میگیرید، "الفبایی" هست برای نوشتن یک "رمان" !!

      دیدگاه


        پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

        نوشته اصلی توسط reza_shushtar44
        سلام بر دوستان
        ما یک lcd 2*16 ای داشتیم داشت درست کار میکرد ولی چون تغذیش با تغذیه مدار یکی بود (رله و ...) وقتی رله ها روشن میشدند نور lcd کم میشد و بعضی وقتها اصلا lcd قاتی مینوشت و یا هیچی نمینوشت .
        اومدیم تغذیه جداگونه از یک سر دیگه ترانس گرفتم ( 16 ولت) و اون رو dc کردم و وقتی روشن شد چند تا کاراکتر اولش پررنک و بقیه خاموش بودند . از سرای دیگه ترانس گرفتم باز هم همینطوری شد . دوباره که زدمش به تغذیه خودش (همون 5 ولت کل مدار) دیگه خبری از lcd نبود . avr رو هم دوباره پروگ کردم نشد که نشد .
        آیا lcd با ولتاژ 16 ولتی و 12 ولت و 8 ولت ای که بش دادم سوخته ؟؟؟؟؟ :eek:
        خواهشا نظر بدید
        سلام ، آقا ما که خودمون حلش کردیم . طبق دیتا شیت lm016l ولتاژ تغذیه حداکثر 6.5 ولت هست و نرمالش باید 5 ولت با تلرانس 0.25 ولت باشه . یکی دیگه خریدم درست شد . گفتیم برای تجربه تازه کارها :nerd:

        دیدگاه


          پاسخ : سوالات مربوط به LCD های کاراکتری و گرافی&#17

          سلام من یه ال سی دی گرافیکی ts12864a رو بستم تو پورتئوس هم جواب داد اما متاسفانه ال سی دی در عمل فقط روشن میشه و هیچ چیزی نمایش نمیده پایه 3 و 18 رو هم وصل کردم به پایه های یه پتانسیومتر 0-50k پایه وسط پتانسیومترم دادم به گراند پتانسیومترم که میچرخونم فقط روشنایی کم و زیاد میشه و تو 50k هم کامل سیاه میشه
          اینم بررنامم :
          کد:
          #include <mega32.h>
          
          #include <delay.h>
          
          #define LCD_PORT PORTC
          #define LCD_RST PORTA.0
          #define LCD_E PORTA.1
          #define LCD_RW PORTA.2
          #define LCD_RS PORTA.3
          #define LCD_CS2 PORTA.4
          #define LCD_CS1 PORTA.5
          flash char picture[]={
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x50,0x50,0x50,0xE0,0x00,0xFE,0x00,0xF2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x40,0x40,0x40,0x40,0x20,0x20,0x20,0x20,0x10,0x10,0x10,0x10,0x10,0x14,0x18,0x10,0x30,0x48,0x88,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x20,0x20,0x40,0x40,0x40,0x40,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x10,0x08,0x04,0x02,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x20,0x20,0x20,0x20,0x41,0x42,0x44,0x48,0x50,0xA0,0xC0,0xA0,0x80,0x00,0x03,0x0C,0x30,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x02,0x04,0x08,0x10,0x60,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0C,0x10,0x20,0x40,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x10,0x08,0x04,0x02,0x01,0x00,0x00,0x00,0x81,0x83,0x85,0x89,0x92,0xA3,0xC6,0x98,0xE0,0xC0,0x40,0x60,0x50,0x48,0x44,0x42,0x21,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x90,0x90,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x40,0x40,0x20,0x20,0x20,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x20,0x20,0x20,0x40,0x40,0x40,0x80,0x18,0x25,0x25,0x27,0x3E,0x02,0x3F,0x0C,0x3F,0x0C,0x0C,0x0C,0x0C,0x0C,0x14,0x14,0x14,0x14,0x12,0x12,0x12,0x1E,0x12,0x23,0x22,0x22,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x20,0x60,0x20,0x10,0x18,0x14,0x12,0x11,0x11,0x12,0x17,0x1C,0x18,0x68,0x88,0x08,0x04,0x04,0x04,0x04,0x02,0x02,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x22,0x41,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x41,0x22,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x02,0x02,0x02,0x02,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x02,0x02,0x02,0x02,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
          
          };
          void write_lcd(char columns,char page,char data);
          void LatchLCD();
          //void shiftup();
          //void shiftdown();
          void Glcd_int();
          
          void main()
          {
          unsigned int i,x,y;
          DDRA=0xFF;
          DDRC=0xFF;
          DDRB=0xFF;
          Glcd_int();
          x=0;
          y=0;
          for(i=0;i<1024;i++)
            {if(x>127){
            x=0;
            y++;
            }
            write_lcd(x,y,picture[i]);
            x++;}
            //  shiftup()
            // shiftdown()
            while (1);
          }
          void write_lcd(char columns,char page,char data)
            {
            if(columns >= 64)
            {
            LCD_CS1=0;
            LCD_CS2=1; 
          }
          else
          {  LCD_CS1=1; 
            LCD_CS2=0; 
          
          } 
          LCD_RS=0;
          LCD_RW=0;
          LCD_PORT=0xB8 | page;
          LatchLCD();
          
          LCD_RS=0;
          LCD_RW=0;
          LCD_PORT=0x40 | columns;
          LatchLCD();
          
          LCD_RS=1;
          LCD_RW=0;
          LCD_PORT=data;
          
          LatchLCD();
          
          
           PORTB.0=1;
          
          
          }
          void Glcd_int()
          {
          unsigned char i;
          LCD_RST=0;
          delay_ms(10);
          LCD_RST=1;
          delay_ms(100);
          LCD_RS=0;
          LCD_CS1=0;
          LCD_CS2=1;
          for(i=0;i<2;i++)
          {
          LCD_PORT=0x3E;
          LatchLCD();
          LCD_PORT=0x40;
          LatchLCD();
          LCD_PORT=0xB8;
          LatchLCD();
          LCD_PORT=0xC0;
          LatchLCD();
          LCD_PORT=0x3F;
          LatchLCD();
          LCD_CS1=~LCD_CS1;
                   
          LCD_CS2=~LCD_CS2;
          }
          }
          void LatchLCD()
          {
          delay_us(7);
          LCD_E=1;
          delay_us(7);
          LCD_E=0;
          }
          لطفا راهنمایی کنید

          دیدگاه


            سوالات مربوط به LCD های کاراکتری و گرافیکی

            سلام بر همه دوستان یه سوال راجع به lcd کاراکتری و یه سوال و شاید هم چند سوال در مورد lcd گرافیکی.
            من یه lcd کاراکتری 20*4 دارم حالا می خوام تو سه سطر اول یه سری نوشته بنویسم ولی سطر آخر رو مثل تبلیغات مدام به چپ یا راست شیفت بدم آیا میشه یا نه؟
            در مورد ال سی دی گرافیکی من چند روز یه lcd ts 12864a-2egaeab خریدم حالا می خوام راه اندایش کنم ولی دیتاشیت رو پیدا نکردم اگه کسی داره خواهشا کمک کنه و یه توضیحاتی هم دربارهش می خواستم مثلا چطور سری sed رو از toshiba تشخیص بدم و نحوه انتخاب فونت؟
            ببخشید که سوالات ابتدایی می پرسم چون تازه دارم رو ال سی دی های گرافیکی کار می کنم تو این قسمت هم گشتم ولی .... :applause: :applause:
            با تشکر
            چرا ناراحتی پاتریک!
            + امروز ی بچه دیدم سرچهارراه گل میفروخت
            - از دیدنش ناراحت شدی؟
            + نه
            پس چی ناراحتت کرده
            + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
            ------------------------------------------------------------------------------------------------------
            تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
            ------------------------------------------------------------------------------------------------------
            محصولات

            دیدگاه


              پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

              نوشته اصلی توسط saeid68
              اول اینکه خدمت دوستان باید عرض کنم بنده الان دوتا شاخ دارم
              اما دلیلش
              یه برنامه پیزوری رسه منو کشیده بابا جان
              خط اول برنامه یه عبارت رو مینویسه تا شرط که یه کلید باشه بر قرار میشه و وقتی شرط رو انجام داد اوم دوباره سر خط اول ال سی دی میشه روز محشر
              دهنم رو اسفالت کرده اتوبان زده تا .....
              تا حالا سه جور برنامه رو مینویسم هی یه فیلمی در میاره
              الان هم نوبت ال سی دی شده
              دیگه دارم کلافه میشم
              دفعه قبل اول اولا با صفحه کلید مشکل نداشت همین که برنامه رو تکمیل کردم پکید رفت در اعماق زباله دونی
              برنامه رو هم با کدویژن مینویسم
              با تشکر
              کسی که اینجا کمک نکرد (به جز دایی جان) بیشتر شبیه صندوق پیشنهادات و انتقادات در اتاق مدیر کل هست که جواب نمیگیری
              ولی مشکل رو خودم حل کردم
              بیشتر شبیه یک باگ در نرم افزار کدویژن بود
              وقتی از دستور :
              sprintf(char a,"comment= %d",int a);
              استفاده میکردم تا زمانی که قسمت comment= در این دستور وجود داشت من با مشکل خرچنگ قورباغه شدن مواجه بودم
              ولی با اصلاحش به صورت زیر:
              lcd_clear();
              lcd_gotoxy(0,0);
              lcd_putsf("comment= "
              sprintf(char a,"%d",int b);
              lcd_pus(a);
              مشکلم حل شد
              فقط چند خط اضافه شد.

              دیدگاه


                پاسخ : سوالات مربوط به LCD های کاراکتری و گرافی&#17

                سلام
                من دارم یک کیبود 3*4 را به یک ال سی دی وصل می کنم...برنامه اروری نداره....سخت افزار درسته...فکر می کنم برنامه مشکل داره...میشه یک بررسی کنید به من بگید ممکنه ایراد از کجا باشه؟

                کد:
                #include <mega32.h>
                #include <delay.h>
                #include <sleep.h>
                #include <stdio.h>
                
                #asm
                .equ_lcd_port=0x18
                #endasm
                #include <lcd.h>
                
                unsigned char digit,str[3];
                unsigned char scan();
                
                
                // External Interrupt 1 service routine
                interrupt [EXT_INT1] void ext_int1_isr(void)
                {
                digit=scan();
                delay_ms(400);
                sprintf (str,"%u",digit);
                lcd_puts(str);
                }
                
                // Declare your global variables here
                
                void main(void)
                {
                // Declare your local variables here
                
                // Input/Output Ports initialization
                // Port A initialization
                // Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In 
                // State7=0 State6=0 State5=0 State4=0 State3=P State2=P State1=P State0=P 
                PORTA=0x0F;
                DDRA=0xF0;
                
                // Port B initialization
                // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                PORTB=0x00;
                DDRB=0x00;
                
                // Port C initialization
                // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                PORTC=0x0F;
                DDRC=0xF0;
                
                // Port D initialization
                // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                // State7=T State6=T State5=T State4=T State3=P State2=T State1=T State0=T 
                PORTD=0x08;
                DDRD=0x00;
                
                // Timer/Counter 0 initialization
                // Clock source: System Clock
                // Clock value: Timer 0 Stopped
                // Mode: Normal top=FFh
                // OC0 output: Disconnected
                TCCR0=0x00;
                TCNT0=0x00;
                OCR0=0x00;
                
                // Timer/Counter 1 initialization
                // Clock source: System Clock
                // Clock value: Timer1 Stopped
                // Mode: Normal top=FFFFh
                // OC1A output: Discon.
                // OC1B output: Discon.
                // Noise Canceler: Off
                // Input Capture on Falling Edge
                // Timer1 Overflow Interrupt: Off
                // Input Capture Interrupt: Off
                // Compare A Match Interrupt: Off
                // Compare B Match Interrupt: Off
                TCCR1A=0x00;
                TCCR1B=0x00;
                TCNT1H=0x00;
                TCNT1L=0x00;
                ICR1H=0x00;
                ICR1L=0x00;
                OCR1AH=0x00;
                OCR1AL=0x00;
                OCR1BH=0x00;
                OCR1BL=0x00;
                
                // Timer/Counter 2 initialization
                // Clock source: System Clock
                // Clock value: Timer2 Stopped
                // Mode: Normal top=FFh
                // OC2 output: Disconnected
                ASSR=0x00;
                TCCR2=0x00;
                TCNT2=0x00;
                OCR2=0x00;
                
                // External Interrupt(s) initialization
                // INT0: Off
                // INT1: On
                // INT1 Mode: Any change
                // INT2: Off
                GICR|=0x80;
                MCUCR=0x00;
                MCUCSR=0x00;
                GIFR=0x80;
                
                // Timer(s)/Counter(s) Interrupt(s) initialization
                TIMSK=0x00;
                
                // Analog Comparator initialization
                // Analog Comparator: Off
                // Analog Comparator Input Capture by Timer/Counter 1: Off
                ACSR=0x80;
                SFIOR=0x00;
                
                lcd_init(16);
                
                // Global enable interrupts
                #asm("sei")
                sleep_enable();
                while (1)
                   {
                   PORTC=0xF0;
                   powerdown();
                
                   };
                }
                unsigned char scan(void)
                {
                PORTC=0xFE;
                delay_ms(1);
                if (PINC==0xDE)
                return 1;
                else if(PINC==0xBE)
                return 2;
                else if(PINC==0x7E)
                return 3;
                PORTC=0xFD;
                delay_ms(1);
                if (PINC==0xDD)
                return 4;
                else if(PINC==0xBD)
                return 5;
                else if(PINC==0x7D)
                return 6;
                PORTC=0xFB;
                delay_ms(1);
                if (PINC==0xDB)
                return 7;
                else if(PINC==0xBB)
                return 8;
                else if(PINC==0x7B)
                return 9;
                PORTC=0xF7;
                delay_ms(1);
                if (PINC==0xD7)
                return 10;
                else if(PINC==0xB7)
                return 11;
                else if(PINC==0x77)
                return 12; 
                }

                با تشکر

                دیدگاه


                  پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                  با سلام،

                  ظاهرا که کد برنامه ات مشکل چندانی نداره، فقط در مورد Sleep مشکوکم، شما فعلا ازش استفاده نکن، وقتی جواب گرفتی اونوقت اضافه اش کن.
                  اما چند تا نکته به نظرم میرسه، اول از همه، JTAG رو غیر فعال کردی؟! ( از پورت C استفاده میکنی ) دوم اینکه لزومی نداره که توی لوپ اصلی PORTC=0xF0 رو داشته باشی، یک بار قبل از لوپ اصلی قرارش بده و یک بار هم آخر روتین اینتراپت، و نکته بعدی هم اینکه بهتره به محض دریافت اینتراپت، در ابتدای روتین مربوطه، اینتراپت رو Disable کنی و در انتهای روتین اینتراپت ( بعد از اسکن کردن و نمایش و PORTC=0xF0 و اینا ) مجددا اینتراپت رو Enable کنی ( به نظرم مشکلت همین باشه ) به نظر میاد که اینتراپت هم باید روی لبه پائین رونده باشه.

                  کد پیشنهادی من :
                  کد:
                  #include <mega32.h>
                  #include <delay.h>
                  #include <sleep.h>
                  #include <stdio.h>
                  
                  #asm
                  .equ_lcd_port=0x18
                  #endasm
                  #include <lcd.h>
                  
                  unsigned char digit,str[3];
                  unsigned char scan();
                  
                  
                  // External Interrupt 1 service routine
                  interrupt [EXT_INT1] void ext_int1_isr(void)
                  {
                  	GICR&=0x7F; //INT1 Disable
                  	
                  	delay_ms(100);
                  	if(!PIND.3)	//PIND.3 still is zero (no surge!)
                  	{
                  		digit=scan();
                  		//delay_ms(400);
                  		sprintf (str,"%u",digit);
                  		lcd_puts(str);	
                  	}
                  	
                  	PORTC=0xF0;
                  	GICR|=0x80; //INT1 Enable
                  }
                  
                  // Declare your global variables here
                  
                  void main(void)
                  {
                  	// Declare your local variables here
                  	
                  	// Input/Output Ports initialization
                  	// Port A initialization
                  	// Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In
                  	// State7=0 State6=0 State5=0 State4=0 State3=P State2=P State1=P State0=P
                  	PORTA=0x0F;
                  	DDRA=0xF0;
                  	
                  	// Port B initialization
                  	// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                  	// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                  	PORTB=0x00;
                  	DDRB=0x00;
                  	
                  	// Port C initialization
                  	// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                  	// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                  	PORTC=0x0F;
                  	DDRC=0xF0;
                  	
                  	// Port D initialization
                  	// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                  	// State7=T State6=T State5=T State4=T State3=P State2=T State1=T State0=T
                  	PORTD=0x08;
                  	DDRD=0x00;
                  	
                  	// Timer/Counter 0 initialization
                  	// Clock source: System Clock
                  	// Clock value: Timer 0 Stopped
                  	// Mode: Normal top=FFh
                  	// OC0 output: Disconnected
                  	TCCR0=0x00;
                  	TCNT0=0x00;
                  	OCR0=0x00;
                  	
                  	// Timer/Counter 1 initialization
                  	// Clock source: System Clock
                  	// Clock value: Timer1 Stopped
                  	// Mode: Normal top=FFFFh
                  	// OC1A output: Discon.
                  	// OC1B output: Discon.
                  	// Noise Canceler: Off
                  	// Input Capture on Falling Edge
                  	// Timer1 Overflow Interrupt: Off
                  	// Input Capture Interrupt: Off
                  	// Compare A Match Interrupt: Off
                  	// Compare B Match Interrupt: Off
                  	TCCR1A=0x00;
                  	TCCR1B=0x00;
                  	TCNT1H=0x00;
                  	TCNT1L=0x00;
                  	ICR1H=0x00;
                  	ICR1L=0x00;
                  	OCR1AH=0x00;
                  	OCR1AL=0x00;
                  	OCR1BH=0x00;
                  	OCR1BL=0x00;
                  	
                  	// Timer/Counter 2 initialization
                  	// Clock source: System Clock
                  	// Clock value: Timer2 Stopped
                  	// Mode: Normal top=FFh
                  	// OC2 output: Disconnected
                  	ASSR=0x00;
                  	TCCR2=0x00;
                  	TCNT2=0x00;
                  	OCR2=0x00;
                  	
                  	// External Interrupt(s) initialization
                  	// INT0: Off
                  	// INT1: On
                  	// INT1 Mode: Any change
                  	// INT2: Off
                  	GICR|=0x80;
                  	MCUCR=0x08;	//INT1 mode: Falling edge
                  	MCUCSR=0x00;
                  	GIFR=0x80;
                  	
                  	// Timer(s)/Counter(s) Interrupt(s) initialization
                  	TIMSK=0x00;
                  	
                  	// Analog Comparator initialization
                  	// Analog Comparator: Off
                  	// Analog Comparator Input Capture by Timer/Counter 1: Off
                  	ACSR=0x80;
                  	SFIOR=0x00;
                  	
                  	lcd_init(16);
                  	
                  	PORTC=0xF0;
                  	
                  	// Global enable interrupts
                  	#asm("sei")
                  	//sleep_enable();
                  	
                  	while (1);
                  	   //{
                  	   //PORTC=0xF0;
                  	   //powerdown();
                  	
                  	   //};
                  }
                  
                  unsigned char scan(void)
                  {
                  	PORTC=0xFE;
                  	delay_ms(25);
                  	if   (PINC==0xDE)			return 1;
                  	else if(PINC==0xBE)			return 2;
                  	else if(PINC==0x7E)			return 3;
                  	
                  	PORTC=0xFD;
                  	delay_ms(25);
                  	if   (PINC==0xDD)			return 4;
                  	else if(PINC==0xBD)			return 5;
                  	else if(PINC==0x7D)			return 6;
                  	
                  	PORTC=0xFB;
                  	delay_ms(25);
                  	if   (PINC==0xDB)			return 7;
                  	else if(PINC==0xBB)			return 8;
                  	else if(PINC==0x7B)			return 9;
                  	
                  	PORTC=0xF7;
                  	delay_ms(25);
                  	if   (PINC==0xD7)			return 10;
                  	else if(PINC==0xB7)			return 11;
                  	else if(PINC==0x77)			return 12;
                  	
                  	return 0;
                  }
                  و اما در نهایت یه سری هم به پست شماره 9 تاپیک زیر بزن ( هر چند نتیجه اعلام نشده ) یه شماتیک سخت افزار پیشنهادی داره و یه روتین به بیسیک، که به نظر من خوبه و بررسیش برای یه رویه مناسب اسکن کی پد، بهت ایده میده.

                  http://www.eca.ir/forum2/index.php?topic=53189.msg280729#msg280729
                  مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

                  Sh_Nourbakhsh@Yahoo.com

                  http://s2.picofile.com/file/7170362468/_Wall_e_.jp

                  دیدگاه


                    سوالات مربوط به LCD های کاراکتری و گرافیکی

                    سلام بر همه دوستان.
                    از دوستان خواهش می کنم هر کسی دیتا شیت این ال سی دی رو داره بذاره رو سایت ممنون می شم خیلی لازمه.jhd904 سایزشم 128*64 .
                    چرا ناراحتی پاتریک!
                    + امروز ی بچه دیدم سرچهارراه گل میفروخت
                    - از دیدنش ناراحت شدی؟
                    + نه
                    پس چی ناراحتت کرده
                    + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
                    ------------------------------------------------------------------------------------------------------
                    تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
                    ------------------------------------------------------------------------------------------------------
                    محصولات

                    دیدگاه


                      پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                      سلام
                      من برای پروژه درس باید یک ال سی دی elt240320atp رو توسط یک میکرو کنترلر AVR توسط زبان سی بهم وصل کنم و برروی ال سی دی علاوه بر کارکتر....حتی شکل اینها هم داشته باشه...اما من باچیزای مختصری که راجع به ال سی دی های گرافیکی می دونم...نتونستم طراحی کنم...تو انجمن هم انگار این کار توسط arm انجام شده بود...اگه میشه هم برای برنامه هم نحوه اتصالات و توضیح خط به خط برنامه بهم کمک کنید.
                      با تشکر
                      @};-

                      دیدگاه


                        پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                        سلام
                        من از lcd ts12864a و atmega32 استفاده کردم برنامه و مدار داخل پروتئوس کاملا جواب می ده اما وقتی به طور عملی اون رو بستم تصویری که می خوام روی lcd نشون داده میشه اما گاهی خط های سیاه رنگ روش می افته و گاهی تصویر به طور کامل از پایین به بالا یا از راست به چپ حرکت می کنه و تصویر کاملا به هم می ریزه
                        میشه بهم بگین ممکنه اشکالش از کجا باشه؟ oo:

                        دیدگاه


                          پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                          نوشته اصلی توسط nazanin66
                          سلام
                          من برای پروژه درس باید یک ال سی دی elt240320atp رو توسط یک میکرو کنترلر AVR توسط زبان سی بهم وصل کنم و برروی ال سی دی علاوه بر کارکتر....حتی شکل اینها هم داشته باشه...اما من باچیزای مختصری که راجع به ال سی دی های گرافیکی می دونم...نتونستم طراحی کنم...تو انجمن هم انگار این کار توسط arm انجام شده بود...اگه میشه هم برای برنامه هم نحوه اتصالات و توضیح خط به خط برنامه بهم کمک کنید.
                          با تشکر
                          @};-
                          با سلام،

                          شما مطمئنی که کسی با AVR انجام نداده؟!
                          یه خورده دقت بفرمائید، تاپیک مخصوص به خودش رو داره

                          اینجا رو یه نگاهی بنداز( پست شماره 450 از این تاپیک http://www.eca.ir/forum2/index.php?topic=30608.msg285462#new ).........
                          http://www.4shared.com/file/W4iR4rTv/N96_dist_v2.html
                          مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

                          Sh_Nourbakhsh@Yahoo.com

                          http://s2.picofile.com/file/7170362468/_Wall_e_.jp

                          دیدگاه


                            پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                            نوشته اصلی توسط aivhl
                            با سلام،

                            شما مطمئنی که کسی با AVR انجام نداده؟!
                            یه خورده دقت بفرمائید، تاپیک مخصوص به خودش رو داره

                            اینجا رو یه نگاهی بنداز( پست شماره 450 از این تاپیک http://www.eca.ir/forum2/index.php?topic=30608.msg285462#new ).........
                            http://www.4shared.com/file/W4iR4rTv/N96_dist_v2.html
                            سلام
                            آخه اول که سرچ کردم نبود....بعد که ارسال کردم دیدم هست اما تا جایی که دیدم می خواستن با بسکام انجام بدن اما من سی می خواستم...بازم ممنون.

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

                            دیدگاه


                              پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                              نوشته اصلی توسط nazanin66
                              سلام
                              آخه اول که سرچ کردم نبود....بعد که ارسال کردم دیدم هست اما تا جایی که دیدم می خواستن با بسکام انجام بدن اما من سی می خواستم...بازم ممنون.

                              البته من برنامه رو دارم مشکلم با چیز دیگه هست....من اصلا از خود برنامه سر ر نمیارم وگرنه برنامه کامل رو دارم...چرا برنامه تیکه تیکه هست و خیلی چیزای دیگه....باز هم ممنون
                              با سلام،

                              من خودم در دو مرحله و به C توی همین سایت گذاشتم، منسجم هم هستند و حتی یکیش که توی فایل درایور اصلاحاتی دادم و توضیحاتی رو اضافه کردم. یه Paint ساده هم هست که از بقیه خلاصه تره، اگر خواستی برات بزارم ( البته تاچ با 7846 هم جزوشه ).....
                              مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

                              Sh_Nourbakhsh@Yahoo.com

                              http://s2.picofile.com/file/7170362468/_Wall_e_.jp

                              دیدگاه


                                پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی

                                میشه هر وقت فرصت کردین جواب منم بدین؟ :cry:
                                یا نکنه شما به تازه وارد ها پاسخ نمی دین؟ :question:

                                دیدگاه

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