PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 23-08-2006, 02:54 PM   #1
spirit
Đệ tử 2 túi
 
Tham gia ngày: Aug 2006
Bài gửi: 42
:
Question Tutorial LCD cua Nigel???????

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.
spirit vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-08-2006, 08:31 PM   #2
spirit
Đệ tử 2 túi
 
Tham gia ngày: Aug 2006
Bài gửi: 42
:
Hic,không ai giúp mình sao???
spirit vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-08-2006, 09:29 PM   #3
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-08-2006, 05:53 PM   #4
spirit
Đệ tử 2 túi
 
Tham gia ngày: Aug 2006
Bài gửi: 42
:
Trích:
Nguyên văn bởi namqn View Post
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,
Em đang dùng chip p16f877A nhưng em nghĩ hàm LCD_busy thì con Pic nào cũng được chứ anh,
À 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.
spirit vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-08-2006, 06:33 PM   #5
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-08-2006, 10:42 AM   #6
spirit
Đệ tử 2 túi
 
Tham gia ngày: Aug 2006
Bài gửi: 42
:
Trích:
Nguyên văn bởi namqn View Post
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,
Em thay đổi 1 chút so với code cua Nigel chương LCD nhưng hàm LCD_busy là nguyên gốc

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?
spirit vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-08-2006, 06:42 PM   #7
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi spirit View Post
Em thay đổi 1 chút so với code cua Nigel chương LCD nhưng hàm LCD_busy là nguyên gốc

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?
Bạn chỉ cần post những thay đổi của bạn đối với chương trình LCD so với bản gốc của Nigel, từ đó mới có thể nhận xét vì sao chương trình con LCD_busy không chạy đúng.

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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-08-2006, 02:51 PM   #8
spirit
Đệ tử 2 túi
 
Tham gia ngày: Aug 2006
Bài gửi: 42
:
Trích:
Nguyên văn bởi namqn View Post
Bạn chỉ cần post những thay đổi của bạn đối với chương trình LCD so với bản gốc của Nigel, từ đó mới có thể nhận xét vì sao chương trình con LCD_busy không chạy đúng.

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,
Hôm nay em không mang theo,để hôm sau em post lên,thanks anh đã reply
spirit vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-09-2006, 05:56 PM   #9
spirit
Đệ 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.
spirit vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-09-2006, 10:56 PM   #10
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-09-2006, 10:32 PM   #11
spirit
Đệ tử 2 túi
 
Tham gia ngày: Aug 2006
Bài gửi: 42
:
Trích:
Nguyên văn bởi namqn View Post
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,
Em quên mất,thạch anh em đang sử dụng là 4 Mhz
Ủ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.
spirit vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-09-2006, 11:32 PM   #12
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
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
thành
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
Phần code để đẩy nibble thấp ra cũng cần thêm vài lệnh nop (2 lệnh trở lê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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-09-2006, 02:22 PM   #13
spirit
Đệ tử 2 túi
 
Tham gia ngày: Aug 2006
Bài gửi: 42
:
Để em về thử xem
spirit vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-09-2006, 07:31 PM   #14
spirit
Đệ 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 à ,
spirit vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-09-2006, 06:39 PM   #15
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến

Similar Threads
Ðề 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


Múi giờ GMT. Hiện tại là 05:15 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam