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 05-05-2007, 03:11 PM   #1
atclub
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.
atclub vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-05-2007, 10:25 PM   #2
spl0818
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
spl0818 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-05-2007, 10:39 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
Trích:
Nguyên văn bởi atclub View Post
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
Thông thường, cần chờ cho LCD khởi động xong, rồi khởi tạo chế độ giao tiếp với LCD, sau đó mới có thể thực hiện các lệnh điều khiển hay chuyển dữ liệu vào/ra LCD. Bạn xem kỹ lại datasheet, phần nói về giao tiếp với MCU.

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 07-05-2007, 05:36 PM   #4
tranvanthuong
Đệ 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
tranvanthuong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-05-2007, 07:42 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
Trích:
Nguyên văn bởi tranvanthuong View Post
hic hic, mấy anh ơi ai có font 32x16 cho em xin với
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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-05-2007, 01:02 AM   #6
atclub
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!
atclub vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-05-2007, 03:52 AM   #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
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
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


Múi giờ GMT. Hiện tại là 05:25 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