اطلاعیه

Collapse
No announcement yet.

استفاده از character lcd در CodeVisionAVR بااتصال lcd به پایه های دلخواه میکرو

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

    استفاده از character lcd در CodeVisionAVR بااتصال lcd به پایه های دلخواه میکرو

    برای استفاده از lcd در کدویژن بایستی یک پورت مشخص را به آن اختصاص دهیم که این عمل انعطاف پذیری کمی برای استفاده بهینه از پایه های میکرو را دربر دارد. برای رفع این مشکل من در فایل lcd_flxpin.c با تعریف امکان استفاده از پایه های دلخواه را قرارداده ام.

    نحوه استفاده:
    1) فایل lcd_flxpin.c را در شاخه پروژه کپی کنید و آنرا برای پایه های مورد نظرتان ویرایش کنید.
    2) آنرا توسط دستور #include <lcd_flxpin.c> بعد از معرفی میکرو، معرفی کنید.
    3) مانند توابع lcd ازآن استفاده کنید.فقط به هر دستور _flxpin اضافه کنید مانند: lcd_flxpin_gotoxy() بجای lcd_gotoxy() .

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

    در ضمن نسخه crack شده CodeVisionAVR v2.03.4 رو از آدرس زیر بگیرین.

    http://www.giga.dp.ua/download/file.php?id=4807
    http://www.giga.dp.ua/download/file.php?id=4806

    لینک دانلود:
    http://www.4shared.com/account/file/55994924/d4d59a4c/LCD_FLXPIN.html



    #2
    پاسخ : استفاده از character lcd در CodeVisionAVR بااتصال lcd به پایه های دلخواه میکرو

    سلام ........ اگه از ارسال سریال برای ارتباط با LCD استفاده کنید ، دیگه نیازی به در گیری 4 پایه هم نیست . اما کاری که شما انجام دادید ایده ی جالبیه . من تا حالا شبه فایل رو به کتابخونه تبدبل نکردم . ولی تو این سایت هستند دوستانی که این کار رو انجام میدن .شرمنده . موفق باشید .
    دوستان! مدتی کمتر به سایت میام ..

    دیدگاه


      #3
      پاسخ : استفاده از character lcd در CodeVisionAVR بااتصال lcd به پایه های دلخواه میکرو

      برای ارتباط سریال با lcd نیاز به آسی سریال به پارارل داری در صورتی که پروتوکل ارتباط چهار سیمه رو char lcd ها مستقیما دارن.

      دیدگاه


        #4
        پاسخ : استفاده از character lcd در CodeVisionAVR بااتصال lcd به پایه های دلخواه میکرو

        سلام ........... منظورتون یه واحدUART یا یه چیز مشابهه؟
        در ضمن من با کدهای سریال با LCD کاراکتری ارتباط برقرار کردم . (بدون هیچ آیسی مبدل چون اصلا نیازی نیست)
        الانم دارم سعی میکنم با پروتکل I2C با LCD کاراکتری ارتباط برقرار کنم . موفق باشید .
        دوستان! مدتی کمتر به سایت میام ..

        دیدگاه


          #5
          پاسخ : استفاده از character lcd در CodeVisionAVR بااتصال lcd به پایه های دلخواه میکرو

          میشه بگید مدل lcd شما چیه من از مدل 16x2 bona استفاده میکنم که ارتباط سریال نداره درضمن تاجایی که من میدونم در کدویژن کتابخانه ای برای ارتباط سریال با char lcd نداریم.

          دیدگاه


            #6
            پاسخ : استفاده از character lcd در CodeVisionAVR بااتصال lcd به پایه های دلخواه میکرو

            سلام ...........
            lm016l . در ضمن برای ارتباط میتونید خودتون مستقیم از دستورات سطح پایین ارتباط با LCD استفاده کنید . نیازی هم به کتابخونه ی CodeVision نیست . این کار درسته که یه کم طول میکشه و وقت گیره اما شدنیست !!! موفق باشید .
            دوستان! مدتی کمتر به سایت میام ..

            دیدگاه


              #7
              پاسخ : استفاده از character lcd در CodeVisionAVR بااتصال lcd به پایه های دلخواه میکرو

              سلام
              تشکر میکنم که شما شما به این پست جواب میدید.
              در ضمن اگه lcd که گفتید رو توبازار تهیه کردم حتما این کاررومیکنم.اگه مشخصه خاصی داره بگید تا برای خرید راحت پیدا کنمش. آخه همیشه چیزی که میخایم فروشنده ها ندارن.

              دیدگاه


                #8
                پاسخ : استفاده از character lcd در CodeVisionAVR بااتصال lcd به پایه های دلخواه میکرو

                سلام ..............
                خواهش می کنم .
                نه ویژگی خاصی نداره، شمارش رو که بگید بهتون میدن. اگر تهران هستید ، فکر کنم جوان الکترونیک داشته باشه . موفق باشید .
                دوستان! مدتی کمتر به سایت میام ..

                دیدگاه


                  #9
                  پاسخ : استفاده از character lcd در CodeVisionAVR بااتصال lcd به پایه های دلخوا

                  نوشته اصلی توسط mohammad9750
                  برای استفاده از lcd در کدویژن بایستی یک پورت مشخص را به آن اختصاص دهیم که این عمل انعطاف پذیری کمی برای استفاده بهینه از پایه های میکرو را دربر دارد. برای رفع این مشکل من در فایل lcd_flxpin.c با تعریف امکان استفاده از پایه های دلخواه را قرارداده ام.

                  نحوه استفاده:
                  1) فایل lcd_flxpin.c را در شاخه پروژه کپی کنید و آنرا برای پایه های مورد نظرتان ویرایش کنید.
                  2) آنرا توسط دستور #include <lcd_flxpin.c> بعد از معرفی میکرو، معرفی کنید.
                  3) مانند توابع lcd ازآن استفاده کنید.فقط به هر دستور _flxpin اضافه کنید مانند: lcd_flxpin_gotoxy() بجای lcd_gotoxy() .

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

                  در ضمن نسخه crack شده CodeVisionAVR v2.03.4 رو از آدرس زیر بگیرین.

                  http://www.giga.dp.ua/download/file.php?id=4807
                  http://www.giga.dp.ua/download/file.php?id=4806

                  لینک دانلود:
                  http://www.4shared.com/account/file/55994924/d4d59a4c/LCD_FLXPIN.html


                  سلام
                  این فایل از 4shared پاک شده
                  من به فایل ایشون نیاز دارم براشون پیغام گذاشتم، میل هم زدم اما جواب ندادن فکر کنم از دوستانی هستند که یکبار یه مطلبی نوشتن و دیگر برای همیشه ترک سایت گفتن :smile:
                  اگر کسی این فایل را دارد دوباره پلود کند ممنون می شوم
                  چه خوش است زر خالی که به آتش اندر آيد
                  چو کند درون آتش هنر و گهرنمائی
                  مگريز ای برادر تو ز شعله های آذر
                  ز برای امتحان را چه شود اگر درآئی
                  به خدا ترا نسوزد رخ تو چو زر فروزد
                  که خليل زاده ای تو زقديم آشنائی چو خليل رو در آتش که تو خالصی و دلپاک در خيبر است برکن که علی مرتضائی.

                  دیدگاه


                    #10
                    پاسخ : استفاده از character lcd در CodeVisionAVR بااتصال lcd به پایه های دلخواه میکرو

                    سلام .........................

                    ورژن دیگه ای از نرم افزار رو براتون میذارم ببینید می تونه مفید باشه .

                    http://www.4shared.com/file/44614850/36c0509b/CodeVision_AVR_1248d.html

                    موفق باشید .
                    دوستان! مدتی کمتر به سایت میام ..

                    دیدگاه


                      #11
                      پاسخ : استفاده از character lcd در CodeVisionAVR بااتصال lcd به پایه های دلخواه میکرو

                      /************************************************** ***
                      This program was produced by the
                      CodeWizardAVR V2.03.4 Standard
                      Automatic Program Generator
                      © Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
                      http://www.hpinfotech.com

                      Project :Configure Character LCD with
                      desired pin assignment (FLeXible PIN)
                      in CodeVisionAvr

                      Version : 1.01
                      Date : 2008/07/18
                      Author : Mohammad Mirseyedi Anbaran
                      Company : Iran
                      Comments: Please note you should
                      1) define your desired "PINX.x=PORTX.x=DDRX.x"
                      in Pin definition section or use default
                      2) #include <lcd_flxpin.c> in your program
                      after including your chip header
                      then use it in the same way you use
                      original CodeVision lcd function but
                      add _flxpin in the middle of each command.


                      Chip type : ATmega32L
                      Program type : Application
                      Clock frequency : 1.000000 MHz
                      Memory model : Small
                      External RAM size : 0
                      Data Stack size : 512
                      Changes :
                      1.01: in lcd_flexpin_init()
                      lcd_Ddirection(INPT);__lcd_rs = 1; wrong
                      lcd_Ddirection(INPT);__lcd_rd = 1; right

                      2.00: Graphic LCD (samsung base KS0107B chip)
                      added

                      Comments on v2.00:
                      be sure to initialize GLCD if it shares the same data port with other devices (like char LCD)
                      because it sends "Status Read" and disturb other datas.
                      (Status Read command functions even without GLCD initialization )
                      after initializing seting "GLCD_RS=0,GLCD_RW=1" (Status Read Command)
                      has no effect till coming a E high to low signal.

                      ************************************************** ***/

                      #include <mega32.h>

                      #define __lcd_rs PORTB.4
                      #define __lcd_rsD DDRB.4
                      #define __lcd_rd PORTB.5
                      #define __lcd_rdD DDRB.5
                      #define __lcd_en PORTB.2
                      #define __lcd_enD DDRB.2


                      /* Pin definition section*/

                      //RS
                      #ifndef __lcd_rs
                      #define __lcd_rs PORTA.0
                      #endif
                      #ifndef __lcd_rsD
                      #define __lcd_rsD DDRA.0
                      #endif

                      //RD
                      #ifndef __lcd_rd
                      #define __lcd_rd PORTA.1
                      #endif
                      #ifndef __lcd_rdD
                      #define __lcd_rdD DDRA.1
                      #endif

                      //EN
                      #ifndef __lcd_en
                      #define __lcd_en PORTA.2
                      #endif
                      #ifndef __lcd_enD
                      #define __lcd_enD DDRA.2
                      #endif

                      //D4
                      #ifndef __lcd_d4
                      #define __lcd_d4 PORTA.4
                      #endif
                      #ifndef __lcd_d4D
                      #define __lcd_d4D DDRA.4
                      #endif
                      #ifndef __lcd_d4P
                      #define __lcd_d4P PINA.4
                      #endif

                      //D5
                      #ifndef __lcd_d5
                      #define __lcd_d5 PORTA.5
                      #endif
                      #ifndef __lcd_d5D
                      #define __lcd_d5D DDRA.5
                      #endif
                      #ifndef __lcd_d5P
                      #define __lcd_d5P PINA.5
                      #endif

                      //D6
                      #ifndef __lcd_d6
                      #define __lcd_d6 PORTA.6
                      #endif
                      #ifndef __lcd_d6D
                      #define __lcd_d6D DDRA.6
                      #endif
                      #ifndef __lcd_d6P
                      #define __lcd_d6P PINA.6
                      #endif

                      //D7
                      #ifndef __lcd_d7
                      #define __lcd_d7 PORTA.7
                      #endif
                      #ifndef __lcd_d7D
                      #define __lcd_d7D DDRA.7
                      #endif
                      #ifndef __lcd_d7P
                      #define __lcd_d7P PINA.7
                      #endif



                      //====
                      /* Pin definition section*/
                      //====

                      #define LCD_PORT PORTA
                      #define LCD_PORT_DDRx DDRA


                      #define GLCD_E PORTC.6
                      #define GLCD_E_DDR DDRC.6

                      #define GLCD_RST PORTC.7
                      #define GLCD_RST_DDR DDRC.7

                      #define GLCD_RS PORTB.5
                      #define GLCD_RS_DDR DDRB.5

                      #define GLCD_RW PORTB.4
                      #define GLCD_RW_DDR DDRB.4

                      #define GLCD_CS1 PORTB.6
                      #define GLCD_CS1_DDR DDRB.6

                      #define GLCD_CS2 PORTB.7
                      #define GLCD_CS2_DDR DDRB.7



                      /* identifiers */
                      #define OUTPT 1
                      #define INPT 0



                      /*GLCD identifiers */
                      #define ALLOUT 0xFF

                      #define ENABLE 1
                      #define DISABLE 0

                      #define ACTIVE 0
                      #define INACTIVE 1

                      // GLCD Commands
                      #define COMMAND_MODE 0
                      #define DATA_MODE 1

                      #define READ 0
                      #define WRITE 1

                      #define GLCD_DISPLAY_OFF 0x3E
                      #define GLCD_DISPLAY_ON 0x3F
                      #define GLCD_COLUMN_ZERO 0x40 // colum address(Y) = 0
                      #define GLCD_PAGE_ZERO 0xB8 // page address(X) = 0
                      #define GLCD_DISPALY_START_LINE_ZERO 0xC0 // Display start line = 0



                      #pragma used+
                      void _lcd_flxpin_ready(void);
                      void _lcd_flxpin_write_data(unsigned char data);
                      void lcd_flxpin_write_byte(unsigned char addr, unsigned char data);
                      static unsigned char lcd_flxpin_read_byte0(void);
                      unsigned char lcd_flxpin_read_byte(unsigned char addr);
                      void lcd_flxpin_gotoxy(unsigned char x, unsigned char y);
                      void lcd_flxpin_clear(void);
                      void lcd_flxpin_putchar(char c);
                      void lcd_flxpin_puts(char *str);
                      void lcd_flxpin_putsf(char flash *str);
                      unsigned char lcd_flxpin_init(unsigned char lcd_columns);
                      #pragma used-


                      #pragma used+
                      static unsigned char _base_flxpin_y[4]={0x80,0xc0};
                      unsigned char _lcd_flxpin_x,_lcd_flxpin_y,_lcd_flxpin_maxx;
                      #pragma used-

                      static void _lcd_Ddirection(unsigned char direct)
                      {
                      if (direct){
                      __lcd_d4D =1;
                      __lcd_d5D =1;
                      __lcd_d6D =1;
                      __lcd_d7D =1;
                      }else{ //INPT
                      __lcd_d4D =0;
                      __lcd_d5D =0;
                      __lcd_d6D =0;
                      __lcd_d7D =0;
                      }
                      }


                      static void _lcd_flxpin_delay(void)
                      {
                      #asm
                      ldi r31,15
                      __lcd_flxpin_delay0:
                      dec r31
                      brne __lcd_flxpin_delay0
                      #endasm
                      }


                      void _lcd_flxpin_ready(void)
                      {
                      unsigned char d7;
                      _lcd_Ddirection(INPT);
                      __lcd_rd = 1;
                      __lcd_rs = 0;
                      do{
                      _lcd_flxpin_delay();
                      __lcd_en = 1;
                      _lcd_flxpin_delay();
                      d7=__lcd_d7P;

                      __lcd_en = 0;
                      _lcd_flxpin_delay();
                      __lcd_en = 1;
                      _lcd_flxpin_delay();
                      __lcd_en = 0;
                      }
                      while(d7==1);
                      }


                      void _lcd_flxpin_write_data(unsigned char data)
                      {
                      __lcd_rd = 0;

                      _lcd_Ddirection(OUTPT);
                      __lcd_rsD = 1;
                      __lcd_rdD = 1;
                      __lcd_enD = 1;

                      //RD=0, write MSN
                      __lcd_d7 = (data & 0b10000000) >> 7;
                      __lcd_d6 = (data & 0b01000000) >> 6;
                      __lcd_d5 = (data & 0b00100000) >> 5;
                      __lcd_d4 = (data & 0b00010000) >> 4;
                      __lcd_en = 1;
                      _lcd_flxpin_delay();
                      __lcd_en = 0;
                      _lcd_flxpin_delay();

                      //write LSN
                      __lcd_d7 = (data & 0b00001000) >> 3;
                      __lcd_d6 = (data & 0b00000100) >> 2;
                      __lcd_d5 = (data & 0b00000010) >> 1;
                      __lcd_d4 = (data & 0b00000001) >> 0;
                      __lcd_en = 1;
                      _lcd_flxpin_delay();
                      __lcd_en = 0;
                      _lcd_flxpin_delay();

                      __lcd_rd = 1;
                      }


                      /* write a byte to the LCD character generator or display RAM */
                      void lcd_flxpin_write_byte(unsigned char addr, unsigned char data)
                      {
                      _lcd_flxpin_ready();
                      _lcd_flxpin_write_data(addr);
                      _lcd_flxpin_ready();

                      __lcd_rs = 1;

                      _lcd_flxpin_write_data(data);
                      }


                      static unsigned char lcd_flxpin_read_byte0(void)
                      {
                      unsigned char data = 0;

                      _lcd_flxpin_ready();

                      // read MSN
                      __lcd_en = 1;
                      _lcd_flxpin_delay();
                      data |= (__lcd_d7P | 0b00000000) << 7;
                      data |= (__lcd_d6P | 0b00000000) << 6;
                      data |= (__lcd_d5P | 0b00000000) << 5;
                      data |= (__lcd_d4P | 0b00000000) << 4;
                      __lcd_en = 0;
                      _lcd_flxpin_delay();

                      // read LSN
                      __lcd_en = 1;
                      _lcd_flxpin_delay();
                      data |= (__lcd_d7P | 0b00000000) << 3;
                      data |= (__lcd_d6P | 0b00000000) << 2;
                      data |= (__lcd_d5P | 0b00000000) << 1;
                      data |= (__lcd_d4P | 0b00000000) << 0;
                      __lcd_en = 0;
                      _lcd_flxpin_delay();

                      __lcd_rd = 0;

                      return data;
                      }


                      /* read a byte from the LCD character generator or display RAM */
                      unsigned char lcd_flxpin_read_byte(unsigned char addr)
                      {
                      _lcd_flxpin_ready();
                      _lcd_flxpin_write_data(addr);
                      _lcd_flxpin_ready();
                      _lcd_Ddirection(INPT);
                      __lcd_rs = 1;
                      return lcd_flxpin_read_byte0();
                      }


                      /* set the LCD display position x=0..39 y=0..3 */
                      void lcd_flxpin_gotoxy(unsigned char x, unsigned char y)
                      {
                      _lcd_flxpin_ready(); // RS=0
                      _lcd_flxpin_write_data(_base_flxpin_y[y]+x);
                      _lcd_flxpin_x=x;
                      _lcd_flxpin_y=y;
                      }


                      // clear the LCD
                      void lcd_flxpin_clear(void)
                      {
                      _lcd_flxpin_ready(); // RS=0
                      _lcd_flxpin_write_data(2); // cursor home
                      _lcd_flxpin_ready();
                      _lcd_flxpin_write_data(0xc); // cursor off
                      _lcd_flxpin_ready();
                      _lcd_flxpin_write_data(1); // clear
                      _lcd_flxpin_x=_lcd_flxpin_y=0;
                      }


                      void lcd_flxpin_putchar(char c)
                      {
                      if (!(c-10))
                      {
                      ++_lcd_flxpin_y;
                      lcd_flxpin_gotoxy(0,_lcd_flxpin_y);
                      }
                      else
                      {
                      ++_lcd_flxpin_x;
                      if (_lcd_flxpin_x>_lcd_flxpin_maxx)
                      {
                      ++_lcd_flxpin_y;
                      lcd_flxpin_gotoxy(0,_lcd_flxpin_y);
                      }
                      _lcd_flxpin_ready();
                      __lcd_rs = 1;
                      _lcd_flxpin_write_data(c);
                      }
                      }


                      // write the string str located in SRAM to the LCD
                      void lcd_flxpin_puts(char *str)
                      {
                      char k;
                      k=*str++;
                      while (k)
                      {
                      lcd_flxpin_putchar(k);
                      k=*str++;
                      }
                      }


                      // write the string str located in FLASH to the LCD
                      void lcd_flxpin_putsf(char flash *str)
                      {
                      char k;
                      k=*str++;
                      while (k)
                      {
                      lcd_flxpin_putchar(k);
                      k=*str++;
                      }
                      }


                      static void _long_flxpin_delay(void)
                      {
                      #asm
                      clr r26
                      clr r27
                      __long_flxpin_delay0:
                      sbiw r26,1 ;2 cycles
                      brne __long_flxpin_delay0 ;2 cycles
                      #endasm
                      }


                      static void _lcd_flxpin_init_write(unsigned char data)
                      {
                      _lcd_Ddirection(OUTPT);
                      __lcd_rsD = 1;
                      __lcd_rdD = 1;
                      __lcd_enD = 1;

                      __lcd_rd = 0;

                      __lcd_d7 = (data & 0b10000000) >> 7;
                      __lcd_d6 = (data & 0b01000000) >> 6;
                      __lcd_d5 = (data & 0b00100000) >> 5;
                      __lcd_d4 = (data & 0b00010000) >> 4;
                      __lcd_en = 1;
                      _lcd_flxpin_delay();
                      __lcd_en = 0;
                      _lcd_flxpin_delay();

                      __lcd_rd = 1;
                      }


                      // initialize the LCD controller
                      unsigned char lcd_flxpin_init(unsigned char lcd_columns)
                      {
                      __lcd_enD = 1;
                      __lcd_rsD = 1;
                      __lcd_en = 0;
                      __lcd_rs = 0;

                      _lcd_flxpin_maxx=lcd_columns;
                      _base_flxpin_y[2]=lcd_columns+0x80;
                      _base_flxpin_y[3]=lcd_columns+0xc0;


                      /*4-bit initializations starts*/

                      _long_flxpin_delay(); //Wait for more than 40ms after VCC rises to 2.7V

                      //Function set (Interface is 8-bits long.) BusyFlag cannot be checked before this instruction.
                      _lcd_flxpin_init_write(0x30);
                      _long_flxpin_delay(); //Wait for more than 4.1 ms

                      //Function set (Interface is 8-bits long.) BusyFlag cannot be checked before this instruction.
                      _lcd_flxpin_init_write(0x30);
                      _long_flxpin_delay(); //Wait for more than 100 µs

                      //Function set (Interface is 8-bits long.) BusyFlag cannot be checked before this instruction.
                      _lcd_flxpin_init_write(0x30);
                      _long_flxpin_delay();
                      //BusyFlag can be checked after the following instructions.
                      //When BusyFlag is not checked, the waiting time between instructions
                      // is longer than the execution instuction time.


                      //Function set (Set interface to be 4-bits long.)
                      // Sets to 4-bit operation.In this case, operation is handled as 8 bits by initialization,and
                      // only this instruction completes with one write.
                      _lcd_flxpin_init_write(0x20);
                      _long_flxpin_delay();

                      //Sets the data width 4-bits long and the number of lines in the display is 2,
                      _lcd_flxpin_write_data(0x28);
                      _long_flxpin_delay();

                      //Entry Mode Set (Sets the cursor move direction Increment and enables the display.
                      _lcd_flxpin_write_data(4);
                      _long_flxpin_delay();

                      //Sets the DDRAM address (To 0x05). Data may be written or read after making this setting.
                      _lcd_flxpin_write_data(0x85);
                      _long_flxpin_delay();

                      _lcd_Ddirection(INPT);
                      __lcd_rd = 1;
                      if (lcd_flxpin_read_byte0()!=5) return 0;

                      _lcd_flxpin_ready();
                      _lcd_flxpin_write_data(6); // Display Shift :OFF increment Address Counter

                      lcd_flxpin_clear();
                      return 1;
                      }




                      /*Graphic LCD Functions*/
                      void glcd_latch(void)
                      {
                      _lcd_flxpin_delay(); //delay_us(7);
                      GLCD_E= ENABLE;
                      _lcd_flxpin_delay(); //delay_us(7);
                      GLCD_E= DISABLE;
                      }


                      void glcd_write(char columns,char page,char data)
                      {
                      if(columns >= 64)
                      {
                      GLCD_CS1 = DISABLE;
                      GLCD_CS2 = ENABLE;
                      }
                      else
                      {
                      GLCD_CS1 = ENABLE;
                      GLCD_CS2 = DISABLE;
                      }

                      GLCD_RS = COMMAND_MODE;
                      GLCD_RW = READ;
                      LCD_PORT = GLCD_PAGE_ZERO | page;
                      glcd_latch();

                      GLCD_RS = COMMAND_MODE;
                      GLCD_RW = READ;
                      LCD_PORT = GLCD_COLUMN_ZERO | columns;
                      glcd_latch();

                      GLCD_RS = DATA_MODE;
                      GLCD_RW = READ;
                      LCD_PORT = data;
                      glcd_latch();
                      }


                      void glcd_command(unsigned char command,unsigned char chip)
                      {
                      if (chip==1 || chip==0)
                      {
                      GLCD_CS1 = ENABLE;
                      GLCD_CS2 = DISABLE;
                      GLCD_RS = COMMAND_MODE;
                      GLCD_RW = READ;
                      LCD_PORT = command;
                      glcd_latch();
                      }
                      if (chip==2 || chip==0)
                      {
                      GLCD_CS1 = DISABLE;
                      GLCD_CS2 = ENABLE;
                      GLCD_RS = COMMAND_MODE;
                      GLCD_RW = READ;
                      LCD_PORT = command;
                      glcd_latch();
                      }
                      }


                      void glcd_start_line(unsigned char line)
                      {
                      char j;
                      for(j=0;j<2;j++)
                      {
                      GLCD_CS1 = ~GLCD_CS1;
                      GLCD_CS2 = ~GLCD_CS1;
                      GLCD_RS = COMMAND_MODE;
                      GLCD_RW = READ;
                      LCD_PORT = GLCD_DISPALY_START_LINE_ZERO | line;
                      glcd_latch();
                      }
                      }


                      void glcd_init(void)
                      {
                      unsigned char i;

                      LCD_PORT_DDRx |= ALLOUT;
                      GLCD_E_DDR = OUTPT;
                      GLCD_RST_DDR =OUTPT;
                      GLCD_RS_DDR = OUTPT;
                      GLCD_RW_DDR = OUTPT;
                      GLCD_CS1_DDR = OUTPT;
                      GLCD_CS2_DDR = OUTPT;

                      GLCD_RST = ACTIVE;
                      _long_flxpin_delay(); //delay_ms(10);
                      GLCD_RST = INACTIVE;
                      _long_flxpin_delay(); //delay_ms(100);
                      GLCD_RS = COMMAND_MODE;
                      GLCD_RW = READ;
                      GLCD_CS1 = DISABLE;
                      GLCD_CS2 = ENABLE;

                      for(i=0;i<2;i++)
                      {
                      LCD_PORT = GLCD_DISPLAY_OFF;
                      glcd_latch();

                      LCD_PORT = GLCD_COLUMN_ZERO;
                      glcd_latch();

                      LCD_PORT = GLCD_PAGE_ZERO;
                      glcd_latch();

                      LCD_PORT = GLCD_DISPALY_START_LINE_ZERO;
                      glcd_latch();

                      LCD_PORT = GLCD_DISPLAY_ON;
                      glcd_latch();

                      GLCD_CS1 = ~GLCD_CS1;
                      GLCD_CS2 = ~GLCD_CS2;
                      }
                      }


                      دیدگاه


                        #12
                        پاسخ : استفاده از character lcd در CodeVisionAVR بااتصال lcd به پایه های دلخوا

                        سلام ......................

                        جناب محمد ممنون که نتیجه ی کارتون رو قرار دادید . فقط یه سوال برای اینکه بیشتر در مورد نوع کارتون بحث کنیم و اون اینکه یک مقدار در مورد روال اجرای برنامه توضیح میفرمایید . ممنون و موفق باشید .
                        دوستان! مدتی کمتر به سایت میام ..

                        دیدگاه


                          #13
                          پاسخ : استفاده از character lcd در CodeVisionAVR بااتصال lcd به پایه های دلخواه میکرو

                          سلام از دوستان خواهش می کنم اگه کسی تونسته اون رو بصورت یک کتابخانه در بیاره بذاره تا من بیسواد که بلد نیستم استفاده کنن در عوضش من هم دعاش می کنم به خدا.

                          دیدگاه


                            #14
                            پاسخ : استفاده از character lcd در CodeVisionAVR بااتصال lcd به پایه های دلخواه میکرو

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

                            دیدگاه


                              #15
                              پاسخ : استفاده از character lcd در CodeVisionAVR بااتصال lcd به پایه های دلخواه میکرو

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

                              دیدگاه

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