![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#1 |
Đệ tử 2 túi
Tham gia ngày: Aug 2006
Bài gửi: 42
: |
![]() Chào các anh trong diễn đàn PIC VIET NAm.Em có 1 số vấn đề chưa thông trong tut cua Nigel về LCD (Chuong 3_bài 3) mong các anh có ai đã từng đọc hay đã làm qua giúp em với.
Thứ nhất là hàm LCD_busy:_giao tiếp LCD ở mode 4 bit ;------------------------------------------------------ LCD_Busy bsf STATUS, RP0 ;set bank 1 movlw 0x0f ;set Port for input movwf LCD_TRIS bcf STATUS, RP0 ;set bank 0 bcf LCD_PORT, LCD_RS ;set LCD for command mode bsf LCD_PORT, LCD_RW ;setup to read busy flag bsf LCD_PORT, LCD_E swapf LCD_PORT, w ;read upper nibble (busy flag) bcf LCD_PORT, LCD_E movwf templcd2 bsf LCD_PORT, LCD_E ;dummy read of lower nibble ********** bcf LCD_PORT, LCD_E btfsc templcd2, 7 ;check busy flag, high = busy goto LCD_Busy ;if busy check again bcf LCD_PORT, LCD_RW bsf STATUS, RP0 ;set bank 1 movlw 0x00 ;set Port for output movwf LCD_TRIS bcf STATUS, RP0 ;set bank 0 return ;end of LCD routines ;------------------------------------------------------ Neu gọi hàm này thì chương trình của Nigel không chạy được bởi vì khi em thay hàm này bằng hàm gọi delay_5ms thì chạy được Các anh có thể chỉ cho em biết chỗ sai trong hàm này được không a. À,còn dòng lệnh ở hàng em đánh dấu * nữa,em nghĩ dòng lệnh này là không cần thiết bởi vì ta chỉ quan tam đến bit DB7 mà thôi, Cám ơn các anh nhiều lắm. |
![]() |
![]() |
![]() |
#2 |
Đệ tử 2 túi
Tham gia ngày: Aug 2006
Bài gửi: 42
: |
Hic,không ai giúp mình sao???
|
![]() |
![]() |
![]() |
#3 |
Trưởng lão PIC bang
|
Xin lỗi bạn nhé, tôi xem qua rồi nhưng lại quên trả lời.
Chương trình của Nigel đã thử nghiệm trên phần cứng, và dùng chip PIC16F628, còn bạn dùng chip gì? Ở chỗ bạn đánh dấu * đúng là chúng ta không cần các bit đó, nhưng module LCD yêu cầu phải đẩy các bit đó ra thì nó mới làm việc tiếp được. Do đó chúng ta phải đẩy một dummy nibble ra. 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 |
![]() |
![]() |
![]() |
#4 | |
Đệ tử 2 túi
Tham gia ngày: Aug 2006
Bài gửi: 42
: |
Trích:
À quên mình có thực hành một số bài của Nigel thì thấy có một số chương trình không chạy được nếu Copy and Paste vì vậy bạn nào có làm mà bị vướng mắc chỗ nào thì post lên,mình sẽ cố gắng trong phạm vi kiến thức của mình Anh có thể test giùm em chương trình trên được không a. Cám ơn anh nhiều lắm. |
|
![]() |
![]() |
![]() |
#5 |
Trưởng lão PIC bang
|
Bạn dùng code của Nigel nguyên gốc hay đã thay đổi?
Nếu đã thay đổi thì bạn post những thay đổi bạn đã thực hiệ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 |
![]() |
![]() |
![]() |
#6 | |
Đệ tử 2 túi
Tham gia ngày: Aug 2006
Bài gửi: 42
: |
Trích:
Còn những thay đổi trong các chương trước thì code cua Nigel khá dài nếu em post lên sẽ khó theo dõi luồng này lắm.Hay là em có ý kiến này:em mở 1 thread mới bàn về các vấn đề trong tut của Nigel để mọi người vào thảo luận vì em thấy code của Nigel viết rất hay và dễ theo dõi mạch chương trình. Anh thấy thế nào a? |
|
![]() |
![]() |
![]() |
#7 | |
Trưởng lão PIC bang
|
Trích:
Việc mở 1 thread bàn về các tutorial của Nigel cũng hay, nhưng mở từng thread cho từng chủ đề như hiện nay là ổn rồi, như vậy việc thảo luận sẽ tập trung hơ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 |
|
![]() |
![]() |
![]() |
#8 | |
Đệ tử 2 túi
Tham gia ngày: Aug 2006
Bài gửi: 42
: |
Trích:
|
|
![]() |
![]() |
![]() |
#9 |
Đệ tử 2 túi
Tham gia ngày: Aug 2006
Bài gửi: 42
: |
Anh nam coi giùm em với
http://rapidshare.de/files/32479197/LCD_Nigel.rar.html Anh thông cảm em không post lên diễn đàn được. thay đổi nội dung bởi: spirit, 09-09-2006 lúc 06:09 PM. |
![]() |
![]() |
![]() |
#10 |
Trưởng lão PIC bang
|
Một thông tin cần thiết mà em chưa cung cấp, đó là tần số của thạch anh đang được dù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 |
![]() |
![]() |
![]() |
#11 | |
Đệ tử 2 túi
Tham gia ngày: Aug 2006
Bài gửi: 42
: |
Trích:
Ủa tần số thạch anh thì có liên quan gì ạ, em nghĩ bao nhiêu cũng được chứ chỉ cần không quá giới hạn thôi mà thay đổi nội dung bởi: spirit, 12-09-2006 lúc 11:54 AM. |
|
![]() |
![]() |
![]() |
#12 |
Trưởng lão PIC bang
|
Có khả năng là module LCD của em có bộ xử lý hơi chậm. Em thêm một vài lệnh nop vào đoạn code đọc dữ liệu từ LCD trong chương trình con LCD_Busy thử xem. Tức là chuyển phần code
Code:
bsf LCD_PORT, LCD_E swapf LCD_PORT, w ;LAY 4 BIT CAO,BIT DAU TIEN LA CO BF bcf LCD_PORT, LCD_E ;LCD BAT DAU THUC HIEN LENH Code:
bsf LCD_PORT, LCD_E nop swapf LCD_PORT, w ;LAY 4 BIT CAO,BIT DAU TIEN LA CO BF bcf LCD_PORT, LCD_E ;LCD BAT DAU THUC HIEN LENH 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 |
![]() |
![]() |
![]() |
#13 |
Đệ tử 2 túi
Tham gia ngày: Aug 2006
Bài gửi: 42
: |
Để em về thử xem
|
![]() |
![]() |
![]() |
#14 |
Đệ tử 2 túi
Tham gia ngày: Aug 2006
Bài gửi: 42
: |
Em thử rồi mà vẫn không được anh nam à ,
|
![]() |
![]() |
![]() |
#15 |
Trưởng lão PIC bang
|
Thật khó tin là Nigel lại mắc lỗi rất tầm thường như vậy, nhưng sự thật thì code trên trang web của ông ta vẫn đang có lỗi đó.
Trong phiên bản có kiểm tra cờ BF, ở chương trình con LCD_Init có lệnh gọi LCD_Busy ở ngay phần đầu. Vấn đề ở đây là LCD_Busy dùng chế độ giao tiếp 4-bit, mà chế độ này lại chưa được thiết lập khi chúng ta bắt đầu thực hiện LCD_Init. Nếu chương trình vượt qua được lỗi này và chạy đến lệnh LCD_Cmd với W = 0x20 (để thiết lập giao tiếp 4-bit) thì vẫn có vấn đề, vì LCD_Cmd có gọi LCD_Busy trước khi trở về. Và một lần nữa, LCD_Busy lại dùng chế độ giao tiếp 4-bit, là chế độ đang được thiết lập. Do đó, có 2 điểm cần chỉnh lại trong chương trình của Nigel: 1. Thay lệnh gọi LCD_Busy ở đầu LCD_Init bằng LCD_Delay100 2. Thay lệnh gọi LCD_Busy ở cuối LCD_Cmd bằng LCD_Delay5 Các chương trình con này chỉ để khởi tạo, hay xuất các lệnh điều khiển ít khi được dùng, do đó vẫn không ảnh hưởng đến mục tiêu chính là dùng cờ BF để giảm thời gian chết khi xuất dữ liệu ra LCD (các lệnh xuất dữ liệu ra LCD như LCD_Char, và LCD_CharD vẫn dùng cờ BF). 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 |
![]() |
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|
![]() |
||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
Học CCS thông qua Tutorial PICVIETNAM | FFGmember | Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) | 105 | 08-09-2017 04:12 PM |
dsPIC Tutorial 3-Đọc ngõ vào và giao tiếp LCD | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 92 | 19-02-2017 11:15 PM |
dsPIC Tutorial 2-Các kỹ thuật cơ bản | namqn | dsPIC - Bộ điều khiển tín hiệu số 16-bit | 33 | 17-10-2013 11:09 PM |
Tuts của Nigel | bigtitan | MPASM | 2 | 21-08-2006 12:53 PM |
tutorial hay cho newbie | FUD84 | Cơ bản về vi điều khiển và PIC | 2 | 04-12-2005 02:29 AM |