اطلاعیه

Collapse
No announcement yet.

رسم خطوط و اشکال در ال سی دی گرافیکی

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

    #76
    پاسخ : رسم خطوط و اشکال در ال سی دی گرافیکی

    می خواستم بدونم چجوری میشه توی basecom خط رسم کرد تا اونجایی که دیدم دستورات برای کدویژن بود
    اگر راهنمایی کنید ممنون میشم

    دیدگاه


      #77
      پاسخ : رسم خطوط و اشکال در ال سی دی گرافیکی

      سلام اگر ما یک سرس دیتا را از پورت سریال بگیریم وبعد بخواهیم روی LCD گرافیکی برامون رسمش کند (به صورت همزمانوداده ها هم لحظه به لحظه وارد بشود) چه برنامه برای رسم منحنی باید نوشته شود ؟
      یه سئوال دیگه اینکه آیا برنامه مثلا تغییر یک عدد توسط دکمه بالا وپایین برای LCDگرافیکی با کاراکتری فرق دارد؟
      خیلی ممنون

      دیدگاه


        #78
        پاسخ : رسم خطوط و اشکال در ال سی دی گرافیکی

        سلام اگر ما یک سرس دیتا را از پورت سریال بگیریم وبعد بخواهیم روی LCD گرافیکی برامون رسمش کند (به صورت همزمانوداده ها هم لحظه به لحظه وارد بشود) چه برنامه برای رسم منحنی باید نوشته شود ؟ (باcode vision با atmega32)
        یه سئوال دیگه اینکه آیا برنامه مثلا تغییر یک عدد توسط دکمه بالا وپایین برای LCDگرافیکی با کاراکتری فرق دارد؟
        خیلی ممنون

        دیدگاه


          #79
          پاسخ : رسم خطوط و اشکال در ال سی دی گرافیکی

          سلام دوست عزیز

          برای رسم یک نمودار با استفاده از ایجاد نقاط در صفحه به راحتی میتوانید نمودار مورد نظرتان را رسم نمائید.
          مثلا شما میخواهید یک موج و یا سیگنالی را که به ورودی میکرو داده اید را رسم نمائید
          برای این کار سیگنال را با توجه و محدود کردن رنج آن ( ساده ترین روش مقسم ولتاز مقاومتی است) به ADC میکرو وصل کنید و هر 10/1 ثانیه یک
          نمونه برداری و بر حسب مقدار بدست آمده در یک نقطه در اولین ستون رسم نمائید سپس نقطه بعدی در ستون بعدی و ... تا آخر که رسیدید به نقطه
          شروع برگردیدو...... تمام شد به همین راحتی :redface:

          موفق باشید
          به امیدار دیدار
          کمتر سخن گویم
          بیشتر عمل کنیم

          دیدگاه


            #80
            پاسخ : رسم خطوط و اشکال در ال سی دی گرافیکی

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

            دیدگاه


              #81
              پاسخ : رسم خطوط و اشکال در ال سی دی گرافیکی

              سلام دوست عزیز yavar133

              من نمیدانم که شما کجای کار هستید؟ آیا توانسته ای Lcd را راه اندازی کنید ؟ آیا میتوانید نقطه و یا خطی رسم کنید ؟

              اگر جواب شما منفی است لطفا از اول همین تایپ مطالب را دنبال کنید و مشکلی داشتید در خدمت هستیم :redface:

              موفق باشید
              به امیدار دیدار :bye
              کمتر سخن گویم
              بیشتر عمل کنیم

              دیدگاه


                #82
                پاسخ : رسم خطوط و اشکال در ال سی دی گرافیکی

                شاید شما بتونید از لینک زیر اطلاعاتی کسب کنید ( البته با میکروکنترلر 8051 )
                http://www.eca.ir/forum2/index.php/topic,9119.15.html
                کنکوری 90 ديروز،آ‌دانشجو مهندسي نرم افزار پلي تكنيك امروز!

                دیدگاه


                  #83
                  پاسخ : رسم خطوط و اشکال در ال سی دی گرافیکی

                  اگر بخوایم در هر لحظه دیتایی را که می گیریم رسم کنیم دو تا نقطه را گرفتم , با توابع glcdبرنامه زیر را نوشتم اشتباه می کشد.خواهشا کمک کنید.
                  void main(void)
                  {
                  init_micro();
                  init();
                  while (1)
                  {
                  x1=0;x2=0;
                  for (y1=0;y1<30;y1++)
                  {
                  for (y2=1;y2<400;y2++)
                  {

                  lcd_line(x1,y1,x2,y2);

                  x1=x1+10;
                  x2=x2+20;
                  }

                  }


                  };
                  }

                  دیدگاه


                    #84
                    پاسخ : رسم خطوط و اشکال در ال سی دی گرافیکی

                    چه طوری میشه sinرا رسم کرد؟

                    دیدگاه


                      #85
                      پاسخ : رسم خطوط و اشکال در ال سی دی گرافیکی

                      من یه برنامه برای lcd گرافیکی نوشتم که توی پروتئوس جواب داد ولی وقتی مدارو بستم فقط روشن شد وخیلی هم جریان می کشید تا 7v می رفت ...پالس خروجی دارم ولی تصویر ندارم... :question:

                      دیدگاه


                        #86
                        پاسخ : رسم خطوط و اشکال در ال سی دی گرافیکی

                        سلام خواهش می کنم کمک کنید . این برنامه چرا عدد i را روی LDC نشان نمی دهد؟ البته من می خوام توی این منویی که ساختم با فشار یک دکمه دیگه با متغیر up یه عدد رو که روی LCD داره نشان می ده بالا ببرم وبعد ثابت بمونه . این هم برنامه من:
                        /************************************************** ***

                        #define LCD_WR PORTC.5
                        #define LCD_RD PORTC.4
                        #define LCD_CE PORTC.3
                        #define LCD_CD PORTC.2
                        #define LCD_RST PORTC.1
                        #define LCD_FS1 PORTC.0

                        #define EightbyEight 0// fonts

                        #define Busy1Busy2 0x03 // Status masks
                        #define DAWRDY 0x08

                        #define CursorPointerSet 0x21
                        #define OffsetRegisterSet 0x22
                        #define AddressPointerSet 0x24
                        #define TextHomeAddress 0x40
                        #define TextAreaSet 0x41
                        #define GraphicHomeAddress 0x042
                        #define GraphicAreaSet 0x043
                        #define CGROMMode 0x80
                        #define CGRAMMode 0x88
                        #define ORMode 0x80
                        #define EXORMode 0x81
                        #define ANDMode 0x83
                        #define Textonly 0x84
                        #define GraphicsOff 0x90
                        #define GraphicsOn 0x98
                        #define TextOff 0x90
                        #define TextOn 0x94
                        #define CursorOff 0x90
                        #define CursorOn 0x92
                        #define CursorBlinkOff 0x90
                        #define CursorBlinkOn 0x91
                        #define CursorPattern 0xA0
                        #define BottomLine 0x0
                        #define DataAutoWrite 0xB0
                        #define DataAutoRead 0xB1
                        #define AutoReset 0xB2
                        #define DataRdWr 0xC0
                        #define BitReset 0xF0
                        #define BitSet 0xF8

                        #define GraphBase 0x0000 // base address of graphics memory
                        #define TextBase 0x1000 // base address of text memory

                        #define Column 240
                        #define Row 64
                        // char disp[1];
                        // char c;
                        flash char picture[]={


                        char FontSize ;
                        unsigned int charsPerRow ;
                        char code1 []="signal_low";
                        char code2 []="finger_off";
                        char code3 []="sensor_off";
                        char code4 []="pulse detect";
                        char code5 []="code_num";
                        char code6 []="ERROR";
                        char code7 []="Soor afarinesh co.";
                        char code8 []="Tell:77956284";
                        char code9 []="WARNING!";
                        char code10 []="limit";

                        void lcd_init();
                        void WriteText();
                        void StatBusy12(void);
                        void StatDAWRDY(void);
                        void DataOut(char b);
                        void CommandOut(char b);
                        void lcd_clear_graphic();
                        void lcd_clear_text();
                        void lcd_Graphic();
                        void lcd_print(char *string);
                        void lcd_pixel(int Y, int X, char SetReset);
                        void lcd_xy(int X, int Y);
                        void SetAutoMode();
                        void AutoOut(char B);
                        void ResetAutoMode();
                        void lcd_cursorXY(char X, char Y);
                        void DataOut2(int b);
                        void AutoZero(unsigned int Terminate);
                        void lcd_setup_page(int Pages);
                        void lcd_line(char line);
                        void disp1();
                        #include <mega32.h>
                        #include <delay.h>
                        #include <stdio.h>
                        // Declare your global variables here
                        int count;
                        void main(void)
                        {
                        char buffer[40];
                        int i;
                        int disp;
                        int up;
                        // Declare your local variables here

                        // Input/Output Ports initialization
                        // Port A 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
                        PORTA=0x00;
                        DDRA=0x00;

                        // Port B initialization
                        // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=Out
                        // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=0
                        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=0x00;
                        DDRC=0x00;

                        // 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=T State2=T State1=T State0=T
                        PORTD=0x00;
                        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: Timer 1 Stopped
                        // Mode: Normal top=FFFFh
                        // OC1A output: Discon.
                        // OC1B output: Discon.
                        // Noise Canceler: Off
                        // Input Capture on Falling Edge
                        // Timer 1 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: Timer 2 Stopped
                        // Mode: Normal top=FFh
                        // OC2 output: Disconnected
                        ASSR=0x00;
                        TCCR2=0x00;
                        TCNT2=0x00;
                        OCR2=0x00;

                        // External Interrupt(s) initialization
                        // INT0: Off
                        // INT1: Off
                        // INT2: Off
                        MCUCR=0x00;
                        MCUCSR=0x00;

                        // 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;

                        while (1)
                        {
                        for(i=0;i<40;i++){

                        sprintf(buffer,"%d",i);
                        lcd_init();
                        lcd_clear_text();
                        lcd_setup_page(3);
                        CommandOut(GraphicsOn| TextOn | CursorOff | CursorBlinkOn);
                        lcd_xy(0,3);
                        lcd_print(buffer);
                        delay_ms(1000);


                        if(PIND.0==1)
                        {
                        while(PIND.0==1);
                        count++;
                        if(count>3){
                        PORTB=0;
                        lcd_clear_text();
                        count=0;
                        }
                        if(count<0){
                        count=0;
                        }
                        if(count==1){
                        PORTB.0=1;
                        lcd_init();
                        lcd_clear_text();
                        lcd_setup_page(3);
                        CommandOut(GraphicsOn| TextOn | CursorOff | CursorBlinkOn);
                        lcd_xy(0,3);
                        lcd_print(code10);
                        if(PIND.1==1)
                        {
                        while(PIND.1==1);
                        up++;


                        }
                        }

                        if(count==2){
                        PORTB.1=1;
                        lcd_clear_text();
                        lcd_xy(0,3);
                        lcd_print(code9);

                        }
                        if(count==3){
                        PORTB.2=1;
                        }

                        //***********************************
                        void lcd_Graphic()
                        {
                        int i;
                        lcd_clear_graphic();
                        CommandOut(GraphicsOn | TextOff | CursorOff);
                        lcd_clear_graphic();
                        DataOut(0);
                        CommandOut(AddressPointerSet);
                        SetAutoMode();
                        for(i=0;i<(Row*Column)/8 ;i++)
                        AutoOut(picture[i]);
                        ResetAutoMode();
                        }
                        //-----------------------------------------
                        void lcd_line(char line)
                        {
                        char i;
                        CommandOut(GraphicsOn | TextOn | CursorOff);
                        for(i=0;i<Column;i++)
                        lcd_pixel(i,line,1);
                        }
                        //-----------------------------------------
                        void lcd_init()
                        {
                        PORTC = 0x1F; // FS low all else high
                        DDRC = 0xff; // output portb
                        PORTA = 0;
                        DDRA = 0xff; // output porta
                        LCD_CE = 1; // All control lines HI
                        LCD_RD = 1;
                        LCD_WR = 1;
                        LCD_CD = 1;
                        LCD_RST = 0; // Reset LCD
                        delay_us(1); // Delay 1 ms for reset could be shorter
                        LCD_RST = 1; // Release Reset
                        delay_us(1); // unnecessary
                        LCD_FS1 = EightbyEight ; // Set font 8x8
                        if ( LCD_FS1 == EightbyEight) // Set Font Size
                        {
                        FontSize = 8 ;
                        charsPerRow = Column / FontSize ;
                        }
                        else
                        {
                        FontSize = 6 ;
                        charsPerRow = Column / FontSize ;
                        }
                        CommandOut(GraphicsOff | TextOff | CursorOff );
                        DataOut2(GraphBase); // Graphic Base Address
                        CommandOut(GraphicHomeAddress);
                        DataOut2(charsPerRow); // Graphic Area
                        CommandOut(GraphicAreaSet);
                        DataOut2(TextBase); // Text Base Address
                        CommandOut(TextHomeAddress);
                        DataOut2(charsPerRow); // Text Area
                        CommandOut(TextAreaSet);
                        CommandOut(EXORMode | CGROMMode); // mode set
                        CommandOut(CursorPattern | 7); // cursor is 8 lines high
                        lcd_clear_graphic();
                        lcd_clear_text();
                        lcd_cursorXY(0,0); // Move Cursor to (x,y)
                        }
                        //--------------------------------
                        void lcd_clear_graphic()
                        {
                        DataOut2(GraphBase);
                        CommandOut(AddressPointerSet);
                        AutoZero( charsPerRow * Row );
                        }

                        //----------------------------------
                        void lcd_clear_text()
                        {
                        DataOut2(TextBase);
                        CommandOut(AddressPointerSet);
                        AutoZero( charsPerRow * ( Row /8 ));
                        }
                        //---------------------------------
                        void lcd_print(char *string)
                        {
                        char *p;
                        p= string ;
                        SetAutoMode();
                        while (*p)
                        AutoOut(*p++ - 0x20);
                        ResetAutoMode();
                        }
                        //------------------------------------
                        void lcd_pixel(int X, int Y, char SetReset)
                        {
                        char Bit;
                        Bit= (FontSize-1) - (X % FontSize);
                        DataOut2(GraphBase + (Y * charsPerRow) + (X / FontSize));
                        CommandOut(AddressPointerSet);
                        if ( SetReset )
                        CommandOut(BitSet | Bit);
                        else
                        CommandOut(BitReset | Bit );
                        }
                        //------------------------------------
                        void lcd_xy(int X, int Y)
                        {
                        DataOut2(TextBase + (Y * charsPerRow) + X);
                        CommandOut(AddressPointerSet);
                        }
                        //-----------------------------------
                        void lcd_setup_page(int Pages)
                        {
                        charsPerRow = 16 * Pages;
                        DataOut2(TextBase);
                        CommandOut(TextHomeAddress);
                        DataOut2(charsPerRow);
                        CommandOut(TextAreaSet);
                        }
                        //-----------------------------------
                        void lcd_cursorXY(char X, char Y)
                        {
                        DataOut(X);
                        DataOut(Y);
                        CommandOut(CursorPointerSet);
                        }
                        //--------------------------------------
                        void AutoZero( unsigned int Terminate)
                        {
                        SetAutoMode();
                        while(Terminate--)
                        AutoOut(0);
                        ResetAutoMode() ;
                        }

                        //-------------------------------------
                        void StatBusy12()
                        {
                        char lcd_status;
                        DDRA = 0x00; // Input porta
                        do
                        {
                        LCD_CE = 0;
                        LCD_RD = 0;
                        delay_us(1);
                        lcd_status = PINA;
                        LCD_CE = 1;
                        LCD_RD = 1;
                        }
                        while ((lcd_status & Busy1Busy2) != Busy1Busy2);
                        DDRA = 0xff; // output porta

                        }
                        //-------------------------------
                        void StatDAWRDY()
                        {
                        char lcd_status;
                        DDRA = 0x00;
                        do
                        {
                        LCD_CE = 0;
                        LCD_RD = 0;
                        delay_us(1);
                        lcd_status = PINA;
                        LCD_CE = 1;
                        LCD_RD = 1;
                        }
                        while ((lcd_status & DAWRDY) != DAWRDY);
                        DDRA = 0xff;

                        }
                        //------------------------------
                        void DataOut(char b)
                        {
                        StatBusy12();
                        LCD_CD = 0;
                        PORTA = b;
                        LCD_CE = 0;
                        LCD_WR = 0;
                        LCD_CE = 1;
                        LCD_WR = 1;
                        LCD_CD = 1;
                        }
                        //------------------------------
                        void DataOut2(int data)
                        {
                        DataOut(data & 0xFF);
                        DataOut(data >> 8);
                        }
                        //------------------------------
                        void CommandOut(char b)
                        {
                        StatBusy12();
                        PORTA = b;
                        LCD_CE = 0;
                        LCD_WR = 0;
                        LCD_CE = 1;
                        LCD_WR = 1;
                        }
                        //-------------------------------
                        void SetAutoMode()
                        {
                        CommandOut(DataAutoWrite);
                        }
                        //--------------------------------

                        void AutoOut(char b)
                        {
                        StatDAWRDY();
                        LCD_CD = 0;
                        PORTA = b;
                        LCD_CE = 0;
                        LCD_WR = 0;
                        LCD_CE = 1;
                        LCD_WR = 1;
                        LCD_CD = 1;
                        }
                        //---------------------------------
                        void ResetAutoMode()
                        {
                        StatDAWRDY();
                        PORTA = AutoReset;
                        LCD_CE = 0;
                        LCD_WR = 0;
                        LCD_CE = 1;
                        LCD_WR = 1;
                        }


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



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

                        دیدگاه


                          #87
                          پاسخ : رسم خطوط و اشکال در ال سی دی گرافیکی

                          [quote author=محمد یارمحمدی link=topic=8864.msg40521#msg40521 date=1187771258]
                          ببخشید این قسمت که نوشتید ftoa(i,0,lcd_str1);
                          را می شه توضیح بدید error میده .

                          دیدگاه


                            #88
                            پاسخ : رسم خطوط و اشکال در ال سی دی گرافیکی

                            این دستور یک متغییر float که اینجا i هست رو با صفر رقم اعشار به آرایه تبدیل میکنه و میریزه تو lcd_str1 .تا اونجایی که یادم هست باید include<stdlib.h> l#رو به برنامت اضافه کنی تا دیگه error نده....

                            دیدگاه


                              #89
                              پاسخ : رسم خطوط و اشکال در ال سی دی گرافیکی

                              آقا
                              دستم به دامنتون الان 2 هفته است یه ال سی دی گرافیکی مدل TS12864A2 V1.1 خریدم حتی نمی تونم روشنش کنم
                              توی کد ویزارد مربوط به کدویژن تنظیماتی ندیدم

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


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


                              ببخشید پا برهنه اومدم وسط بحث تون :redface: :sad: :sad: :sad: :sad: :sad:
                              به امید اینکه در پناه یزدان هر روز موضوع جدیدی در زندگی یاد بگیریم و بتوانیم از آن به بهترین شکل استفاده کنیم

                              دیدگاه


                                #90
                                پاسخ : رسم خطوط و اشکال در ال سی دی گرافیکی

                                سلام دوستان
                                من نقطه و خط رو با برزنهام رسم کردم
                                اما دایره رو مشکل دارم
                                همون کد تو سی کار میکنه اما تو کد ویژن درست عمل نمیکنه
                                خیلی از مواردش رو هم چک کردم
                                حتی انواع متغیر علامت دار و بی علامت رو براش انتخاب کردم
                                اما نشد
                                فردا برم شرکت باز کدم رو میزارم ببینید
                                شاید بتونید راهنمایی کنید
                                ممنون

                                دیدگاه

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