Thông báo

Collapse
No announcement yet.

lcd với css

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #16
    Nguyên văn bởi zunixauxi Xem bài viết
    bác ơi sử dụng ccs thì không cần khai báo e chân rs rw và en à .. mình không thấy bác khai báo
    Trong LCD.C có khai báo sẵn mà, nếu bạn muốn chỉnh lại theo phần cứng bạn vào đó sửa lại hoặc dùng khai báo ở bên ngoài:
    #define LCD_ENABLE_PIN PIN_D0
    #define LCD_RS_PIN PIN_D1
    #define LCD_RW_PIN PIN_D2
    #define LCD_DATA4 PIN_D4
    #define LCD_DATA5 PIN_D5
    #define LCD_DATA6 PIN_D6
    #define LCD_DATA7 PIN_D
    Dang Van Hieu
    Cell: 0986506154
    web:
    Công Ty TNHH SXTMDV VÀ KỸ THUẬT SAO VIỆT
    60 Đỗ Thừa Luông,P. Tân Quý, Q.Tân Phú,TPHCM

    Comment


    • #17
      Nguyên văn bởi startechmec Xem bài viết
      Trong LCD.C có khai báo sẵn mà, nếu bạn muốn chỉnh lại theo phần cứng bạn vào đó sửa lại hoặc dùng khai báo ở bên ngoài:
      #define LCD_ENABLE_PIN PIN_D0
      #define LCD_RS_PIN PIN_D1
      #define LCD_RW_PIN PIN_D2
      #define LCD_DATA4 PIN_D4
      #define LCD_DATA5 PIN_D5
      #define LCD_DATA6 PIN_D6
      #define LCD_DATA7 PIN_D
      thak bạn mình cũng hiểu dần oy...
      vid dụ mình dùng posst D thì d0,d1,d2 thì sẽ là các chan rs,rw,en
      port E thì e0,e1,e2 thì là các chan d0,d1,d2 thì là các chận rs,rw,en
      các port khác tương tự phải không nhì bác

      Comment


      • #18
        Nguyên văn bởi zunixauxi Xem bài viết
        thak bạn mình cũng hiểu dần oy...
        vid dụ mình dùng posst D thì d0,d1,d2 thì sẽ là các chan rs,rw,en
        port E thì e0,e1,e2 thì là các chan d0,d1,d2 thì là các chận rs,rw,en
        các port khác tương tự phải không nhì bác
        Đúng rồi đó bạn, nhưng chú ý là khai báo mấy dòng đó phía trước dòng #include <LCD.C> // Thu vien ham cho LCD nha!
        Dang Van Hieu
        Cell: 0986506154
        web:
        Công Ty TNHH SXTMDV VÀ KỸ THUẬT SAO VIỆT
        60 Đỗ Thừa Luông,P. Tân Quý, Q.Tân Phú,TPHCM

        Comment


        • #19
          Nguyên văn bởi startechmec Xem bài viết
          Đúng rồi đó bạn, nhưng chú ý là khai báo mấy dòng đó phía trước dòng #include <LCD.C> // Thu vien ham cho LCD nha!
          oke mình hiểu oy.. vậy mình cứ theo thư viện lcd.c đi không phải khai báo làm gì hjhj.. thak bác nhiều

          Comment


          • #20
            Nguyên văn bởi zunixauxi Xem bài viết
            bạn có thể giúp mình học viết được 1 bài lcd 16x2 chên pic8f452 hiển thị 1 chữ gì đó đơn giản mà không cần dùng ccs không
            mình cũng là ng mới học như b thui mà chưa tìm hiểu đến pic18 . mình mới chỉ viết được lcd cho con 89 thui . mình nghĩ b nên chuyển sang viết bằng css cho dễ . chúng ta cùng học . ok .
            Ph.vmr

            Comment


            • #21
              Soft tạo thư viện lcd 4 bit (write only) cho CCS đây :
              Cũng không khó sử dụng lắm. Ai thích thì tải về dùng nhé.
              Attached Files

              Comment


              • #22
                Nguyên văn bởi phonghp91 Xem bài viết
                mình cũng là ng mới học như b thui mà chưa tìm hiểu đến pic18 . mình mới chỉ viết được lcd cho con 89 thui . mình nghĩ b nên chuyển sang viết bằng css cho dễ . chúng ta cùng học . ok .
                oke bạn cho mình yahoo.. mình đang học pic oy hjhj 89 đật chức mình không chịu học

                Comment


                • #23
                  Nguyên văn bởi duong_act Xem bài viết
                  Soft tạo thư viện lcd 4 bit (write only) cho CCS đây :
                  Cũng không khó sử dụng lắm. Ai thích thì tải về dùng nhé.
                  cách sử dụng bạn ơi...
                  Last edited by zunixauxi; 17-05-2013, 22:03.

                  Comment


                  • #24
                    Mở chương trình.

                    1. Chọn các chân kết nối ở bên phải. Ví dụ chân LCD_RS nối vào RA3 thì PORT chọn là PORTA và PIN chọn là PIN_3.
                    2. Click vào dấu ... ( trên nút Exit) để chọn đường dẫn lưu file thư viện. Nên lưu cùng chỗ với file chương trình chính.
                    3. Từ chương trình chính dùng lệnh #include để khai báo thêm thư viện vừa tạo ( chú ý khai báo sau khi khai báo delay).
                    4. Click vào Build để tạo thư viện.
                    4. Viết chương trình bình thường.

                    Code:
                    void main()   
                       {
                        set_tris_....
                        LCD_Init();
                        while(true)
                         {
                             LCD_Clear();     // xóa LCD
                             LCD_GotoXY(LINE1,0);   // dòng 1(trên) , vị trí 0 ( bên trái)
                             LCD_PutC("Test LCD");  //  xuất chữ "Test LCD" lên vị trí vừa chọn.
                             LCD_GotoXY(LINE2,0);   // dòng 2, vị trí đầu
                             Printf(LCD_PutC,"%u",x);   // hiển thị giá trị của x (kiểu int8), nếu x =123 thì trên LCD hiển thị 123, nếu x là 16 bit thì chọn %lu trong ngoặc kép.
                         }
                       }

                    Comment


                    • #25
                      Nguyên văn bởi duong_act Xem bài viết
                      Mở chương trình.

                      1. Chọn các chân kết nối ở bên phải. Ví dụ chân LCD_RS nối vào RA3 thì PORT chọn là PORTA và PIN chọn là PIN_3.
                      2. Click vào dấu ... ( trên nút Exit) để chọn đường dẫn lưu file thư viện. Nên lưu cùng chỗ với file chương trình chính.
                      3. Từ chương trình chính dùng lệnh #include để khai báo thêm thư viện vừa tạo ( chú ý khai báo sau khi khai báo delay).
                      4. Click vào Build để tạo thư viện.
                      4. Viết chương trình bình thường.

                      Code:
                      void main()   
                         {
                          set_tris_....
                          LCD_Init();
                          while(true)
                           {
                               LCD_Clear();     // xóa LCD
                               LCD_GotoXY(LINE1,0);   // dòng 1(trên) , vị trí 0 ( bên trái)
                               LCD_PutC("Test LCD");  //  xuất chữ "Test LCD" lên vị trí vừa chọn.
                               LCD_GotoXY(LINE2,0);   // dòng 2, vị trí đầu
                               Printf(LCD_PutC,"%u",x);   // hiển thị giá trị của x (kiểu int8), nếu x =123 thì trên LCD hiển thị 123, nếu x là 16 bit thì chọn %lu trong ngoặc kép.
                           }
                         }
                      oke bạn mà sử dụng các câu lệnh trong thư viên lcd tự tạo này y hết các câu lệnh thư viện lcd bình thưong chứ bác

                      Comment


                      • #26
                        Nguyên văn bởi zunixauxi Xem bài viết
                        oke bạn mà sử dụng các câu lệnh trong thư viên lcd tự tạo này y hết các câu lệnh thư viện lcd bình thưong chứ bác
                        Code:
                           Functions    :
                              
                             -LCD_Init()
                                    >LCD Initialization
                                    
                             -LCD_PutCmd(Command)
                                    >Send a Command to LCD
                                    
                             -LCD_SetDisp(Disp_Mode)
                                    >Set Display Mode for LCD
                                    >View  : Display Mode
                                    
                             -LCD_GotoXY(line,location)
                                    >Goto 1 line and 1 location in LCD
                                    >Line is Line1 or Line2
                                    >location is 0 to 15
                                    
                              -LCD_PutC(c)
                                    >Send 1 characters or 1 String to LCD
                              
                              -LCD_Clear()
                                    >Clear LCD
                                    
                           --------------------------------------------------------------------------
                        
                        
                        /*    Display Mode   */
                        LCD_ON                            // Turn On Display
                        LCD_OFF                          // Turn Off Display
                        LCD_CURSOR_ON               // Display Cursor
                        LCD_CURSOR_OFF              // No Display Cursor
                        LCD_CURSOR_BLINKING       // Cursor Blinking
                        LCD_CURSOR_NOBLINKING   // Cursor No Blinking
                        thư viện lcd do mỗi người tạo có thuật toán và tên câu lệnh khác nhau. Thư viện này có các câu lệnh giống với đa phần các thư viện từ các trình dịch khác, sao cho khi sử dụng dễ hình dung chức năng nhất.

                        Comment


                        • #27
                          Nguyên văn bởi duong_act Xem bài viết
                          Đây là đoạn chương trình với CCS dùng ngắt timer 0 nhấp nháy PORTB.0 chu kì 100us

                          Code:
                          #include <16F877A.h>
                          #device *=16
                          #device adc=8
                          
                          #FUSES NOWDT                    //No Watch Dog Timer
                          #FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
                          #FUSES NOPUT                    //No Power Up Timer
                          #FUSES NOPROTECT                //Code not protected from reading
                          #FUSES NODEBUG                  //No Debug mode for ICD
                          #FUSES NOBROWNOUT               //No brownout reset
                          #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
                          #FUSES NOCPD                    //No EE protection
                          #FUSES NOWRT                    //Program memory not write protected
                          #FUSES RESERVED                 //Used to set the reserved FUSE bits
                          
                          #use delay(clock=20000000)
                          
                          
                          #byte PORTB = 0x006
                          #bit  OUT   = 0x006.0
                          
                          
                          #INT_RTCC
                          void RTCC_Isr()
                          {
                             // 100us
                             // 100us = 500 chu kì lệnh bao gồm khoảng 40 chu kì lệnh trước khi xử lý ngắt => Timer cần đếm (500-40)/2 = 230 trước khi tràn.
                             // giá trị cài đặt lại cho timer = 255 - 230 = 25.
                             set_timer0(25);  // 100us
                             OUT=!OUT;
                          }
                          
                          
                          void main()
                          {
                             output_b(0x00);
                             set_tris_b(0x00);
                             
                             enable_interrupts(GLOBAL);
                             enable_interrupts(INT_RTCC);
                             
                             setup_timer_0(RTCC_INTERNAL | RTCC_DIV_2);
                             
                             while(true)
                             {
                             
                             }
                          }
                          Bạn tham khảo nhé. Chú ý ở đây là cách tính timer không như các bạn đã làm chỉ đơn giản lấy 256 - 250 ra 6. Cho nên ai đang dùng delay bằng timer thì xem lại.
                          sao mình đọc bài b chẳng hiểu j vậy . trước giờ mình vẫn nghĩ là các bước cài đặt cũng như khai báo các tham số cho time thì ở trong hàm main chứ như mình viết bài trên của mình theo ý hiểu của mình như thế này các b xem có đúng không nhé . ban đầu mình cho portb=1 , sau đó cho time đếm đến khi xảy ra ngắt time thì chương trình ngắt sẽ cho portb=0 sau đó lại tiếp tục .
                          trong bài của b đoạn lệnh
                          set_timer0(25); // 100us
                          OUT=!OUT;
                          mình không hiểu out=!out là thế nào , sao trong hàm ngắt lại có set_timer0(25) nhỉ .
                          Ph.vmr

                          Comment


                          • #28
                            Nguyên văn bởi zunixauxi Xem bài viết
                            oke bạn cho mình yahoo.. mình đang học pic oy hjhj 89 đật chức mình không chịu học
                            phongvmr@gmail.com b à . hy vọng chúng ta sẽ học được mấy con này hj
                            Ph.vmr

                            Comment


                            • #29
                              Nguyên văn bởi startechmec Xem bài viết
                              Tại mình hơi bận, không kiểm tra lỗi bạn viết được, mình có lập trình ngắt TImer0 theo ý tưởng của bạn chớp tắt PORT B , bạn có thể tham khảo nhé!
                              #include <16f877a.h>
                              #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
                              #use delay(clock=20000000)
                              int32 dem1;
                              int32 value;
                              //Chuong trinh ngat TMR0
                              #int_timer0
                              void interrupt_timer0()
                              {
                              dem1++;
                              if(dem1>=3000)//3000*100us=300000us=300ms;
                              {
                              output_b(0x00);
                              delay_ms(100);//delay 100ms de test PORTB B
                              dem1=0;
                              }
                              }
                              //=============================chuong trinh chinh======================================
                              void main()
                              {
                              set_tris_b(0);
                              enable_interrupts(int_timer0);
                              enable_interrupts(global);
                              setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);
                              set_timer0(6);// T_dinhthi = 2*(256 - 6)*0.2us = 100us
                              output_b(0xff);
                              while(1)
                              {
                              output_b(0xff);
                              }
                              }
                              //================================================== =====END========================================== ================
                              thanks b nhé . mô phỏng thì code của b viết đúng rồi . nhưng mình vẫn chưa hiểu ở chỗ là khi mình set time thì trong quá trình time đếm đó chính là 1 khoảng delay rồi
                              , vậy sao trong hàm ngắt của b trước và sau lệnh port b=0 lại có 2 khoảng thời gian delay nữa nhỉ . b có thể chỉ giúp mình không .
                              Ph.vmr

                              Comment


                              • #30
                                Nguyên văn bởi startechmec Xem bài viết
                                [ATTACH=CONFIG]66064[/ATTACH]#include <16f877a.h>
                                #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
                                #use delay(clock=20000000)
                                #include <LCD.C> // Thu vien ham cho LCD
                                #define LCD_ENABLE_PIN PIN_D0
                                #define LCD_RS_PIN PIN_D1
                                #define LCD_RW_PIN PIN_D2
                                #define LCD_DATA4 PIN_D4
                                #define LCD_DATA5 PIN_D5
                                #define LCD_DATA6 PIN_D6
                                #define LCD_DATA7 PIN_D

                                void lcd_refresh()
                                {
                                lcd_send_byte(0,1);
                                lcd_send_byte(0,6);
                                }
                                //================================================== ==================================================

                                void main()
                                {
                                set_tris_d(0);
                                output_a(0);
                                LCD_init();
                                lcd_refresh();
                                lcd_gotoxy(1,1);
                                lcd_putc("DIEN TU VIET NAM");
                                lcd_gotoxy(1,2);
                                lcd_putc(" STARTECHMEC ");
                                }
                                //================================================== =====END========================================== ================
                                Đây là 1 đoạn code dùng hàm LCD 4 bít LCD.C của CCS, mình dùng lập trình cho PIC 16f877a, bạn nên dùng thư viện của CCS vừa tiện lợi, lại nhanh gọn, chúc bạn thành công!
                                sao lại cần lệnh output_a(0); trong hàm main nhỉ . rất cảm ơn b về bài viết .
                                Ph.vmr

                                Comment

                                Về tác giả

                                Collapse

                                phonghp91 Tìm hiểu thêm về phonghp91

                                Bài viết mới nhất

                                Collapse

                                Đang tải...
                                X