CCS C cho PIC/dsPIC phiên bản 4.xxx

Collapse
This is a sticky topic.
X
X
 
  • Giờ
  • Show
Clear All
new posts
  • luongnhut
    Đệ tử 2 túi
    • Oct 2007
    • 29

    #121
    quét 8 led 7 đoạn

    em mới chuyển qua viết bằng ccs, em dang có phần cứng là 8 led 7 đoạn, dung hai port của 16f877a cua xuất mã 7 đoạn và mã quét. quét bằng mức 0, led anot chung. cho 8 led hiện thị từ 0-7, nhưng ko biết viết như thế nào, mấy bác giúp em với

    Comment

    • tungtuantu
      Đệ tử 3 túi
      • Apr 2006
      • 54

      #122
      bạn nào giúp mình với, mình lấy hàm flex_lcd ở trên diễn đàn của CCS, vấn đề của mình là, mình xuất được chữ ra LCD rồi, nhưng trong while(1) mình viết 1 đoặn nháy led đơn giản, nhung led nháy dc 1 lúc đúng theo code, rồi sáng mãi 1 lúc, rồi lại nháy cứ thế mãi, lúc led sáng mãi đồng thời các kí tự trên LCD xuất hiẹn loạn cả lên, mình nghĩ vì 1 lí do nào đó mà vdk bị reset lại, mình đã tắt WDT rồi, ai xem giúp mình với, có ai gặp trường hợp này chưa. Mình dùng 30F4011, dùng bản PCWHD 4.068
      Chương trình mình gửi kèm theo
      Attached Files

      Comment

      • delpiero10
        Nhập môn đệ tử
        • Aug 2008
        • 5

        #123
        Ai có code của bài giải mã bàn phím 4x4 hiển thị ra LCD thì giúp mình(Bàn phím nối vào 8 chân portb còn LCD nối kiểu 4 bit)? Thank!

        Comment

        • longphi_batbai
          Nhập môn đệ tử
          • Jul 2008
          • 5

          #124
          hiển thị tốc độ đặt qua 4 led 7seg

          xin chào các bạn, các anh chị trong diễn đàn picvietnam

          em mới bắt đầu làm quen với pic, và đang tập làm bài thực hành điều khiển động cơ dùng pid mà anh Falleaf đã phát động

          sau khi tham khảo các luồng về CCS cũng như các TUT trên diễn đàn, em có viết 1 đoạn code dùng ccs để hiển thị tốc độ cần đặt lên 4 led 7 đoạn với hướng làm như sau: khởi đầu hiển thị giá trị 0000, dùng 2 nút INC và DEC lần lượt tăng giảm giá trị ở hàng ngàn, rồi dùng Move để chuyển sang hàng trăm và tiếp tục dùng INC và DEC để tăng giảm giá trị mong muốn....


          do mới bắt đầu viết bằng CCS nên tất nhiên code sai nhiều. mong các bạn và các anh chị góp ý giúp em để em có thể học hỏi được nhiều hơn

          thank for reading, rất mong được sự hồi âm của các bạn và các anh chị

          àh quên, các anh cho em hỏi:

          - em định làm 1 chương trình con để đọc giá trị tốc độ từ encoder về timer 0 ở chế độ đếm xung: mỗi khi có ngắt timer 1 thì tính tốc độ động cơ và khi đó gọi 1 hàm con để hiển thị tốc độ vừa tính được lên led 7 đoạn. em ko biết xử lý thế nào? vì khi đó phải quét cả 4 led mà gọi hàm con đó trong ngắt timer 1 thì có vấn đề gì ko. mong các anh giúp giùm em
          Attached Files
          Last edited by longphi_batbai; 26-11-2008, 05:37 PM.

          Comment

          • lion
            Đệ tử 6 túi
            • May 2007
            • 126

            #125
            Nguyên văn bởi longphi_batbai View Post
            xin chào các bạn, các anh chị trong diễn đàn picvietnam

            em mới bắt đầu làm quen với pic, và đang tập làm bài thực hành điều khiển động cơ dùng pid mà anh Falleaf đã phát động

            sau khi tham khảo các luồng về CCS cũng như các TUT trên diễn đàn, em có viết 1 đoạn code dùng ccs để hiển thị tốc độ cần đặt lên 4 led 7 đoạn với hướng làm như sau: khởi đầu hiển thị giá trị 0000, dùng 2 nút INC và DEC lần lượt tăng giảm giá trị ở hàng ngàn, rồi dùng Move để chuyển sang hàng trăm và tiếp tục dùng INC và DEC để tăng giảm giá trị mong muốn....


            do mới bắt đầu viết bằng CCS nên tất nhiên code sai nhiều. mong các bạn và các anh chị góp ý giúp em để em có thể học hỏi được nhiều hơn

            thank for reading, rất mong được sự hồi âm của các bạn và các anh chị

            àh quên, các anh cho em hỏi:

            - em định làm 1 chương trình con để đọc giá trị tốc độ từ encoder về timer 0 ở chế độ đếm xung: mỗi khi có ngắt timer 1 thì tính tốc độ động cơ và khi đó gọi 1 hàm con để hiển thị tốc độ vừa tính được lên led 7 đoạn. em ko biết xử lý thế nào? vì khi đó phải quét cả 4 led mà gọi hàm con đó trong ngắt timer 1 thì có vấn đề gì ko. mong các anh giúp giùm em
            phương pháp quét led 7 thanh làm cho VDK chỉ bận với công việc quét led liên tục mà ít làm được các việc khác. nếu công việc khác mà mất thời gian quá nâu thì led lại bị nhấp nháy .

            phương pháp này chỉ để học mà thực tế chắc chẳng ai dùng . Thường thì người ta dùng thanh ghi dich + chốt đầu ra . VD : 74HC595

            dùng IC đệm 74HC595 chỉ mất 3 chân của PIC mà số lượng LED 7 thanh có thể có thể mở rộng bao nhiêu cũng được.

            tui đã dùng phương pháp này để điều khiển 103 con LED 7 thanh

            Comment

            • longphi_batbai
              Nhập môn đệ tử
              • Jul 2008
              • 5

              #126
              cám ơn góp ý của Lion nhá, theo như Lion nói, thì mình phải xử lý ngắt để đếm xung và tính tốc độ nên chắc chắn Led bị nhấp nháy. bạn có thể cho mình xin 1 đoạn code mẫu dùng ic đệm 74595 để tham khảo cách viết được ko? nếu được thì cảm ơn Lion lắm lắm.

              Comment

              • ketxanh
                Đệ tử 3 túi
                • Aug 2008
                • 53

                #127
                Nguyên văn bởi longphi_batbai View Post
                xin chào các bạn, các anh chị trong diễn đàn picvietnam

                em mới bắt đầu làm quen với pic, và đang tập làm bài thực hành điều khiển động cơ dùng pid mà anh Falleaf đã phát động

                sau khi tham khảo các luồng về CCS cũng như các TUT trên diễn đàn, em có viết 1 đoạn code dùng ccs để hiển thị tốc độ cần đặt lên 4 led 7 đoạn với hướng làm như sau: khởi đầu hiển thị giá trị 0000, dùng 2 nút INC và DEC lần lượt tăng giảm giá trị ở hàng ngàn, rồi dùng Move để chuyển sang hàng trăm và tiếp tục dùng INC và DEC để tăng giảm giá trị mong muốn....


                do mới bắt đầu viết bằng CCS nên tất nhiên code sai nhiều. mong các bạn và các anh chị góp ý giúp em để em có thể học hỏi được nhiều hơn

                thank for reading, rất mong được sự hồi âm của các bạn và các anh chị

                àh quên, các anh cho em hỏi:

                - em định làm 1 chương trình con để đọc giá trị tốc độ từ encoder về timer 0 ở chế độ đếm xung: mỗi khi có ngắt timer 1 thì tính tốc độ động cơ và khi đó gọi 1 hàm con để hiển thị tốc độ vừa tính được lên led 7 đoạn. em ko biết xử lý thế nào? vì khi đó phải quét cả 4 led mà gọi hàm con đó trong ngắt timer 1 thì có vấn đề gì ko. mong các anh giúp giùm em
                Mình có xem qua code của bạn.Mình thấy chường chình của bạn khi biên dịch báo lỗi rất nhiều. Các lỗi chủ yếu là thiếu dấu ;. bạn cũng nên coi lại giá trị trong câu lênh set_tris_B(00b11110011);. Bạn nên chú ý, phải inlude cho đúng tên file. Bạn hãy chinh sửa, nếu bạn gặp vấn đề gì mính có thể giúp được mình sẽ giúp hết sức. Chúc bạn sớm thành công
                Hãy cho trước khi nhận

                Comment

                • lion
                  Đệ tử 6 túi
                  • May 2007
                  • 126

                  #128
                  đây là 1 đoạn code viết cho 74hc595 :

                  Code:
                  //--------------------------------------------------------------
                  #define  DATA      RB7 
                  #define  CLK        RB6 
                  #define  STR        RB5 
                  
                  void display_used_74hc595(unsigned char x)
                  {
                     unsigned char i ;
                        
                     for(i=0;i<8;i++)
                       {
                          if( bit_test(x,0) == 1 ) 
                             {
                                DATA=1 ;  
                             }
                          else
                             {
                                DATA=0 ;          
                             };
                          CLK=0;
                          CLK=1;
                          
                          x = x>>1 ;     
                       };
                  }
                  //--------------------------------------------------
                  void main(void)
                  {
                    
                  
                     TRISA=0xff;
                     TRISB=0x00;
                     TRISC=0xff; 
                     TRISD=0xff;
                     
                      while(true)
                         {
                              
                                              
                                
                                display_used_74hc595( 1 ) ;
                                
                                STR=1;
                                STR=0;
                            
                          };
                  }
                  Last edited by namqn; 04-12-2008, 02:08 AM.

                  Comment

                  • bien_van_khat
                    ...Damned...
                    • Apr 2006
                    • 503

                    #129
                    Nguyên văn bởi picpen View Post
                    trích :
                    Code:
                    vấn đề thứ 2 là biến count của bạn là biến int 16 bit tức giá trị tối đa chỉ là 2^16=65536!! thì điều kiện If của bạn liệu có đúng ko??
                    Thực ra giá trị dương của biến " INT16 " nằm trong khoảng từ : 0 >> 2^15 = 32768
                    Mọi người chú ý đến phạm vi hoạt động của biến được khai báo nếu không sẽ bị tràn làm sai kết quả
                    int16 mặc định là signed int16, có giá trị từ -32678 đến +32767, bạn chú ý!
                    - Xin đọc trước khi post bài

                    Xin đặt code trong thẻ [ code ] [ /code ]

                    Comment

                    • kimhuynguyen
                      Đệ tử 3 túi
                      • Nov 2007
                      • 48

                      #130
                      Ccs_pcwhd4.084

                      Cho mục đích thử nghiệm:
                      http://www.mediafire.com/file/jtyxvz...WHD_v4.084.RAR
                      More friends more foods

                      Comment

                      • tallht
                        Đệ tử 5 túi
                        • Mar 2008
                        • 98

                        #131
                        hii cho thử nghiệm là sao vậy pác?
                        -------------------------------------------------------------------
                        Cung cấp bo mạch thực hành Arduino và các mạch sáng tạo.
                        Mời tham quan: https://www.facebook.com/eshop1109

                        Cung cấp dịch vụ order hàng từ Aliexpress
                        Liên hệ: https://www.facebook.com/Mua-h%E1%BB...5265931515571/

                        Comment

                        • kimhuynguyen
                          Đệ tử 3 túi
                          • Nov 2007
                          • 48

                          #132
                          Nguyên văn bởi tallht View Post
                          hii cho thử nghiệm là sao vậy pác?
                          Gọi là thử nghiệm vì là sử dụng c***k. Có thể phát sinh lỗi không mong muốn trong quá trình sử dụng. Nếu sử dụng bản này và phát sinh lỗi, có thể chia sẻ với mọi người.
                          More friends more foods

                          Comment

                          • vdtk3
                            Đệ tử 2 túi
                            • Jun 2007
                            • 29

                            #133
                            Các bác cho em hỏi tại sao em lập trình với 16f887 trên CCS 4.068 thì khi cho nhấp nháy portb.3 và portb.2 cùng lúc nhưng chỉ có portb.3 là nhấp nháy còn portb.2 thì không ??
                            Thanks !!

                            Comment

                            • namqn
                              Trưởng lão PIC bang
                              • Feb 2006
                              • 3020

                              #134
                              Nguyên văn bởi vdtk3 View Post
                              Các bác cho em hỏi tại sao em lập trình với 16f887 trên CCS 4.068 thì khi cho nhấp nháy portb.3 và portb.2 cùng lúc nhưng chỉ có portb.3 là nhấp nháy còn portb.2 thì không ??
                              Thanks !!
                              Bạn thử nghiệm trên mạch thực hay mô phỏng? Code của bạn ra sao?

                              Thân,
                              Biển học mênh mông, sức người có hạn.

                              Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
                              http://www.picvietnam.com/forum/showthread.php?t=1263

                              Comment

                              • vdtk3
                                Đệ tử 2 túi
                                • Jun 2007
                                • 29

                                #135
                                em đã thử cả trên proteus và trên mạch thật. Đây là code của em :
                                Code:
                                #include <16F887.h>
                                #include <DEF_887.h>
                                #device *=16adc=10
                                #fuses HS,NOWDT,NOPROTECT,NOLVP
                                #use DELAY(clock=20000000)
                                
                                #include <lcd.c>
                                
                                void init_main(void)
                                   {
                                      //khoi tao ADC
                                      setup_adc(adc_clock_internal);
                                      setup_adc_ports(all_analog);
                                      
                                      //khoi tao pwm
                                      setup_timer_2(T2_DIV_BY_1,250, 1);
                                      setup_ccp1(ccp_pwm);
                                      setup_ccp2(ccp_pwm);
                                      //khoi tao I/O
                                      TRISB2 = 0;
                                      TRISB3 = 0;
                                      trisb0 = 1;
                                      trisd = 0x00;
                                      trisc = 0x00;
                                      
                                      portb = 0xff ;
                                   }
                                void main (void)
                                   {
                                      init_main();
                                   while (1)
                                      {
                                         rb2 = 1;
                                         rb3= 1;
                                         delay_ms(1000);
                                         rb2= 0 ;
                                         rb3 = 0;
                                         delay_ms(1000);
                                      }
                                   }
                                Thanks!!!
                                Last edited by namqn; 10-01-2009, 06:00 PM.

                                Comment

                                Working...