dsPIC Tutorial 3-Đọc ngõ vào và giao tiếp LCD

Collapse
This is a sticky topic.
X
X
 
  • Giờ
  • Show
Clear All
new posts
  • namqn
    Trưởng lão PIC bang
    • Feb 2006
    • 3020

    #1

    dsPIC Tutorial 3-Đọc ngõ vào và giao tiếp LCD

    Đây là tutorial tiếp theo cho dsPIC, viết trong ASM30. Vài ngày tới tôi sẽ post các source code viết bằng C30 cho các tutorial đã viết. Các bạn theo dõi trong các luồng tương ứng của các tutorial đã post.

    Trong tutorial 3 cho dsPIC, thông qua một ví dụ về đọc trạng thái các công tắc nối vào dsPIC và hiển thị trạng thái trên LCD, tôi minh hoạ cách đọc ngõ vào số của dsPIC, và cách giao tiếp dsPIC với LCD. Tôi cũng đã giới thiệu cách viết macro và cách định thời bằng ngắt với thời gian xử lý ngắt tối thiểu.

    Link để download tutorial:


    Các tập tin nguồn và hex được đặt trong tập tin nén sau:


    Chúc các bạn thành công!

    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
  • namqn
    Trưởng lão PIC bang
    • Feb 2006
    • 3020

    #2
    Mã nguồn viết trong C30 (và các tập tin .hex) cho các ví dụ trong tutorial này có thể download ở đây:


    Chúc thành công!

    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

    • ITpro
      Nhập môn đệ tử
      • Sep 2005
      • 10

      #3
      Anh ơi,sao em ko down được anh ah.Anh xem lại link giúp em cái.
      Thanks

      Comment

      • ITpro
        Nhập môn đệ tử
        • Sep 2005
        • 10

        #4
        Em mới nghiên cứu về DSpic.Trước em có làm về con 16F877A.Vào đây thấy hay quá,nhưng em vào mấy cái link của anh thì toàn báo lỗi.

        Comment

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

          #5
          Nguyên văn bởi ITpro View Post
          Em mới nghiên cứu về DSpic.Trước em có làm về con 16F877A.Vào đây thấy hay quá,nhưng em vào mấy cái link của anh thì toàn báo lỗi.
          Host lưu trữ được chuyển sang tailieuvietnam.net rồi, các bạn tải bằng các tập tin gửi kèm ở đây nhé.

          Thân,
          Attached Files
          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

          • typhn
            Đệ tử 1 túi
            • Apr 2006
            • 19

            #6
            Anh cho em hỏi dòng config : PWMxL_ACT_HI & PWMxH_ACT_HI
            có nghĩa là gì hả anh?
            Last edited by namqn; 04-12-2006, 11:22 PM.

            Comment

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

              #7
              Nguyên văn bởi typhn View Post
              Anh cho em hỏi dòng config : PWMxL_ACT_HI & PWMxH_ACT_HI
              có nghĩa là gì hả anh
              Có nghĩa là các chân PWMxL và các chân PWMxH tích cực ở mức cao (tuy nhiên các chức năng của module PWM không được sử dụng trong tutorial này, do đó tích cực cao hay thấp không ảnh hưởng đến kết quả chạy chương trình).

              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

              • longho559
                Nhập môn đệ tử
                • Jan 2007
                • 2

                #8
                dspic for lcd

                Anh Nam cho em hỏi :
                Code:
                const unsigned char __attribute__ ((space(psv), address (0x0400))) 
                	//Chuoi ky tu se xuat ra LCD
                	Chuoi1[]=" Hello World ";	     //Chuoi ky tu se duoc xuat ra LCD
                	_PSV=1;
                	PSVPAG = __builtin_psvpage(Chuoi1);
                đoạn source trên dùng để làm gì, nếu muốn xuất thêm Chuồi 2 vào dòng thứ 2 của LCD thì làm sao? Anh có thể cho em biết trang web nào hướng dẫn lập trình C cho dspic ko? Thank a lot!
                Last edited by namqn; 01-03-2007, 05:47 PM.

                Comment

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

                  #9
                  Dòng lệnh thứ nhất khai báo vùng nhớ (hằng) có thể truy xuất thông qua PSV ở địa chỉ 0x0400. Dòng lệnh thứ hai khai báo một chuỗi hằng trong không gian đó. Dòng lệnh thứ ba bật chế độ truy xuất thông qua PSV. Dòng thứ tư thiết lập thanh ghi trang trước khi truy xuất bằng PSV. Không gian địa chỉ flash của dsPIC là 24-bit, trong khi các thanh ghi chỉ số dùng để truy xuất dữ liệu là 16-bit, do đó cần có một thanh ghi trang chứa 8 bit cao hơn của địa chỉ.

                  Để xuất một chuỗi khác vào dòng thứ hai của LCD thì bạn chỉ cần khai báo chuỗi mới đó, truy xuất chuỗi đó thay vì chuỗi thứ nhất trong vòng lặp xuất ra dòng thứ hai của LCD.

                  Hiện thời chỉ có một vài quyển sách về lập trình dsPIC bằng ngôn ngữ cấp cao được bán, tôi chưa tìm được trang web nào hướng dẫn việc này. Đó cũng là 1 lý do khiến tôi viết những tutorial này, dù rằng tôi phải vừa học vừa viết.

                  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

                  • vtt
                    Đệ tử 2 túi
                    • Mar 2006
                    • 44

                    #10
                    Chào các anh!
                    Em cung dang tim hieu ve dsPic và có tham khảo qua một số Tutorial của anh Nam. Em co làm thử một ví dụ là đọc trạng thái của Switch và hiện thị kết quả đọc đó ra Led đơn. Nhưng không hiểu sao em nó không chạy xin các anh chi giùm. Em có upload cả phần cứng lẫn phần mềm lên mong các anh bớt chút thời gian và cho lời giải thích!
                    Thank!
                    Không hiểu sao em không upload được
                    Em mô tả qua phần cứng vậy:
                    Các led đơn (7Led) được nối với PortF của dsPic30f4013, chân kia của Led đơn nối với trở 100 và được nối xuống đất.
                    8 chân của switch thì được nối với chân RB0-RB7
                    và chương trình chính như sau:

                    Code:
                    void main()
                    {
                     int temp;
                     while(1) {
                     temp = PORTB;
                     temp = temp & 0x00FF;
                     LATE = temp;   
                     }
                    }
                    Last edited by namqn; 17-03-2008, 06:47 PM.

                    Comment

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

                      #11
                      Nguyên văn bởi vtt View Post
                      Chào các anh!
                      Em cung dang tim hieu ve dsPic và có tham khảo qua một số Tutorial của anh Nam. Em co làm thử một ví dụ là đọc trạng thái của Switch và hiện thị kết quả đọc đó ra Led đơn. Nhưng không hiểu sao em nó không chạy xin các anh chi giùm. Em có upload cả phần cứng lẫn phần mềm lên mong các anh bớt chút thời gian và cho lời giải thích!
                      Thank!
                      Không hiểu sao em không upload được
                      Em mô tả qua phần cứng vậy:
                      Các led đơn (7Led) được nối với PortF của dsPic30f4013, chân kia của Led đơn nối với trở 100 và được nối xuống đất.
                      8 chân của switch thì được nối với chân RB0-RB7
                      và chương trình chính như sau:

                      void main()
                      {
                      int temp;
                      while(1) {
                      temp = PORTB;
                      temp = temp & 0x00FF;
                      LATE = temp;
                      }
                      }
                      - Bạn mô tả cách nối của switch vẫn chưa đủ, switch nối từ RBx xuống GND, và từ RBx có trở kéo lên Vdd? hay là nối kiểu khác?
                      - Với PIC và dsPIC thì nhất định phải cấu hình đầy đủ rồi mới viết chương trình, có nhiều bạn gặp nhiều lỗi khó hiểu, và đó là do cấu hình chip chưa đúng.
                      - Bạn nối LED vào port F nhưng chương trình lại xuất ra port E!

                      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

                      • nguyen.geo
                        Đệ tử 2 túi
                        • Jan 2007
                        • 27

                        #12
                        Nguyên văn bởi namqn View Post
                        - Bạn mô tả cách nối của switch vẫn chưa đủ, switch nối từ RBx xuống GND, và từ RBx có trở kéo lên Vdd? hay là nối kiểu khác?
                        - Với PIC và dsPIC thì nhất định phải cấu hình đầy đủ rồi mới viết chương trình, có nhiều bạn gặp nhiều lỗi khó hiểu, và đó là do cấu hình chip chưa đúng.
                        - Bạn nối LED vào port F nhưng chương trình lại xuất ra port E!

                        Thân,
                        Bác Nam Ơi! Bác có thể trả lời em câu hỏi ở chổ này với :
                        Theo dự kiến của Microchip, vào khoảng năm 2011 dsPIC sẽ có doanh số lớn hơn PIC


                        và Bác cho em hỏi Bác dùng Protues bản bao nhiêu thế Bác và có thể Download ở chỗ nào hả bác. Em đang dùng Protues 6.7 nhưng em tìm không thấy con DSPIC30F4011 mà trong bài hướng dẫn em thấy Bác vẽ.

                        Comment

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

                          #13
                          Nguyên văn bởi nguyen.geo View Post
                          Bác Nam Ơi! Bác có thể trả lời em câu hỏi ở chổ này với :
                          Theo dự kiến của Microchip, vào khoảng năm 2011 dsPIC sẽ có doanh số lớn hơn PIC


                          và Bác cho em hỏi Bác dùng Protues bản bao nhiêu thế Bác và có thể Download ở chỗ nào hả bác. Em đang dùng Protues 6.7 nhưng em tìm không thấy con DSPIC30F4011 mà trong bài hướng dẫn em thấy Bác vẽ.
                          Phần câu hỏi bên luồng kia tôi đã trả lời rồi, bạn nên xem tutorial 1 trong box này.

                          Tôi dùng Proteus 6.9 SP1, phiên bản licensed của trường (Sheffield University). Symbol của dsPIC30F4012 đó là tôi tự vẽ ra, không có sẵn trong thư viện của Proteus đâu.

                          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

                          • footballer
                            Đệ tử 1 túi
                            • Dec 2007
                            • 16

                            #14
                            Anh Nam cho em hỏi: trong code vidu3_1.s có dòng config như sau:
                            config __FOSC, CSW_FSCM_OFF & FRC_PLL4 ;Clock = 32 MHz
                            Em đọc trong tài liệu dsPIC30F Family Reference Manual thì thấy với chế độ FRC_PLL4 thì clock chỉ bằng 7.37*4 MHz thôi, sao lại có clock=32MHz.

                            Comment

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

                              #15
                              Nguyên văn bởi footballer View Post
                              Anh Nam cho em hỏi: trong code vidu3_1.s có dòng config như sau:
                              config __FOSC, CSW_FSCM_OFF & FRC_PLL4 ;Clock = 32 MHz
                              Em đọc trong tài liệu dsPIC30F Family Reference Manual thì thấy với chế độ FRC_PLL4 thì clock chỉ bằng 7.37*4 MHz thôi, sao lại có clock=32MHz.
                              dsPIC30F4012 sample mà tôi đã dùng cho tutorial (SX năm 2004) có tần số danh định của FRC là 8 MHz, các phiên bản silicon sau này mới điều chỉnh lại thành 7.37 MHz (được phản ánh trong datasheet phiên bản DS70135D trở đi).

                              Tutorial được post vào tháng 08/2006 mà bạn.

                              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

                              Working...