اطلاعیه

Collapse
No announcement yet.

کمک برای ساخت ماژول سریال LCD های کاراکتری

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

    کمک برای ساخت ماژول سریال LCD های کاراکتری

    دوستان سلام.
    بچه ها من یه ماژول سریال LCD کاراکتری میخوام.ولی پیدا نکردم.
    این یه نمونشه:
    http://mrkelectronic.blogfa.com/page/seriallcd.aspx
    کسی مدارشو داره؟کسی میتونه کمک کنه؟؟
    ممنون میشم کمکم کنین...
    اگر خودت رو لایق خیلی چیزا میدونی,باید خیلی هم تلاش کنی...

    #2
    پاسخ : کمک برای ساخت ماژول سریال LCD های کاراکتری

    کسی نبود کمک برسونه؟؟ oo:
    اگر خودت رو لایق خیلی چیزا میدونی,باید خیلی هم تلاش کنی...

    دیدگاه


      #3
      پاسخ : کمک برای ساخت ماژول سریال LCD های کاراکتری

      مهندس ساخت این که کاری نداره
      بگو مشکلت کجاست تا حلش کنیم
      به راحتی میشه این مدار را ساخت :agree:

      اگه وقت کردم یک نمونه مینویسم میذارم توی انجمن :biggrin:

      موفق باشید
      امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

      دیدگاه


        #4
        پاسخ : کمک برای ساخت ماژول سریال LCD های کاراکتری

        داداش همشو مشکل دارم :biggrin:
        من اینو برا میکروکنترلر pic16f84 میخوام .چون اطلاعات رو به صورت سریال میده
        برا همین نمیشه از اتصال باس 4 یا 8 سیمه استفاده کرد.حتما همین پنل رو میخواد.
        راستش منم نمیدونم اصلا چطور باید درستش کنم.اگه یه لطف کنی مدار و برنامشو بزاری درستش کنم خیلی حال دادی. :biggrin: :biggrin:
        عجیب کارم گیرشه.
        ممنون.
        اگر خودت رو لایق خیلی چیزا میدونی,باید خیلی هم تلاش کنی...

        دیدگاه


          #5
          پاسخ : کمک برای ساخت ماژول سریال LCD های کاراکتری

          سلام
          نمیدونم این به چه دردی می خوره اخه؟!! یه دونه میکرو کنترلر اضافی بزاری که یدونه lcd رو راه بندازه؟
          با یدونه شیفت ریجیستر(که خیلی هم ارزان تره)و با سه تا پایه میکرو میشه یدونه lcd راه انداخت
          پرسش کلید دانش

          دیدگاه


            #6
            پاسخ : کمک برای ساخت ماژول سریال LCD های کاراکتری

            نوشته اصلی توسط مصطفی مقدم
            سلام
            نمیدونم این به چه دردی می خوره اخه؟!! یه دونه میکرو کنترلر اضافی بزاری که یدونه lcd رو راه بندازه؟
            با یدونه شیفت ریجیستر(که خیلی هم ارزان تره)و با سه تا پایه میکرو میشه یدونه lcd راه انداخت
            من هم حرف شما را قبول دارم ، ولی شاید شما جایی فقط به یک uart دسترسی دارید oo:

            برای اینکار نیاز به یک میکرو (مثل مگا8) داریم
            برنامه ذیل را روی یک ATMEGA8 پروگرام کنید (کریستال 11.059200 مگ متصل کنید) و به LCD 2*16 وصلش کنید (پایه ها توی برنامه مشخصه)
            کد:
            /*****************************************************
            Chip type        : ATmega8
            AVR Core Clock frequency: 11.059200 MHz
            *****************************************************/
            
            #include <mega8.h>
            #include <alcd.h>
            #include <stdio.h>
            #include <delay.h>
            
            
            #ifndef RXB8
            #define RXB8 1
            #define TXB8 0
            #define UPE 2
            #define DOR 3
            #define FE 4
            #define UDRE 5
            #define RXC 7
            #endif
            
            #define FRAMING_ERROR (1<<FE)
            #define PARITY_ERROR (1<<UPE)
            #define DATA_OVERRUN (1<<DOR)
            #define DATA_REGISTER_EMPTY (1<<UDRE)
            #define RX_COMPLETE (1<<RXC)
            
            // USART Receiver buffer
            #define RX_BUFFER_SIZE 34
            char rx_buffer[RX_BUFFER_SIZE];
            
            unsigned char rx_wr_index;
            
            bit rx_buffer_overflow;
            
            // USART Receiver interrupt service routine
            interrupt [USART_RXC] void usart_rx_isr(void)
            {
            char status,data;
            status=UCSRA;
            data=UDR;
            if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
              {    
              rx_buffer[rx_wr_index++]=data;           
              
              if(rx_wr_index==1 && rx_buffer[0]!=0xF1) rx_wr_index=0; //Check Start Byte
              if(rx_wr_index >=3 && data == 0xF2) rx_buffer_overflow =1;
              if(rx_wr_index == RX_BUFFER_SIZE) rx_buffer_overflow =1;                            
              }                   
            }
            
            
            
            
            // Declare your global variables here
            
            void main(void)
            {
            unsigned char temp;
            // USART initialization
            // Communication Parameters: 8 Data, 1 Stop, No Parity
            // USART Receiver: On
            // USART Transmitter: On
            // USART Mode: Asynchronous
            // USART Baud Rate: 9600
            UCSRA=0x00;
            UCSRB=0x98;
            UCSRC=0x86;
            UBRRH=0x00;
            UBRRL=0x47;
            
            
            // Alphanumeric LCD initialization
            // Connections are specified in the
            // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
            // RS - PORTB Bit 0
            // RD - PORTB Bit 1
            // EN - PORTB Bit 2
            // D4 - PORTC Bit 0
            // D5 - PORTC Bit 1
            // D6 - PORTC Bit 2
            // D7 - PORTC Bit 3
            // Characters/line: 16
            lcd_init(16);
            
            #asm("sei")
             puts("LCD_RUN\r\n");
            while (1)
               {
                if(rx_buffer_overflow)
                { 
                #asm("cli")  
                lcd_gotoxy((rx_buffer[1]&0xF0)>>4,rx_buffer[1]&0x0F);
                  for(temp = 2 ;temp < rx_wr_index-1 ;temp++)
                  {
                   switch (rx_buffer[temp])
                   {
                   case '\f':
                   lcd_clear();
                   break;
                   case '\n':
                   lcd_gotoxy(0,(rx_buffer[1]&0x0F)+1); 
                   break;
                   case '\r':
                   lcd_gotoxy(0,(rx_buffer[1]&0x0F)+1); 
                   break; 
                   default:
                   lcd_putchar(rx_buffer[temp]);
                   break;
                   }
                  }
            
                
                 rx_wr_index =0;
                 rx_buffer_overflow =0; 
                 putchar(0xF3); // Done! 
                 #asm("sei")
                }
            
               }
            }
            برنامه را با کدویژن 2.05.3 نوشتم :arrow:

            برای کار کردن با این مدار شما باید تابع زیر را در برنامه فرستنده بنویسید:
            کد:
            void Send2LCD (char *STR , unsigned char x ,unsigned char y)
            { 
               putchar(0xF1);
               putchar((x<<4)|y); 
               puts(STR);
               putchar(0xF2);
            }
            خوب مشخصه که تابع ارسال به ماژول 3تا پارامتر داره
            1- STR که string مورد نظر برای نوشتن هست
            2 و 3 - X , Y موقعیت شروع نوشتن هست
            مثال:
            کد:
            Send2LCD("SALAM",0,0);
            delay_ms(1000);  
            Send2LCD("\f",0,0);// Clear LCD (Format Char)
            delay_ms(100);  
            Send2LCD("LCD TEST",5,0);
            کرکتر هایی برای کنترل گذاشتم مثل:
            f\ که lcd را پاک میکنه و یا n\ که به خط پایین پرش میکنه :agree:
            وقتی نوشتن روی LCD تکمیل شد ماژول شما 0xF3 را به نشانه اتمام کار برای شما ارسال میکنه
            خیلی میشه چیز بهش اضافه کرد خودتون زحمتش را بکشید :mrgreen:
            در ضمن نرخ ارسال دریافت سریال 9600 است
            سوالی بود مطرح کنید
            موفق باشید
            امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

            دیدگاه


              #7
              پاسخ : کمک برای ساخت ماژول سریال LCD های کاراکتری

              چرا با پروتکل TWI کار نمیکنین ؟؟
              همه کارها دست Master هست
              کدش هم راحت تره ...
              [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
              معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
              معرفی نرم افزار Codewizard PWM
              با من بیشتر آشنا شوید

              دیدگاه


                #8
                پاسخ : کمک برای ساخت ماژول سریال LCD های کاراکتری

                مرسی دوست عزیز.ممنون.
                راستش این یه مدار امادست.که از یه میکرو pic16f84 استفاده شده.زبان برنامشم با بیسیک نوشته شده.متاسفانه خروجی میکرو برای ال سی دی به صورت سریال هستش و نمیشه مستقیم ال سی رو نصب کرد بهش.برا همین من مجبورم ازین ماژول سریال استفاده کنم.
                اقا عباس من مدار اینو کامل میکنم.و قرارش میدم اگه چیزی کم داشت ممنون میشم بازم کمک کنی.
                راستش من زبان سی کار نکردم.فقط با این برنامه ای که گفتین میشه ال سی دی pic رو که با زبان بیسیک هستو راه انداخت؟؟
                ممنون
                اگر خودت رو لایق خیلی چیزا میدونی,باید خیلی هم تلاش کنی...

                دیدگاه


                  #9
                  پاسخ : کمک برای ساخت ماژول سریال LCD های کاراکت&#15

                  راستش من زبان سی کار نکردم.فقط با این برنامه ای که گفتین میشه ال سی دی pic رو که با زبان بیسیک هستو راه انداخت؟؟
                  من نمیدونم PIC شما چی خروجی میده
                  این برنامه که من گذاشتم شبیه اون چیزی هست که شما لینکش را قرار دادید
                  اگه برنامه اش رو خودت نوشتی باید پروتکلش را مثل چیزی که من نوشتم قرار بدی یعنی:
                  1-ارسال بایت F1 هگز
                  2- ارسال x,y که در msb , lsb یک بایت قرار دارند
                  3- ارسال متن
                  4-ارسال بایت F2 هگز برای اعلام اتمام ارسال
                  اگه برنامه را قبلاً نوشته اند پروتکلش را بده تا براتون با همون پروتکل بنویسم
                  اگه با کامپایل مشکل داشتی بگو هگزش را پلود میکنم

                  موفق باشید
                  امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

                  دیدگاه


                    #10
                    پاسخ : کمک برای ساخت ماژول سریال LCD های کاراکتری

                    واقعا ممنونم.نه برنامه آمادست.ایشالا برنامه رو میزارم نگاه کنین.بازم ممنون
                    اگر خودت رو لایق خیلی چیزا میدونی,باید خیلی هم تلاش کنی...

                    دیدگاه


                      #11
                      پاسخ : کمک برای ساخت ماژول سریال LCD های کاراکتری

                      دوست عزیز این برنامه برای ماژول SRF04 هستش که اندازه ی اجسامو بر حسب اینچ و سانتیمتر روی LCD نمایش میده.


                      Include "modedefs.bas" ' Include serial modes

                      trisa = %00000000 ' set porta to outputs
                      trisb = %00001000 ' set portb pin 3 to input

                      lcd var PORTA.3 ' define variables and constants
                      piezo var PORTB.4
                      trigger var PORTB.2
                      echo var PORTB.3
                      left_led var PORTB.0
                      right_led var PORTB.1
                      baud con N2400
                      dist_raw var word
                      dist_inch var word
                      dist_cm var word
                      conv_inch con 15
                      conv_cm con 6

                      low trigger ' set trigger pin to logic 0
                      low left_led ' turn off left LED
                      low right_led ' turn off right LED

                      Serout lcd,baud,[254,1] ' clear lcd screen

                      pause 1000 ' give time to initialize lcd

                      Serout lcd,baud,[254,128,"- Sonar Ranger -"] ' display program title on the LCD

                      sound piezo,[100,10,50,5,70,10,50,2] ' Make startup sound

                      pause 1000 ' wait for 1 second

                      Serout lcd,baud,[254,128,"inches: "] ' set up the LCD display

                      Serout lcd,baud,[254,192,"centimeters: "]

                      main:

                      gosub sr_sonar ' get sonar reading

                      Serout lcd,baud,[254,135,#dist_inch," "] ' display the distance in inches

                      Serout lcd,baud,[254,204,#dist_cm," "] ' display the distance in centimeters

                      Goto main

                      end

                      sr_sonar:

                      pulsout trigger,1 ' send a 10us trigger pulse to the SRF04
                      pulsin echo,1,dist_raw ' start timing the pulse width on echo pin
                      dist_inch = (dist_raw/conv_inch) ' Convert raw data into inches
                      dist_cm = (dist_raw/conv_cm) ' Convert raw data into centimeters
                      pause 1 ' wait for 10us before returning to main

                      return



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

                      دیدگاه


                        #12
                        پاسخ : کمک برای ساخت ماژول سریال LCD های کاراکتری

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

                        دیدگاه


                          #13
                          پاسخ : کمک برای ساخت ماژول سریال LCD های کاراکت

                          لطفاً کد ها را درون کادر مناسب کد قرار بدهید (از دکمه "قراردادن کد" استفاده کنید)
                          من خیلی وقته بیسیک کار نکردم ولی از کد شما یک سری اطلاعات دستگیرم شد
                          اولاً Baud را روی 9600 تنظیم کن
                          کد:
                          baud     con T9600
                          و برای نوشتن روی LCD :
                          کد:
                             Serout lcd,baud,[241,0,#dist_inch,242]   ' display the distance in inches Line 1
                          pause 100
                             Serout lcd,baud,[241,1,#dist_cm,242]   ' display the distance in centimeters Line 2
                          مقدار 241 برابر F1 هگز برای شروع نوشتن
                          مقدار 242 برابر F2 هگز برای پایان نوشتن
                          مقدار 0 برای x=0 ,y=0
                          مقدار 1 برای x=0 , y=1
                          همه دستورات ارسال را مثل دستورات بالا بنویس
                          موفق باشید
                          امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

                          دیدگاه


                            #14
                            پاسخ : کمک برای ساخت ماژول سریال LCD های کاراکتری

                            ممنونم.
                            فقط پایه ی خروجی سریال میکرو pic به کدوم پایه ی avr وصل میشه؟؟
                            اگر خودت رو لایق خیلی چیزا میدونی,باید خیلی هم تلاش کنی...

                            دیدگاه


                              #15
                              پاسخ : کمک برای ساخت ماژول سریال LCD های کاراکت&#15

                              نوشته اصلی توسط hamed.asadi
                              ممنونم.
                              فقط پایه ی خروجی سریال میکرو pic به کدوم پایه ی avr وصل میشه؟؟
                              برای خروجی از PIC باید از A.3 خروجی بگیری
                              کد:
                              lcd      var PORTA.3     ' define variables and constants
                              و به RXD مگا8 وصل کنید (پایه2)
                              امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

                              دیدگاه

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