اطلاعیه

Collapse
No announcement yet.

کار عملی با Xmega از 0 تا ...

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

    #61
    پاسخ : کار عملی با Xmega از 0 تا ...

    من با کد ویژن dac میکرو رو کار انداختم...که همزمان هم adc کار میکرد و هم dac ....

    الان دارم رو spi کار میکنم....

    سریالش رو هم راه انداختم...

    با دستورات کنترل پورت ها به صورت بیتی هم کار کردم...


    راستش قبلا با بیسیک بودم الان هم به xmega شیفت کردم و هم به سی واسه همین راه انداختن هم بخش کوچک و ساده برام جالب هست ... دارم همه تجربیاتم رو مکتوب میکنم.... فایلش رو آماده کردم حتما اینجا خبر میکنم....
    من رو با نام " بهرام الکترونیک " میتونید تو نت پیدا کنید. !!!!

    دیدگاه


      #62
      پاسخ : کار عملی با Xmega از 0 تا ...

      نوشته اصلی توسط طراح
      برای اتصال Touch screen های 4 سیمه به XMEGA مشکلی وجود دارد، به این ترتیب که حداکثر ولتاژ مرجع ADC دارای مقدار AVCC-0.6 است و بنابراین روش مورد استفاده در AVR مبنی بر صفر و یک کردن دو خروجی و قرائت ورودی ADC، در این خانواده با مشکل مواجه می شود. با انجام جستجویی مشاهده کردم که در سایت AVRFreaks هم همین مشکل از جانب دو نفر مطرح شده، اما راه حل و پاسخی به جز استفاده از IC های کنترل کننده touch داده نشده است. اما در جریان یکسری برنامه نویسی و آزمایش های مفصل، یک روش ابتکاری را بکار بردم که در آزمایش های اولیه به خوبی جواب داد (و هنوز در حال تکمیل است) و به نظرم رسید برای معدود افرادی که ممکن است فعالیت های جدی با این خانواده انجام می دهند، مفید واقع شود.
      در این روش برای ایجاد ولتاژ خروجی پورت، بجای یک کردن آن و استفاده از خروجی High، از خروجی آنالوگ دو کانال DAC استفاده کردم. با قرار دادن ولتاژمرجع ADC در وضعیت VCC/1.6 و ولتاژ مرجع DAC در وضعیت VCC، و مقدار دهی مناسب به DAC، ولتاژ لازم برای برای تغذیه Touch screen تامین شد و با نوشتن برنامه ای که مقدار قرائت شده از ADC را روی صفحه نمایش نشان می داد، عملا تغییر مکان نقطه تماس با صفحه در دو محور مشاهده گردید.
      این درحالی است که در صورت استفاده از روش معمول صفر و یک کردن پورت و به دلیل کمتر بودن حداکثر ولتاژ مرجع ADC از VCC، در عمل نقاط کناری صفحه Touch که منجر به اشباع ADC می شوند قابل آشکارسازی نیستند. اما با روش بکار گرفته شده و کاهش ولتاژ تولید شده توسط پورت، مشکل اشباع ADC در نقاط کناری حل می شود. تنها مسئله ای که نیاز به پیگیری بیشتری دارد، مسئله امپدانس خروجی DAC و خطی بودن مقادیر قرائت شده است که در صورت حصول اطلاعات بیشتر در همین تاپیک به اطلاع دوستان خواهد رسید.
      برای حل مشکل بالا یک روش دیگر هم وجود دارد که توسط اتمل در بردهای xplained بکار گرفته شده است. در این روش با خطوط touch مقاومت های مناسبی سری می شود و بنابراین حداکثر ولتاژ ورودی به ADC در محدوده مجاز خواهد بود. این روش هم در عمل مورد آزمایش قرار گرفت و به خوبی جواب داد.
      اوژن: به معنای افکننده و شکست دهنده است
      دانایی، توانایی است-Knowledge is POWER
      برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
      وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
      قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
      اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
      ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

      دیدگاه


        #63
        پاسخ : کار عملی با Xmega از 0 تا ...

        سلام

        به نظر استفاده از روش زیر نیز در این مورد کارساز بوده و کد نویسی ارائه شده در این مثال نیز روتین بوده و جنبه آموزشی دارد.

        http://s1.picofile.com/file/7202438488/en_mikroe_article_c_avr_01_09.pdf.html
        دکتر شریعتی:

        زنده بودن را به بیداری بگذرانیم که سالها به اجبار خواهیم خفت.

        دیدگاه


          #64
          پاسخ : کار عملی با Xmega از 0 تا ...

          با سلام. بنده برای راه اندازی xmega16a4 یک برد طراحی کردم که از روی آن دو عدد چاپ کردم و دو تا هم میکرو خریداری کرده و روی آن ها سوار کردم.
          متاسفانه بعد از لحیم کاری مدار و اتصال قطعات در برد اول فقط میکرو یک بار شناسایی میشد و اگر مثلا فیوز بیتی رو مقدار دهی کرده و پروگرام میکردم از کار می افتاد! در برد دوم هم همین مورد را داشتم حتی بدتر به طوری که اصلا میکرو شناسایی نمیشد!!
          مدار رو در فایل زیر میزارم. ممنون میشم راهنمایی کنید . اگر قبلا با این مشکل مواجه شده بودید لطفا راهنمایی کنید. برای سلف سر راه adc هم فریت بید اهم پایین گزاشتم.
          http://wdl.persiangig.com/pages/download/?dl=http://altium.persiangig.com/Xmega16a4Board.rar
          بگذارعشق خاصیت تو باشد نه رابطه خاص تو باکسی
          موفقیت پیش رفتن است نه به نقطه ی پایان رسیدن
          نلسون ماندلا

          دیدگاه


            #65
            پاسخ : کار عملی با Xmega از 0 تا ...

            چک کردم پی سی بی تو
            مشکلی ندیدم
            هرچی نزدیک رست داری برش دار
            فیوز بیت های xmega خیلی خطرناکترند
            حتما بدون چیرو داری تغییر میدی
            پروگرامرتو تست کن سالم باشه
            هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
            بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
            میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

            تعدادی ماژول GPS GP5MX1513F1 با بالاتریت حساسیت -170db به قیمت خرید بفروش میرسد

            دیدگاه


              #66
              پاسخ : کار عملی با Xmega از 0 تا ...

              نوشته اصلی توسط n340
              چک کردم پی سی بی تو
              مشکلی ندیدم
              هرچی نزدیک رست داری برش دار
              فیوز بیت های xmega خیلی خطرناکترند
              حتما بدون چیرو داری تغییر میدی
              پروگرامرتو تست کن سالم باشه
              دستت درد نکنه. باور کن یه بار اصلا میکرو رو در آوردم و با وایررپ بهش تغذیه دادم و به پرو گرمر وصل کردم! اما بازم همون مشکل وجود داشت. دارم کلافه میشم. جالب اینه که هرکدومشون رو از یک جای مختلف خریدم.
              بگذارعشق خاصیت تو باشد نه رابطه خاص تو باکسی
              موفقیت پیش رفتن است نه به نقطه ی پایان رسیدن
              نلسون ماندلا

              دیدگاه


                #67
                پاسخ : کار عملی با Xmega از 0 تا ...

                فرصت نشد که شماتیک مدار شما را بررسی کنم. اما لازم است بین پین Reset و تغذیه 3.3 ولت یک مقاومت 10 کیلواهم قرار داشته باشد که در صورتی که این مقاومت را قرار نداده باشید، مشکلاتی در پروگرام کردن بوجود خواهد آمد.
                اوژن: به معنای افکننده و شکست دهنده است
                دانایی، توانایی است-Knowledge is POWER
                برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                دیدگاه


                  #68
                  پاسخ : کار عملی با Xmega از 0 تا ...

                  نوشته اصلی توسط طراح
                  فرصت نشد که شماتیک مدار شما را بررسی کنم. اما لازم است بین پین Reset و تغذیه 3.3 ولت یک مقاومت 10 کیلواهم قرار داشته باشد که در صورتی که این مقاومت را قرار نداده باشید، مشکلاتی در پروگرام کردن بوجود خواهد آمد.
                  ممنون. این مقاومت هم قرار داده بودم.
                  بگذارعشق خاصیت تو باشد نه رابطه خاص تو باکسی
                  موفقیت پیش رفتن است نه به نقطه ی پایان رسیدن
                  نلسون ماندلا

                  دیدگاه


                    #69
                    پاسخ : کار عملی با Xmega از 0 تا ...

                    سلام

                    اقا به این عکسی که گذاشتم یه نگاه بکن ،این یه برد طراحی شده برای سری a3 هستش.قسمتهای سوکت پروگرمر،قسمت رست مدار،ونحوه اتصال تغذیه هارو بررسی بکن.اگه مشکلی نبود.پس 3 علت می تونه داشته باشه:

                    http://s2.picofile.com/file/7216784836/a4.png

                    1-.مدارت اتصالی،لحیم سردی یا چنین چیزی داره.
                    2-پروگرمرتو یه تست بکن.
                    3-از سالم بودن میکروهات مطمئن شو.
                    دکتر شریعتی:

                    زنده بودن را به بیداری بگذرانیم که سالها به اجبار خواهیم خفت.

                    دیدگاه


                      #70
                      پاسخ : کار عملی با Xmega از 0 تا ...

                      نوشته اصلی توسط NAO_ROBOT
                      سلام

                      اقا به این عکسی که گذاشتم یه نگاه بکن ،این یه برد طراحی شده برای سری a3 هستش.قسمتهای سوکت پروگرمر،قسمت رست مدار،ونحوه اتصال تغذیه هارو بررسی بکن.اگه مشکلی نبود.پس 3 علت می تونه داشته باشه:

                      http://s2.picofile.com/file/7216784836/a4.png

                      1-.مدارت اتصالی،لحیم سردی یا چنین چیزی داره.
                      2-پروگرمرتو یه تست بکن.
                      3-از سالم بودن میکروهات مطمئن شو.
                      یه برد دیگه a3 دارم باهاش پروگ رو تست کردم اوکی بود. از سلامت میکروهاش کامل مطمئن نیستم، فقط همون تستی رو گه گفتم انجام دادم و دیدم قضیه فرقی نداره!
                      میکروهای a4 حالت خاصی نداره که باید رعایت بشه؟
                      بگذارعشق خاصیت تو باشد نه رابطه خاص تو باکسی
                      موفقیت پیش رفتن است نه به نقطه ی پایان رسیدن
                      نلسون ماندلا

                      دیدگاه


                        #71
                        پاسخ : کار عملی با Xmega از 0 تا ...

                        سلام

                        میکروهای a4 حالت خاصی نداره که باید رعایت بشه؟
                        فکر نکنم حالت خاصی داشته باشند.شماتیک زیر رو هم ببینید.مربوط میشه به یه برد طراحی شده برای سری a4.

                        http://www.bostonandroid.com/images/xmega-eval04c-schematic.png
                        دکتر شریعتی:

                        زنده بودن را به بیداری بگذرانیم که سالها به اجبار خواهیم خفت.

                        دیدگاه


                          #72
                          پاسخ : کار عملی با Xmega از 0 تا ...

                          با سلام
                          یک دستگاهی با ATXMEGA64A3 طراحی کردم وقتی کد LCD گرافیکی اجرا میشه پین هایی از میکرو که به DB4-7 وصل هستند میسوزه و دائم خروجی 3 ولت دارند و نرم افزاری تغییر نمیکنند . همین کد با همین LCD را که به برد آموزشی استاد کی نژاد وصل میکنم جواب میده و مشکلی پیش نمیاد تمامی پین های میکرو از نظر اتصالی داشتن با یکدیگر چک شده ومشکلی ندارند حتی قبل از سوختن میکروی سوم پین W/R را دائم به زمین وصل کردم تا حالت خواندن LCD فعال نگردد و ولتاژ 5ولت LCD مشکلی ایجاد نکنه ولی بازهم پین های میکرو که به DB4-7 وصل هستند میسوزه پورت DATA به پورت B میکرو و بقیه پین های LCD به پورت های A و C میکرو وصل شده
                          [img][/img]

                          دیدگاه


                            #73
                            پاسخ : کار عملی با Xmega از 0 تا ...

                            DB4-7 پین های JTAG هستند که برای استفاده از آن باید بیت شماره 0 در Fusebyte4 را 1 کنید.
                            اوژن: به معنای افکننده و شکست دهنده است
                            دانایی، توانایی است-Knowledge is POWER
                            برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                            وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                            قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                            اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                            ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                            دیدگاه


                              #74
                              پاسخ : کار عملی با Xmega از 0 تا ...

                              با سپاس از استاد کی نژاد
                              مشکل حل شد ولی حالا یک مشکل جدید : ولی وقتی LCD روشن میشه سرعت LCD خیلی پایینه بطوریکه هر بایت 2 ثانیه زمان نیاز داره تا روشن بشه جمعا 10 دقیقه طول میکشه تا تصویر روی LCD ظاهر بشه . برد را با تینر شستم مشکل حل نشد . ضمنا یک رله در مدار دارم که با دستور __delay_cycles(2000000) به 2 مگاهرتز داخلی فعال میشه و رله در زمان تعیین شده فعال میشه ولی LCD 10دقیقه طول میکشه

                              دیدگاه


                                #75
                                پاسخ : کار عملی با Xmega از 0 تا ...

                                سلام استاد کی نژاد
                                مشکل حل شد اشکال از برنامه نویسی بود دستور __delay_cycles(2000000); و PORTD_OUTSET=PIN0_bm;را اشتباهی در LCD, LOOP گذاشته بودم
                                #include <ioavr.h>
                                #include <intrinsics.h>

                                #define lcd_data PORTB_OUT
                                #define E_Low() PORTA_OUTCLR=PIN5_bm
                                #define E_High() PORTA_OUTSET=PIN5_bm
                                #define RS_Low() PORTA_OUTCLR=PIN3_bm
                                #define RS_High() PORTA_OUTSET=PIN3_bm
                                #define RST_Low() PORTC_OUTCLR=PIN6_bm
                                #define RST_High() PORTC_OUTSET=PIN6_bm
                                #define CS1_Low() PORTC_OUTCLR=PIN4_bm
                                #define CS1_High() PORTC_OUTSET=PIN4_bm
                                #define CS2_Low() PORTC_OUTCLR=PIN5_bm
                                #define CS2_High() PORTC_OUTSET=PIN5_bm

                                void glcd_init(void);
                                void lcd_dataout(unsigned char data);
                                void lcd_command(unsigned char command);
                                void set_page_left(unsigned char page);
                                void set_page_right(unsigned char page);
                                void set_y_left(unsigned char y);
                                void set_y_right(unsigned char y);

                                unsigned char __flash xmega[512]={
                                0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xF0,0xF0,0xF0, 0xE0,0x80,0x00,0x00,0x00,0x00,
                                0x00,0x00,0x00,0x80,0xE0,0xF0,0xF0,0xF0,0x30,0x00, 0x00,0x00,0x00,0xF0,0xF0,0xF0,
                                0xF0,0xF0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xE0,0xF0,0xF0,
                                0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0, 0xF0,0xF0,0x70,0x70,0x70,0x70,
                                0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70, 0x00,0x00,0x00,0x00,0x00,0x00,
                                0x80,0xC0,0xE0,0xE0,0xE0,0xF0,0x70,0x70,0x70,0x70, 0x70,0xF0,0xE0,0xE0,0xE0,0xC0,
                                0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xC0,0xF0,0xF0,
                                0xF0,0xF0,0xF0,0xF0,0xC0,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,
                                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03, 0x0F,0x1F,0x3F,0xFE,0xF8,0xF0,
                                0xF8,0xFE,0x3F,0x1F,0x0F,0x03,0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0xFF,0xFF,0xFF,
                                0xFF,0x7F,0xFF,0xFF,0xF8,0xC0,0x00,0x00,0x00,0x00, 0xC0,0xF8,0xFF,0xFF,0x7F,0xFF,
                                0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF, 0xFF,0xFF,0xE0,0xE0,0xE0,0xE0,
                                0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0x00,0x00, 0x00,0x00,0x00,0xF0,0xFE,0xFF,
                                0xFF,0x0F,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x80, 0x80,0x80,0x80,0x81,0x83,0x8F,
                                0x8F,0x8F,0x8E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xC0,0xF0,0xFE,0xFF,0x7F,0x1F,
                                0x03,0x03,0x1F,0x7F,0xFF,0xFE,0xF0,0xC0,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,
                                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0xF0, 0xF8,0xFE,0x3F,0x1F,0x0F,0x03,
                                0x0F,0x1F,0x3F,0xFE,0xF8,0xF0,0xE0,0x80,0x00,0x00, 0x00,0x00,0x00,0xFF,0xFF,0xFF,
                                0xFF,0x00,0x03,0x1F,0xFF,0xFF,0xFE,0xF0,0xF0,0xFE, 0xFF,0xFF,0x1F,0x03,0x00,0xFF,
                                0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF, 0xFF,0xFF,0x00,0x00,0x00,0x00,
                                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x07,0x3F,0x7F,
                                0xFF,0xF8,0xE0,0xC0,0x80,0x80,0x00,0x00,0x00,0x03, 0x03,0x83,0x83,0xC3,0xF3,0xFF,
                                0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xC0,0xF0,0xFE, 0xFF,0x7F,0x3F,0x3B,0x38,0x38,
                                0x38,0x38,0x38,0x38,0x3B,0x3F,0x7F,0xFF,0xFE,0xF0, 0xC0,0x00,0x00,0x00,0x00,0x00,
                                0x00,0x00,0x00,0x00,0x00,0x06,0x07,0x07,0x07,0x03, 0x01,0x00,0x00,0x00,0x00,0x00,
                                0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x07,0x07,0x06, 0x00,0x00,0x00,0x07,0x07,0x07,
                                0x07,0x00,0x00,0x00,0x00,0x07,0x07,0x07,0x07,0x07, 0x07,0x00,0x00,0x00,0x00,0x07,
                                0x07,0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x07,0x07, 0x07,0x07,0x07,0x07,0x07,0x07,
                                0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07, 0x00,0x00,0x00,0x00,0x00,0x00,
                                0x00,0x01,0x03,0x03,0x03,0x07,0x07,0x07,0x07,0x07, 0x07,0x07,0x03,0x03,0x01,0x07,
                                0x07,0x07,0x07,0x00,0x00,0x00,0x06,0x07,0x07,0x07, 0x03,0x00,0x00,0x00,0x00,0x00,
                                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x07,0x07, 0x07,0x06,0x00,0x00,0x00,0x00,
                                };

                                void main(void)
                                {
                                unsigned int i;

                                PORTB_DIR=PIN7_bm|PIN6_bm|PIN5_bm|PIN4_bm|PIN3_bm| PIN2_bm|PIN1_bm|PIN0_bm;
                                PORTA_DIR=PIN5_bm|PIN4_bm|PIN3_bm;
                                //PORTA_OUTCLR=PIN4_bm;
                                PORTC_DIR=PIN6_bm|PIN5_bm|PIN4_bm;
                                PORTD_DIR=PIN5_bm|PIN4_bm|PIN3_bm|PIN2_bm|PIN1_bm| PIN0_bm;

                                PORTD_OUTCLR=PIN5_bm|PIN4_bm|PIN3_bm|PIN2_bm|PIN1_ bm;


                                glcd_init();

                                set_page_left(0);
                                set_page_right(0);
                                set_y_left(0);
                                set_y_right(0);
                                set_page_left(0);
                                set_page_right(0);
                                set_y_left(0);
                                set_y_right(0);
                                for(i=0;i<1024;i++)
                                {
                                if((i%64)==0)
                                {
                                if((i%128)==0)
                                {
                                set_page_left(i/128);
                                set_y_left(0);
                                }
                                else
                                {
                                set_page_right(i/128);
                                set_y_right(0);
                                }
                                }
                                if(i<512) lcd_dataout(xmega[i]);
                                else lcd_dataout(0);
                                // PORTB_OUTCLR=PIN7_bm|PIN6_bm|PIN5_bm|PIN4_bm|PIN3_ bm|PIN2_bm|PIN1_bm|PIN0_bm;

                                __delay_cycles(2000000);
                                PORTD_OUTSET=PIN0_bm;
                                }


                                while(1);
                                }

                                //---------------------------------------------------

                                void glcd_init(void)
                                {
                                RST_Low();
                                __delay_cycles(10000);
                                RST_High();
                                __delay_cycles(100000);

                                CS1_High();
                                CS2_High();
                                lcd_command(0x3e); // display off
                                lcd_command(0x40); // Y=0
                                lcd_command(0xb8); // page=0
                                lcd_command(0xc0); // display start line=0
                                lcd_command(0x3f); // display on
                                }

                                //---------------------------------------------------

                                void lcd_command(unsigned char command)
                                {
                                RS_Low();
                                lcd_data=command;
                                E_High();
                                __delay_cycles(10);
                                E_Low();
                                __delay_cycles(10);
                                }

                                //---------------------------------------------------

                                void lcd_dataout(unsigned char data)
                                {
                                RS_High();
                                lcd_data=data;
                                E_High();
                                __delay_cycles(10);
                                E_Low();
                                __delay_cycles(10);
                                }

                                //---------------------------------------------------

                                void set_page_left(unsigned char page)
                                {
                                CS1_High();
                                CS2_Low();
                                lcd_command(0xb8 + page);
                                }

                                //---------------------------------------------------

                                void set_page_right(unsigned char page)
                                {
                                CS1_Low();
                                CS2_High();
                                lcd_command(0xb8 + page);
                                }

                                //---------------------------------------------------

                                void set_y_left(unsigned char y)
                                {
                                CS1_High();
                                CS2_Low();
                                lcd_command(0x40 + y);
                                }

                                //---------------------------------------------------

                                void set_y_right(unsigned char y)
                                {
                                CS1_Low();
                                CS2_High();
                                lcd_command(0x40 + y);
                                }

                                دیدگاه

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