اطلاعیه

Collapse
No announcement yet.

راه اندازی LCD N96 (رنگی با وضوح 240*320)

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

    پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

    سلام به دوستان گلم ، یه مشکل دارم با تابع lcd_write_pic پارامتر سوم این تابع که اشاره گره موقع استفاده باید اسم همون فایل هدر که توسط نرم افزار بدستش آوردیم بذاریم و هدر هم کنار فایل پروژمون باشه تا اینجا مشکلی نیست ولی هنگام کامپایل نرم افزار این ارور رو میده Error: D:\LCDNN\N.c(381): function argument #3 of type 'const unsigned int [9326]' is incompatible with required parameter of type 'flash unsigned int *' که میگه پارامتر ورودیت مناسب نیست دوستانی که از عکس جواب گرفتن و خود دوست عزیزمون که این مطلب رو گذاشته یه راهنمایی کنید ممنون

    دیدگاه


      پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

      نوشته اصلی توسط amintanharpd
      سلام به دوستان گلم ، یه مشکل دارم با تابع lcd_write_pic پارامتر سوم این تابع که اشاره گره موقع استفاده باید اسم همون فایل هدر که توسط نرم افزار بدستش آوردیم بذاریم و هدر هم کنار فایل پروژمون باشه تا اینجا مشکلی نیست ولی هنگام کامپایل نرم افزار این ارور رو میده Error: D:\LCDNN\N.c(381): function argument #3 of type 'const unsigned int [9326]' is incompatible with required parameter of type 'flash unsigned int *' که میگه پارامتر ورودیت مناسب نیست دوستانی که از عکس جواب گرفتن و خود دوست عزیزمون که این مطلب رو گذاشته یه راهنمایی کنید ممنون
      شما به هدر عکس مراجعه کن و نوع آرایه رو به flash unsigned int تغییر بده (البته من از این تابع استفاده نکردم اما پیغام خطا میگه این کارو بکن!) البته اگه حافظه فلشون جا داشته باشه
      اونچيزي که در دانشگاه ياد ميگيريد، "الفبايي" هست براي نوشتن يک "رمان" !!

      دیدگاه


        پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

        نوشته اصلی توسط danial82
        من این lcd رو راه اندازی کردم ولی تصویرش تو زاویه دیدهای مختلف تیره دیده میشه آیا کسی به چنین مشکلی برخورده
        چیکار کنم
        سلام
        من یه بار همچین چیزی رو دیدیم ، علتش فک کنم قطع و وصل شدن یکی از پایه ها بود
        ال سی دی بدون مشکل init می شه یا باید چند بار reset کنی؟
        به رجیسترای کنترل گاما و پاور کنترل که دس نزدی؟ چون اگه مقدار اینا رو انگولک کنی اینجوری می شه ! :bye
        پشت به کنکور ، رو به سربازی...

        دیدگاه


          پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

          سلام
          آقای ایمانی فر اگه امکانش هست یه برنامه که میدونید با همین مداری که گذاشتید کار میکنه رو لطفا تو سایت قرار بدین
          مدت هاست نیستم

          دیدگاه


            پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

            نوشته اصلی توسط Elec_Designer
            با سلام خدمت آقای ایمانی فر
            من حدود 6 روزه مشغول راه اندازی یک عدد TFT مثل همونی که توی PDF شما زحمتش رو کشیدید.
            هنوز نتونستم راش بندازنم.
            قطعاتی که استفاده کردم:
            Atmega32 معمولی
            (TFT (YM300T-003Aرو روی یک PCB لحیم کاری کردم که کار باهاش ساده بشه.درایورش ILI9326

            دقیقا مثل فایل PDF عمل کردم و چندبار مدار رو چک کردم همه چیز درست بود.
            حتی کتابخانه شمارو هم مطالعه کردم و تکنیک راه اندازیش دقیقا شبیه ILI9326 بود.
            در برنامه فقط از فرمان lcd_background_color( ) استفاده کردم ولی جواب نمیده
            چه پیشنهادی دارید؟

            با تشکر
            نمونه برنامه:
            #include <mega32.h>
            #include <delay.h>
            #define LCD_RST_DDR DDRB
            #define LCD_RST_PORT PORTB
            #define LCD_RST_PIN 0
            #define LCD_RS_DDR DDRB
            #define LCD_RS_PORT PORTB
            #define LCD_RS_PIN 1
            #define LCD_CS_DDR DDRB
            #define LCD_CS_PORT PORTB
            #define LCD_CS_PIN 2
            #define LCD_RD_DDR DDRB
            #define LCD_RD_PORT PORTB
            #define LCD_RD_PIN 3
            #define LCD_WR_DDR DDRB
            #define LCD_WR_PORT PORTB
            #define LCD_WR_PIN 4
            #define LCD_DATAPORT_MSB_DDR DDRD
            #define LCD_DATAPORT_MSB_PORT PORTD
            #define LCD_DATAPORT_MSB_PIN PIND
            #define LCD_DATAPORT_LSB_DDR DDRC
            #define LCD_DATAPORT_LSB_PORT PORTC
            #define LCD_DATAPORT_LSB_PIN PINC
            #define LCD_CONTROLPORT_DDR DDRB
            #define LCD_CONTROLPORT_PORT PORTB
            #define LCD_CONTROLPORT_PIN PINB
            #define PORTRAIT
            #include <tftlcd_functions.h>


            void main(void)
            {

            PORTA=0x00;
            DDRA=0xff;
            PORTB=0x00;
            DDRB=0xff;
            PORTC=0x00;
            DDRC=0xff;
            PORTD=0x00;
            DDRD=0xff;

            lcd_init ();
            while (1)
            {
            lcd_background_color(0xF800);
            // Place your code here

            };
            }

            سلام دوست عزیز
            من همین برنامه رو نوشتم ولی دو خط از پیکسل هارو روشن نمیکنه مشکلش چیههه؟؟؟ خواهشا راهنمایی کنین

            دیدگاه


              پاسخ : پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

              نوشته اصلی توسط Foad P
              من همینطوری الان اینو تست کردم

              وقتی x تاچ نمیشه عدد 1023 هست
              کوچکترین عددی که از x و سمت چپ گرفتم 795 بود
              و بزرگترین عردد x از راست هم 975 بود

              وقتی y تاچ نمیشه عدد 0 هست
              کوچکترین عددی که از y و بالا گرفتم 65 بود
              و بزرگترین عردد y از پایین هم 560 بود

              سلام ببخشید چطوری این اعدادو بدست میارین منظورم کد برنامه نویسیشه من بلد نیستم چطوری این طوری اعداد نشون بده وقتی تاچ میشه

              به نظرم y منطقی تر از x میاد :-??

              چطوریه این ؟ اشتباه انجام دادم ؟

              دیدگاه


                پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

                نوشته اصلی توسط زوار
                سلام
                برای کالیبره کردن فرض میکنیم که شما یه پراسیجر داری که داره x و y رو بهت میده فقط درست و دقیق نیست و وقتی هم که جایی رو فشار نمی دی عدد نشون میده(منم همین طوری بودم)
                فرض می کنیم که وقتی جایی رو فشار نمیدی اعدادی حدود 20 دریافت می کنی
                برای کالیبره کردن اول بیا اولین ستون پیکسلهای ال سی دی رو فشار بده (سمت چپ)فرض می کنیم عدد 50 در یافت کنی پس X مینیمم میشه 50 و حالا اخرین ردیف پیکسل رو فشار بده (سمت راست) و عدد 550 دریافت میکنی و میشه X ماکسیمم
                همین کار رو برای y انجام بده با بالا و پایین و Y مینیمم و Y ماکسیمم رو دریافت کن فرض کنیم که y مینیمم 40 و y ماکسسمم 440 باشه
                و دوباره فرض میکنم که می خوای رزولیشن 320در240 روی تاچ داشته باشی:
                حالا که این اعداد خام رو از پراسیجر دریافت xو y بدست اوردی میریم سراغ کالیبره کردن تاچ:

                اول یه شرط میزاریم که اگه x<50 یا y<40 پس x=y=0 و خروج از پراسیجر کالیبراسیون یعنی جایی فشرده نشده در غیر این صورت
                x=x-50 و y=y-40
                حالا x بین 0 و 500 هست و Y بین 0 تا 400
                بعد
                x=x*(320/500)
                y=y*(240/400)
                a
                حالا این x و y بین 320 و 240 هست
                همین به همین راحتی
                sub calibration
                x=get_X()
                y=get_Y()
                if x<50 or y<40 then
                x=0
                y=0
                exit
                else
                x=x-50
                y=y-40
                end if
                x=x*(320/500)
                y=y*(240/400)
                end sub
                البته این پراسیجر برای یک بار کالیبره کردنه و برای اینکه توی برنامه اصلی بتونی کالیبره کنی باید به جای اعداد ثابت متغییر تعریف کنی
                من هم همین مشکل را داشتم کاربری به نامabbasmh این راهنمایی را برام فرستاد و مشکلم حل شد


                ببخشید من چطوری میتونم این اعداد رو واسه x y بدست بیارم لطفا کمکم کنین

                دیدگاه


                  پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

                  نوشته اصلی توسط mehdy_m20_b


                  ببخشید من چطوری میتونم این اعداد رو واسه x y بدست بیارم لطفا کمکم کنین
                  با سلام،

                  شما روتین های مربوط به تاچ و کالیبراسیون این تاپیک رو بررسی کن ( تاچش با ADCآ‌میکرو هستش ) :
                  http://www.eca.ir/forum2/index.php?topic=51530.0

                  البته هیچ فرقی نمیکنه که مقادیر آنالوگ تاچ رو با آی سی درایور مخصوصش میخونی و یا اینکه با ADC میکرو!
                  روتین کالیبراسیون تاچ عملکردش یکیه و چونکه این روتین ها کاملا ماژولار نوشته شده اند، امکان استفاده برای صفحه نمایش ها و LCD ها با ابعاد متفاوت وجود داره .....
                  مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

                  Sh_Nourbakhsh@Yahoo.com

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

                  دیدگاه


                    پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

                    سلام
                    دوستان کدویژن 135 تا خطا از کتابخونه tftlcd میگیره.چند ماهه میخوام راه بندازم ولی کدویژن فقط ایراد میگیره.کسی یه فایل هگز داره که من حداقل ال سی دی رو راه بندازم.ارزو به دل موندم :cry2:

                    دیدگاه


                      پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

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

                      شما روتین های مربوط به تاچ و کالیبراسیون این تاپیک رو بررسی کن ( تاچش با ADCآ‌میکرو هستش ) :
                      http://www.eca.ir/forum2/index.php?topic=51530.0

                      البته هیچ فرقی نمیکنه که مقادیر آنالوگ تاچ رو با آی سی درایور مخصوصش میخونی و یا اینکه با ADC میکرو!
                      روتین کالیبراسیون تاچ عملکردش یکیه و چونکه این روتین ها کاملا ماژولار نوشته شده اند، امکان استفاده برای صفحه نمایش ها و LCD ها با ابعاد متفاوت وجود داره .....
                      لطفا کمک کنین من راه انداختم تاچ اسکرینو فقط کالیبرشو بلد نیستم مثلا وقتی یه نقطه رو تاچ میکنم یه جای دیگرو میزنه
                      اون تاپیکو خوندم سر در نیاوردم

                      دیدگاه


                        پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

                        نوشته اصلی توسط saeiddiod
                        سلام
                        دوستان کدویژن 135 تا خطا از کتابخونه tftlcd میگیره.چند ماهه میخوام راه بندازم ولی کدویژن فقط ایراد میگیره.کسی یه فایل هگز داره که من حداقل ال سی دی رو راه بندازم.ارزو به دل موندم :cry2:
                        از آخرین ورژن کدویژن استفاده کنید، ورژن های قدیمی حتی به طول خطوط برنامه هم حساسند و محدودیت های اینچنینی دارند!!
                        و اگه جواب نگرفتین شما فایلتون رو بذارید تا من کامپایل کنم ببینم چه اروری میده
                        اونچيزي که در دانشگاه ياد ميگيريد، "الفبايي" هست براي نوشتن يک "رمان" !!

                        دیدگاه


                          پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

                          نوشته اصلی توسط mehdy_m20_b
                          لطفا کمک کنین من راه انداختم تاچ اسکرینو فقط کالیبرشو بلد نیستم مثلا وقتی یه نقطه رو تاچ میکنم یه جای دیگرو میزنه
                          اون تاپیکو خوندم سر در نیاوردم
                          [color=blue]کالیبره کردنش خیلی راحتتر از راه انداختنشه، پس میشه گفت شما 70% راه رو رفتید
                          ببینید شما باید چهار گوشه LCD رو لمس کنید و ببینید ADC میکرو چه مقداری میخونه(میتونید با یه دستور مقدار تاچ شده رو چاپ کنید روی همون lcd) و بعدش بیایید و این مقادیر رو به بازه 0-240 و 0-320 تبدیل کنید

                          مثلا فرض کن شما نقاط گوشه ای بالا سمت چپ و راست رو به ترتیب 100 و 400 میخونی، خوب حالا باید این بازه یعنی (100,400) ببری به بازه (0,240) برای این کار اول بازت رو منهای 100 می کنی که میشه (0,300). حالا اگر این رو در 240/300 ضرب کنی، بازه میشه (0,240) یهنی همونی که میخواستیم
                          به زبون برنامه نویسی هم بخواییم بگیم میشه:


                          x= x-100;
                          x= x*(240/300);

                          با این دو خط مقدار x خونده شده به بازه (0,240) منتقل میشه، برای y هم همین کارو میکنی منتهی این جا بازت میشه (0,320)
                          اونچيزي که در دانشگاه ياد ميگيريد، "الفبايي" هست براي نوشتن يک "رمان" !!

                          دیدگاه


                            پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

                            نوشته اصلی توسط ☺بابابرقی☺
                            [color=blue]کالیبره کردنش خیلی راحتتر از راه انداختنشه، پس میشه گفت شما 70% راه رو رفتید
                            ببینید شما باید چهار گوشه LCD رو لمس کنید و ببینید ADC میکرو چه مقداری میخونه(میتونید با یه دستور مقدار تاچ شده رو چاپ کنید روی همون lcd) و بعدش بیایید و این مقادیر رو به بازه 0-240 و 0-320 تبدیل کنید

                            مثلا فرض کن شما نقاط گوشه ای بالا سمت چپ و راست رو به ترتیب 100 و 400 میخونی، خوب حالا باید این بازه یعنی (100,400) ببری به بازه (0,240) برای این کار اول بازت رو منهای 100 می کنی که میشه (0,300). حالا اگر این رو در 240/300 ضرب کنی، بازه میشه (0,240) یهنی همونی که میخواستیم
                            به زبون برنامه نویسی هم بخواییم بگیم میشه:


                            x= x-100;
                            x= x*(240/300);

                            با این دو خط مقدار x خونده شده به بازه (0,240) منتقل میشه، برای y هم همین کارو میکنی منتهی این جا بازت میشه (0,320)
                            مهندس ببخشید فقط موندم با کدوم دستور این عدد رو نشون بدم نشون دادنشو بلد نیستم میشه با کد کمکم کنین که چطوری این اعدادو بخونم؟؟؟

                            دیدگاه


                              پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

                              نوشته اصلی توسط mehdy_m20_b
                              مهندس ببخشید فقط موندم با کدوم دستور این عدد رو نشون بدم نشون دادنشو بلد نیستم میشه با کد کمکم کنین که چطوری این اعدادو بخونم؟؟؟
                              اگه از کتابخونه tftlcd_functions.h استفاده می کنید کافیه با دستور ()itoa عدد خونده شده از ADC رو به رشته تبدیل کنید و بعد به وسیله دستور ()lcd_puts اونو چاپ کنید

                              این کدیه که من اون موقع ها باهاش جواب گرفتم:

                              کد:
                              #include <mega16.h>
                              #include <delay.h>
                              #include <stdlib.h>
                              
                              
                              #define LANDSCAPE
                              #define LCD_RST_DDR   DDRB
                              #define LCD_RST_PORT  PORTB
                              #define LCD_RST_PIN    0
                              #define LCD_RS_DDR   DDRB
                              #define LCD_RS_PORT  PORTB
                              #define LCD_RS_PIN    1
                              #define LCD_CS_DDR   DDRB
                              #define LCD_CS_PORT  PORTB
                              #define LCD_CS_PIN    2
                              #define LCD_RD_DDR   DDRB
                              #define LCD_RD_PORT  PORTB
                              #define LCD_RD_PIN    3
                              #define LCD_WR_DDR   DDRB
                              #define LCD_WR_PORT  PORTB
                              #define LCD_WR_PIN    4
                              #define LCD_DATAPORT_MSB_DDR     DDRC
                              #define LCD_DATAPORT_MSB_PORT    PORTC
                              #define LCD_DATAPORT_MSB_PIN      PINC
                              #define LCD_DATAPORT_LSB_DDR     DDRD
                              #define LCD_DATAPORT_LSB_PORT    PORTD
                              #define LCD_DATAPORT_LSB_PIN      PIND   
                                           
                              #define LCD_CONTROLPORT_DDR     DDRB
                              #define LCD_CONTROLPORT_PORT    PORTB
                              #define LCD_CONTROLPORT_PIN      PINB      
                              
                              #include <tftlcd_functions.h>
                              
                              #define ADC_VREF_TYPE 0xC0
                              // Read the AD conversion result
                              unsigned int read_adc(unsigned char adc_input)
                              {
                              ADMUX=adc_input | ADC_VREF_TYPE;
                              // Delay needed for the stabilization of the ADC input voltage
                              delay_us(10);
                              // Start the AD conversion
                              ADCSRA|=0x40;
                              // Wait for the AD conversion to complete
                              while ((ADCSRA & 0x10)==0);
                              ADCSRA|=0x10;
                              return ADCW;
                              }
                              
                              
                              //******************************************************************************
                              //******************************************************************************
                               
                              void main()
                              {
                              int x,y,x1,y1,dx,dy;
                              float xr,yr;
                              
                              lcd_draw_rectangle(2,2,318,238,0,BLACK);
                              lcd_draw_rectangle(3,3,317,237,0,BLACK);
                              lcd_draw_rectangle(260,3,317,70,1,BLUE); // Touch Key.
                              
                              while(PINA.7==0)
                              {
                              do
                              {
                              //Read X1
                              DDRA=0x03; 
                              PORTA=0x02; 
                              ADMUX=ADC_VREF_TYPE;
                              ADCSRA=0x86;
                              x=read_adc(2); 
                              
                              //Read Y1
                              DDRA=0x0C; 
                              PORTA=0x08; 
                              ADMUX=ADC_VREF_TYPE;
                              ADCSRA=0x86;
                              y=read_adc(0);
                              
                              //Read X2
                              DDRA=0x03; 
                              PORTA=0x02; 
                              ADMUX=ADC_VREF_TYPE;
                              ADCSRA=0x86;
                              x1=read_adc(2); 
                              
                              //Read Y2
                              DDRA=0x0C; 
                              PORTA=0x08; 
                              ADMUX=ADC_VREF_TYPE;
                              ADCSRA=0x86;
                              y1=read_adc(0);
                              
                              dx=x-x1;
                              dy=y-y1;
                              }
                              while(dx!=0 || dy!=0 );
                              //Calibrating The Touch PAD
                              [glow=red,2,300]x-=130;
                              y-=75;
                              
                              if(x<0) x=0; 
                              if(y<0) y=0;
                              
                              xr= x*6/17;
                              yr= y*32/79; 
                              yr=320-yr;
                              [/glow]//lcd_gotoxy(x,y);
                              //lcd_write_pixel( xr,yr,BLUE);
                              lcd_write_pixel( yr+1,xr,RED);
                              lcd_write_pixel( yr-1,xr,RED);
                              lcd_write_pixel( yr,xr+1,RED);
                              lcd_write_pixel( yr,xr-1,RED);
                              
                              
                              if (xr<65 && yr>255 && xr>0 && yr>0) { lcd_clear_screen(); lcd_draw_rectangle(3,3,317,237,0,BLUE); lcd_draw_rectangle(2,2,318,238,0,BLUE); lcd_draw_rectangle(260,3,317,70,1,BLACK);}
                              
                              
                              }
                              
                              
                              delay_ms(5000);
                              }
                              منتها طبق توضیحات پست قبلیم شما احتمالا نیازه دوباره کالیبرش کنید، برای همین ممکنه نقاط لمس شده یکم اینور-اونور نمایش داده بشن!

                              از این پست هم می تونید برای نمایش مقادیر لمس شده استفاده کنید:
                              http://www.eca.ir/forum2/index.php?topic=43559.msg284384#msg284384
                              اونچيزي که در دانشگاه ياد ميگيريد، "الفبايي" هست براي نوشتن يک "رمان" !!

                              دیدگاه


                                پاسخ : راه اندازی LCD N96 (رنگی با وضوح 244*320)

                                نوشته اصلی توسط ☺بابابرقی☺
                                اگه از کتابخونه tftlcd_functions.h استفاده می کنید کافیه با دستور ()itoa عدد خونده شده از ADC رو به رشته تبدیل کنید و بعد به وسیله دستور ()lcd_puts اونو چاپ کنید

                                این کدیه که من اون موقع ها باهاش جواب گرفتم:

                                کد:
                                #include <mega16.h>
                                #include <delay.h>
                                #include <stdlib.h>
                                
                                
                                #define LANDSCAPE
                                #define LCD_RST_DDR   DDRB
                                #define LCD_RST_PORT  PORTB
                                #define LCD_RST_PIN    0
                                #define LCD_RS_DDR   DDRB
                                #define LCD_RS_PORT  PORTB
                                #define LCD_RS_PIN    1
                                #define LCD_CS_DDR   DDRB
                                #define LCD_CS_PORT  PORTB
                                #define LCD_CS_PIN    2
                                #define LCD_RD_DDR   DDRB
                                #define LCD_RD_PORT  PORTB
                                #define LCD_RD_PIN    3
                                #define LCD_WR_DDR   DDRB
                                #define LCD_WR_PORT  PORTB
                                #define LCD_WR_PIN    4
                                #define LCD_DATAPORT_MSB_DDR     DDRC
                                #define LCD_DATAPORT_MSB_PORT    PORTC
                                #define LCD_DATAPORT_MSB_PIN      PINC
                                #define LCD_DATAPORT_LSB_DDR     DDRD
                                #define LCD_DATAPORT_LSB_PORT    PORTD
                                #define LCD_DATAPORT_LSB_PIN      PIND   
                                             
                                #define LCD_CONTROLPORT_DDR     DDRB
                                #define LCD_CONTROLPORT_PORT    PORTB
                                #define LCD_CONTROLPORT_PIN      PINB      
                                
                                #include <tftlcd_functions.h>
                                
                                #define ADC_VREF_TYPE 0xC0
                                // Read the AD conversion result
                                unsigned int read_adc(unsigned char adc_input)
                                {
                                ADMUX=adc_input | ADC_VREF_TYPE;
                                // Delay needed for the stabilization of the ADC input voltage
                                delay_us(10);
                                // Start the AD conversion
                                ADCSRA|=0x40;
                                // Wait for the AD conversion to complete
                                while ((ADCSRA & 0x10)==0);
                                ADCSRA|=0x10;
                                return ADCW;
                                }
                                
                                
                                //******************************************************************************
                                //******************************************************************************
                                 
                                void main()
                                {
                                int x,y,x1,y1,dx,dy;
                                float xr,yr;
                                
                                lcd_draw_rectangle(2,2,318,238,0,BLACK);
                                lcd_draw_rectangle(3,3,317,237,0,BLACK);
                                lcd_draw_rectangle(260,3,317,70,1,BLUE); // Touch Key.
                                
                                while(PINA.7==0)
                                {
                                do
                                {
                                //Read X1
                                DDRA=0x03; 
                                PORTA=0x02; 
                                ADMUX=ADC_VREF_TYPE;
                                ADCSRA=0x86;
                                x=read_adc(2); 
                                
                                //Read Y1
                                DDRA=0x0C; 
                                PORTA=0x08; 
                                ADMUX=ADC_VREF_TYPE;
                                ADCSRA=0x86;
                                y=read_adc(0);
                                
                                //Read X2
                                DDRA=0x03; 
                                PORTA=0x02; 
                                ADMUX=ADC_VREF_TYPE;
                                ADCSRA=0x86;
                                x1=read_adc(2); 
                                
                                //Read Y2
                                DDRA=0x0C; 
                                PORTA=0x08; 
                                ADMUX=ADC_VREF_TYPE;
                                ADCSRA=0x86;
                                y1=read_adc(0);
                                
                                dx=x-x1;
                                dy=y-y1;
                                }
                                while(dx!=0 || dy!=0 );
                                //Calibrating The Touch PAD
                                [glow=red,2,300]x-=130;
                                y-=75;
                                
                                if(x<0) x=0; 
                                if(y<0) y=0;
                                
                                xr= x*6/17;
                                yr= y*32/79; 
                                yr=320-yr;
                                [/glow]//lcd_gotoxy(x,y);
                                //lcd_write_pixel( xr,yr,BLUE);
                                lcd_write_pixel( yr+1,xr,RED);
                                lcd_write_pixel( yr-1,xr,RED);
                                lcd_write_pixel( yr,xr+1,RED);
                                lcd_write_pixel( yr,xr-1,RED);
                                
                                
                                if (xr<65 && yr>255 && xr>0 && yr>0) { lcd_clear_screen(); lcd_draw_rectangle(3,3,317,237,0,BLUE); lcd_draw_rectangle(2,2,318,238,0,BLUE); lcd_draw_rectangle(260,3,317,70,1,BLACK);}
                                
                                
                                }
                                
                                
                                delay_ms(5000);
                                }
                                منتها طبق توضیحات پست قبلیم شما احتمالا نیازه دوباره کالیبرش کنید، برای همین ممکنه نقاط لمس شده یکم اینور-اونور نمایش داده بشن!

                                از این پست هم می تونید برای نمایش مقادیر لمس شده استفاده کنید:
                                http://www.eca.ir/forum2/index.php?topic=43559.msg284384#msg284384
                                [size=14pt]مهندس خیلی تشکر از راهنماییتون فقط میشه این دوخط رو توضیح بدی ببخشید خیلی زحمت میدم
                                [glow=red,2,300]
                                [/glow]/
                                اصلا این glow چیه که شما به کار میبرین

                                یکی هم اینکه نمیشه ما فقط یدونه x,y بدست بیاریم ؟؟؟؟چرا دوبار میخونیم علتش چیه؟؟؟ هم x , x1???
                                [/size]

                                دیدگاه

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