اطلاعیه

Collapse
No announcement yet.

فایل هدر LCD

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

    #16
    پاسخ : فایل هدر LCD

    با سلام

    و باز هم تشکر ، همه چیز درست کار می کند فقط یک مشکل ، من این برنامه زیر رو که پروگرام می کنم روی صفحه LCD چیز های دیگر مثل ()*&^%$#@! نمایش داده می شه یعنی چرت و پرت مینویسه ؟

    برنامه :

    #include <AT91SAM7S64.H>
    #define LCD_PORT_A
    #define LCD_RS 10
    #define LCD_E 9
    #define LCD_DB4 4
    #define LCD_DB5 3
    #define LCD_DB6 2
    #define LCD_DB7 1
    #include <lcd.h>
    void delay_s(void);
    int main (void)
    {
    //------------------Start UP ----------------------------
    AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS;
    // AT91C_WDTC_WDDIS= (1<<15)
    AT91C_BASE_RSTC->RSTC_RMR=0xA5000001;
    //----------------- Speed UP ----------------------------
    AT91C_BASE_CKGR->CKGR_MOR = 0xF01;
    AT91C_BASE_CKGR->CKGR_PLLR = 0x2903FFC;
    AT91C_BASE_PMC->PMC_MCKR = 0x3;
    AT91C_BASE_PMC->PMC_SCER = 0x1;
    //----------------------- Main --------------------------
    lcd_init();
    lcd_clear();
    cursor_off();
    while(1)
    {
    lcd_gotoxy(1,1);
    lcd_putsf("#((( Masood )))#"
    lcd_gotoxy(2,1);
    lcd_putsf("#(( Mohamadi ))#"
    delay_s();
    lcd_init();
    lcd_clear();
    cursor_off();
    lcd_gotoxy(1,1);
    lcd_putsf("**** Run ARM ***"
    lcd_gotoxy(2,1);
    lcd_putsf("** AT91SAM7S64 *"
    delay_s();
    lcd_init();
    lcd_clear();
    cursor_off();
    }
    }
    void delay_s (void)
    {
    unsigned int i,j;
    for (i=0;i<1000000;i++);
    for (j=0;j<1000000;j++);
    }
    با سپاس
    http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

    دیدگاه


      #17
      پاسخ : فایل هدر LCD

      سلام.
      این تیکه از برنامتو حذف کن
      AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS;
      // AT91C_WDTC_WDDIS= (1<<15)
      AT91C_BASE_RSTC->RSTC_RMR=0xA5000001;
      //----------------- Speed UP ----------------------------
      AT91C_BASE_CKGR->CKGR_MOR = 0xF01;
      AT91C_BASE_CKGR->CKGR_PLLR = 0x2903FFC;
      AT91C_BASE_PMC->PMC_MCKR = 0x3;
      AT91C_BASE_PMC->PMC_SCER = 0x1;

      توی این قسمت شما فرکانس رو 48 مگا گرفتی در صورتی که هیدر با پیش فرض 18.432 نوشته شده.یا توی هیدر فرکانسو عوض کن یا این تیکرو حذف کن
      شما اگه اینارو حذف کنی خود میکرو فرکانس کارشو برابر فرکانس کریستال قرار میده. اگه فقط خط
      AT91C_BASE_CKGR->CKGR_PLLR = 0x2903FFC
      هم حذف کنی باید درست بیشه
      در ضمن شما از delay.h دارین استفاده میکنین دیگه نیاز نیست خودتون حتما یه delay بسازید .البته هر جور خودت راحتی

      دیدگاه


        #18
        پاسخ : فایل هدر LCD

        سلام
        من یه سخت افزار آماده دارم که پایه R/W اون به پایه PA7 میکرو وصل شده در صورتیکه تو کتاب مرجع کامل AT91 گفته این پایه زمین بشه
        حالا با این وضعیت چکار کنم که بتونم از lcd و توابعش استفاده کنم!؟
        میکروم S256 هست و کامپالیر IAR
        GODISNOWHERE this can be read as GOD IS NO WHERE or as GOD IS NOW HERE everything depends on how do u see anything. so think positive

        دیدگاه


          #19
          پاسخ : فایل هدر LCD

          این فایل lLCD.h هست

          #ifndef __LCD_H
          #define __LCD_H

          #include <Atmel/ioat91sam7s256.h>

          #define LCDRSHI AT91C_BASE_PIOA->PIO_SODR=(1<<6);
          #define LCDRSLO AT91C_BASE_PIOA->PIO_CODR=(1<<6);
          #define LCDRWHI AT91C_BASE_PIOA->PIO_SODR=(1<<7);
          #define LCDRWLO AT91C_BASE_PIOA->PIO_CODR=(1<<7);
          #define LCDEHI AT91C_BASE_PIOA->PIO_SODR=(1<<8);
          #define LCDELO AT91C_BASE_PIOA->PIO_CODR=(1<<8);

          void __LCD_WriteByte(unsigned char byte,bool IsCommand=true)
          {
          LCDRSLO;
          LCDRWHI;
          while(true)
          {
          LCDEHI;
          if((AT91C_BASE_PIOA->PIO_PDSR & 1U<<18)==0x00)
          break;
          LCDELO;
          }
          AT91C_BASE_PIOA->PIO_OER=(0xFFU<<11);
          if(IsCommand)
          {
          LCDRSLO;
          }
          else
          {
          LCDRSHI;
          }
          LCDRWLO;
          LCDEHI;
          AT91C_BASE_PIOA->PIO_CODR=(0xFFU<<11);
          AT91C_BASE_PIOA->PIO_SODR=(((unsigned int)byte)<<11);
          for(unsigned int i=0;i<2;i++);
          LCDELO;
          AT91C_BASE_PIOA->PIO_ODR=(0xFFU<<11);
          }

          void LCD_WriteChar(char Char,unsigned char Index)
          {
          if(Index<16)
          __LCD_WriteByte(Index | (1<<7));
          else if(Index<32)
          __LCD_WriteByte((Index+0x40-16) | (1<<7));
          __LCD_WriteByte(Char,false);
          }

          void LCD_WriteString(const char* Str,unsigned char Index=0)
          {
          for(unsigned char i=0;Str[i]!=0 & (i+Index)<32;i++)
          {
          LCD_WriteChar(Str[i],Index+i);
          }
          }

          void LCD_Clear(void)
          {
          __LCD_WriteByte(0x01);
          __LCD_WriteByte(0x02);
          }

          void LCD_Init(void)
          {
          AT91C_BASE_PIOA->PIO_PER=(1<<6| 1<<7| 1<<8|0xFFU<<11);
          AT91C_BASE_PIOA->PIO_OER=(1<<6| 1<<7| 1<<8);
          AT91C_BASE_PIOA->PIO_IFER=0xFFU<<11;
          AT91C_BASE_PIOA->PIO_ODR=0xFFU<<11;
          LCDELO;

          __LCD_WriteByte(0x01);
          __LCD_WriteByte(0x02);
          __LCD_WriteByte(0x38);
          __LCD_WriteByte(0x0C);
          }

          #endif
          همین مشکلو با GLCD هم دارم چون اونجا هم پایه R/W رو به پایه میکرو وصل کرده
          از اساتید اگر کسی میدونه بهم کمک کنه
          GODISNOWHERE this can be read as GOD IS NO WHERE or as GOD IS NOW HERE everything depends on how do u see anything. so think positive

          دیدگاه


            #20
            پاسخ : فایل هدر LCD

            بابا این آرم چقدر درد سر داره!!
            تا فکر میکنی دیگه مشکل حل شده تازه یه مشکل جدید باهاش پیدا میکنی
            از اساتید محترم کسی نمیدونه چطور میتونم مشکلمو حل کنم؟
            GODISNOWHERE this can be read as GOD IS NO WHERE or as GOD IS NOW HERE everything depends on how do u see anything. so think positive

            دیدگاه


              #21
              پاسخ : فایل هدر LCD

              :angry:
              اینجا کسی نیست جواب بده؟
              GODISNOWHERE this can be read as GOD IS NO WHERE or as GOD IS NOW HERE everything depends on how do u see anything. so think positive

              دیدگاه


                #22
                پاسخ : فایل هدر LCD

                سلام
                ببین اون هدر فایل هایی که تو کتاب AT91 به این صورت است که باید RW را زمین کنید اما این هدری که بالا گذاشتی برای کتاب AT91 نیست. اگر می خواهید از هدر های کتاب استفاده کنید و پایه RW شما به PA7 وصل است سه خط برنامه باید در فایل main خود اضافه کنید (مثال های فصل 4 را ببین) و این پایه را از داخل میکرو صفر کنید و بعد از توابع استفاده کنید و بقیه پین های خود را هم باید مثل صفحه 409 (کاراکتری) یا417 (گرافیکی) مشخص کنید.

                دیدگاه


                  #23
                  پاسخ : فایل هدر LCD

                  جناب مهندس بابت راهنماییتون ممنون
                  اینکارو انجام دادم
                  AT91C_BASE_PIOA->PIO_PER=(1<<7);
                  AT91C_BASE_PIOA->PIO_OER=(1<<7);
                  AT91C_BASE_PIOA->PIO_CODR=(1<<7);
                  ولی باز هم جواب نگرفتم :cry2:
                  LCD تغییر کرد ولی فقط پاک شد !!
                  دیگه چیزی رو نمایش نمیده!!
                  گفتم شاید جریان کشی داشته باشه با یه سیم دستی هم اون پایه رو GND کردم
                  اینم بقیه برنامه
                  lcd_pininit(6,8,11,12,13,14,15,16,17,18);
                  lcd_init ();
                  lcd_gotoxy(0,0);
                  lcd_putsf("ARM"
                  lcd_gotoxy(1,0);
                  lcd_putsf("AT91SAM7S64"
                  بازم جایی هست که چک نکرده باشم؟
                  لینکر و include هم S256 هست
                  GODISNOWHERE this can be read as GOD IS NO WHERE or as GOD IS NOW HERE everything depends on how do u see anything. so think positive

                  دیدگاه


                    #24
                    پاسخ : فایل هدر LCD

                    کل برنامه که نوشتی رو بزار ببینم. شاید چیزی باشد که از چشم افتاده باشد. نیاز به اون سیم هم نیست با همون سه خط برنامه کارش راه می افتد. در ضمن فایل lcd.c را هم اضافه کردی به پروژه؟ تو فایل lcd.h هم هدر را S256 کن.

                    دیدگاه


                      #25
                      پاسخ : فایل هدر LCD

                      بله LCD.c زو هم اضافه کردم
                      اصلا کامپایلش مشکلی نداره
                      #include <Atmel/ioat91sam7s256.h>
                      #include "lcd.h"
                      void delay (void);
                      unsigned int i,j;
                      void main ()
                      {
                      //--------------------start up--------------------------
                      AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS; // AT91C_WDTC_WDDIS=(1<<15)
                      AT91C_BASE_RSTC->RSTC_RMR=0xA5000001;
                      //--------------------speed up--------------------------
                      AT91C_BASE_CKGR->CKGR_MOR = 0xF01;
                      AT91C_BASE_CKGR->CKGR_PLLR = 0x2903FFC;
                      AT91C_BASE_PMC->PMC_MCKR = 0x3;
                      AT91C_BASE_PMC->PMC_SCER = 0x1;
                      //--------------------------R/W=0---------------------------
                      AT91C_BASE_PIOA->PIO_PER=(1<<7);
                      AT91C_BASE_PIOA->PIO_OER=(1<<7);
                      AT91C_BASE_PIOA->PIO_SODR=(1<<7);
                      //-----------------------------------------------------
                      lcd_pininit(6,8,11,12,13,14,15,16,17,18);
                      lcd_init ();
                      lcd_gotoxy(0,0);
                      lcd_putsf("ARM"
                      lcd_gotoxy(1,0);
                      lcd_putsf("AT91SAM7S256"
                      while (1);
                      }
                      GODISNOWHERE this can be read as GOD IS NO WHERE or as GOD IS NOW HERE everything depends on how do u see anything. so think positive

                      دیدگاه


                        #26
                        پاسخ : فایل هدر LCD

                        //--------------------------R/W=0---------------------------
                        AT91C_BASE_PIOA->PIO_PER=(1<<7);
                        AT91C_BASE_PIOA->PIO_OER=(1<<7);
                        AT91C_BASE_PIOA->PIO_CODR=(1<<7);
                        خط سوم اصلاح شده بود اشتباه تایپی بود
                        GODISNOWHERE this can be read as GOD IS NO WHERE or as GOD IS NOW HERE everything depends on how do u see anything. so think positive

                        دیدگاه


                          #27
                          پاسخ : فایل هدر LCD

                          برنامه ای را که پیوست کردم را بگیر فایل bin آنرا روی میکروت پروگرام کن ببین نتیجه چی می شود؟ با IAR 5.50 من پروژه را درست کردم اگه شما پروژه را با یک ورژن دیگر باز کنید احتمالا تنظیمات پروژه را باید دوباره انجام دهید. شما از چه ورژنی استفاده می کنید؟
                          فایل های پیوست شده

                          دیدگاه


                            #28
                            پاسخ : فایل هدر LCD

                            اگر براتون این امکان هست ممکنه خودتون تستش کنید؟
                            من پایه میکرو رو تو initial اولیه پایه ها نیاوردم و با سیم گراندش کردم اصلا جواب نداد
                            GODISNOWHERE this can be read as GOD IS NO WHERE or as GOD IS NOW HERE everything depends on how do u see anything. so think positive

                            دیدگاه


                              #29
                              پاسخ : فایل هدر LCD

                              نوشته اصلی توسط rezavip
                              اگر براتون این امکان هست ممکنه خودتون تستش کنید؟
                              من پایه میکرو رو تو initial اولیه پایه ها نیاوردم و با سیم گراندش کردم اصلا جواب نداد
                              من سخت افزارم s64 هست و این برنامه را براش تست کردم فقط پین های من به صورت دیگه ای به میکرو وصل است. شما فایل bin را روی میکروت پروگرام کن ببین درست جواب می دهد یا نه؟ خط دومی را که نوشتید منظورتون را متوجه نشدم. شما پین های LCD که به میکرو وصل است تو سخت افزارتون را هم بگید که ببینیم توی اون تابع اشتباه تنظیم نشده باشد. در ضمن از چه ورژن IAR استفاده می کنید؟ از همونی که تو CD کتاب هست؟

                              دیدگاه


                                #30
                                پاسخ : فایل هدر LCD

                                هیچ اتفاقی نیفتاد
                                من خودم باز تنظیمات رو چک کردم مجدد پروگرم کردم باز هم نشد
                                من از IAR 5.40.1 استفاده میکنم که تو سی دی کتاب نیست
                                D0 ~ D7 به پایه 11~18 RS=P6 و E=P8 پایه R/W=P7
                                باز هم نشد
                                GODISNOWHERE this can be read as GOD IS NO WHERE or as GOD IS NOW HERE everything depends on how do u see anything. so think positive

                                دیدگاه

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