|
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 |
05-05-2007, 03:11 PM | #1 |
Nhập môn đệ tử
Tham gia ngày: Apr 2007
Bài gửi: 10
: |
Cho em hỏi về LCD
Em đang tập viết PIC6F877A cho LCD1602.
Sau khi tham khảo data sheet của LCD1602, em viết thử đưa con trỏ về đầu dòng màn hình nhưng không được, mong mọi người chỉ giúp Code:
;*********************************** ;Pic 16F877A ;Su dung Thach Anh 20 MHz ;LCD1602 ;Các chân của LCD: ;RS : RD0 ;R/W : RD1 ;E : RD2 ;DB7 DB6 DB5 DB4 : RB7 RB6 RB5 RB4 ;DB3 DB2 DB1 DB0 : RB3 RB2 RB1 RB0 ;*********************************** ;--------------------------------------------------------------- ;----------------- Khoi Tao Vi dieu khien ---------------------- processor 16f877a include <p16f877a.inc> __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _HS_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF ; khai báo “configuration bit” ;---------------- Khoi tao xong -------------------------------- ;--------------------------------------------------------------- ;--------------------------------------------------------------- ;---------------- Khai bao cho LCD ----------------------------- #DEFINE RS PORTB,0 ;RS - RD0 #DEFINE RW PORTB,1 ;R/W - RD1 #DEFINE EN PORTB,2 ;E - RD2 ;--------------------------------------------------------------- ;--------------------------------------------------------------- ;---------------- Chuong trình chính --------------------------- ORG 0x0000 GOTO MAIN ORG 0x0005 MAIN BANKSEL TRISB CLRF TRISB BANKSEL PORTB CLRF PORTB BANKSEL TRISD CLRF TRISD BANKSEL PORTD BSF RS BCF RW BSF EN BANKSEL PORTB MOVLW B'00000001' ; DB0 = 1, đưa con trỏ về đầu dòng MOVWF PORTB LOOP GOTO LOOP END thay đổi nội dung bởi: namqn, 06-05-2007 lúc 10:36 PM. |
06-05-2007, 10:25 PM | #2 |
Nhập môn đệ tử
Tham gia ngày: Nov 2006
Bài gửi: 3
: |
Bạn nên hỏi diễn đàn xem là lập trình cho LCD cần những bước nào, các câu lệnh liên quan, các cách khai báo cho LCD đã thì mới viết được
|
06-05-2007, 10:39 PM | #3 | |
Trưởng lão PIC bang
|
Trích:
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 |
|
07-05-2007, 05:36 PM | #4 |
Đệ tử 2 túi
Tham gia ngày: Mar 2007
Bài gửi: 45
: |
hic hic, mấy anh ơi ai có font 32x16 cho em xin với
|
07-05-2007, 07:42 PM | #5 |
Trưởng lão PIC bang
|
Bạn muốn nói đến font cho LED ma trận chăng? Bạn quét hàng hay quét cột? Những phần mềm tiện ích để tạo font lớn như vậy thường không phải là miễn phí, nếu có ai đó bỏ công sức viết ra thì họ cũng không dễ gì đem cho không. Bạn cứ cho biết mục đích của bạn, tôi có thể hướng dẫn bạn cách tự làm.
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 |
08-05-2007, 01:02 AM | #6 |
Nhập môn đệ tử
Tham gia ngày: Apr 2007
Bài gửi: 10
: |
Anh namqn cho em hỏi, em có vào trang http://www.myke.com/lcd.htm và đọc thấy có trình tự lập trình LCD như sau:
Wait more than 15 msecs after power is applied. (Đợi 15ms sau khi cấp nguồn) Write 0x030 to LCD and wait 5 msecs for the instruction to complete (Viết 0x030 tới LCD và đợi 5ms) Write 0x030 to LCD and wait 160 usecs for instruction to complete (viết 0x030 tới LCD và đợi 160us) Write 0x030 AGAIN to LCD and wait 160 usecs or Poll the Busy Flag (viết 0x030 lại lần nữa tới LCD và đợi 160us hoặc kiểm tra BF) Set the Operating Characteristics of the LCD Write "Set Interface Length" Write 0x010 to turn off the Display Write 0x001 to Clear the Display Write "Set Cursor Move Direction" Setting Cursor Behaviour Bits Write "Enable Display/Cursor" & enable Display and Optional Cursor Em không hiểu lệnh viết cho LCD 0x030 là như thế nào(chân DB0-DB3 của LCD em kéo xuống đất), nếu muốn sử dụng 4bit thì khai báo ra làm sao, mong anh chỉ giúp! |
08-05-2007, 03:52 AM | #7 |
Trưởng lão PIC bang
|
Loạt thao tác ghi 0x03 đến LCD là để reset chip điều khiển LCD. Bạn phải ghi thành 2 lần cho mỗi byte, vì chỉ dùng có 4 bit dữ liệu, tức là bạn ghi '0000' nhị phân ra DB7-DB4, tạo xung E, rồi ghi '0011' nhị phân ra DB7-DB4, tạo thêm một xung E nữa. Theo kinh nghiệm của tôi thì bạn không nên nối các chân DB0-DB3 vào đâu cả, tức là để hở chúng.
Ở trang web của Myke Predko mà bạn vừa nêu, đã có nói đến trình tự khởi tạo cho cả giao tiếp 8-bit lẫn 4-bit. Bạn chú ý là từ bước 1 đến bước 4 trong trình tự khởi tạo cho giao tiếp 4-bit vẫn dùng 8-bit. Trong module LCD mà tôi đã dùng thì tôi chỉ cần khởi tạo đúng trình tự trên trong lần đầu tiên, những lần sau đó tôi có thể dùng ngay các lệnh giao tiếp 4-bit. Tôi tạm kết luận rằng những thiết lập về chế độ giao tiếp được ghi nhớ trong chip điều khiể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 |
|
|