PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT 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

Ðề tài đã khoá
 
Ðiều Chỉnh Xếp Bài
Old 03-06-2006, 07:17 PM   #1
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Lập trình cho LCD

Có hai cách lập trình cho LCD: dùng 8bit interface (đơn giản) hoặc 4bit interface (phức tạp hơn)

1.8bit interface
Code:
/*Để LCD thực thi các lệnh điều khiển:*/

RS = 0;		//chọn thanh ghi lệnh
R/W = 0;	//ghi dữ liệu, R/W = 1;//đọc dữ liệu
E= 1;		//đưa chân E lên mức cao
E= 0; 	         //tạo sườn xuống để chốt dữ liệu

/*Để LCD thực thi các lệnh hiển thị:*/

RS = 1;		//chọn thanh ghi dữ liệu
R/W = 0;	//ghi dữ liệu
E = 1;		//đưa chân E lên mức cao
E = 0;          //tạo sườn xuống để chốt dữ liệu
Sử dụng 8 chân D0 - D7 để truyền thông tin, dữ liệu đến LCD.
- Để điều khiển LCD (Chọn chế độ LCD, bật/tắt hiển thị, bật/tắt/nhấp nháy/di chuyển con trỏ,...): Nhập giá trị tương ứng vào D0-D7 rồi gởi lệnh yêu cầu LCD thực thi lệnh điều khiển, tiếp theo cho LCD thời gian trễ để thực thi (hoặc hỏi cờ bận xem LCD sẵn sàng thực hiện lệnh tiếp theo chưa?)
- Để hiển thị dữ liệu lên LCD:Nhập dữ liệu cần hiển thị vào D0-D7 rồi gởi lệnh yêu cầu LCD thực thi lệnh hiển thị dữ liệu, tiếp theo cho LCD thời gian trễ để thực thi (hoặc hỏi cờ bận xem LCD sẵn sàng thực hiện lệnh tiếp theo chưa?)

Đây là mạch nguyên lý kết nối LCD dùng 8 chân interface với PIC16F877A qua PORTB:


2.4bit interface

Sử dụng 4 chân D4 - D7 (hoặc D0-D3 <- ít dùng) để truyền thông tin, dữ liệu đến LCD.
- Để điều khiển LCD (Chọn chế độ LCD, bật/tắt hiển thị, bật/tắt/nhấp nháy/di chuyển con trỏ,...): Nhập giá trị tương ứng vào D0-D7,lấy giá trị 4bit cao D4-D7 rồi gởi lệnh yêu cầu LCD thực thi lệnh điều khiển, tiếp theo cho LCD thời gian trễ để thực thi (hoặc hỏi cờ bận xem LCD sẵn sàng thực hiện lệnh tiếp theo chưa?).Tiếp tục, gởi 4bit thấp D0-D3 rồi gởi lệnh yêu cầu LCD thực thi lệnh điều khiển, tiếp theo cho LCD thời gian trễ để thực thi (hoặc hỏi cờ bận xem LCD sẵn sàng thực hiện lệnh tiếp theo chưa?)
- Để hiển thị dữ liệu lên LCD:Cũng làm tương tự trên nhưng thay yêu cầu LCD điều khiển bằng yêu cầu LCD hiển thị.

Đây là mạch nguyên lý kết nối LCD dùng 4 chân interface với PIC16F877A qua PORTB:


Nếu trong ứng dụng sử dụng ngắt ngoài thì có thể chuyển sang nối với PORTD hoặc tùy thích.
__________________
Ngày mai bắt đầu từ ngày hôm nay

Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này:
http://www.picvietnam.com/forum//showthread.php?t=1263
nhh vẫn chưa có mặt trong diễn đàn  
Old 04-03-2007, 09:29 AM   #2
khangcodt
Đệ tử 2 túi
 
Tham gia ngày: Nov 2006
Bài gửi: 27
:
Question Dùng LCD và ngắt

Trích:
Nguyên văn bởi nhh View Post
Có hai cách lập trình cho LCD: dùng 8bit interface (đơn giản) hoặc 4bit interface (phức tạp hơn)

1.8bit interface

2.4bit interface

Sử dụng 4 chân D4 - D7 (hoặc D0-D3 <- ít dùng) để truyền thông tin, dữ liệu đến LCD.
- Để điều khiển LCD (Chọn chế độ LCD, bật/tắt hiển thị, bật/tắt/nhấp nháy/di chuyển con trỏ,...): Nhập giá trị tương ứng vào D0-D7,lấy giá trị 4bit cao D4-D7 rồi gởi lệnh yêu cầu LCD thực thi lệnh điều khiển, tiếp theo cho LCD thời gian trễ để thực thi (hoặc hỏi cờ bận xem LCD sẵn sàng thực hiện lệnh tiếp theo chưa?).Tiếp tục, gởi 4bit thấp D0-D3 rồi gởi lệnh yêu cầu LCD thực thi lệnh điều khiển, tiếp theo cho LCD thời gian trễ để thực thi (hoặc hỏi cờ bận xem LCD sẵn sàng thực hiện lệnh tiếp theo chưa?)

Nếu trong ứng dụng sử dụng ngắt ngoài thì có thể chuyển sang nối với PORTD hoặc tùy thích.
Hôm nay rãnh rỗi Pót hơi nhiều...!!!

Trước hết xin lỗi bác NHH vì cắt dán bài của bác.
Sau đó cảm ơn bác vì em tin bác sẽ trả lời cho em bài này....(Hì hì...!!!)

Nếu sài LCD (theo kiểu gì cũng vậy) thì đều mất toi PortB, hay chính xác hơn là mất hết ngắt ngoài trên PortB. (Nếu sử dụng PIC ít chân thì hết ngắt ngoài...Phí quá!!!). May mà bác có nhắc đến điều này ở cuối bài.
Bác thương thì thương cho chót, bác bày luôn cho anh em cách sử dụng LCD trên các port khác, chẳng hạn portA (kết hợp B1-B3 của portB), portC,D...
Nội lực của em còn đuối, mặc dù đã thử tìm hiểu cấu hình kết nối với LCD trong driver 'LCD.c' nhưng "em chẳng biết, em chẳng thấy...Ở bên người ấy..."

Mong bác chỉ giáo giúp.
Thanks. Thanks. Thanks... And only know to say "thanks"!!!
khangcodt vẫn chưa có mặt trong diễn đàn  
Old 05-03-2007, 08:11 PM   #3
vdt
Đệ tử 1 túi
 
Tham gia ngày: Sep 2005
Bài gửi: 15
:
Trích:
Nguyên văn bởi khangcodt View Post
Hôm nay rãnh rỗi Pót hơi nhiều...!!!

Trước hết xin lỗi bác NHH vì cắt dán bài của bác.
Sau đó cảm ơn bác vì em tin bác sẽ trả lời cho em bài này....(Hì hì...!!!)

Nếu sài LCD (theo kiểu gì cũng vậy) thì đều mất toi PortB, hay chính xác hơn là mất hết ngắt ngoài trên PortB. (Nếu sử dụng PIC ít chân thì hết ngắt ngoài...Phí quá!!!). May mà bác có nhắc đến điều này ở cuối bài.
Bác thương thì thương cho chót, bác bày luôn cho anh em cách sử dụng LCD trên các port khác, chẳng hạn portA (kết hợp B1-B3 của portB), portC,D...
Nội lực của em còn đuối, mặc dù đã thử tìm hiểu cấu hình kết nối với LCD trong driver 'LCD.c' nhưng "em chẳng biết, em chẳng thấy...Ở bên người ấy..."

Mong bác chỉ giáo giúp.
Thanks. Thanks. Thanks... And only know to say "thanks"!!!
Đúng như NHH đã nói, k0 ai làm như bạn đâu. Nếu bạn định dùng Port nào để đ/k LCD thì bạn nên sử dụng nguyên Port đó nhé, như vậy vừa dễ lập trình, vừa dễ trong khi làm mạch, lại dễ dàng hơn trong việc kiểm soát lỗi nữa, tóm lại là nó thực tế hơn bạn ạ.
Còn việc thay vì sử dụng Port B, ta đổi sang dùng port khác thì quá dễ đúng không bạn, chắc không cần phải nói ra ở đây nhé. Bạn nên dung luôn các driver của CCS C cho dễ (ví dụ LCD420.c), sau đó có thể sửa đi đôi chút cho phù hợp với nhu cầu thực tế của bạn, ví dụ như bạn có thể tận dụng chân thiết lập chế độ đọc dữ liệu từ LCD xuống pic (vì k0 có nhu cầu đọc từ LCD xuống PIC) để làm việc khác.
Chúc bạn thành công
vdt vẫn chưa có mặt trong diễn đàn  
Ðề tài đã khoá


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
TUT về USART trong PIC16F877A mafd_47a MPASM 16 19-02-2025 05:32 AM
TUT ve I2C ( pic16f877a ) mafd_47a MPASM 28 28-01-2025 10:45 PM
Lập nhóm PIC16F877A nhh Cơ bản về vi điều khiển và PIC 285 08-03-2017 11:08 PM
Bộ so sánh và PWM cho PIC16F877A anhquangngai Cơ bản về vi điều khiển và PIC 24 08-09-2012 09:00 AM
Pic16f877a TỪ DỄ TỚi KhÓ ntc Cơ bản về vi điều khiển và PIC 373 23-05-2009 10:24 PM


Múi giờ GMT. Hiện tại là 04:30 PM.


Đượ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