Học CCS thông qua Tutorial PICVIETNAM

Collapse
This is a sticky topic.
X
X
 
  • Giờ
  • Show
Clear All
new posts
  • nguyenhuytuong
    Nhập môn đệ tử
    • Dec 2009
    • 10

    #91
    Mình đang viết chương trình hiển thị trên LCD, mình thấy rất khó khăn để hiểu các chương trình trên diễn đàn nếu không hiểu rõ về bộ điều khiển HD44780U của LCD của Hitachi. Nếu bạn nào cũng đang làm về LCD thì nên đọc datasheet của con này.

    Comment

    • chang kho
      Nhập môn đệ tử
      • Jan 2010
      • 1

      #92
      #INCLUDE<16F877A.H>
      #INCLUDE<def_877a.h>
      #FUSES XT,NOWDT,NOPROTECT
      #USE DELAY(CLOCK=20000000)
      #DEFINE RS RE2
      #DEFINE RW RE1
      #DEFINE E RE0
      #DEFINE LCD PORTB
      CONST UNSIGNED CHAR LINE1[]={'D','O','','A','N','','T','O','T','','N','G','H' ,'I','E','P','#'};
      CONST UNSIGNED CHAR LINE2[]={'K','I','T','','T','H','U','C','','T','A','P','' ,'P','I','C','','1','6','F','8','7','7','A','','', '#'};
      CONST UNSIGNED CHAR LINE3[]={'','','K','H','O','A','','D','T','','-','','T','H','#'}
      CONST UNSIGNED CHAR LINE4[]={
      '','','G','V','H','D',':','P','H','U','N','G','',' B','A','O','','C','H','A','U',
      '','','S','V','T','H',':','H','U','Y','N','H','',' V','A','N','','T','R','U','N','G'
      ,'','&','','N','G','U','Y','E','N','','T','U','A', 'N','','V','U','','','#'}
      doan code nay hok bt sao ma em chay no hok dc
      em bt no sai o cho defs_16f877a.
      phai chen file def_877a nhu the nao
      may anh cho file va chi dum nhe

      Comment

      • lednghethuat
        Nhập môn đệ tử
        • Nov 2009
        • 3

        #93
        Chào các bạn. Mình học tin mới chuyển sang nghiên cứu pic. Hôm nay tìm trên diễn đàn mãi không được cái hàm trả về chiều dài của mảng. bạn nào biết chỉ mình với. thank nhiều:

        Mảng A={1,2,3,4,5} muốn xác định chiều dài của nó thì dùng hàm nao?

        Comment

        • manhdktd
          Đệ tử 3 túi
          • Jun 2010
          • 57

          #94
          Nguyên văn bởi anhquangngai View Post
          anh namqn cho em hỏi luôn cái chương trình này:
          Code:
          //Chuong trinh led sang don o PORTB
          /*ket qua o PORTB là:00000001,00000010,00000100,00001000,00010000,00100000,01000000,10000000,10000001,10000010,10000100,10001000,.....cuoi cung thi PORTB=0xFF */
          #include<16F877A.h>
          #include<def_16f877a.h>
          #fuses NOWDT,PUT,HS,NOPROTECT,NOLVP
          #use delay(clock=20000000)
          #use fast_io(b)
          int8 sck,slx,bienxoay,bienluu,giatri;
          main()
             {
                trisb=0;
              while(true){
                sck=8;
                portb=0;
                delay_ms(100);
                while(sck<1)
                   {
                      bienxoay=0;
                      slx=sck;
                     while(slx<1)
                         {
                         bienxoay=bienxoay<<1;
                         giatri=bienluu|bienxoay;
                         portb=giatri;
                         delay_ms(100);
                         slx--;
                         }
                     bienluu=giatri;
                     sck--;
                   }
                }
             }
          chương trình em viết như thế nhưng sao nó ko chạy và ban đầu em gán cho biến sck=8 thì trong dk while nó có chạy hay ko?
          Cảm ơn anh trước!
          Em mới học nên ko hiểu!
          làm sao chạy được khi giá trị ban đầu của sck=8 ma trong khi bạn kiểm tra vòng lặp while(sck<1)?????

          Comment

          • manhdktd
            Đệ tử 3 túi
            • Jun 2010
            • 57

            #95
            Nguyên văn bởi tiendungkct View Post
            bạn cũng có thể viết như sau:
            while(1)// vong lap luôn đúng
            {
            for(a=0;a=8;a++)
            ..................
            }
            for(a=0;a<8;a++)
            bạn viết sai

            Comment

            • manhdktd
              Đệ tử 3 túi
              • Jun 2010
              • 57

              #96
              Nguyên văn bởi hopeman View Post
              cả hai lệnh này đều là lệnh gọi hàm thôi bạn ơi
              vd lcd_init() tức là gọi hàm void lcd_init(void){...} đây có lẽ là hàm khởi tạo cho lcd, còn hàm còn lại là hàm đẩy 1 ký tự (char) đi thôi.
              cld_putc('\f')
              là lệnh xóa màn hình

              Comment

              • thanhphuc15
                Nhập môn đệ tử
                • Sep 2010
                • 6

                #97
                may a oi cho e hoi trong ccs thi thoi gian mac dinh la s , ms hay la us vay...
                vi e lap trinh de giai ma remote tv sony nhung khi e get_timer xong roi e ho biet la phai so sanh cai timer nay voi s, ms hay la us nua..
                mong cac anh chi giup

                Comment

                • haitaccr113
                  Nhập môn đệ tử
                  • Nov 2010
                  • 2

                  #98
                  Chào mọi người. E mới chân ướt chân ráo tìm hiểu pic mong mấy huynh chỉ giáo. E có câu hỏi này tuy ngớ ngẩn "Khi vẽ mạch orcad thì làm sao biết gắn các tụ bao nhiêu với chân nguồn ?

                  Comment

                  • phamquocgia
                    Nhập môn đệ tử
                    • Jan 2010
                    • 8

                    #99
                    bạn dùng tụ 104

                    Comment

                    • alycuong
                      Đệ tử 1 túi
                      • Apr 2010
                      • 16

                      #100
                      Hỏi code.

                      #include <16F877a.h>
                      #define LED1 PIN_B4 //HANG NGHIN
                      #define LED2 PIN_B5 //HANG TRAM
                      #define LED3 PIN_B6 //HANG CHUC
                      #define LED4 PIN_B7 //HANG DON VI
                      #fuses hs, nowdt, put, nolvp, brownout
                      #use delay(clock=20000000)
                      int16 a,b,i,j,dv,chuc,tram,nghin,n;


                      void led7()
                      {
                      nghin=a/1000;
                      a=a%1000;
                      tram=a/100;
                      a=a%100;
                      chuc=a/10;
                      dv=a%10;
                      output_b(dv|0b10000000); //hien hang don vi
                      delay_us(1000);
                      output_b(chuc|0b01000000);//hien hang chuc
                      delay_us(1000);
                      output_b(tram|0b00100000);//hien hang tram
                      delay_us(500);
                      output_b(nghin|0b00010000);//hien hang nghin
                      delay_us(500);
                      }
                      void main()
                      {
                      set_tris_b(0x00);//chon port b lam port dau ra
                      set_tris_d(0x00);//chon port b lam port dau ra
                      while(1)
                      {
                      n++;
                      a=n;
                      led7();
                      }
                      }



                      e có down trên diễn đàn về đoạn code về led 7 doan. Cho e hỏi trong phần code trên:

                      output_b(dv|0b10000000); có nghĩa là gì. xuất ra portb (dv|0b10000000) là như thế nào ah.

                      Comment

                      • alycuong
                        Đệ tử 1 túi
                        • Apr 2010
                        • 16

                        #101
                        Nguyên văn bởi alycuong View Post
                        #include <16F877a.h>
                        #define LED1 PIN_B4 //HANG NGHIN
                        #define LED2 PIN_B5 //HANG TRAM
                        #define LED3 PIN_B6 //HANG CHUC
                        #define LED4 PIN_B7 //HANG DON VI
                        #fuses hs, nowdt, put, nolvp, brownout
                        #use delay(clock=20000000)
                        int16 a,b,i,j,dv,chuc,tram,nghin,n;


                        void led7()
                        {
                        nghin=a/1000;
                        a=a%1000;
                        tram=a/100;
                        a=a%100;
                        chuc=a/10;
                        dv=a%10;
                        output_b(dv|0b10000000); //hien hang don vi
                        delay_us(1000);
                        output_b(chuc|0b01000000);//hien hang chuc
                        delay_us(1000);
                        output_b(tram|0b00100000);//hien hang tram
                        delay_us(500);
                        output_b(nghin|0b00010000);//hien hang nghin
                        delay_us(500);
                        }
                        void main()
                        {
                        set_tris_b(0x00);//chon port b lam port dau ra
                        set_tris_d(0x00);//chon port b lam port dau ra
                        while(1)
                        {
                        n++;
                        a=n;
                        led7();
                        }
                        }



                        e có down trên diễn đàn về đoạn code về led 7 doan. Cho e hỏi trong phần code trên:

                        output_b(dv|0b10000000); có nghĩa là gì. xuất ra portb (dv|0b10000000) là như thế nào ah.
                        k có ai giúp e ah.

                        Comment

                        • qiuyinffy
                          Nhập môn đệ tử
                          • Jun 2011
                          • 3

                          #102
                          phía dưới bên trái có bảng mô phỏng
                          Coco Chanel Bags Cartier Wedding Rings Coach shoulder bags

                          Comment

                          • bbld
                            Nhập môn đệ tử
                            • Jun 2010
                            • 5

                            #103
                            Nguyên văn bởi FFGmember View Post
                            LCD cùng với led đơn và led 7 thanh là một trong những phương thức để hiển thị các kết quả các thông số. Thông thường tôi luôn chọn LCD vì lập trình đơn giản và đông thời có thể thể hiện được các giá trị mà mình mong muốn.

                            Có rất rất nhiều source code cho việc viết LCD 4 bit. Và một trong số đó là file lcd_lib_4bit.c đã đươc linhnc308 giới thiệu trong tập tutorial của mình

                            Lại thực thi các bước như ở trên, với đoạn code dưới đây.

                            PHP Code:
                            #include <16f877a.h>
                            #include <def_877a.h>
                            #device *=16 ADC=8
                            #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
                            #use delay(clock=20000000)
                            #include <lcd_lib_4bit.c> // Thu vien ham cho LCD
                            
                            void main()
                            {
                            trisa = 0xFF;
                            trisb = 0x01;
                            trisd = 0x00;
                            LCD_init();
                            Printf(LCD_putchar," PICVIETNAM tut");
                            LCD_putcmd(0xC3);
                            Printf(LCD_putchar," LCD 4bit ");
                            } 
                            

                            [/LIST]
                            mọi người cho mình hỏi 1 điều là LCD mình mới mua(chưa dùng đựoc lần nào).trong lcd_lib_4bit.c của anh linh có những hàm khởi tạo lcd đúng như nhà sx yêu cầu.vậy sao mình kết nối lcd dùng đoạn code trên thì ko chạy,chỉ hiện 1 dòng đen
                            mình đã define port rồi,RS=D0,EN=D2,D4-D7,vậy lỗi này có thể do LCD hỏng hay là do khởi tạo chưa đúng?

                            Comment

                            • ngdnhanbk
                              Đệ tử 2 túi
                              • Nov 2010
                              • 38

                              #104
                              Buồn quá! Học PIC qua tutorial mà chỉ được 1 cái tutorial. hix
                              Email:nguyennhan612@gmail.com

                              Comment

                              • teemo
                                Nhập môn đệ tử
                                • Nov 2014
                                • 9

                                #105
                                anh ơi, làm sao khắc phục lỗi này vậy anh:
                                *** Error 18 "def_877a.h.c" Line 1(9,20): File can not be opened
                                Not in "E:\Program Files\PICC\devices\16F877A.h"
                                Not in "E:\Program Files\PICC\dr\16F877A.h"
                                Not in project "C:\Users\NhokPro1234\Documents\pi\project1\16F877 A.h"
                                *** Error 128 "def_877a.h.c" Line 3(1,12): A #DEVICE required before this line
                                2 Errors, 0 Warnings.

                                Comment

                                Working...