اطلاعیه

Collapse
No announcement yet.

راه اندازی lcd کارکتری در زبان c

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

    راه اندازی lcd کارکتری در زبان c

    سلام دوستان من میخوام lcd کارکتریو تو زبان c بدون کد ویزارت کدویژن مثل راه اندازی تو bascom و مشخص کردن تک تک پین ها راه اندازی کنم انقدر باهاش سرو کله زدم مخم تاب برداشت کلی تو اینترنت گشتم یهو خودمو ما بین دستورات اسمبلی زیاد و البته نامفهوم یافتم و بعد کلی سر کله زدن با هاشون یکشونو یاد گرفتم بعد فهمیدم اونم جز متغییری بیش نبوده :angry: تو bascom راحت میشه پورت ها رو معرفی کنی و توابع اماده برای کار باهاش داره ولی تو زبان c اینطور نیست ((ای کاش میشد دستورات بیسیک هم بینا بین دستورات c به کار برد :sad) حالا اگه میشه لطفا به من کمک کنید من فقط میخوام دانشمو بالا ببرم و از دست کد ویزارت و بسکام خلاص بشم .
    با تشکر که پست منو میخونین وبهش جواب میدین :smile:
    سقراط : دانش من بدانجایی رسید که فهمیدم هیچ نمیدانم.

    #2
    پاسخ : راه اندازی lcd کارکتری در زبان c

    نوشته اصلی توسط sajad12365
    سلام دوستان من میخوام lcd کارکتریو تو زبان c بدون کد ویزارت کدویژن مثل راه اندازی تو bascom و مشخص کردن تک تک پین ها راه اندازی کنم انقدر باهاش سرو کله زدم مخم تاب برداشت کلی تو اینترنت گشتم یهو خودمو ما بین دستورات اسمبلی زیاد و البته نامفهوم یافتم و بعد کلی سر کله زدن با هاشون یکشونو یاد گرفتم بعد فهمیدم اونم جز متغییری بیش نبوده :angry: تو bascom راحت میشه پورت ها رو معرفی کنی و توابع اماده برای کار باهاش داره ولی تو زبان c اینطور نیست ((ای کاش میشد دستورات بیسیک هم بینا بین دستورات c به کار برد :sad) حالا اگه میشه لطفا به من کمک کنید من فقط میخوام دانشمو بالا ببرم و از دست کد ویزارت و بسکام خلاص بشم .
    با تشکر که پست منو میخونین وبهش جواب میدین :smile:
    سلام دوست من
    بله منم احتمالا مثل شما اولش با بسکام کار میکردم
    چند وقت پیش یکی از اساتید انجمن منو اموزش داد و الان باید بگم که اگهCیاد داشته باشی دیگه سراغ بسکام نمیری
    حالا برای مثال یه ترتیب از پایه های LCD که متصل کردی بزار یه برنامه بسیار ساده بهت بدم :agree:
    البته با کد ویزارد خیلی راحت میتونی :nerd:
    http://s6.uplod.ir/i/00674/9cm41hm4inx0.jpg

    دیدگاه


      #3
      پاسخ : راه اندازی lcd کارکتری در زبان c

      دمت گرم برادر

      اگه یه روز کدویزارت منقرض شد(شوخی :mrgreen ما باید چیکار کنیم باید یه چیزایی بلد باشیم دیگه
      سقراط : دانش من بدانجایی رسید که فهمیدم هیچ نمیدانم.

      دیدگاه


        #4
        پاسخ : راه اندازی lcd کارکتری در زبان c

        یادت رفت بگی میکروت چیه و lcdچند در چند داری؟
        http://s6.uplod.ir/i/00674/9cm41hm4inx0.jpg

        دیدگاه


          #5
          پاسخ : راه اندازی lcd کارکتری در زبان c

          شرمنده
          atmega16a
          16*2
          سقراط : دانش من بدانجایی رسید که فهمیدم هیچ نمیدانم.

          دیدگاه


            #6
            پاسخ : راه اندازی lcd کارکتری در زبان c

            دشمنت
            http://s4.picofile.com/file/8165557626/sajjad.rar.html
            اقا جان این برنامه رو برات نوشتم بریز رو ایسی تست کن
            هرجاشم که مشکل داشت بگو توضیح بدم
            ببخشید طول کشید نت قطع شد
            http://s6.uplod.ir/i/00674/9cm41hm4inx0.jpg

            دیدگاه


              #7
              پاسخ : راه اندازی lcd کارکتری در زبان c

              داداش دستت درد نکنه برنامه هم واظه وروشن بود
              سقراط : دانش من بدانجایی رسید که فهمیدم هیچ نمیدانم.

              دیدگاه


                #8
                پاسخ : راه اندازی lcd کارکتری در زبان c

                خواهش میشه
                http://s6.uplod.ir/i/00674/9cm41hm4inx0.jpg

                دیدگاه


                  #9
                  پاسخ : راه اندازی lcd کارکتری در زبان c

                  راستی یک سوال پورتا رو کجا معرفی کردی
                  تو بسکام پورتا به نام معرفی میشه تو c چطوریه ؟
                  سقراط : دانش من بدانجایی رسید که فهمیدم هیچ نمیدانم.

                  دیدگاه


                    #10
                    پاسخ : راه اندازی lcd کارکتری در زبان c

                    توی cبر اساس ddrوportوpin
                    اما من کاری به اینا ندارم یکم برنامه نویسی cیاد دارم از خود کد ویزاردش استفاده کن حالشو ببر تازه نسبت به اتمل استودیو هم بهینه تره
                    توی ویزارد تنظیمات همه چیو تنظیم میکنی خودشکد ها یا پیکر بندی های بسکام رو انجام میده تو برنامه نشون میزنه اینجا وقفه تایمر یک هست و....
                    اگه ی کد چند خطی باهاش بنویسی هرگز سراغ بسکام نخواهی رفت
                    http://s6.uplod.ir/i/00674/9cm41hm4inx0.jpg

                    دیدگاه


                      #11
                      پاسخ : راه اندازی lcd کارکتری در زبان c

                      نوشته اصلی توسط MAHDI ZAMANI
                      دشمنت
                      http://s4.picofile.com/file/8165557626/sajjad.rar.html
                      اقا جان این برنامه رو برات نوشتم بریز رو ایسی تست کن
                      هرجاشم که مشکل داشت بگو توضیح بدم
                      ببخشید طول کشید نت قطع شد
                      سلام
                      شما از کد ویزارد استفاده کردید :redface:

                      توی کد ویزارد ما میایم پایه های LCD رو معرفی میکنیم که به کجا وصل بشه

                      اما اگه بخوایم این کار رو با کد نویسی انجام بدیم باید چیکار کنیم؟ :redface:
                      "زمان خط است نه دايره" چه ايده بدي بوده گرد ساختن ساعت. احساس ميکني هميشه فرصت تکرار است.
                      ساعت دروغ ميگويد. دروغ. زمان بر گرد يک دايره نمي چرخد! زمان بر روي خطي مستقيم ميدود. و هيچگاه، هيچگاه، هيچگاه باز نميگردد.
                      ساعت خوب، ساعت شني است! هر لحظه به تو يادآوري ميکند که دانه اي که افتاد ديگر باز نميگردد.
                      پس بهتره يکم به ثانيه هايي که داريم فکر کنيم تا به راحتي از دستشون نديم....

                      دیدگاه


                        #12
                        پاسخ : راه اندازی lcd کارکتری در زبان c

                        نوشته اصلی توسط M.H.Askari
                        سلام
                        شما از کد ویزارد استفاده کردید :redface:

                        توی کد ویزارد ما میایم پایه های LCD رو معرفی میکنیم که به کجا وصل بشه

                        اما اگه بخوایم این کار رو با کد نویسی انجام بدیم باید چیکار کنیم؟ :redface:
                        با کمال شرمندگی نمیدونم اما یه دلیل بیارید که چرا کد هارو همینطوری بنویسیم و از کد ویزارد استفاده نکنیم؟
                        http://s6.uplod.ir/i/00674/9cm41hm4inx0.jpg

                        دیدگاه


                          #13
                          پاسخ : راه اندازی lcd کارکتری در زبان c

                          نوشته اصلی توسط MAHDI ZAMANI
                          با کمال شرمندگی نمیدونم اما یه دلیل بیارید که چرا کد هارو همینطوری بنویسیم و از کد ویزارد استفاده نکنیم؟
                          دلیلی که وجود نداره اما فک کنم یک برنامه نویس باید کد ها رو یاد داشته باشه
                          و از ویزارد فقط برای اینکه تنظیمات اولیه مخصوصا تنظیمات تکراری رو سریعتر و دقیق تر و اسونترانجام بده استفاده کنه.
                          "زمان خط است نه دايره" چه ايده بدي بوده گرد ساختن ساعت. احساس ميکني هميشه فرصت تکرار است.
                          ساعت دروغ ميگويد. دروغ. زمان بر گرد يک دايره نمي چرخد! زمان بر روي خطي مستقيم ميدود. و هيچگاه، هيچگاه، هيچگاه باز نميگردد.
                          ساعت خوب، ساعت شني است! هر لحظه به تو يادآوري ميکند که دانه اي که افتاد ديگر باز نميگردد.
                          پس بهتره يکم به ثانيه هايي که داريم فکر کنيم تا به راحتي از دستشون نديم....

                          دیدگاه


                            #14
                            پاسخ : راه اندازی lcd کارکتری در زبان c

                            کد:
                            #include <mega8.h>
                            #include <delay.h>
                            #include <stdlib.h>
                            #define LCD_RS  PORTD.2  // Register select
                            #define LCD_EN  PORTD.3  // Enable
                            #define LCD_D4 PORTD.4  // Data bits
                            #define LCD_D5 PORTD.5  // Data bits
                            #define LCD_D6 PORTD.6  // Data bits
                            #define LCD_D7 PORTD.7  // Data bits
                            #define  LCD_STROBE  ((LCD_EN = 1),(LCD_EN=0))
                            char buf[4];
                            char b1,b2,b3;
                            /*
                             *  LCD interface example
                             *  Uses routines from delay.c
                             *  This code will interface to a standard LCD controller
                             *  like the Hitachi HD44780. It uses LCD display in 4 bit mode, with
                             *  the hardware connected as follows (the standard 14 pin
                             *  LCD connector is used):
                             *  
                             *  PORTB bits 0-3 are connected to the LCD data bits 4-7 (high nibble)
                             *  PORTA bit 2 is connected to the LCD RS input (register select)
                             *  PORTA bit 3 is connected to the LCD EN bit (enable)
                             *  
                             *  To use these routines, set up the port I/O (TRISA, TRISB) then
                             *  call lcd_init(), then other routines as required.
                             *
                             * Copywrite Craig Lee 1998
                             *  
                             */
                            /* write a byte to the LCD in 4 bit mode */
                            void
                            lcd_write(unsigned char c)
                            {
                              if(c & 0x80) LCD_D7=1; else LCD_D7=0;
                              if(c & 0x40) LCD_D6=1; else LCD_D6=0;
                              if(c & 0x20) LCD_D5=1; else LCD_D5=0;
                              if(c & 0x10) LCD_D4=1; else LCD_D4=0;
                              LCD_STROBE;
                              if(c & 0x08) LCD_D7=1; else LCD_D7=0;
                              if(c & 0x04) LCD_D6=1; else LCD_D6=0;
                              if(c & 0x02) LCD_D5=1; else LCD_D5=0;
                              if(c & 0x01) LCD_D4=1; else LCD_D4=0;
                              LCD_STROBE;  
                              delay_us(40);
                            }
                            /*
                             *   Clear and home the LCD
                             */
                            void
                            lcd_clear(void)
                            {
                              LCD_RS = 0;
                              lcd_write(0x1);
                              delay_ms(2);
                            }
                            /* write a string of chars to the LCD */
                            void
                            lcd_puts(const char * s)
                            {
                              LCD_RS = 1;  // write characters
                              while(*s) lcd_write(*s++);
                            }
                            /* write one character to the LCD */
                            void
                            lcd_putch(unsigned char c)
                            {
                              LCD_RS = 1;  // write characters
                              lcd_write(c);
                            }
                            /*
                             * Go to the specified position
                             */
                            void
                            lcd_goto(unsigned char pos,unsigned char line)
                            {
                              LCD_RS = 0;
                              if (line==0)
                              lcd_write(0x80 + pos);
                              else
                              lcd_write(0x80 + pos+ 0x40);
                            }
                               
                            /* initialise the LCD - put into 4 bit mode */
                            void
                            lcd_init(void)
                            {
                              LCD_RS = 0;  // write control bytes
                              delay_ms(15);// power on delay
                              LCD_D4 = 1;  // init!  
                              LCD_D5 = 1; //
                              LCD_STROBE;  
                              delay_ms(5);
                              LCD_STROBE;  // init!  
                              delay_us(100);
                              LCD_STROBE;  // init!  
                              delay_ms(5);
                              LCD_D4 = 0;  // set 4 bit mode
                              LCD_STROBE;  
                              delay_us(40);
                               
                              lcd_write(0x28);// 4 bit mode, 1/16 duty, 5x8 font, 2lines
                              lcd_write(0x0C);// display on
                              lcd_write(0x06);// entry mode advance cursor
                              lcd_write(0x01);// clear display and reset cursor
                            }
                            // Standard Input/Output functions
                            // Declare your global variables here
                            void main(void)
                            {
                            // 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=In
                            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                            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=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=In Func0=In
                            // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=T State0=T
                            PORTD=0x00;
                            DDRD=0xFC;
                            // 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: Timer1 Stopped
                            // Mode: Normal top=FFFFh
                            // OC1A output: Discon.
                            // OC1B output: Discon.
                            // Noise Canceler: Off
                            // Input Capture on Falling Edge
                            // Timer1 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: Timer2 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;
                            lcd_init();
                                
                            while (1)
                               { 
                               lcd_clear();
                               lcd_goto(0,0);
                               lcd_puts("Vh:") ;
                               itoa( b1 , buf);
                               lcd_puts(buf) ;   
                               lcd_putch('V'); 
                               lcd_goto(8,0);
                               lcd_puts("Vl:") ;
                               itoa(b2 , buf);
                               lcd_puts(buf) ; 
                               lcd_putch('V');  
                               lcd_goto(0,1);
                               lcd_puts("Freq.:") ;
                               itoa(b3, buf);
                               lcd_puts(buf) ; 
                               lcd_puts("Hz") ;   
                               b1++;
                               b2--;
                               b3+=2;
                               delay_ms(50);
                               };
                            }
                            سقراط : دانش من بدانجایی رسید که فهمیدم هیچ نمیدانم.

                            دیدگاه


                              #15
                              پاسخ : راه اندازی lcd کارکتری در زبان c

                              نوشته اصلی توسط M.H.Askari
                              دلیلی که وجود نداره اما فک کنم یک برنامه نویس باید کد ها رو یاد داشته باشه
                              و از ویزارد فقط برای اینکه تنظیمات اولیه مخصوصا تنظیمات تکراری رو سریعتر و دقیق تر و اسونترانجام بده استفاده کنه.
                              احسنت
                              شما ریشه ای داری کار میکنی و این یعنی وقتی میری سراغ arm یه هفته ای راه می افتی .
                              چون فقط باید 400 - 500 تا رجیستر جدید رو یاد بگیری .

                              من تازه fpga رو شروع کردم . این طور ریز شدن بعدا همه جا به دردت میخوره . حتی تو fpga که ضاهرا هیچ ربطی نداره .

                              إِنَّ الَّذِینَ یُحِبُّونَ أَنْ تَشِیعَ الْفاحِشَهُ فِی الَّذِینَ آمَنُوا لَهُمْ عَذابٌ أَلِیمٌ فِی الدُّنْیا وَ الْآخِرَهِ وَ اللَّهُ یَعْلَمُ وَ أَنْتُمْ لا تَعْلَمُونَ.
                              کسانى که دوست دارند زشتی ها در میان مردم با ایمان شیوع یابد عذاب دردناکى براى آنها در دنیا و آخرت است، و خداوند میداند و شما نمی‏دانید. (نور19)

                              دیدگاه

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